- Timestamp:
- 2011-12-27 04:21:28 (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
2010/23/hniemi/BlockPusher/Blockpusher/Blockpusher/Blockpusher.cs
r2634 r2635 8 8 using System.IO; 9 9 10 /// <summary> 11 /// Blockpusher-game 12 /// </summary> 10 13 public class Blockpusher : Game 11 14 { … … 17 20 18 21 private BlockLevel currentLevel; 22 private List<BlockLevel> levels = new List<BlockLevel>(); 23 24 private bool gameSaved = false; 25 private List<string> savedLevel; 19 26 20 27 private List<String> testLevel = new List<string>(new String[] … … 33 40 { 34 41 Menu(); 35 36 37 } 38 39 public void NewGame() 40 { 41 ClearAll(); 42 currentLevel = new BlockLevel(this); 42 LoadLevels(); 43 } 44 45 /// <summary> 46 /// Starts new game 47 /// </summary> 48 public void NewGame(BlockLevel level) 49 { 50 ClearAll(); 51 currentLevel = level; 43 52 currentLevel.Victory += Victory; 44 currentLevel.CreateField(testLevel); 53 //currentLevel.CreateField(testLevel); 54 currentLevel.AddToGame(); 45 55 SetControls(); 56 } 57 58 /// <summary> 59 /// Loads levels from directory 60 /// </summary> 61 /// <param name="directory">Not in use</param> 62 public void LoadLevels(string directory=@"Data\Levels") 63 { 64 //TODO: Tee lukeminen valmiiksi 65 66 IEnumerable<string> folders = Directory.EnumerateDirectories(directory,"*"); 67 68 foreach (string s in folders) 69 { 70 //Exludes hidden folder (with . before name) 71 if (s.Length != 0 && s[s.LastIndexOf('\\')+1] != '.') 72 { 73 //MessageDisplay.Add(s); 74 LoadLevels(s); 75 } 76 } 77 78 IEnumerable<string> files = Directory.EnumerateFiles(directory, "*"); 79 foreach (string file in files) 80 { 81 BlockLevel level = new BlockLevel(this); 82 level.CreateField(ReadFile(file)); 83 84 level.Name = file.Substring(file.LastIndexOf('\\')+1, file.LastIndexOf('.') - file.LastIndexOf('\\')-1); 85 levels.Add(level); 86 } 87 } 88 89 #region Menu 90 /// <summary> 91 /// Creates startmenu for game 92 /// </summary> 93 public void Menu() 94 { 95 int labelHeighth = 50; 96 97 ClearAll(); 98 IsMouseVisible = true; 99 PhoneBackButton.Listen(ConfirmExit, "Lopeta peli"); 100 Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli"); 101 102 List<Tuple<string, Action>> labels = new List<Tuple<string, Action>>(); 103 if (gameSaved) labels.Add(new Tuple<string, Action>("Continue", ContinueGame)); 104 labels.Add(new Tuple<string, Action>("New game", delegate { LevelSelectionMenu(); })); 105 labels.Add(new Tuple<string, Action>("Quit?", ConfirmExit)); 106 107 for (int i = 0; i < labels.Count; i++) 108 { 109 PushButton button = new PushButton(200, labelHeighth); 110 button.Text = labels[i].Item1; 111 button.Y = -(i * labelHeighth); 112 button.Clicked += labels[i].Item2; 113 Add(button); 114 } 115 } 116 117 /// <summary> 118 /// Asks if you want to go to main menu or continue playing 119 /// </summary> 120 public void ConfirmMenu() 121 { 122 ClearControls(); 123 MultiSelectWindow w = new MultiSelectWindow("Back to menu?", new String[] { "Yes", "No!" }); 124 w.AddItemHandler(0, delegate { MakeContinuable(); Menu(); }); 125 w.AddItemHandler(1, delegate { SetControls(); w.Close(); }); 126 Add(w); 46 127 } 47 128 … … 58 139 59 140 /// <summary> 60 /// Creates startmenu for game 61 /// </summary> 62 public void Menu() 63 { 64 ClearAll(); 65 IsMouseVisible = true; 66 PhoneBackButton.Listen(ConfirmExit, "Lopeta peli"); 67 Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmExit, "Lopeta peli"); 68 69 List<Tuple<Label,Handler>> labels = new List<Tuple<Label,Handler>>(); 70 labels.Add(new Tuple<Label,Handler>(new Label("New game"), NewGame)); 71 labels.Add(new Tuple<Label,Handler>(new Label("Quit"), ConfirmExit)); 72 73 for (int i = 0; i < labels.Count; i++) 74 { 75 labels[i].Item1.Y = -(i * 30); 76 Add(labels[i].Item1); 77 Mouse.Listen(MouseButton.Left, ButtonState.Pressed, labels[i].Item2, null); 78 } 79 80 } 141 /// Shows levelselection menu 142 /// </summary> 143 public void LevelSelectionMenu(int current = 0) 144 { 145 ClearAll(); 146 int buttonheight = 50; 147 148 Label topic = new Label("Levels"); 149 150 Widget buttons = new Widget(new HorizontalLayout()); 151 PushButton previous = new PushButton(150, buttonheight, "Previous"); 152 buttons.Add(previous); 153 154 PushButton play = new PushButton(150, buttonheight, "Select"); 155 buttons.Add(play); 156 157 PushButton next = new PushButton(150, buttonheight, "Next"); 158 buttons.Add(next); 159 160 Label name = new Label(levels[current].Name); 161 162 topic.Y = Screen.Top - (topic.Height/2); 163 buttons.Y = topic.Bottom - (buttons.Height / 2); 164 name.Y = buttons.Bottom - (name.Height / 2); 165 166 Add(topic); 167 Add(buttons); 168 Add(name); 169 170 levels[current].AddToGame(); 171 172 previous.Clicked += delegate { LevelSelectionMenu((current-1 + levels.Count) % levels.Count); }; 173 next.Clicked += delegate { LevelSelectionMenu((current + 1) % levels.Count); }; 174 play.Clicked += delegate { NewGame(levels[current]); }; 175 176 } 177 #endregion 178 179 /// <summary> 180 /// Continues game from current save 181 /// </summary> 182 public void ContinueGame() 183 { 184 ClearAll(); 185 currentLevel = new BlockLevel(this); 186 currentLevel.Victory += Victory; 187 188 currentLevel.CreateField(ReadFile("Data/CurrentSave.txt")); 189 SetControls(); 190 } 191 192 /// <summary> 193 /// Saves game 194 /// </summary> 195 public void MakeContinuable() 196 { 197 gameSaved = true; 198 savedLevel = currentLevel.CurrentState(); 199 200 File.WriteAllLines("Data/CurrentSave.txt", savedLevel); 201 } 202 81 203 /// <summary> 82 204 /// Reads lines from file … … 123 245 Keyboard.Listen(Key.Left, ButtonState.Pressed, MovePlayer, null, -1, 0); 124 246 Keyboard.Listen(Key.Right, ButtonState.Pressed, MovePlayer, null, 1, 0); 247 248 Keyboard.Listen(Key.Escape, ButtonState.Pressed, ConfirmMenu, "Lopeta peli"); 125 249 } 126 250 }
Note: See TracChangeset
for help on using the changeset viewer.