Beispiel #1
0
        private void ConfigureTileColors(WorldRules worldConfig)
        {
            var terrains = worldConfig.Terrains;
            var zones    = worldConfig.Zones;

            TypedComponents <Color> terrainColor = new TypedComponents <Color>(TerrainLayer.Component, () => this.ErrorTile);

            terrainColor[terrains[Terrains.Land]]  = this.LandTile;
            terrainColor[terrains[Terrains.Water]] = this.WaterTile;
            terrains.Extend(terrainColor);

            TypedComponents <Color?> zoneColor = new TypedComponents <Color?>(ZoneLayer.Component, () => null);

            zoneColor[zones[Zones.Commercial]]  = this.CommercialTile;
            zoneColor[zones[Zones.Farmland]]    = this.FarmlandTile;
            zoneColor[zones[Zones.Residential]] = this.ResidentialTile;
            zoneColor[zones[Zones.Road]]        = this.RoadTile;
            zones.Extend(zoneColor);

            TypedComponents <BuildingColor> tileColor = new TypedComponents <BuildingColor>(BuildingLayer.Component, () => (v) => this.ErrorTile);

            tileColor[zones[Zones.Farmland]]    = new BuildingColor((v) => this.FieldTile);
            tileColor[zones[Zones.Commercial]]  = new BuildingColor((v) => this.Building1Tile);
            tileColor[zones[Zones.Residential]] = new BuildingColor((v) => this.Building2Tile);
            zones.Extend(tileColor);
        }
        public void OccupiedNode_NoStatus_Occupied()
        {
            NodeState state = NodeState.Occupied;

            NodeState testResult = WorldRules.GetNewState(state, "");

            Assert.AreEqual(NodeState.Occupied, testResult);
        }
        public void OccupiedNode_EntityMoved_Empty()
        {
            NodeState state = NodeState.Occupied;

            NodeState testResult = WorldRules.GetNewState(state, "empty");

            Assert.AreEqual(NodeState.Empty, testResult);
        }
        public void EmptyNode_NoArrival_Empty()
        {
            NodeState state = NodeState.Empty;

            NodeState testResult = WorldRules.GetNewState(state, "empty");

            Assert.AreEqual(NodeState.Empty, testResult);
        }
        public void EmptyNode_EntityArrived_Occupied()
        {
            NodeState state = NodeState.Empty;

            NodeState testResult = WorldRules.GetNewState(state, "occupied");

            Assert.AreEqual(NodeState.Occupied, testResult);
        }
        public void ShouldDecideToKillTwoCellsWhenWorldHasHorizontalPattern()
        {
            var life      = new World(5, 5);
            var cellOne   = new Cell(1, 1);
            var cellTwo   = new Cell(1, 2);
            var cellThree = new Cell(1, 3);

            life.InsertCell(cellOne);
            life.InsertCell(cellTwo);
            life.InsertCell(cellThree);

            var rules = new WorldRules();

            rules.DecideDead(life);

            Assert.Equal(2, rules._cellsToBeDestroyed.Count);
        }
        public void ShouldPopulateTwoCellsWhenWorldHasHorizontalPattern()
        {
            var life      = new World(5, 5);
            var cellOne   = new Cell(1, 1);
            var cellTwo   = new Cell(1, 2);
            var cellThree = new Cell(1, 3);

            life.InsertCell(cellOne);
            life.InsertCell(cellTwo);
            life.InsertCell(cellThree);

            var rules = new WorldRules();

            rules.DecideNewLife(life);
            rules.Populate(life);

            Assert.Equal(5, life.Cells.Count);
        }
        public void ShouldDeleteTwoCellsWhenWorldHasHorizontalPattern()
        {
            var life      = new World(5, 5);
            var cellOne   = new Cell(1, 1);
            var cellTwo   = new Cell(1, 2);
            var cellThree = new Cell(1, 3);

            life.InsertCell(cellOne);
            life.InsertCell(cellTwo);
            life.InsertCell(cellThree);

            var rules = new WorldRules();

            rules.DecideDead(life);
            rules.Eradicate(life);

            Assert.Single(life.Cells);
        }