Exemplo n.º 1
0
        public void updateFog()
        {
            List <GameObject> objectToRemove = new List <GameObject>();

            foreach (GameObject fogGameObject in FogList.ToArray())
            {
                Fog fog = fogGameObject.GetComponent <FogController>().getFog();
                // fog is revealed but not activated
                if (fog.isRevealed() && fog.getFogKind() != FogKind.None)
                {
                    if (fogGameObject.transform.childCount != 0)
                    {
                        continue;                                                 // already have text
                    }
                    if (fog.getFogKind() == FogKind.TwoWP || fog.getFogKind() == FogKind.ThreeWP || fog.getFogKind() == FogKind.Event || fog.getFogKind() == FogKind.SP || fog.getFogKind() == FogKind.Gold || fog.getFogKind() == FogKind.Wineskin)
                    {
                        GameObject child = new GameObject();
                        child.transform.parent = fogGameObject.transform;
                        TextMeshPro mText = child.AddComponent <TextMeshPro>();
                        mText.fontSize = 5;
                        if (fog.getFogKind() == FogKind.TwoWP)
                        {
                            mText.text     = "2WP";
                            mText.fontSize = 4;
                        }
                        if (fog.getFogKind() == FogKind.ThreeWP)
                        {
                            mText.text     = "3WP";
                            mText.fontSize = 4;
                        }
                        if (fog.getFogKind() == FogKind.SP)
                        {
                            mText.text = "SP";
                        }
                        if (fog.getFogKind() == FogKind.Gold)
                        {
                            mText.text = "G";
                        }
                        if (fog.getFogKind() == FogKind.Event)
                        {
                            mText.text     = "Event";
                            mText.fontSize = 3;
                        }
                        if (fog.getFogKind() == FogKind.Wineskin)
                        {
                            mText.text     = "wine\nskin";
                            mText.fontSize = 3;
                        }
                        mText.alignment = TextAlignmentOptions.Center;
                        child.transform.localPosition = new Vector3(0, 1, 0);
                        child.transform.Rotate(90, 0, 0);
                        child.transform.localScale = Vector3.one;
                    }
                    else
                    {
                        if (fog.getFogKind() == FogKind.Monster)
                        {
                            GameObject mon = Instantiate(prefabsMonster[0], new Vector3(0, 0, 0), Quaternion.identity);
                            mon.GetComponent <MonsterController>().setNode(fogGameObject.GetComponent <FogController>().getCurrentPosition());
                            Monster m = null;
                            int     counterForMonster = 0;
                            foreach (TileUnit u in fog.getRegion().getTileUnits())
                            {
                                if (u.GetType() == typeof(Monster))
                                {
                                    counterForMonster++;
                                    m = (Monster)u;
                                }
                            }
                            mon.GetComponent <MonsterController>().setMonster(m);
                            monsterList.Add(mon);
                            mon.GetComponent <MonsterController>().setUIElements(monsterNameUI, monsterWPUI, monsterSPUI);
                            objectToRemove.Add(fogGameObject);
                            fog.getRegion().getTileUnits().Remove(fog);
                            if (counterForMonster != 1)
                            {
                                // if the region already has a monster, then the one from the fog moves.
                                mon.GetComponent <MonsterController>().monsterMove();
                            }
                        }
                        if (fog.getFogKind() == FogKind.Witch)
                        {
                            GameObject witch = Instantiate(witchPrefab, new Vector3(0, 0, 0), Quaternion.identity);
                            witch.GetComponent <WitchController>().setNode(fogGameObject.GetComponent <FogController>().getCurrentPosition());
                            Witch w = null;
                            foreach (TileUnit u in fog.getRegion().getTileUnits())
                            {
                                if (u.GetType() == typeof(Witch))
                                {
                                    w = (Witch)u;
                                }
                            }
                            witch.GetComponent <WitchController>().setWitch(w);
                            WitchList.Add(witch);
                            objectToRemove.Add(fogGameObject);
                            fog.getRegion().getTileUnits().Remove(fog);
                        }
                    }
                }
                else if (fog.isRevealed() && fog.getFogKind() == FogKind.None)
                {
                    // already activated
                    objectToRemove.Add(fogGameObject);
                    fog.getRegion().getTileUnits().Remove(fog);
                }
            }
            for (int i = 0; i < objectToRemove.Count; i++)
            {
                FogList.Remove(objectToRemove[i]);
                Destroy(objectToRemove[i]);
            }
        }
        public void initializeLegend()
        {
            //create all 84 regions and add to regions
            for (int i = 0; i <= 84; i++)
            {
                Region newRegion = new Region(i);
                newRegion.addTileUnit(new TileUnit(newRegion));
                regions.Add(newRegion);
            }

            //manually set neighborRegions for all 84 regions
            //0 castle
            regions[0].addTileUnit(new Castle(regions[0], players.Count));

            // place well on 5 35 45 55
            regions[5].addTileUnit(new Well(regions[5]));
            regions[35].addTileUnit(new Well(regions[35]));
            regions[45].addTileUnit(new Well(regions[45]));
            regions[55].addTileUnit(new Well(regions[55]));

            // place merchant on 18 57 71
            regions[18].addTileUnit(new Merchant(regions[18]));
            regions[57].addTileUnit(new Merchant(regions[57]));
            regions[71].addTileUnit(new Merchant(regions[71]));

            //17 have two gold
            regions[17].setGold(2);             // two gold

            //20 one gold
            regions[20].setGold(1);             // one gold

            // place gor on 8 20 21 26 48
            regions[8].addTileUnit(new Monster(regions[8], MonsterKind.Gor, false));
            regions[20].addTileUnit(new Monster(regions[20], MonsterKind.Gor, false));
            regions[21].addTileUnit(new Monster(regions[21], MonsterKind.Gor, false));
            regions[26].addTileUnit(new Monster(regions[26], MonsterKind.Gor, false));
            regions[48].addTileUnit(new Monster(regions[48], MonsterKind.Gor, false));

            // place skral on 19
            regions[19].addTileUnit(new Monster(regions[19], MonsterKind.Skral, false));

            // place farmer on 24 and 36 if Easy mode, else, only on 24
            regions[24].addTileUnit(new Farmer(regions[24]));
            if (difficulty == GameDifficulty.Easy)
            {
                regions[36].addTileUnit(new Farmer(regions[36]));
            }

            // place fog on 8 11 12 13 16 32 42 44 46 47 48 49 56 63 64
            List <Fog> fogTokens = new List <Fog>();                    // this are all 15 fogTokens

            // 5 event fog tokens
            for (int i = 0; i < 5; i++)
            {
                Fog fog = new Fog(regions[0], FogKind.Event);                 //region[0] as placehoder for initialization, has changed below
                fog.setHiddenObject(new Event(EventKind.EventNull));
                fog.getHiddenObject().hide();
                fogTokens.Add(fog);
            }
            // one SP fog token
            Fog SPfog = new Fog(regions[0], FogKind.SP);

            fogTokens.Add(SPfog);
            // one WP+2 fog token
            Fog WPfog2 = new Fog(regions[0], FogKind.TwoWP);

            fogTokens.Add(WPfog2);
            // one WP+3 fog token
            Fog WPfog3 = new Fog(regions[0], FogKind.ThreeWP);

            fogTokens.Add(WPfog3);
            // 3 one gold fog token
            for (int i = 0; i < 3; i++)
            {
                Fog goldFog = new Fog(regions[0], FogKind.Gold);
                fogTokens.Add(goldFog);
            }
            // one wineskin
            Fog wineSkinFog = new Fog(regions[0], FogKind.Wineskin);

            wineSkinFog.setHiddenObject(new Wineskin(ItemWeight.Light));
            wineSkinFog.getHiddenObject().hide();
            fogTokens.Add(wineSkinFog);

            // one witch
            Fog witchFog = new Fog(regions[0], FogKind.Witch);

            witchFog.setHiddenObject(new Witch(regions[0]));            //need to reset the region for Witch
            fogTokens.Add(witchFog);

            // two gor
            for (int i = 0; i < 2; i++)
            {
                Fog gorFog = new Fog(regions[0], FogKind.Monster);
                gorFog.setHiddenObject(new Monster(regions[0], MonsterKind.Gor, false));                 // need to reset region for Gor
                fogTokens.Add(gorFog);
            }
            // shuffle all fog tokens
            // can not sync so make the "random" list manually

            /*
             * for (int i = 0; i < fogTokens.Count; i++)
             * {
             *      Fog temp = fogTokens[i];
             *      int randomIndex = Random.Range(i, fogTokens.Count);
             *      fogTokens[i] = fogTokens[randomIndex];
             *      fogTokens[randomIndex] = temp;
             * }*/
            // shuffle manually
            fogTokens.Add(fogTokens[3]);
            fogTokens.RemoveAt(3);
            fogTokens.Add(fogTokens[6]);
            fogTokens.RemoveAt(6);
            fogTokens.Add(fogTokens[2]);
            fogTokens.RemoveAt(2);
            fogTokens.Add(fogTokens[14]);
            fogTokens.RemoveAt(14);
            fogTokens.Add(fogTokens[8]);
            fogTokens.RemoveAt(8);
            fogTokens.Add(fogTokens[10]);
            fogTokens.RemoveAt(10);


            // assign
            List <Region> fogRegions = new List <Region>();                     //below are all fogged regions

            fogRegions.Add(regions[8]);
            fogRegions.Add(regions[11]);
            fogRegions.Add(regions[12]);
            fogRegions.Add(regions[13]);
            fogRegions.Add(regions[16]);
            fogRegions.Add(regions[32]);
            fogRegions.Add(regions[42]);
            fogRegions.Add(regions[44]);
            fogRegions.Add(regions[46]);
            fogRegions.Add(regions[47]);
            fogRegions.Add(regions[48]);
            fogRegions.Add(regions[49]);
            fogRegions.Add(regions[56]);
            fogRegions.Add(regions[63]);
            fogRegions.Add(regions[64]);

            for (int i = 0; i < 15; i++)
            {
                fogRegions[i].addTileUnit(fogTokens[i]);
                fogTokens[i].setRegion(fogRegions[i]);
                if (fogTokens[i].getFogKind() == FogKind.Monster)
                {
                    ((Combatant)fogTokens[i].getHiddenObject()).setRegion(fogRegions[i]);
                    fogTokens[i].getHiddenObject().hide();
                }
                else if (fogTokens[i].getFogKind() == FogKind.Witch)
                {
                    ((TileUnit)fogTokens[i].getHiddenObject()).setRegion(fogRegions[i]);
                    fogTokens[i].getHiddenObject().hide();
                }
            }

            // finish creating all regions
            // setup hero
            foreach (KeyValuePair <Player, Hero> entry in heroes)
            {
                entry.Value.setupHero();
            }
        }
 public void setFog(Fog pfog)
 {
     aFog = pfog;
 }