Exemple #1
0
    private void UpdateAfterBuildingChanged(int playerSlotId)
    {
        var player = GamePlay.Instance.FindPlayerAgentBySlotId(playerSlotId);
        //var hexes = GetHexagonsInRange(playerSlotId, TowerType.ResourceTower);

        var towers = GetTowersOfPlayer(player);
        var vision = RangeUtils.GetPlayerVisionServer(player);
        int prod   = 0;

        for (int i = 0; i < towers.Count; ++i)
        {
            if (towers[i].type != TowerType.ResourceTower)
            {
                continue;
            }

            var hexes = RangeUtils.GetRangeOfTower(towers[i], vision);
            RemoveHexagonsOccupied(hexes);
            prod += hexes.Count;
        }

        player.SetProduction(prod);

        int res =
            SumAttribute(player, TowerType.ResourceTower, x => { return(x.cost); }) +
            SumAttribute(player, TowerType.VisionTower, x => { return(x.cost); }) +
            SumAttribute(player, TowerType.AttackTower, x => { return(x.cost); });

        player.SetCost(res);

        for (int i = 0; i < towers.Count; ++i)
        {
            if (towers[i].state == TowerInfo.BuildingState.Working)
            {
                if (!vision.Contains(towers[i].coord))
                {
                    towers[i].state = TowerInfo.BuildingState.OutOfVision;
                }
            }
            else if (towers[i].state == TowerInfo.BuildingState.OutOfVision)
            {
                if (vision.Contains(towers[i].coord))
                {
                    towers[i].state = TowerInfo.BuildingState.Working;
                }
            }
        }
    }
    public override void OnEnter()
    {
        base.OnEnter();

        var vision = RangeUtils.GetPlayerVisionServer(CurrentPlayer);

        var towers = TowerManager.Instance.GetTowersOfPlayer(CurrentPlayer);

        for (int i = 0; i < towers.Count; i++)
        {
            if (towers[i].state == TowerInfo.BuildingState.Building)
            {
                if (vision.Contains(towers[i].coord))
                {
                    towers[i].state = TowerInfo.BuildingState.Working;
                }
                else
                {
                    towers[i].state = TowerInfo.BuildingState.OutOfVision;
                }
            }
        }
    }