示例#1
0
 public Fleet(List <StarShip> ships, TileMap tileMap, Neuron tileMapNeuron, HexTileCoord coord)
 {
     _starShips            = ships;
     _currentTileMap       = tileMap;
     _currentTileMapNeuron = tileMapNeuron;
     HexCoord = coord;
 }
示例#2
0
        public bool IsAvailable(HexTileCoord coord)
        {
            var side = _unit.OwnerType == OwnerType.Me && Game.IsMyTurn ||
                       _unit.OwnerType == OwnerType.Enemy && !Game.IsMyTurn;

            return(side && _unit.RemainMovePoint >= _unit.HexCoord.GetDistance(coord));
        }
        public UnInhabitablePlanet(string name, HexTileCoord coord)
        {
            Name     = name;
            HexCoord = coord;

            PlanetType = "Barren";
        }
        public StarSystem(Neuron parentNeuron)
        {
            _neuron = parentNeuron.LinkNewChildNeuron();

            Size     = 6;
            Name     = "TestSystem";
            HexCoord = new HexTileCoord(3, 3);

            TileMap = new TileMap(6, _neuron);
            SetPlanets();
        }
示例#5
0
 public void DoSpecialAction(HexTileCoord coord) => _moveAction(coord);
示例#6
0
 public MoveInfo(HexTileCoord fromCoord, int costUntilHere)
 {
     FromCoord     = fromCoord;
     CostUntilHere = costUntilHere;
 }
示例#7
0
 public BuildingConstructedSignal(Neuron neuron, string buildingName, HexTileCoord coord)
 {
     FromNeuron   = neuron;
     BuildingName = buildingName;
     Coord        = coord;
 }
示例#8
0
        public Building(Neuron parentNeuron, BuildingPrototype prototype, Planet planet, HexTileCoord coord,
                        IReadOnlyList <Modifier> modifiers = null)
        {
            _neuron = parentNeuron.LinkNewChildNeuron();

            Name     = prototype.Name;
            HexCoord = coord;

            _planet = planet;

            YieldFromBuilding  = prototype.BuildingYield;
            UpkeepFromBuilding = prototype.BuildingUpkeep;

            var resourceData = GameDataStorage.Instance.GetGameData <GameFactorResourceData>();
            var slotData     = GameDataStorage.Instance.GetGameData <PopSlotData>();

            // Initialize yield kind
            var yieldKind = new HashSet <string>();

            foreach (var kv in prototype.BasePopSlots)
            {
                foreach (var k in slotData[kv.Key].YieldFactorKind.Where(x => resourceData.AllResourceSet.Contains(x)))
                {
                    yieldKind.Add(k);
                }
            }

            YieldResourceKind = yieldKind;

            // Initialize modifiers
            if (modifiers != null)
            {
                foreach (var m in modifiers)
                {
                    if (!m.ModifierInfo.GameFactorAmount.Keys.Any(x =>
                                                                  x == "Happiness" && m.ModifierInfo.TopHolder == ModifierHolderKind.Building ||
                                                                  x == "AnyResource" || yieldKind.Contains(x)))
                    {
                        continue;
                    }
                    _modifiers.Add(m);
                    ApplyModifierChange(m, true);
                }
            }

            // Initialize slots
            foreach (var kv in prototype.BasePopSlots)
            {
                var p = slotData[kv.Key];

                var slot = new PopSlot(_neuron, this, p);
                for (var i = 0; i < kv.Value; i++)
                {
                    _popSlots.Add(slot);
                }
            }

            // Initialize adjacency bonus
            var adj = prototype.AdjacencyBonus;

            AdjacencyBonusMaxLevel = adj.MaxLevel;
            AdjacencyBonusPerLevel = adj.BonusPerLevel;
            AdjacencyBonusDict     = adj.BonusChangeInfo;

            _neuron.Subscribe <BuildingConstructedSignal>(OnBuildingConstructedSignal);
            _neuron.Subscribe <GameCommandSignal>(OnGameCommandSignal);
        }
 public static int GetDistance(this HexTileCoord c1, HexTileCoord c2) =>
 (Mathf.Abs(c1.Q - c2.Q) + Mathf.Abs(c1.Q + c1.R - c2.Q - c2.R) + Mathf.Abs(c1.R - c2.R)) / 2;
示例#10
0
 public BuildingQueueElement(BuildingPrototype prototype, HexTileCoord coord, bool isUpgrading = false)
 {
     Prototype   = prototype;
     Coord       = coord;
     IsUpgrading = isUpgrading;
 }