public Environment(SerializationInputStream Stream)
 {
     UniqueKey             = Stream.ReadString();
     TileRuleSet           = new TileRuleSet(Stream);
     MovementMultiplier    = Stream.ReadFloat();
     _RestrictRoadMovement = Stream.ReadEnumerable(i => i.ReadBoolean()).ToArray();
 }
Beispiel #2
0
        public Tile(SerializationInputStream Stream, Map Map, TileRuleSet RuleSet, IdGenerator IdGenerator)
        {
            this.Map      = Map;
            Coordinate    = new Coordinate(Stream);
            HexCoordinate = new HexCoordinate(Coordinate);
            Id            = IdGenerator.GenerateId();
            Configuration = new TileConfiguration(Stream);
            Bounds        = CalculateBounds();

            this.RuleSet = RuleSet;
            Rules        = new TileRulesCalculator(this);
            Configuration.OnReconfigure += (sender, e) => Rules.Recalculate();
        }
Beispiel #3
0
        public Tile(Map Map, Coordinate Coordinate, TileRuleSet RuleSet, IdGenerator IdGenerator)
        {
            this.Map        = Map;
            this.Coordinate = Coordinate;
            this.RuleSet    = RuleSet;
            Id            = IdGenerator.GenerateId();
            HexCoordinate = new HexCoordinate(Coordinate);
            Bounds        = CalculateBounds();

            Configuration = new TileConfiguration();
            Rules         = new TileRulesCalculator(this);
            Configuration.OnReconfigure += (sender, e) => Rules.Recalculate();
        }
        public Environment(ParseBlock Block)
        {
            var attributes = Block.BreakToAttributes <object>(typeof(Attribute));

            UniqueKey          = Block.Name;
            TileRuleSet        = (TileRuleSet)attributes[(int)Attribute.TILE_RULE_SET];
            MovementMultiplier = (float)(attributes[(int)Attribute.MOVEMENT_MULTIPLIER] ?? 1f);

            _RestrictRoadMovement = new bool[Enum.GetValues(typeof(UnitClass)).Length];
            foreach (UnitClass unitClass in
                     (IEnumerable <UnitClass>)(attributes[(int)Attribute.RESTRICT_ROAD_MOVEMENT]
                                               ?? Enumerable.Empty <UnitClass>()))
            {
                _RestrictRoadMovement[(int)unitClass] = true;
            }
        }
        public Environment(
            string UniqueKey,
            TileRuleSet TileRuleSet,
            float MovementMultiplier,
            IEnumerable <UnitClass> RoadMovementRestricted)
        {
            this.UniqueKey          = UniqueKey;
            this.TileRuleSet        = TileRuleSet;
            this.MovementMultiplier = MovementMultiplier;

            _RestrictRoadMovement = new bool[Enum.GetValues(typeof(UnitClass)).Length];
            foreach (UnitClass unitClass in RoadMovementRestricted)
            {
                _RestrictRoadMovement[(int)unitClass] = true;
            }
        }
Beispiel #6
0
        public Map(int Width, int Height, Environment Environment, IdGenerator IdGenerator)
        {
            this.Environment = Environment;
            Regions          = new List <MapRegion>();
            Tiles            = new Tile[Width, Height];

            TileRuleSet ruleSet = Environment == null ? null : Environment.TileRuleSet;

            for (int i = 0; i < Width; ++i)
            {
                for (int j = 0; j < Height; ++j)
                {
                    Tiles[i, j] = new Tile(this, new Coordinate(i, j), ruleSet, IdGenerator);
                }
            }
            Ready();
        }
Beispiel #7
0
        public Map(SerializationInputStream Stream, TileRuleSet RuleSet, IdGenerator IdGenerator)
        {
            var width  = Stream.ReadInt32();
            var height = Stream.ReadInt32();

            Tiles = new Tile[width, height];
            var tiles = Stream.ReadEnumerable(i => new Tile(i, this, RuleSet, IdGenerator)).GetEnumerator();

            for (int i = 0; i < width; ++i)
            {
                for (int j = 0; j < height; ++j)
                {
                    tiles.MoveNext();
                    Tiles[i, j] = tiles.Current;
                }
            }
            Regions = Stream.ReadEnumerable(i => new MapRegion(Stream, Tiles)).ToList();
            Ready();
        }