void LoadEditorTemplates() { //Foreach .lvl files add it to the list string[] fileNames = Directory.GetFiles(Directory.GetCurrentDirectory() + @"\roomtemplates\"); try { foreach (string file in fileNames) { StreamReader streamreader = new StreamReader(file); string importedlevel = streamreader.ReadToEnd(); streamreader.Close(); string[] contents = importedlevel.Replace("\r\n", "").Replace("\n", "").Replace("\r", "").Split('-'); CurrentTemplateName = Strip(file); TemplateButton result = new TemplateButton(UnselectedSummary, CurrentTemplateName, DoorTiles, 0); string[] solids = contents[0].Split(':')[1].Split(','); foreach (string s in solids) { if (s != "") { string[] pair = s.Split('/'); result.Template.Tiles[Convert.ToInt32(pair[0]), Convert.ToInt32(pair[1])] = SolidTile.Copy(); } } string[] doors = contents[1].Split(':')[1].Split(','); foreach (string d in doors) { if (d != "") { string[] pair = d.Split('/'); result.Template.Tiles[Convert.ToInt32(pair[0]), Convert.ToInt32(pair[1])] = DoorTile.Copy(); } } string[] payout = contents[2].Split(':')[1].Split('/'); result.Template.Payout = new Vector2I(Convert.ToInt32(payout[0]), Convert.ToInt32(payout[1])); string[] creatures = contents[3].Split(':')[1].Split(','); foreach (string c in creatures) { if (c != "") { string[] pair = c.Split('='); int hash = Convert.ToInt32(pair[0]); Enemy enemy = EnemyButtons.Single(x => x.Enemy.Hash == hash).Enemy; Enemy guy = enemy.Copy(new Vector2I(Convert.ToInt32(pair[1].Split('/')[0]), Convert.ToInt32(pair[1].Split('/')[1])), enemy.Hash); result.Template.Entities.Add(guy); } } result.Template.Difficulty = Convert.ToInt32(contents[4].Split(':')[1]); TemplateButtons.Add(result); } } catch (Exception e) { Console.WriteLine("The file could not be read:"); Console.WriteLine(e.Message); } TemplateButtons.Sort(); ReallignTemplates(); }
void HandleEditorInput(Button button, bool LeftClick) { if (LeftClick) { switch (button.Action) { case "quit": Quit(); break; case "templatestab": CurrentTab = Tab.TEMPLATES; button.Sprite = SelectedTab; foreach (Button b in EditorButtons) { if (b.Action == "enemy") { ((EnemyButton)b).Visable = false; } else if (b.Action == "enemiestab") { b.Sprite = UnselectedTab; } } ReallignTemplates(); break; case "enemiestab": CurrentTab = Tab.ENEMIES; button.Sprite = SelectedTab; foreach (Button b in EditorButtons) { if (b.Action == "room") { ((TemplateButton)b).Visable = false; } else if (b.Action == "templatestab") { b.Sprite = UnselectedTab; } } ReallignEnemies(); break; case "up": if (CurrentTab == Tab.TEMPLATES) { CurrentTemplateIndex--; if (CurrentTemplateIndex < 0) { CurrentTemplateIndex = 0; } else { foreach (TemplateButton B in TemplateButtons) { B.Position.Y += 51; } } ReallignTemplates(); } else { CurrentEnemyIndex--; if (CurrentEnemyIndex < 0) { CurrentEnemyIndex = 0; } else { foreach (EnemyButton E in EnemyButtons) { E.Position.Y += 51; } } ReallignEnemies(); } break; case "down": if (CurrentTab == Tab.TEMPLATES) { CurrentTemplateIndex++; if (CurrentTemplateIndex > TemplateButtons.Count() - 7) { CurrentTemplateIndex = TemplateButtons.Count() - 7; } else { foreach (TemplateButton B in TemplateButtons) { B.Position.Y -= 51; } } ReallignTemplates(); } else { CurrentEnemyIndex++; if (CurrentEnemyIndex > EnemyButtons.Count() - 7) { CurrentEnemyIndex = EnemyButtons.Count() - 7; } else { foreach (EnemyButton E in EnemyButtons) { E.Position.Y -= 51; } } ReallignEnemies(); } break; case "sprite": if (CurrentEnemy.Sprite == Enemy1) { CurrentEnemy.Sprite = Enemy2; } else if (CurrentEnemy.Sprite == Enemy2) { CurrentEnemy.Sprite = Enemy3; } else if (CurrentEnemy.Sprite == Enemy3) { CurrentEnemy.Sprite = Enemy4; } else if (CurrentEnemy.Sprite == Enemy4) { CurrentEnemy.Sprite = Enemy1; } break; case "hp": CurrentEnemy.HP++; CurrentEnemy.MaxHP++; break; case "damage": CurrentEnemy.Damage++; break; case "break": //Pause to debug break; case "room": if (((TemplateButton)button).Visable && CurrentTab == Tab.TEMPLATES) { foreach (TemplateButton c in TemplateButtons) { c.Sprite = UnselectedSummary; } button.Sprite = SelectedSummary; CurrentTemplate = ((TemplateButton)button).Template; } break; case "enemy": if (((EnemyButton)button).Visable && CurrentTab == Tab.ENEMIES) { foreach (EnemyButton e in EnemyButtons) { e.Sprite = UnselectedSummary; } button.Sprite = SelectedSummary; CurrentEnemy = ((EnemyButton)button).Enemy; } break; case "save": SaveContent(); break; case "new": if (CurrentTab == Tab.TEMPLATES) { CurrentTemplateName = Convert.ToString(Convert.ToInt32(CurrentTemplateName.Split('.')[0]) + 1); TemplateButton result = new TemplateButton(UnselectedSummary, CurrentTemplateName + ".lvl", DoorTiles, 0); TemplateButtons.Add(result); TemplateButtons.Sort(); ReallignTemplates(); } else if (CurrentTab == Tab.ENEMIES) { CurrentCreatureName = Convert.ToString(Convert.ToInt32(CurrentCreatureName.Split('.')[0]) + 1) + ".nme"; EnemyButton result = new EnemyButton(UnselectedSummary, Enemy1, CurrentCreatureName); EnemyButtons.Add(result); EnemyButtons.Sort(); ReallignEnemies(); } break; case "door": for (int i = 0; i < 15; i++) { for (int j = 0; j < 10; j++) { if (MouseOver(i, j)) { CurrentTemplate.Tiles[i, j] = DoorTile.Copy(); } } } break; case "item": for (int i = 0; i < 15; i++) { for (int j = 0; j < 10; j++) { if (MouseOver(i, j)) { HealthPotion newthing = GenericItem.Copy(new Vector2I(i, j), GenericItem.Hash); if (CurrentTemplate.Entities.Contains(newthing)) { CurrentTemplate.Entities.Remove(newthing); } else { CurrentTemplate.Entities.Add(newthing); } } } } break; case "prize": for (int i = 0; i < 15; i++) { for (int j = 0; j < 10; j++) { if (MouseOver(i, j)) { CurrentTemplate.Payout = new Vector2I(i, j); } } } break; case "difficulty": CurrentTemplate.Difficulty++; break; } } else { switch (button.Action) { case "hp": CurrentEnemy.HP--; CurrentEnemy.MaxHP--; break; case "sprite": if (CurrentEnemy.Sprite == Enemy1) { CurrentEnemy.Sprite = Enemy4; } else if (CurrentEnemy.Sprite == Enemy2) { CurrentEnemy.Sprite = Enemy3; } else if (CurrentEnemy.Sprite == Enemy3) { CurrentEnemy.Sprite = Enemy2; } else if (CurrentEnemy.Sprite == Enemy4) { CurrentEnemy.Sprite = Enemy1; } break; case "damage": CurrentEnemy.Damage--; break; case "difficulty": CurrentTemplate.Difficulty--; break; } } }