Exemple #1
0
 internal City(byte owner)
 {
     Owner = owner;
     if (!Game.Started)
     {
         return;
     }
     CurrentProduction = Reflect.GetUnits().Where(u => Player.ProductionAvailable(u)).OrderBy(u => Common.HasAttribute <Default>(u) ? -1 : (int)u.Type).First();
     SetResourceTiles();
 }
Exemple #2
0
        private SaveData.UnitType GetUnitType(byte typeId)
        {
            IUnit unit = Reflect.GetUnits().FirstOrDefault(u => u.Type == (UnitType)typeId);

            SaveData.UnitType output = new SaveData.UnitType();
            if (unit != null)
            {
                SetArray <SaveData.UnitType>(ref output, nameof(SaveData.UnitType.Name), 12, new string[] { unit.Name });
                output.ObsoleteTechId  = (ushort)(unit.ObsoleteTech?.Id ?? 0x7F);
                output.TerrainCategory = (ushort)unit.Class;
                output.TotalMoves      = (ushort)unit.Move;
                output.Attack          = (ushort)unit.Attack;
                output.Defense         = (ushort)unit.Defense;
                output.Price           = (ushort)unit.Price;
                switch (unit)
                {
                case BaseUnitAir airUnit:
                    output.OutsideMoves = (ushort)airUnit.TotalFuel;
                    output.ViewRange    = 2;
                    break;

                case BaseUnitSea seaUnit:
                    output.ViewRange = (ushort)seaUnit.Range;
                    break;

                default:
                    output.ViewRange = 1;
                    break;
                }
                if (unit is IBoardable)
                {
                    output.TransportCapacity = (ushort)(unit as IBoardable).Cargo;
                }
                output.Role   = (ushort)unit.Role;
                output.TechId = (ushort)(unit.RequiredTech?.Id ?? ushort.MaxValue);
            }
            return(output);
        }