Ejemplo n.º 1
0
        private Position AddResourcePatch(int size, int mapsize, Position center, TileItemType tileType)
        {
            var square = tileType == TileItemType.RESOURCE_COMMON_SOUL;

            var mazeness = 0.5;

            mazeness = (tileType == TileItemType.RESOURCE_COMMON_BODY) ? 1 : mazeness;
            mazeness = (tileType == TileItemType.RESOURCE_RARE_BODY) ? 10 : mazeness;
            mazeness = (tileType == TileItemType.RESOURCE_COMMON_SOUL) ? 10 : mazeness;
            mazeness = (tileType == TileItemType.RESOURCE_RARE_SOUL) ? 0.1 : mazeness;

            var      patch       = GenUtils.MazeGen(size, mazeness, square, 1, 1, 1, 1);
            Position furthestPos = center;

            foreach (Position pos in patch)
            {
                Position newpos = new Position(center.X + pos.X, center.Y + pos.Y);
                if (newpos.IsInMap(mapsize))
                {
                    tiles[newpos.X, newpos.Y].Item = TileItemInfo.GetClone(tileType);
                }
                if (newpos.Dist(center) > furthestPos.Dist(center))
                {
                    furthestPos = newpos;
                }
            }

            return(furthestPos);
        }
Ejemplo n.º 2
0
Archivo: Tile.cs Proyecto: zril/Coma
 public Tile()
 {
     Influence    = 0;
     Contructable = false;
     Radiance     = false;
     Item         = TileItemInfo.GetClone(TileItemType.NONE);
 }
Ejemplo n.º 3
0
    public void SelectForBuild(TileItemType type)
    {
        MainCamera.cullingMask |= 1 << LayerMask.NameToLayer("TileConstr");
        TileItem item = TileItemInfo.Get(type);

        SelectImage.GetComponent <Image>().sprite = MainController.TileItemSprites[(int)item.Fonction];
        Color col = MainController.TileItemColors[(int)item.Synergy];

        col.a = 0.2f;
        SelectImage.GetComponent <Image>().color = col;
        SelectedBuildItem = type;
    }
Ejemplo n.º 4
0
Archivo: Tile.cs Proyecto: zril/Coma
        public void FromMessage(String message)
        {
            string[] splitargs = message.Split(';');

            Type         = (TileType)int.Parse(splitargs[0]);
            Influence    = int.Parse(splitargs[1]);
            Contructable = Utils.StringToBool(splitargs[2]);
            Radiance     = Utils.StringToBool(splitargs[3]);

            string[]     itemargs = splitargs[4].Split(',');
            TileItemType itemtype = (TileItemType)(int.Parse(itemargs[0]));

            Item = TileItemInfo.GetClone(itemtype);
            Item.FromMessage(splitargs[4]);
        }
Ejemplo n.º 5
0
 private void ClearObstacle(int radius, int mapsize, Position center)
 {
     for (int i = center.X - radius; i <= center.X + radius; i++)
     {
         for (int j = center.Y - radius; j <= center.Y + radius; j++)
         {
             Position pos = new Position(i, j);
             if (pos.IsInMap(mapsize) && center.Dist(pos) <= radius)
             {
                 if (tiles[pos.X, pos.Y].Item.ItemType == TileItemType.OBSTACLE)
                 {
                     tiles[pos.X, pos.Y].Item = TileItemInfo.GetClone(TileItemType.NONE);
                 }
             }
         }
     }
 }
Ejemplo n.º 6
0
    void UpdateUI()
    {
        if (currentTileUI == null)
        {
            TileUICanvas = GameObject.FindGameObjectWithTag("TileUICanvas").transform;
            GameObject tileUIObj = Instantiate <GameObject>(MainController.TileUIPrefab, transform.localPosition, Quaternion.identity, TileUICanvas);
            currentTileUI = tileUIObj.GetComponent <TileUI>();
        }

        TileItem item = null;

        if (currentTile != null && currentTile.Type != TileType.NONE && currentTile.Item != null && currentTile.Item.ItemType != TileItemType.NONE)
        {
            item = TileItemInfo.Get(currentTile.Item.ItemType);
        }

        currentTileUI.UpdateDisplay(item);
    }
Ejemplo n.º 7
0
        private void AddVirus(WorldMap map)
        {
            var virusPosList = new List <Position>();

            for (int j = 0; j < map.GetTiles().GetLength(1); j++)
            {
                for (int i = 0; i < map.GetTiles().GetLength(0); i++)
                {
                    if (map.GetTiles()[i, j].Influence <-5 && map.GetTiles()[i, j].Influence> -15 && map.GetTiles()[i, j].Item.ItemType == TileItemType.NONE)
                    {
                        virusPosList.Add(new Position(i, j));
                    }
                }
            }
            if (virusPosList.Count > 0)
            {
                var viruspos = virusPosList[random.Next(virusPosList.Count)];
                map.GetTiles()[viruspos.X, viruspos.Y].Item = TileItemInfo.GetClone(TileItemType.VIRUS);
            }
        }
Ejemplo n.º 8
0
        private void AddNightmare(WorldMap map)
        {
            var nightmarePosList = new List <Position>();

            for (int j = 0; j < map.GetTiles().GetLength(1); j++)
            {
                for (int i = 0; i < map.GetTiles().GetLength(0); i++)
                {
                    if (map.GetTiles()[i, j].Influence <= 0 && map.GetTiles()[i, j].Influence >= -5 && map.GetTiles()[i, j].Item.ItemType == TileItemType.NONE)
                    {
                        nightmarePosList.Add(new Position(i, j));
                    }
                }
            }
            if (nightmarePosList.Count > 0)
            {
                var nightmarepos = nightmarePosList[random.Next(nightmarePosList.Count)];
                map.GetTiles()[nightmarepos.X, nightmarepos.Y].Item = TileItemInfo.GetClone(TileItemType.NIGHTMARE);
            }
        }
Ejemplo n.º 9
0
    public void UpdateDisplay()
    {
        Init();

        if (Item == null)
        {
            Item = TileItemInfo.Get(ItemType);
        }

        ButtonImage.sprite = MainController.TileItemSprites[(int)Item.Fonction];
        ButtonImage.color  = MainController.TileItemColors[(int)Item.Synergy];

        string cost = "";

        if (Item.CostCells > 0)
        {
            cost += Item.CostCells + "C  ";
        }

        if (Item.CostThoughts > 0)
        {
            cost += Item.CostThoughts + "T";
        }

        if (cost != "")
        {
            cost = cost.Trim() + "\n";
        }

        if (Item.CostNutrients > 0)
        {
            cost += Item.CostNutrients + "N  ";
        }

        if (Item.CostIdeas > 0)
        {
            cost += Item.CostIdeas + "I";
        }

        Text.text = cost.Trim();
    }
Ejemplo n.º 10
0
    public void UpdateDisplay()
    {
        TileItem item = null;

        TileRenderer.sprite = MainController.TileSprites[(int)currentTile.Type];
        TileRenderer.color  = MainController.PlayerIsBody ? TileColorBody : TileColorSoul;
        if (currentTile == null || currentTile.Type == TileType.NONE)
        {
            // Erase all
            TileItemRenderer.sprite = null;

            Color consColor = TileConstructRenderer.color;
            consColor.a = 0;
            TileConstructRenderer.color = consColor;

            Color influColor = TileInfluCoverRenderer.color;
            influColor.a = 0;
            TileInfluCoverRenderer.color = influColor;

            TileInfluValueRenderer.color = Color.clear;

            empty = true;
        }
        else
        {
            if (currentTile.Item == null || currentTile.Item.ItemType == TileItemType.NONE)
            {
                empty = true;

                if (SynergyMarker != null)
                {
                    Destroy(SynergyMarker);
                }
                // Remove Tileitem sprites
                if (TileItemRenderer.sprite != null)
                {
                    TileItemRenderer.DOFade(0f, 0.5f).onComplete = () =>
                    {
                        TileItemRenderer.sprite = null;
                    };
                }
                else
                {
                    //Debug.Log("Sprite null 3");
                    TileItemRenderer.sprite = null;
                }
            }
            else
            {
                // Replace with constant TileItem
                item = TileItemInfo.Get(currentTile.Item.ItemType);

                //bool wasEmpty = TileItemRenderer.sprite == null;
                Color color = Color.white;
                TileItemRenderer.sprite = MainController.TileItemSprites[(int)item.Fonction];

                Tweener fade = null;
                if (empty)
                {
                    //color.a = 0f;
                    TileItemRenderer.color = color;
                    fade  = TileItemRenderer.DOFade(1f, 0.5f);
                    empty = false;
                }


                if (currentTile.Item.Synergy > 0 && SynergyMarker == null)
                {
                    //DoTween + Instantiate marker
                    color.a = 1f;
                    if (fade == null)
                    {
                        SynergyTween = TileItemRenderer.DOColor(MainController.PlayerIsBody ? TileColorSynergyBody : TileColorSynergySoul, 1f).SetLoops(-1, LoopType.Yoyo);
                    }
                    else
                    {
                        fade.OnComplete(() =>
                        {
                            SynergyTween = TileItemRenderer.DOColor(MainController.PlayerIsBody ? TileColorSynergyBody : TileColorSynergySoul, 1f).SetLoops(-1, LoopType.Yoyo);
                        });
                    }

                    SynergyMarker = Instantiate <GameObject>(SynergyMarkerPrefab, transform);
                    SynergyMarker.GetComponent <SynergyMarker>().SynergyMode = item.SynergyMode;
                    //Debug.Log(item.SynergyMode);
                }

                if (currentTile.Item.Synergy > 0 && SynergyMarker != null && SynergyTween != null)
                {
                    SynergyTween.timeScale = currentTile.Item.Synergy;
                }

                if (currentTile.Item.Synergy == 0 && SynergyMarker != null)
                {
                    // Stop Tweening + Destroy marker
                    SynergyTween.Kill();
                    Destroy(SynergyMarker);
                    TileItemRenderer.color = color;
                }

                /*if (currentTile.Item.Synergy > 0 && SynergyMarker != null)
                 * {
                 *  SynergyTween.timeScale = currentTile.Item.Synergy;
                 * }*/
            }
            Color consColor = TileConstructRenderer.color;
            consColor.a = currentTile.Contructable ? 0.25f : 0;
            TileConstructRenderer.color = consColor;

            Color influColor = TileInfluCoverRenderer.color;
            influColor.a = currentTile.Radiance ? 0.25f : 0;
            TileInfluCoverRenderer.color = influColor;

            Color influValueColor = Color.black;

            float alpha = 0;
            if (currentTile.Influence > 0)
            {
                influValueColor = MainController.PlayerIsBody ? TileColorInfluOKBody : TileColorInfluOKSoul;
                alpha           = 0.05f + 0.85f * Mathf.Min(1f, Mathf.Abs(currentTile.Influence / ColorCapValue));
            }
            else if (currentTile.Influence < 0)
            {
                influValueColor = MainController.PlayerIsBody ? TileColorInfluKOBody : TileColorInfluKOSoul;
                alpha           = 0.35f + 0.5f * Mathf.Min(1f, Mathf.Abs(currentTile.Influence / ColorCapValue));
            }

            influValueColor.a = alpha;
            TileInfluValueRenderer.DOColor(influValueColor, 0.5f);
        }

        if (TileItemRenderer.isVisible && currentTileUI != null && MainController.IsTileUIVisible)
        {
            currentTileUI.UpdateDisplay(item);
        }
    }
Ejemplo n.º 11
0
        public override void RunWithCast(Player player, BuildParam param)
        {
            var cellcost     = TileItemInfo.Get(param.Id).CostCells;
            var nutrientcost = TileItemInfo.Get(param.Id).CostNutrients;
            var thoughtcost  = TileItemInfo.Get(param.Id).CostThoughts;
            var ideacost     = TileItemInfo.Get(param.Id).CostIdeas;

            if (GameModel.Instance.Bank.Cells < cellcost)
            {
                return;
            }
            if (GameModel.Instance.Bank.Nutrients < nutrientcost)
            {
                return;
            }
            if (GameModel.Instance.Bank.Thoughts < thoughtcost)
            {
                return;
            }
            if (GameModel.Instance.Bank.Ideas < ideacost)
            {
                return;
            }


            WorldMap map = null;

            if (player.Type == PlayerType.BODY)
            {
                map = GameModel.Instance.BodyMap;
            }

            if (player.Type == PlayerType.SOUL)
            {
                map = GameModel.Instance.SoulMap;
            }

            if (param.Id == TileItemType.NONE)
            {
                switch (map.GetTiles()[param.Position.X, param.Position.Y].Item.ItemType)
                {
                case TileItemType.GENERATOR_SOUL:
                case TileItemType.GENERATOR_BODY:
                case TileItemType.BUILD_AREA_BODY:
                case TileItemType.BUILD_AREA_SOUL:
                case TileItemType.HARVESTOR_BODY:
                case TileItemType.HARVESTOR_SOUL:
                case TileItemType.RADIANCE_AREA_BODY:
                case TileItemType.RADIANCE_AREA_SOUL:
                    map.GetTiles()[param.Position.X, param.Position.Y].Item = TileItemInfo.GetClone(param.Id);
                    return;

                default:
                    return;
                }
            }


            if (map.GetTiles()[param.Position.X, param.Position.Y].Contructable && map.GetTiles()[param.Position.X, param.Position.Y].Item.ItemType == TileItemType.NONE)
            {
                map.GetTiles()[param.Position.X, param.Position.Y].Item = TileItemInfo.GetClone(param.Id);
                GameModel.Instance.Bank.Cells     -= cellcost;
                GameModel.Instance.Bank.Nutrients -= nutrientcost;
                GameModel.Instance.Bank.Thoughts  -= thoughtcost;
                GameModel.Instance.Bank.Ideas     -= ideacost;
            }
        }
Ejemplo n.º 12
0
        public WorldMap(int mapsize, PlayerType playerType)
        {
            random = new Random();

            tiles = new Tile[mapsize, mapsize];
            for (int j = 0; j < mapsize; j++)
            {
                for (int i = 0; i < mapsize; i++)
                {
                    tiles[i, j]      = new Tile();
                    tiles[i, j].Type = TileType.NORMAL;
                }
            }


            //Body
            if (playerType == PlayerType.BODY)
            {
                //tiles

                for (int n = 0; n < 15; n++)
                {
                    Position patchCenter = new Position(random.Next(mapsize), random.Next(mapsize));
                    for (int k = 0; k < 8; k++)
                    {
                        patchCenter = AddResourcePatch(40, mapsize, patchCenter, TileItemType.OBSTACLE);
                    }
                }

                for (int n = 0; n < 25; n++)
                {
                    Position patchCenter = new Position(random.Next(mapsize), random.Next(mapsize));
                    for (int k = 0; k < 3; k++)
                    {
                        AddResourcePatch(20, mapsize, patchCenter, TileItemType.RESOURCE_COMMON_BODY);
                    }
                }

                for (int n = 0; n < 10; n++)
                {
                    Position patchCenter = new Position(random.Next(mapsize), random.Next(mapsize));
                    AddResourcePatch(18, mapsize, patchCenter, TileItemType.RESOURCE_RARE_BODY);
                }


                //start
                var startX = 10 + random.Next(mapsize / 4);
                var startY = 10 + random.Next(mapsize / 4);

                /*tiles[0, 0].Item = TileItemInfo.GetClone(TileItemType.VIRUS);
                 * tiles[0, mapsize - 1].Item = TileItemInfo.GetClone(TileItemType.VIRUS);
                 * tiles[mapsize - 1, 0].Item = TileItemInfo.GetClone(TileItemType.VIRUS);
                 * tiles[mapsize - 1, mapsize - 1].Item = TileItemInfo.GetClone(TileItemType.VIRUS);
                 * tiles[mapsize/2, 0].Item = TileItemInfo.GetClone(TileItemType.VIRUS);
                 * tiles[0, mapsize / 2].Item = TileItemInfo.GetClone(TileItemType.VIRUS);
                 * tiles[mapsize - 1, mapsize / 2].Item = TileItemInfo.GetClone(TileItemType.VIRUS);
                 * tiles[mapsize / 2, mapsize - 1].Item = TileItemInfo.GetClone(TileItemType.VIRUS);*/


                Position startResource1 = new Position(startX - 10 + random.Next(20), startY - 10 + random.Next(20));
                AddResourcePatch(10, mapsize, startResource1, TileItemType.RESOURCE_COMMON_BODY);
                Position startResource2 = new Position(startX - 10 + random.Next(20), startY - 10 + random.Next(20));
                AddResourcePatch(5, mapsize, startResource1, TileItemType.RESOURCE_RARE_BODY);

                tiles[startX, startY].Item = TileItemInfo.GetClone(TileItemType.ORGAN);
                ClearObstacle(10, mapsize, new Position(startX, startY));


                //objective
                var endX = startX + 5 + random.Next(10);
                var endY = startY + 50 + random.Next(10);

                tiles[endX, endY].Item = TileItemInfo.GetClone(TileItemType.CORRUPTED_ORGAN);
                ClearObstacle(10, mapsize, new Position(endX, endY));

                endX = startX + 50 + random.Next(10);
                endY = startY + 5 + random.Next(10);

                tiles[endX, endY].Item = TileItemInfo.GetClone(TileItemType.CORRUPTED_ORGAN);
                ClearObstacle(10, mapsize, new Position(endX, endY));

                Start = new Position(startX, startY);
            }

            //Soul
            if (playerType == PlayerType.SOUL)
            {
                //tiles
                for (int n = 0; n < 50; n++)
                {
                    Position patchCenter = new Position(random.Next(mapsize), random.Next(mapsize));
                    AddResourcePatch(35, mapsize, patchCenter, TileItemType.RESOURCE_COMMON_SOUL);
                }

                for (int n = 0; n < 15; n++)
                {
                    Position patchCenter = new Position(random.Next(mapsize), random.Next(mapsize));
                    for (int k = 0; k < 4; k++)
                    {
                        patchCenter = AddResourcePatch(40, mapsize, patchCenter, TileItemType.OBSTACLE);
                    }
                }

                for (int n = 0; n < 20; n++)
                {
                    Position patchCenter = new Position(random.Next(mapsize), random.Next(mapsize));
                    AddResourcePatch(10, mapsize, patchCenter, TileItemType.RESOURCE_RARE_SOUL);
                }

                //Start
                var startX = 10 + random.Next(mapsize / 4);
                var startY = 10 + random.Next(mapsize / 4);

                Position startResource1 = new Position(startX - 10 + random.Next(20), startY - 10 + random.Next(20));
                AddResourcePatch(10, mapsize, startResource1, TileItemType.RESOURCE_COMMON_SOUL);
                Position startResource2 = new Position(startX - 10 + random.Next(20), startY - 10 + random.Next(20));
                AddResourcePatch(5, mapsize, startResource1, TileItemType.RESOURCE_RARE_SOUL);

                tiles[startX, startY].Item = TileItemInfo.GetClone(TileItemType.FEELING);
                ClearObstacle(10, mapsize, new Position(startX, startY));


                //objectives
                var endX = startX + 5 + random.Next(10);
                var endY = startY + 50 + random.Next(10);

                tiles[endX, endY].Item = TileItemInfo.GetClone(TileItemType.CORRUPTED_FEELING);
                ClearObstacle(10, mapsize, new Position(endX, endY));

                endX = startX + 50 + random.Next(10);
                endY = startY + 5 + random.Next(10);

                tiles[endX, endY].Item = TileItemInfo.GetClone(TileItemType.CORRUPTED_FEELING);
                ClearObstacle(10, mapsize, new Position(endX, endY));

                Start = new Position(startX, startY);
            }
        }
Ejemplo n.º 13
0
        public override void Execute(PlayerType mapType, Position pos, int synergy)
        {
            WorldMap map = GameModel.Instance.GetMap(mapType);

            for (int i = pos.X - Radius; i <= pos.X + Radius; i++)
            {
                for (int j = pos.Y - Radius; j <= pos.Y + Radius; j++)
                {
                    var tmpPos = new Position(i, j);
                    if (tmpPos.IsInMap(map.GetTiles().GetLength(0)))
                    {
                        var dist = tmpPos.Dist(pos);
                        if (dist <= Radius)
                        {
                            var tileType = map.GetTiles()[tmpPos.X, tmpPos.Y].Item.ItemType;
                            var bank     = GameModel.Instance.Bank;

                            switch (tileType)
                            {
                            case TileItemType.RESOURCE_COMMON_BODY:
                                ResourceBodyItem item1 = map.GetTiles()[tmpPos.X, tmpPos.Y].Item as ResourceBodyItem;
                                item1.Count -= Rate;
                                bank.Cells  += Rate;
                                if (item1.Count < 0)
                                {
                                    bank.Cells += item1.Count;
                                    map.GetTiles()[tmpPos.X, tmpPos.Y].Item = TileItemInfo.GetClone(TileItemType.NONE);
                                }
                                break;

                            case TileItemType.RESOURCE_COMMON_SOUL:
                                ResourceSoulItem item2 = map.GetTiles()[tmpPos.X, tmpPos.Y].Item as ResourceSoulItem;
                                item2.Count   -= Rate;
                                bank.Thoughts += Rate;
                                if (item2.Count < 0)
                                {
                                    bank.Thoughts += item2.Count;
                                    map.GetTiles()[tmpPos.X, tmpPos.Y].Item = TileItemInfo.GetClone(TileItemType.NONE);
                                }
                                break;

                            case TileItemType.RESOURCE_RARE_BODY:
                                ResourceBodyRareItem item3 = map.GetTiles()[tmpPos.X, tmpPos.Y].Item as ResourceBodyRareItem;
                                item3.Count    -= Rate;
                                bank.Nutrients += Rate;
                                bank.Ideas     += Rate;
                                if (item3.Count < 0)
                                {
                                    bank.Nutrients += item3.Count;
                                    map.GetTiles()[tmpPos.X, tmpPos.Y].Item = TileItemInfo.GetClone(TileItemType.NONE);
                                }
                                break;

                            case TileItemType.RESOURCE_RARE_SOUL:
                                ResourceSoulRareItem item4 = map.GetTiles()[tmpPos.X, tmpPos.Y].Item as ResourceSoulRareItem;
                                item4.Count    -= Rate;
                                bank.Ideas     += Rate;
                                bank.Nutrients += Rate;
                                if (item4.Count < 0)
                                {
                                    bank.Ideas += item4.Count;
                                    map.GetTiles()[tmpPos.X, tmpPos.Y].Item = TileItemInfo.GetClone(TileItemType.NONE);
                                }
                                break;

                            default:
                                break;
                            }
                        }
                    }
                }
            }
        }
Ejemplo n.º 14
0
        private void UpdateTiles(PlayerType mapType)
        {
            var map = GameModel.Instance.GetMap(mapType);

            var listConsoCells     = new List <Position>();
            var listConsoThoughts  = new List <Position>();
            var listConsoNutrients = new List <Position>();
            var listConsoIdeas     = new List <Position>();

            //execution fonctions
            for (int j = 0; j < map.GetTiles().GetLength(1); j++)
            {
                for (int i = 0; i < map.GetTiles().GetLength(0); i++)
                {
                    var tmppos = new Position(i, j);
                    if (tmppos.IsInMap(map.GetTiles().GetLength(1)))
                    {
                        FunctionInfo fonctions = TileItemFunctionInfo.Get(map.GetTiles()[i, j].Item.ItemType);
                        fonctions.MainFunction.Execute(mapType, tmppos);
                        fonctions.SecondaryFunction.Execute(mapType, tmppos);

                        if (TileItemInfo.Get(map.GetTiles()[i, j].Item.ItemType).MaintenanceCellCostRate > 0)
                        {
                            listConsoCells.Add(tmppos);
                        }
                        if (TileItemInfo.Get(map.GetTiles()[i, j].Item.ItemType).MaintenanceThoughtCostRate > 0)
                        {
                            listConsoThoughts.Add(tmppos);
                        }
                        if (TileItemInfo.Get(map.GetTiles()[i, j].Item.ItemType).MaintenanceNutrientCostRate > 0)
                        {
                            listConsoNutrients.Add(tmppos);
                        }
                        if (TileItemInfo.Get(map.GetTiles()[i, j].Item.ItemType).MaintenanceIdeaCostRate > 0)
                        {
                            listConsoIdeas.Add(tmppos);
                        }

                        //synergy
                        if (TileItemInfo.Get(map.GetTiles()[i, j].Item.ItemType).SynergyMode != TileItemSynergyMode.NONE)
                        {
                            int nbSynergy = Synergy.CheckSynergyTrigger(map, tmppos, TileItemInfo.Get(map.GetTiles()[i, j].Item.ItemType).SynergyMode, TileItemFunctionInfo.Get(map.GetTiles()[i, j].Item.ItemType).SynergyTrigger);
                            if (nbSynergy > 0)
                            {
                                fonctions.SynergyFunction.Execute(mapType, tmppos, nbSynergy);
                                map.GetTiles()[i, j].Item.Synergy = nbSynergy;
                            }
                        }

                        //maintenance
                        GameModel.Instance.Bank.Cells     -= TileItemInfo.Get(map.GetTiles()[i, j].Item.ItemType).MaintenanceCellCostRate;
                        GameModel.Instance.Bank.Thoughts  -= TileItemInfo.Get(map.GetTiles()[i, j].Item.ItemType).MaintenanceThoughtCostRate;
                        GameModel.Instance.Bank.Nutrients -= TileItemInfo.Get(map.GetTiles()[i, j].Item.ItemType).MaintenanceNutrientCostRate;
                        GameModel.Instance.Bank.Ideas     -= TileItemInfo.Get(map.GetTiles()[i, j].Item.ItemType).MaintenanceIdeaCostRate;
                    }
                }
            }

            if (GameModel.Instance.Bank.Cells < 0 && listConsoCells.Count > 0)
            {
                var removePos = listConsoCells[random.Next(listConsoCells.Count)];
                map.GetTiles()[removePos.X, removePos.Y].Item = TileItemInfo.GetClone(TileItemType.NONE);
                GameModel.Instance.Bank.Cells = 0;
            }
            if (GameModel.Instance.Bank.Thoughts < 0 && listConsoThoughts.Count > 0)
            {
                var removePos = listConsoThoughts[random.Next(listConsoThoughts.Count)];
                map.GetTiles()[removePos.X, removePos.Y].Item = TileItemInfo.GetClone(TileItemType.NONE);
                GameModel.Instance.Bank.Thoughts = 0;
            }
            if (GameModel.Instance.Bank.Nutrients < 0 && listConsoNutrients.Count > 0)
            {
                var removePos = listConsoNutrients[random.Next(listConsoNutrients.Count)];
                map.GetTiles()[removePos.X, removePos.Y].Item = TileItemInfo.GetClone(TileItemType.NONE);
                GameModel.Instance.Bank.Nutrients             = 0;
            }
            if (GameModel.Instance.Bank.Ideas < 0 && listConsoIdeas.Count > 0)
            {
                var removePos = listConsoIdeas[random.Next(listConsoIdeas.Count)];
                map.GetTiles()[removePos.X, removePos.Y].Item = TileItemInfo.GetClone(TileItemType.NONE);
                GameModel.Instance.Bank.Ideas = 0;
            }
        }
Ejemplo n.º 15
0
        private void ResolveDestructions(PlayerType mapType)
        {
            var map = GameModel.Instance.GetMap(mapType);

            for (int j = 0; j < map.GetTiles().GetLength(1); j++)
            {
                for (int i = 0; i < map.GetTiles().GetLength(0); i++)
                {
                    if (map.GetTiles()[i, j].Influence < 0)
                    {
                        //toi pas construire
                        map.GetTiles()[i, j].Contructable = false;

                        //
                        switch (map.GetTiles()[i, j].Item.ItemType)
                        {
                        case TileItemType.GENERATOR_SOUL:
                        case TileItemType.GENERATOR_BODY:
                        case TileItemType.HARVESTOR_BODY:
                        case TileItemType.HARVESTOR_SOUL:
                        case TileItemType.BUILD_AREA_BODY:
                        case TileItemType.BUILD_AREA_SOUL:
                        case TileItemType.RADIANCE_AREA_BODY:
                        case TileItemType.RADIANCE_AREA_SOUL:
                            map.GetTiles()[i, j].Item = TileItemInfo.GetClone(TileItemType.NONE);
                            break;

                        case TileItemType.ORGAN:
                            map.GetTiles()[i, j].Item = TileItemInfo.GetClone(TileItemType.CORRUPTED_ORGAN);
                            break;

                        case TileItemType.FEELING:
                            map.GetTiles()[i, j].Item = TileItemInfo.GetClone(TileItemType.CORRUPTED_FEELING);
                            break;

                        default:
                            break;
                        }
                    }

                    if (map.GetTiles()[i, j].Influence > 0)
                    {
                        switch (map.GetTiles()[i, j].Item.ItemType)
                        {
                        case TileItemType.VIRUS:
                        case TileItemType.NIGHTMARE:
                            map.GetTiles()[i, j].Item = TileItemInfo.GetClone(TileItemType.NONE);
                            break;

                        case TileItemType.CORRUPTED_ORGAN:
                            map.GetTiles()[i, j].Item = TileItemInfo.GetClone(TileItemType.ORGAN);
                            break;

                        case TileItemType.CORRUPTED_FEELING:
                            map.GetTiles()[i, j].Item = TileItemInfo.GetClone(TileItemType.FEELING);
                            break;

                        default:
                            break;
                        }
                    }
                }
            }
        }