public MapJsonModel Map2JsonModel(Map map) { MapJsonModel mjson = new MapJsonModel(); mjson.GameOverCondition = map.GameOverCondition; mjson.Name = map.Name; mjson.Description = map.Description; mjson.PlayerOwnedChemicalsDescription = SemanticObjectController.GenerateChemicals2Text(map.PlayerOwnedChemicals); foreach (var b in map.Blocks.FindAll(m => m.IsActive)) { BlockJsonModel bbj = new BlockJsonModel(); bbj.StrainsInfo = b.Strains == null ? "" : new StrainController().Strains2Text(b.Strains); // b.Strains = null; bbj.ChemicalNamesInfo = SemanticObjectController.GenerateChemicals2Text(b.PublicChemicals); // b.PublicChemicals = null; bbj.BlockType = b.BlockType; bbj.Capacity = b.Capacity; bbj.HexCoor = ObjectHelper.Clone(b.HexCoor); bbj.IsActive = b.IsActive; bbj.StandardCoor = ObjectHelper.Clone(b.StandardCoor); bbj.TotalPopulation = b.TotalPopulation; mjson.Blocks.Add(bbj); } return(mjson); }
public Map JsonModel2Map(MapJsonModel mapJson) { Map StageMap = new Map(); StageMap.Name = mapJson.Name; StageMap.Description = mapJson.Description; StageMap.GameOverCondition = mapJson.GameOverCondition; StageMap.Blocks = new List <Block>(); // 填充blocks的strains数据 foreach (var b in mapJson.Blocks) { var bb = b as Block; bb.Strains = new StrainController().Text2Strains_Npc(b.StrainsInfo); bb.PublicChemicals = SemanticObjectController.GenerateText2ChemicalsWithCountInfo(b.ChemicalNamesInfo); StageMap.Blocks.Add(b as Block); } StageMap.PlayerOwnedChemicals = SemanticObjectController.GenerateText2ChemicalsWithCountInfo(mapJson.PlayerOwnedChemicalsDescription); return(StageMap); }
public void Show(MapJsonModel map, ListBox players) { var step = canvas.Width / map.Width; players.Items.Clear(); for (var i = 0; i < map.Snakes.Count; i++) { var color = SnakeColors.PreparedColors[i]; var snakeDrawer = new SnakeDrawer(canvas, color); var snake = map.Snakes[i]; snakeDrawers.Add(snake.Name, snakeDrawer); snakeDrawer.Show(snake, step); players.Items.Add(new TextBlock { Background = new SolidColorBrush(color), Text = snake.Name }); } foodDrawer.Show(map.Foods, step); }
public void Update(MapJsonModel map, ListBox players) { var step = canvas.Width / map.Width; foreach (var snake in map.Snakes) { snakeDrawers[snake.Name].Update(snake, step); if (snake.IsDead) { var textBlock = players.Items.Cast <TextBlock>().Single(x => x.Text.StartsWith(snake.Name)); if (!textBlock.Text.EndsWith("Dead")) { textBlock.Text = $"{snake.Name} - Dead"; } } } foodDrawer.Update(map.Foods, step); if (map.Winner != null) { var textBlock = players.Items.Cast <TextBlock>().Single(x => x.Text.StartsWith(map.Winner)); textBlock.Text = $"{map.Winner} - Winner!"; } }
public static void LoadMap(MapJsonModel model) { StageMap = new MapController().JsonModel2Map(model); }