Subversion Repositories BlockadePP

Rev

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