Exemple #1
0
        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);
        }
Exemple #2
0
        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);
        }
Exemple #3
0
        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);
        }
Exemple #4
0
        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);
 }