Rev 4 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed
| Rev | Author | Line No. | Line |
|---|---|---|---|
| 1 | freddie | 1 | /* |
| 2 | * Created by SharpDevelop. |
||
| 3 | * User: Freddie |
||
| 4 | * Date: 28/05/2010 |
||
| 5 | * Time: 20:58 |
||
| 6 | * |
||
| 7 | * To change this template use Tools | Options | Coding | Edit Standard Headers. |
||
| 8 | */ |
||
| 9 | using System; |
||
| 10 | using System.Drawing; |
||
| 11 | using System.Collections.Generic; |
||
| 12 | using System.Windows.Forms; |
||
| 13 | |||
| 14 | namespace blockade |
||
| 15 | { |
||
| 16 | /// <summary> |
||
| 17 | /// Description of Form2. |
||
| 18 | /// </summary> |
||
| 19 | public partial class Form2 : Form |
||
| 20 | { |
||
| 21 | |||
| 22 | public class smoke |
||
| 23 | { |
||
| 24 | public Point loc; |
||
| 25 | public Color colour; |
||
| 26 | |||
| 27 | public smoke(Point locN, Color colourN) |
||
| 28 | { |
||
| 29 | loc = locN; |
||
| 30 | colour = colourN; |
||
| 31 | } |
||
| 32 | } |
||
| 33 | |||
| 34 | Image bgImg, fgImg; |
||
| 35 | int sel = 0; |
||
| 36 | int glow = 0; |
||
| 37 | int scroll = 0; |
||
| 38 | float offX, offY, cX, cY; |
||
| 39 | string[] langList; |
||
| 40 | int lang = 0; |
||
| 41 | int cDelay; |
||
| 42 | bool changeLang; |
||
| 43 | string[] play; |
||
| 44 | string[] credits; |
||
| 45 | string[] exit; |
||
| 46 | string[] language; |
||
| 47 | |||
| 48 | string[] creditsList; |
||
| 49 | |||
| 50 | string pattern = ""; |
||
| 51 | |||
| 52 | List<smoke> smokes = new List<smoke>(); |
||
| 53 | bool smokeOn = false; |
||
| 54 | bool hover = false; |
||
| 55 | Random rnd = new Random(); |
||
| 56 | |||
| 57 | public Form2() |
||
| 58 | { |
||
| 59 | // |
||
| 60 | // The InitializeComponent() call is required for Windows Forms designer support. |
||
| 61 | // |
||
| 62 | InitializeComponent(); |
||
| 63 | } |
||
| 64 | |||
| 65 | void Form2Load(object sender, EventArgs e) |
||
| 66 | { |
||
| 67 | |||
| 68 | System.IO.StreamReader reader = new System.IO.StreamReader(@"data/menuStart.dat", System.Text.Encoding.UTF8); |
||
| 69 | string[] data = reader.ReadToEnd().Split(','); |
||
| 70 | |||
| 71 | langList = new string[2]; |
||
| 72 | bgImg = Image.FromFile(@"data/" + data[0]); |
||
| 73 | fgImg = Image.FromFile(@"data/" + data[1]); |
||
| 74 | cDelay = int.Parse(data[2]); |
||
| 75 | offX = (bgImg.Width - 300) / 2; |
||
| 76 | offY = (bgImg.Height - 300) / 2; |
||
| 77 | cX = 0.5f; |
||
| 78 | cY = 0.5f; |
||
| 79 | if (data[3] == "1") |
||
| 4 | freddie | 80 | smokeOn = true; |
| 1 | freddie | 81 | |
| 82 | reader = new System.IO.StreamReader(@"data/menuTexts.dat", System.Text.Encoding.UTF8); |
||
| 83 | string[] lines = reader.ReadToEnd().Split('\n'); |
||
| 84 | langList = lines[0].Split(':'); |
||
| 85 | play = lines[1].Split(':'); |
||
| 86 | credits = lines[2].Split(':'); |
||
| 87 | exit = lines[3].Split(':'); |
||
| 88 | language = lines[4].Split(':'); |
||
| 89 | |||
| 90 | reader = new System.IO.StreamReader(@"data/credits.dat", System.Text.Encoding.UTF8); |
||
| 91 | creditsList = reader.ReadToEnd().Split('\n'); |
||
| 92 | |||
| 93 | reader.Close(); |
||
| 94 | |||
| 95 | timer1.Start(); |
||
| 96 | } |
||
| 97 | |||
| 98 | void draw() |
||
| 99 | { |
||
| 100 | Bitmap img = new Bitmap(300, 300); |
||
| 101 | Graphics g = Graphics.FromImage(img); |
||
| 102 | |||
| 103 | if (hover) |
||
| 104 | { |
||
| 105 | //make BLUE only array |
||
| 106 | float[][] blueArray = { |
||
| 107 | new float[] { 0, 0, 0, 0, 0 }, |
||
| 108 | new float[] { 0, 0, 0, 0, 0 }, |
||
| 109 | new float[] { 0, 0, 1, 0, 0 }, |
||
| 110 | new float[] { 0, 0, 0, 1, 0 }, |
||
| 111 | new float[] { 0, 0, 0, 0, 1 } |
||
| 112 | }; |
||
| 113 | System.Drawing.Imaging.ColorMatrix colourMatrix = new System.Drawing.Imaging.ColorMatrix(blueArray); |
||
| 114 | System.Drawing.Imaging.ImageAttributes imgAttributes = new System.Drawing.Imaging.ImageAttributes(); |
||
| 115 | imgAttributes.SetColorMatrix(colourMatrix, System.Drawing.Imaging.ColorMatrixFlag.Default, System.Drawing.Imaging.ColorAdjustType.Default); |
||
| 116 | |||
| 117 | Bitmap bgImgN = (Bitmap)bgImg; |
||
| 118 | |||
| 119 | g.DrawImage(bgImgN, new Rectangle((int)-offX, (int)-offY, bgImg.Width, bgImg.Height), 0, 0, bgImg.Width, bgImg.Height, GraphicsUnit.Pixel, imgAttributes); |
||
| 120 | } |
||
| 121 | else |
||
| 122 | g.DrawImage(bgImg, -offX, -offY); |
||
| 123 | |||
| 124 | g.DrawImage(fgImg, 0, 0, 300, 300); |
||
| 125 | |||
| 126 | StringFormat sf = new StringFormat(); |
||
| 127 | sf.Alignment = StringAlignment.Center; |
||
| 128 | |||
| 129 | Font font1; |
||
| 130 | |||
| 131 | if (changeLang) |
||
| 132 | { |
||
| 133 | font1 = new Font(FontFamily.GenericMonospace, 13, FontStyle.Bold); |
||
| 134 | |||
| 135 | for (int i = 0; i < langList.Length; i++) |
||
| 136 | { |
||
| 137 | if (lang == i) |
||
| 138 | g.DrawString("--> " + langList[i] + " <--", font1, new SolidBrush(Color.FromArgb((int)(0 - scroll * 25.5f), 255 - Math.Abs(glow) * 5, Math.Abs(glow) * 25, 0)), 150, 70 + i * 18, sf); |
||
| 139 | else |
||
| 140 | g.DrawString("--> " + langList[i] + " <--", font1, new SolidBrush(Color.FromArgb((int)(0 - scroll * 25.5f), Color.White)), 150, 70 + i * 18, sf); |
||
| 141 | } |
||
| 142 | } |
||
| 143 | else if (scroll < 1) |
||
| 144 | { |
||
| 145 | |||
| 146 | font1 = new Font(FontFamily.GenericMonospace, 20, FontStyle.Bold); |
||
| 147 | |||
| 148 | if (sel == 0) |
||
| 149 | g.DrawString("--> " + play[lang] + " <--", font1, new SolidBrush(Color.FromArgb((int)(255 + scroll * 25.5f), 255 - Math.Abs(glow) * 5, Math.Abs(glow) * 25, 0)), 150, 80, sf); |
||
| 150 | else |
||
| 151 | g.DrawString("--- " + play[lang] + " ---", font1, new SolidBrush(Color.FromArgb((int)(255 + scroll * 25.5f), Color.White)), 150, 80, sf); |
||
| 152 | if (sel == 1) |
||
| 153 | g.DrawString("--> " + credits[lang] + " <--", font1, new SolidBrush(Color.FromArgb((int)(255 + scroll * 25.5f), 255 - Math.Abs(glow) * 5, Math.Abs(glow) * 25, 0)), 150, 120, sf); |
||
| 154 | else |
||
| 155 | g.DrawString("--- " + credits[lang] + " ---", font1, new SolidBrush(Color.FromArgb((int)(255 + scroll * 25.5f), Color.White)), 150, 120, sf); |
||
| 156 | if (sel == 2) |
||
| 157 | g.DrawString("--> " + exit[lang] + " <--", font1, new SolidBrush(Color.FromArgb((int)(255 + scroll * 25.5f), 255 - Math.Abs(glow) * 5, Math.Abs(glow) * 25, 0)), 150, 160, sf); |
||
| 158 | else |
||
| 159 | g.DrawString("--- " + exit[lang] + " ---", font1, new SolidBrush(Color.FromArgb((int)(255 + scroll * 25.5f), Color.White)), 150, 160, sf); |
||
| 160 | if (sel == 3) |
||
| 161 | g.DrawString("--> " + language[lang] + " <--", font1, new SolidBrush(Color.FromArgb((int)(255 + scroll * 25.5f), 255 - Math.Abs(glow) * 5, Math.Abs(glow) * 25, 0)), 150, 200, sf); |
||
| 162 | else |
||
| 163 | g.DrawString("--- " + language[lang] + " ---", font1, new SolidBrush(Color.FromArgb((int)(255 + scroll * 25.5f), Color.White)), 150, 200, sf); |
||
| 164 | |||
| 165 | } |
||
| 166 | else |
||
| 167 | { |
||
| 168 | |||
| 169 | Image tempImg; |
||
| 170 | |||
| 171 | for (int i = 0; i < creditsList.Length; i++) |
||
| 172 | { |
||
| 173 | if (scroll > i * cDelay && scroll < 100 + i * cDelay) |
||
| 174 | { |
||
| 175 | if (creditsList[i].Substring(0, 1) == "i") |
||
| 176 | { |
||
| 177 | tempImg = Image.FromFile(@"data/" + creditsList[i].Substring(1)); |
||
| 178 | g.DrawImage(tempImg, 150 - tempImg.Width / 2, 180 - (int)(scroll - i * cDelay)); |
||
| 179 | } |
||
| 180 | else |
||
| 181 | { |
||
| 182 | switch (creditsList[i].Substring(0, 1)) |
||
| 183 | { |
||
| 184 | case ("b"): |
||
| 185 | font1 = new Font(FontFamily.GenericMonospace, 16, FontStyle.Bold); |
||
| 186 | break; |
||
| 187 | case ("l"): |
||
| 188 | font1 = new Font(FontFamily.GenericMonospace, 20, FontStyle.Bold); |
||
| 189 | break; |
||
| 5 | freddie | 190 | case ("s"): |
| 191 | font1 = new Font(FontFamily.GenericMonospace, 8, FontStyle.Bold); |
||
| 192 | break; |
||
| 193 | case ("n"): |
||
| 194 | font1 = new Font(FontFamily.GenericMonospace, 13, FontStyle.Bold); |
||
| 195 | break; |
||
| 1 | freddie | 196 | default: |
| 197 | font1 = new Font(FontFamily.GenericMonospace, 13, FontStyle.Bold); |
||
| 198 | break; |
||
| 199 | } |
||
| 200 | if (hover) |
||
| 201 | g.DrawString(creditsList[i].Substring(1), font1, new SolidBrush(Color.FromArgb(255 - (int)(Math.Abs((scroll - i * cDelay) - 50) / 50.0f * 255.0f), 0, 0, 255)), 150, 200 - (int)(scroll - i * cDelay), sf); |
||
| 202 | else |
||
| 203 | g.DrawString(creditsList[i].Substring(1), font1, new SolidBrush(Color.FromArgb(255 - (int)(Math.Abs((scroll - i * cDelay) - 50) / 50.0f * 255.0f), 255, 255, 255)), 150, 200 - (int)(scroll - i * cDelay), sf); |
||
| 204 | } |
||
| 205 | } |
||
| 206 | } |
||
| 207 | |||
| 208 | } |
||
| 209 | |||
| 210 | if (smokeOn) |
||
| 211 | { |
||
| 212 | for (int i = 0; i < smokes.Count; i++) |
||
| 213 | g.FillEllipse(new SolidBrush(smokes[i].colour), smokes[i].loc.X - 1, smokes[i].loc.Y - 1, 2, 2); |
||
| 214 | } |
||
| 215 | |||
| 216 | this.BackgroundImage = (Image)img.Clone(); |
||
| 217 | |||
| 218 | g.Dispose(); |
||
| 219 | img.Dispose(); |
||
| 220 | |||
| 221 | } |
||
| 222 | |||
| 223 | void go() |
||
| 224 | { |
||
| 225 | Form1 game = new Form1(lang); |
||
| 226 | game.Show(); |
||
| 227 | if (pattern == "3141") |
||
| 228 | { |
||
| 229 | game.towerTypes.Add(new Form1.towerType("Blue", "100000", "5000", "10000", "700", "1000", "10000", "0", "go.png:1", "basicTurret.png:10:hyperTurret.png:10:protonTurret.Png:10:neutronTurret1.png:10:craverTurret1.png:10:rackerTurret1.png:10:wraverTurret1.png:10","single1.wav", "2", "250", "5","Tim32 SuperSheep-0 'Lassitor'", "Lassitor:Lassitor:Lassitor:Lassitor:Lassitor:Lassitor:Lassitor:Lassitor:Lassitor")); |
||
| 230 | } |
||
| 231 | timer1.Stop(); |
||
| 232 | this.Hide(); |
||
| 233 | } |
||
| 234 | |||
| 235 | void viewCredits() |
||
| 236 | { |
||
| 237 | scroll = 1; |
||
| 238 | } |
||
| 239 | |||
| 240 | void Form2KeyDown(object sender, KeyEventArgs e) |
||
| 241 | { |
||
| 242 | if (changeLang) |
||
| 243 | { |
||
| 244 | if (e.KeyCode == Keys.Up) |
||
| 245 | { |
||
| 246 | lang--; |
||
| 247 | if (lang < 0) |
||
| 248 | lang = langList.Length - 1; |
||
| 249 | } |
||
| 250 | else if (e.KeyCode == Keys.Down) |
||
| 251 | { |
||
| 252 | lang++; |
||
| 253 | if (lang > langList.Length - 1) |
||
| 254 | lang = 0; |
||
| 255 | } |
||
| 256 | } |
||
| 257 | else |
||
| 258 | { |
||
| 259 | if (e.KeyCode == Keys.Up) |
||
| 260 | { |
||
| 261 | sel--; |
||
| 262 | if (sel < 0) |
||
| 263 | sel = 3; |
||
| 264 | } |
||
| 265 | else if (e.KeyCode == Keys.Down) |
||
| 266 | { |
||
| 267 | sel++; |
||
| 268 | if (sel > 3) |
||
| 269 | sel = 0; |
||
| 270 | } |
||
| 271 | } |
||
| 272 | if (e.KeyCode == Keys.Enter) |
||
| 273 | { |
||
| 274 | if (changeLang) |
||
| 275 | { |
||
| 276 | changeLang = false; |
||
| 277 | pattern += lang; |
||
| 278 | } |
||
| 279 | else if (scroll == 0) |
||
| 280 | { |
||
| 281 | if (sel == 0) |
||
| 282 | go(); |
||
| 283 | else if (sel == 1) |
||
| 284 | viewCredits(); |
||
| 285 | else if (sel == 3) |
||
| 286 | { |
||
| 287 | scroll = 0; |
||
| 288 | changeLang = true; |
||
| 289 | } |
||
| 290 | else |
||
| 291 | Application.ExitThread(); |
||
| 292 | } |
||
| 293 | else |
||
| 294 | scroll = -10; |
||
| 295 | } |
||
| 296 | draw(); |
||
| 297 | } |
||
| 298 | |||
| 299 | void Timer1Tick(object sender, EventArgs e) |
||
| 300 | { |
||
| 301 | if (scroll < 1) |
||
| 302 | { |
||
| 303 | glow++; |
||
| 304 | if (glow > 10) |
||
| 305 | glow = -10; |
||
| 306 | } |
||
| 307 | if (changeLang) |
||
| 308 | { |
||
| 309 | scroll--; |
||
| 310 | if (scroll < -10) |
||
| 311 | scroll = -10; |
||
| 312 | } |
||
| 313 | else if (scroll != 0) |
||
| 314 | { |
||
| 315 | scroll++; |
||
| 316 | if (scroll > creditsList.Length * cDelay + 100) |
||
| 317 | { |
||
| 318 | scroll = -10; |
||
| 319 | } |
||
| 320 | } |
||
| 321 | |||
| 322 | offX += cX; |
||
| 323 | offY += cY; |
||
| 324 | |||
| 325 | if (offX < 0.0f) |
||
| 326 | { |
||
| 327 | cX = 0.5f; |
||
| 328 | offX = 0.0f; |
||
| 329 | } |
||
| 330 | else if (offX > bgImg.Width - 300.0f) |
||
| 331 | { |
||
| 332 | cX = -0.5f; |
||
| 333 | offX = bgImg.Width - 300.0f; |
||
| 334 | } |
||
| 335 | if (offY < 0.0f) |
||
| 336 | { |
||
| 337 | cY = 0.5f; |
||
| 338 | offY = 0.0f; |
||
| 339 | } |
||
| 340 | else if (offY > bgImg.Height - 300.0f) |
||
| 341 | { |
||
| 342 | cY = -0.5f; |
||
| 343 | offY = bgImg.Height - 300.0f; |
||
| 344 | } |
||
| 345 | |||
| 346 | if (smokeOn) |
||
| 347 | { |
||
| 348 | for (int i = smokes.Count - 1; i >= 0; i--) |
||
| 349 | { |
||
| 350 | if (rnd.Next(0, 18) == 0) |
||
| 351 | smokes.RemoveAt(i); |
||
| 352 | else |
||
| 353 | { |
||
| 354 | if (rnd.Next(0, 2) == 0) |
||
| 355 | smokes[i].loc.X--; |
||
| 356 | if (rnd.Next(0, 2) == 0) |
||
| 357 | smokes[i].loc.Y--; |
||
| 358 | } |
||
| 359 | } |
||
| 360 | |||
| 361 | int grey; |
||
| 362 | |||
| 363 | for (int i = 0; i < 10; i++) |
||
| 364 | { |
||
| 365 | if (rnd.Next(0,5) < 3) |
||
| 366 | { |
||
| 367 | grey = rnd.Next(50, 200); |
||
| 368 | if (hover) |
||
| 369 | smokes.Add(new smoke(new Point(187, 275), Color.FromArgb(200, 0, 0, grey))); |
||
| 370 | else |
||
| 371 | smokes.Add(new smoke(new Point(187, 275), Color.FromArgb(200, grey, grey, grey))); |
||
| 372 | } |
||
| 373 | } |
||
| 374 | } |
||
| 375 | |||
| 376 | draw(); |
||
| 377 | } |
||
| 378 | |||
| 379 | void Form2FormClosing(object sender, FormClosingEventArgs e) |
||
| 380 | { |
||
| 381 | Application.ExitThread(); |
||
| 382 | } |
||
| 383 | |||
| 384 | void Form2MouseClick(object sender, MouseEventArgs e) |
||
| 385 | { |
||
| 386 | if (Math.Abs(e.X - 193) < 3 && Math.Abs(e.Y - 285) < 3) |
||
| 387 | { |
||
| 388 | System.Diagnostics.Process p = new System.Diagnostics.Process(); |
||
| 389 | System.Diagnostics.ProcessStartInfo psi = new System.Diagnostics.ProcessStartInfo(); |
||
| 390 | psi.FileName = "http://tim32.org"; |
||
| 391 | p.StartInfo = psi; |
||
| 392 | p.Start(); |
||
| 393 | } |
||
| 394 | } |
||
| 395 | |||
| 396 | void Form2MouseMove(object sender, MouseEventArgs e) |
||
| 397 | { |
||
| 398 | if (Math.Abs(e.X - 193) < 3 && Math.Abs(e.Y - 285) < 3) |
||
| 399 | hover = true; |
||
| 400 | else |
||
| 401 | hover = false; |
||
| 402 | } |
||
| 403 | } |
||
| 404 | } |