public static DungeonMaster CreateFromMap(string level, GameData data) { var DM = new DungeonMaster(data); DM.map = Map.CreateFromText(level, data); DM.SetupEvents(); return(DM); }
public static DungeonMaster LoadEncounter(YamlMappingNode yaml, string level, GameData data) { var DM = DungeonMaster.CreateFromMap(level, data); var sides = (YamlSequenceNode)yaml.Children[new YamlScalarNode("sides")]; foreach (var side in sides) { var name = (side as YamlScalarNode).Value; DM.Sides.Add(new Side(name)); } DM.currentSideID = DM.Sides[0].ID; var characters = (YamlSequenceNode)yaml.Children[new YamlScalarNode("characters")]; foreach (var node in characters) { var c = node as YamlMappingNode; var name = (c["name"] as YamlScalarNode).Value; var characterClass = (c["class"] as YamlScalarNode).Value; var posString = (c["pos"] as YamlScalarNode).Value; var sideName = (c["side"] as YamlScalarNode).Value; Position pos = Position.Parse(posString); var side = DM.Sides.FirstOrDefault(s => s.Name.Equals(sideName, StringComparison.OrdinalIgnoreCase)); Character newCharacter = data.LoadCharacterByClass(characterClass); newCharacter.InitializeIndividual(name, pos, side.ID, Guid.NewGuid()); try { var gear = (c["gear"] as YamlScalarNode).Value; newCharacter.AddGear(gear, data); } catch { //TODO: more elegant way? } DM.CreateCharacter(newCharacter); } for (int i = 0; i < 100; i++) { DM.GuidsInWaiting.Enqueue(Guid.NewGuid()); } return(DM); }
public static DungeonMaster GetDebugDM(GameData data) { var DM = new DungeonMaster(data); DM.map = DebugData.GetFlatlandMap(data); DM.Sides.Add(new Side("Heros")); DM.Sides.Add(new Side("The Foe")); DM.currentSideID = DM.Sides[0].ID; var robby = DebugData.GetDebugCharacter(); robby.InitializeIndividual("Robby", new Position(1, 1), DM.Sides[0].ID, Guid.NewGuid()); DM.Characters.Add(robby); var zach = DebugData.GetDebugCharacter(); zach.InitializeIndividual("Zach", new Position(1, 3), DM.Sides[1].ID, Guid.NewGuid()); DM.Characters.Add(zach); return(DM); }