/// </deck questions>
        
        private void Mustering()
        {
            GameState gs = new GameState();

            gs.RegionList = m_lRegionList;
            gs.UnitsList = m_lUnitsList;
            gs.PlayerList = m_lPlayerList;
            //bevonni a mustering pointal fogunk
            foreach (var item in m_lPlayerList)
            {
                item.Recruit(gs, item.playerHouse, ref m_lUnitsList);

            }
         
        }
        private void ExecutePlanningPart()
        {
            GameState gs = new GameState();
            gs.m_lBannedOrders = m_lBannedOrders;
            gs.PlayerList = m_lPlayerList;
            gs.RegionList = m_lRegionList;
            gs.UnitsList = m_lUnitsList;
        
            foreach (var item in m_lPlayerList)
            {
                item.PlaceOrders(gs, item.playerHouse, ref m_lPlacedOrderList);

                AddToOutput(item.playerHouse + " finish the planning.");
            }


            bool firstLineAdded = false;
            foreach (var item in m_lPlayerList)
            {
                string osszes = null;
                foreach (var item2 in m_lPlacedOrderList)
                {

                    if (item2.ownerPlayerName == item.playerHouse)
                    {
                        if (!firstLineAdded)
                        {
                            osszes += item2.ownerPlayerName + "\n" + "===================\n";
                            firstLineAdded = !firstLineAdded;
                        }
                        osszes += "\n";
                        osszes += item2.ToString();
                        osszes += "\n";
                    }
                }
                //MessageBox.Show(osszes);
                firstLineAdded = !firstLineAdded;
            }
            
            AddToOutput("planning part finished");
        }
        private void ExecuteActionPart()
        {
            //CSAK SORRENDRE HASZNALJUK, ADATMODOSITASRA NEEE
            List<HOUSE> playerOrdered = new List<HOUSE>();

            List<Tuple<HOUSE, int>> playerordered_helper = new List<Tuple<HOUSE, int>>();

            foreach (var item in m_lPlayerList)
            {
                playerordered_helper.Add(new Tuple<HOUSE, int>(item.playerHouse, item.positionOnThroneInfluencetrack - 1));
            }

            playerordered_helper.OrderBy(p => p.Item2);

            foreach (var item in playerordered_helper)
            {
                playerOrdered.Add(item.Item1);
            }
            
            List<PlacedOrder> RaidList = new List<PlacedOrder>();
            List<PlacedOrder> AttackList = new List<PlacedOrder>();
            List<PlacedOrder> ConsList = new List<PlacedOrder>();
            List<PlacedOrder> DefenseList = new List<PlacedOrder>();
            List<PlacedOrder> SupList = new List<PlacedOrder>();


            foreach (var item in m_lPlacedOrderList)
            {
                if ((item.order == ORDER_TYPE.RAID) || (item.order == ORDER_TYPE.RAID_PLUS))
                {
                    RaidList.Add(item);
                    continue;
                }

                if ((item.order == ORDER_TYPE.ATTACK_MINUS) || (item.order == ORDER_TYPE.ATTACK_NORMAL) || (item.order == ORDER_TYPE.ATTACK_PLUS))
                {
                    AttackList.Add(item);
                    continue;
                }

                if ((item.order == ORDER_TYPE.CONDSOLIDATE) || (item.order == ORDER_TYPE.CONDSOLIDATE_PLUS))
                {
                    ConsList.Add(item);
                    continue;
                }

                if ((item.order == ORDER_TYPE.DEFEND_PLUS) || (item.order == ORDER_TYPE.DEFEND_PLUSPLUS))
                {
                    DefenseList.Add(item);
                    continue;
                }

                if ((item.order == ORDER_TYPE.SUPPORT) || (item.order == ORDER_TYPE.SUPPORT_PLUS))
                {
                    SupList.Add(item);
                    continue;
                }
            }


            //            GameState gs = new GameState();
            //            gs.PlayerList = m_lPlayerList;
            //            gs.RegionList = m_lRegionList;
            //            gs.UnitsList = m_lUnitsList;
            //            string descText;
            //            m_lPlayerList.Where(p => p.playerHouse == playerOrdered[actualRaider]).FirstOrDefault().ExecuteAttack(gs, playerOrdered[actualRaider], ref m_lPlacedOrderList, ExecuteTokenType.ATTACK, ref m_lUnitsList, out descText);
            //            //  m_lPlayerList.Where(p => p.playerHouse == playerOrdered[actualRaider]).FirstOrDefault().ExecuteConsolidate(gs, playerOrdered[actualRaider], ref m_lPlacedOrderList, ExecuteTokenType.CONSOLIDATE, ref m_lRegionList);
            //            AddToOutput(descText);

            if (RaidList.Count > 0)
            {
                while (RaidList.Count > 0)
                {
                    for (int i = 0; i < 6; i++)
                    {
                        if (RaidList.Count(r => r.ownerPlayerName == playerOrdered[i]) > 0)
                        {
                            GameState gs = new GameState();
                            gs.PlayerList = m_lPlayerList;
                            gs.RegionList = m_lRegionList;
                            gs.UnitsList = m_lUnitsList;
                            string descText;

                            m_lPlayerList.Where(p => p.playerHouse == playerOrdered[i]).FirstOrDefault()
                                .ExecuteRaid(gs, playerOrdered[i], ref RaidList, ref AttackList, ref ConsList, ref DefenseList, ref SupList, out descText );
                            AddToOutput(descText);
                            // itt erdemes lenne visszaterni a használt raidparancs sorszámával amit a raidlistben a helye,
                            //vagy magaval a raiddal
                            //azzal toroljuk is kis
                        }
                    }
                }
            }


            if (AttackList.Count > 0)
            {
                while (AttackList.Count > 0)
                {
                    for (int i = 0; i < 6; i++)
                    {
                        if (AttackList.Count(r => r.ownerPlayerName == playerOrdered[i]) > 0)
                        {
                            GameState gs = new GameState();
                            gs.PlayerList = m_lPlayerList;
                            gs.RegionList = m_lRegionList;
                            gs.UnitsList = m_lUnitsList;
                            string descText;

                            AttackList.Remove(m_lPlayerList.Where(p => p.playerHouse == playerOrdered[i]).FirstOrDefault()
                                .ExecuteAttack(gs, playerOrdered[i], ref AttackList, ref m_lUnitsList, out descText,this));
                            AddToOutput(descText);

                        }
                    }
                }
            }

            if (ConsList.Count > 0)
            {
                while (ConsList.Count > 0)
                {
                    for (int i = 0; i < 6; i++)
                    {
                        if (ConsList.Count(r => r.ownerPlayerName == playerOrdered[i]) > 0)
                        {
                            GameState gs = new GameState();
                            gs.PlayerList = m_lPlayerList;
                            gs.RegionList = m_lRegionList;
                            gs.UnitsList = m_lUnitsList;
                            string descText;

                            ConsList.Remove(m_lPlayerList.Where(p => p.playerHouse == playerOrdered[i]).FirstOrDefault()
                                .ExecuteConsolidate(gs, playerOrdered[i], ref ConsList, ref m_lRegionList, out descText));
                            AddToOutput(descText);

                            CheckWinner(playerOrdered[i]);
                        }
                    }
                }
            }


            ////raid
            //if (m_lPlacedOrderList.Where(o => (o.order == ORDER_TYPE.RAID) || (o.order == ORDER_TYPE.RAID_PLUS)).Count() > 0)
            //{
            //    int numberOfRaid = m_lPlacedOrderList.Where(o => (o.order == ORDER_TYPE.RAID) || (o.order == ORDER_TYPE.RAID_PLUS)).Count();
            //
            //    int actualRaider = 6;
            //
            //    //elso kivalasztasa
            //    foreach (var item in m_lPlacedOrderList.Where(o => (o.order == ORDER_TYPE.RAID) || (o.order == ORDER_TYPE.RAID_PLUS)))
            //    {
            //        if (playerOrdered.IndexOf(item.ownerPlayerName) < actualRaider)
            //        {
            //            actualRaider = playerOrdered.IndexOf(item.ownerPlayerName);
            //        }
            //    }
            //    // vegig raidelunk
            //    for (int i = 0; i < numberOfRaid; i++)
            //    {
            //        //itt hivjuk meg a raid elvegzeset, ha van
            //        // lambdával nézzük meg h van-e
            //        if (m_lPlacedOrderList.Where(o => (o.order == ORDER_TYPE.RAID) || (o.order == ORDER_TYPE.RAID_PLUS) || (o.ownerPlayerName == playerOrdered[actualRaider])).Count() > 0)
            //        {
            //            //m_lPlayerList.Where( p => p.playerHouse == playerOrdered[actualRaider] ).FirstOrDefault().ExecuteRaid();
            //        }
            //
            //
            //        // actualRaidernovelese
            //        //kovetkezo allitas okosabban kell
            //        actualRaider++;
            //        if (actualRaider == 6)
            //        {
            //            actualRaider = 0;
            //        }
            //
            //        while (m_lPlacedOrderList.Where(o => (o.order == ORDER_TYPE.RAID) || (o.order == ORDER_TYPE.RAID_PLUS) || (o.ownerPlayerName == playerOrdered[actualRaider])).Count() == 0)
            //        {
            //            actualRaider++;
            //            if (actualRaider == 6)
            //            {
            //                actualRaider = 0;
            //            }
            //        }
            //
            //    }
            //}
            ////attack
            //if (m_lPlacedOrderList.Where(o => (o.order == ORDER_TYPE.ATTACK_MINUS) || (o.order == ORDER_TYPE.ATTACK_NORMAL) || (o.order == ORDER_TYPE.ATTACK_PLUS)).Count() > 0)
            //{
            //    int numberOfRaid = m_lPlacedOrderList.Where(o => (o.order == ORDER_TYPE.ATTACK_MINUS) || (o.order == ORDER_TYPE.ATTACK_NORMAL) || (o.order == ORDER_TYPE.ATTACK_PLUS)).Count();
            //
            //    int actualRaider = 6;
            //
            //    //elso kivalasztasa
            //    foreach (var item in m_lPlacedOrderList.Where(o => (o.order == ORDER_TYPE.ATTACK_MINUS) || (o.order == ORDER_TYPE.ATTACK_NORMAL) || (o.order == ORDER_TYPE.ATTACK_PLUS)))
            //    {
            //        if (playerOrdered.IndexOf(item.ownerPlayerName) < actualRaider)
            //        {
            //            actualRaider = playerOrdered.IndexOf(item.ownerPlayerName);
            //        }
            //    }
            //    // vegig raidelunk
            //    for (int i = 0; i < numberOfRaid; i++)
            //    {
            //        //itt hivjuk meg a raid elvegzeset, ha van
            //        // lambdával nézzük meg h van-e
            //        if (m_lPlacedOrderList.Where(o => (o.order == ORDER_TYPE.ATTACK_MINUS) || (o.order == ORDER_TYPE.ATTACK_NORMAL) || (o.order == ORDER_TYPE.ATTACK_PLUS)).Count() > 0)
            //        {
            //            GameState gs = new GameState();
            //            gs.PlayerList = m_lPlayerList;
            //            gs.RegionList = m_lRegionList;
            //            gs.UnitsList = m_lUnitsList;
            //            string descText;
            //            m_lPlayerList.Where(p => p.playerHouse == playerOrdered[actualRaider]).FirstOrDefault().ExecuteAttack(gs, playerOrdered[actualRaider], ref m_lPlacedOrderList, ExecuteTokenType.ATTACK, ref m_lUnitsList, out descText);
            //            //  m_lPlayerList.Where(p => p.playerHouse == playerOrdered[actualRaider]).FirstOrDefault().ExecuteConsolidate(gs, playerOrdered[actualRaider], ref m_lPlacedOrderList, ExecuteTokenType.CONSOLIDATE, ref m_lRegionList);
            //            AddToOutput(descText);
            //        }
            //
            //
            //        // actualRaidernovelese
            //        //kovetkezo allitas okosabban kell
            //        //actualRaider++;
            //        //if (actualRaider == 6)
            //        //{
            //        //    actualRaider = 0;
            //        //}
            //
            //        while (m_lPlacedOrderList.Where(o => (o.order == ORDER_TYPE.ATTACK_MINUS) || (o.order == ORDER_TYPE.ATTACK_NORMAL) || (o.order == ORDER_TYPE.ATTACK_PLUS)).Count() == 0)
            //        {
            //            actualRaider++;
            //            if (actualRaider > 6)
            //            {
            //                actualRaider = 0;
            //            }
            //        }
            //
            //    }
            //}
            //cons
            //if (m_lPlacedOrderList.Where(o => (o.order == ORDER_TYPE.CONDSOLIDATE) || (o.order == ORDER_TYPE.CONDSOLIDATE_PLUS)).Count() > 0)
            //{
            //    int numberOfRaid = m_lPlacedOrderList.Where(o => (o.order == ORDER_TYPE.CONDSOLIDATE) || (o.order == ORDER_TYPE.CONDSOLIDATE_PLUS)).Count();
            //
            //    int actualRaider = 6;
            //
            //    //elso kivalasztasa
            //    foreach (var item in m_lPlacedOrderList.Where(o => (o.order == ORDER_TYPE.CONDSOLIDATE) || (o.order == ORDER_TYPE.CONDSOLIDATE_PLUS)))
            //    {
            //        if (playerOrdered.IndexOf(item.ownerPlayerName) < actualRaider)
            //        {
            //            actualRaider = playerOrdered.IndexOf(item.ownerPlayerName);
            //        }
            //    }
            //    // vegig raidelunk
            //    for (int i = 0; i < numberOfRaid; i++)
            //    {
            //        //itt hivjuk meg a raid elvegzeset, ha van
            //        // lambdával nézzük meg h van-e
            //        if (m_lPlacedOrderList.Where(o => (o.order == ORDER_TYPE.CONDSOLIDATE) || (o.order == ORDER_TYPE.CONDSOLIDATE_PLUS) || (o.ownerPlayerName == playerOrdered[actualRaider])).Count() > 0)
            //        {
            //            GameState gs = new GameState();
            //            gs.PlayerList = m_lPlayerList;
            //            gs.RegionList = m_lRegionList;
            //            gs.UnitsList = m_lUnitsList;
            //            m_lPlayerList.Where( p => p.playerHouse == playerOrdered[actualRaider] ).FirstOrDefault().ExecuteConsolidate(gs, playerOrdered[actualRaider], ref m_lPlacedOrderList, ExecuteTokenType.CONSOLIDATE, ref m_lRegionList );
            //        }
            //
            //
            //        // actualRaidernovelese
            //        //kovetkezo allitas okosabban kell
            //        //actualRaider++;
            //        //if (actualRaider == 6)
            //        //{
            //        //    actualRaider = 0;
            //        //}
            //
            //        while (m_lPlacedOrderList.Where(o => (o.order == ORDER_TYPE.CONDSOLIDATE) || (o.order == ORDER_TYPE.CONDSOLIDATE_PLUS) || (o.ownerPlayerName == playerOrdered[actualRaider])).Count() > 0)
            //        {
            //            actualRaider++;
            //            if (actualRaider > 6)
            //            {
            //                actualRaider = 0;
            //            }
            //        }
            //
            //    }
            //}

            m_lPlacedOrderList.Clear();
        }
Example #4
0
        //paramlista: Gamestate, kivagyoken, ebbe pakolom a parancsaim
        public void PlaceOrders(GameState gs, HOUSE h, ref List<PlacedOrder> PlacedOrderList)
        {
            //from-to
            List<Tuple<Region, Region>> FinalAttackOrderList = new List<Tuple<Region, Region>>();
            List<Tuple<Region, Region>> FinalRaidOrderList = new List<Tuple<Region, Region>>();
            List<Tuple<Region, Region>> FinalDefenseOrderList = new List<Tuple<Region, Region>>();
            List<Tuple<Region, Region>> FinalSupportOrderList = new List<Tuple<Region, Region>>();//ezzel magunkat erosithetjuk, erdemes a tamadasok, vedekzesek melle rakni
            List<Tuple<Region, Region>> FinalKoronaOrderList = new List<Tuple<Region, Region>>();
            //raidhoz v vedekezeshez eltesszuk
            //olyan megye ami szomszedos, de rajta van elenseg
            //EZT ELTESSZUK KESOBBRE
            List<Region> EnemyNextToUs = new List<Region>();
            List<Region> SAJATMEGYE = new List<Region>();
            List<Region> SAJATMEGYESEREGGEL = new List<Region>();//nyilvan valoan csak ezekre rakunk majd attackott
            List<Region> sajatOsszesMEGYE = new List<Region>();
            List<Region> MEGYEELLENSEGESMeletttunk = new List<Region>();


            foreach (var item in gs.UnitsList)
            {
                if (item.player == h)
                {
                    if (!SAJATMEGYE.Contains(item.position) && !SAJATMEGYESEREGGEL.Contains(item.position) && !sajatOsszesMEGYE.Contains(item.position))
                    {
                        SAJATMEGYESEREGGEL.Add(item.position);
                        sajatOsszesMEGYE.Add(item.position);
                    }
                }
            }

            foreach (var item in gs.RegionList)
            {
                if ( item.house == h )
                {
                    if (!SAJATMEGYE.Contains(item) && !SAJATMEGYESEREGGEL.Contains(item) && !sajatOsszesMEGYE.Contains(item))
                    {
                        SAJATMEGYE.Add(item);
                        sajatOsszesMEGYE.Add(item);
                    }
                }
            }

            foreach (var item in gs.UnitsList)
            {
                if (item.player != h && item.player != HOUSE.NONE)
                {
                    for (int i = 0; i < sajatOsszesMEGYE.Count; i++)
                    {
                        if (sajatOsszesMEGYE[i].neighbours.Contains(item.position))
                        {
                            if (!MEGYEELLENSEGESMeletttunk.Contains(item.position))
                                MEGYEELLENSEGESMeletttunk.Add(item.position);
                        }
                    }

                }
            }


            // ATTACK:
            // itt csinálunk 2 db INFLUENCE MAP-ot:
            //     - 7 db város szempontjából (tobb korre is meg lehet nezni h melyikek a legfontosabbak)
            //     - ellenfelek hol halyezkednke el
            //      => ez lesz az influence map
            //      - megnezzuk hova tudunk mozogni a sereggekkel, mekkora eroval
            //      => goal map
            //      => vegeredmeny: influence map + goal map
            // ezután összelayerezzuk oket, 1:1-hez aranyban és az egyik kapott területek elfoglallása a cél.
            //annak a kornyekre teszunk attackot

            // RAID:
            // ellenseges terulet 1 tavolsagon belul
            // minnelnagyobb a sereg, annal valoszinubb h oda teszunk raidot
            //attackkal egyutt erdems hasznalni

            // DEFENSE:
            // akkor rakjuk ha melletunk nagyobb sereg van & varunk van a kornyeken
            //  
            // TAMOGATAS:
            // csak DEFENSE, v egyenlo nagysagu sereg melle rakjuk
            //  
            // KORONA: 
            //  tok biztonságos pozikra rakjuk ( tok feleslegsen
            //  
            //  



            //7db varoshoz lepesek:
            //  0. lepes: - tarolo lista megalkotasa
            //  0.2 lepes: sajat megyeink kivetele ebbol
            //  1. lepes: - minden megyehez 0-es float erteket rendelni, 
            //  2. lepes: - minden varhoz/kastelyhoz 2-es float ertek ( ha ellensege akkor 1e)sf
            //  3. lepes: - var/kastely megyek ertekeik felet adjak a szomszedos megy ertekehez
            //  4. lepes: - 3.lepes rekurziv ismeltles szomszedos megyekre
            //  5. lepes: - mostmar tudjuk merre kell terjeszkedni, erdemes megnezni hogy mi hol vagyunk es merre kell menni


            // 0. lepes
            //regio, pont, adotte mar pontot
            //mivel a tuple readonly ezért 1 struktba rakjuk
            List<HetVarosStruct> HetVarosList = new List<HetVarosStruct>();

                foreach (var item in gs.RegionList)
                {
                    //0 - 0.2 lepes:
                    if (!item.isSea && item.house != h)
                    {
                        HetVarosStruct v;
                        v.addotEMarPontot = false;
                        v.pont = 0.0f;
                        v.regio = item;
                        //1es lepes iis
                        HetVarosList.Add(v);
                    }
                }

                //2lepes
                for (int i = 0; i < HetVarosList.Count; i++)
                {
                    HetVarosStruct temp = HetVarosList[i];
                    if (HetVarosList[i].regio.castle || HetVarosList[i].regio.city)
                    {
                        //senkie mehet neki a ket pont
                        if (HetVarosList[i].regio.house == HOUSE.NONE)
                        {
                            temp.pont += 2.0f;
                        }
                        else
                        {//elensege
                            temp.pont += 1.0f;
                        }
                    }
                    HetVarosList.Remove(HetVarosList[i]);
                    HetVarosList.Insert(i, temp);


                }

                //3 REKKUrZIV pontosztas
                List<Region> pontOsztok = new List<Region>();
                List<Region> pontOsztokAkoviKorben = new List<Region>();

                foreach (var item in HetVarosList)
                {
                    //a megyek osztjak a pontokat a szomszedoknak
                    if (item.pont != 0.0f)
                        pontOsztok.Add(item.regio);
                }

                //ez eugye akkor áll meg ha minden nyomorult megye osztott pontot, az utolsó senkinek nem fog de nmebaj hadd legyen jó nekki is es oszthason pontot
                while (pontOsztok.Count > 0)
                {
                    pontOsztokAkoviKorben.Clear();

                    for (int i = 0; i < pontOsztok.Count; i++)
                    {
                        for (int j = 0; j < pontOsztok[i].neighbours.Count; j++)
                        {
                            for (int k = 0; k < HetVarosList.Count; k++)
                            {
                                if (HetVarosList[k].regio == pontOsztok[i].neighbours[j] && HetVarosList[k].addotEMarPontot == false)
                                {
                                    HetVarosStruct temp = HetVarosList[k];
                                    temp.pont = HetVarosList.Find(v => v.regio == pontOsztok[i]).pont / 2;
                                    HetVarosList.Remove(HetVarosList[k]);
                                    HetVarosList.Insert(k, temp);
                                    if (!pontOsztokAkoviKorben.Contains(temp.regio))
                                        pontOsztokAkoviKorben.Add(temp.regio);
                                }
                            }

                        }
                        //beallitjuk h ez a terulet mar ne kapjon pontot
                        for (int x = 0; x < HetVarosList.Count; x++)
                        {
                            if (HetVarosList[x].regio == pontOsztok[i])
                            {
                                HetVarosStruct temp = HetVarosList[x];
                                temp.addotEMarPontot = true;
                                HetVarosList.Remove(HetVarosList[x]);
                                HetVarosList.Insert(x, temp);
                            }
                        }
                    }
                    // fekeszulunk a kovi iteraciora
                    pontOsztok = pontOsztokAkoviKorben;
                }





            //egyerusitett orders: 1.0v
            // cons: egységek helyére, ha a terulet a mienk akkor megyunk tovább, random - OK
            // attak:ha milyenk a hely akkor megyunk tovabb, pl varra - OK
            // def: ha meletunk elenségvan és én vár vagyok -OK
            // sup: ha melettem nincs ellenseg es van melettem def - OK
            // raid: raid-def-sup komboba, ha melettem ellenségvan és van melettem def - OK



            for (int i = 0; i < SAJATMEGYESEREGGEL.Count; i++)
            {
                // milyenk
                if (SAJATMEGYESEREGGEL[i].house == h )
                {
                    Random rnd = new Random();
                    int number = rnd.Next(0, SAJATMEGYESEREGGEL[i].neighbours.Count);
                    if (sajatOsszesMEGYE.Contains(SAJATMEGYESEREGGEL[i]))
                    {
                        FinalAttackOrderList.Add(new Tuple<Region, Region>(SAJATMEGYESEREGGEL[i], SAJATMEGYESEREGGEL[i].neighbours[number]));
                        sajatOsszesMEGYE.Remove(SAJATMEGYESEREGGEL[i]);
                    }
                }
                else
                {
                    if (sajatOsszesMEGYE.Contains(SAJATMEGYESEREGGEL[i]))
                    {
                        FinalKoronaOrderList.Add(new Tuple<Region, Region>(SAJATMEGYESEREGGEL[i], null));
                        sajatOsszesMEGYE.Remove(SAJATMEGYESEREGGEL[i]);
                    }
                }
            }

            int max = sajatOsszesMEGYE.Count;
            for (int i = 0; i < max; i++)
            {
                //ha melettunk kozvetlenul ellenseg van akkor 
                if (MEGYEELLENSEGESMeletttunk.Contains(sajatOsszesMEGYE[i]))
                {
                    // ezt a sort kikommenteltem mert 1 nemtom miert van itt, 2 breakel
                    //if (sajatOsszesMEGYE.Contains(SAJATMEGYESEREGGEL[i]))
                    {
                        FinalDefenseOrderList.Add(new Tuple<Region, Region>(sajatOsszesMEGYE[i], null));
                        //sajatOsszesMEGYE.Remove(sajatOsszesMEGYE[i]);
                        //continue;
                    }
                }

                bool vanEmarMellettunkDef = false; // "az kizárt, mert nemtudom' " 

                foreach (var item in FinalDefenseOrderList)
                {
                    foreach (var item2 in sajatOsszesMEGYE[i].neighbours)
                    {
                        vanEmarMellettunkDef = true;
                    }

                }

                bool defensVanEMarRajtam = false;

                foreach (var item in FinalDefenseOrderList)
                {
                    if (item.Item1 == sajatOsszesMEGYE[i])
                    {
                        defensVanEMarRajtam = true;
                    }

                }

                //melettem def és meletem ellenseg is ÉS rajtam is defvan akkor le operalom a def-et, kap raidot, aztjólvan meg szupportot
                if (MEGYEELLENSEGESMeletttunk.Contains(sajatOsszesMEGYE[i]) && vanEmarMellettunkDef  && defensVanEMarRajtam )
                {
                    if (defensVanEMarRajtam)
                    {
                        FinalDefenseOrderList.Remove(new Tuple<Region, Region>(sajatOsszesMEGYE[i], null));
                        FinalRaidOrderList.Add(new Tuple<Region, Region>(sajatOsszesMEGYE[i], null));
                    }
                    else
                    {
                        FinalRaidOrderList.Add(new Tuple<Region, Region>(sajatOsszesMEGYE[i], null));
                        //sajatOsszesMEGYE.Remove(sajatOsszesMEGYE[i]);
                        continue;
                    }

                }
                else if (!MEGYEELLENSEGESMeletttunk.Contains(sajatOsszesMEGYE[i]) && vanEmarMellettunkDef)
                {
                    if (defensVanEMarRajtam)
                    {
                        FinalDefenseOrderList.Remove(new Tuple<Region, Region>(sajatOsszesMEGYE[i], null));
                        FinalSupportOrderList.Add(new Tuple<Region, Region>(sajatOsszesMEGYE[i], null));
                    }
                    else
                    {
                        FinalSupportOrderList.Add(new Tuple<Region, Region>(sajatOsszesMEGYE[i], null));
                        //sajatOsszesMEGYE.Remove(sajatOsszesMEGYE[i]);
                        continue;
                    }
                }
            }


            //////////////////////mostmar megvannak a pontok
            //////////////////////most megnezzuk h a megyeinknek, és az elerhetomegyeinknek mennyi pontja van
            ////////////////////List<Tuple<Region, float>> elerhetoMegyekEsPontok = new List<Tuple<Region, float>>();
            ////////////////////
            ////////////////////for (int j = 0; j < HetVarosList.Count; j++)
            ////////////////////{
            ////////////////////    for (int i = 0; i < SAJATMEGYESEREGGEL.Count; i++)
            ////////////////////    {
            ////////////////////        if (HetVarosList[j].regio == SAJATMEGYESEREGGEL[i])
            ////////////////////        {
            ////////////////////            if (elerhetoMegyekEsPontok.Find(a => a.Item1 == HetVarosList[j].regio) == null)
            ////////////////////            {
            ////////////////////                elerhetoMegyekEsPontok.Add(new Tuple<Region, float>(HetVarosList[j].regio, HetVarosList[j].pont));
            ////////////////////            }
            ////////////////////        }
            ////////////////////
            ////////////////////        for (int k = 0; k < SAJATMEGYESEREGGEL[i].neighbours.Count; k++)
            ////////////////////        {
            ////////////////////            if (HetVarosList[j].regio == SAJATMEGYESEREGGEL[i].neighbours[k])
            ////////////////////            {
            ////////////////////                if (elerhetoMegyekEsPontok.Find(a => a.Item1 == HetVarosList[j].regio) == null)
            ////////////////////                {
            ////////////////////                    elerhetoMegyekEsPontok.Add(new Tuple<Region, float>(HetVarosList[j].regio, HetVarosList[j].pont));
            ////////////////////                }
            ////////////////////            }
            ////////////////////        }
            ////////////////////    }
            ////////////////////}
            ////////////////////
            //////////////////////csokeno sorrenben
            ////////////////////elerhetoMegyekEsPontok = elerhetoMegyekEsPontok.OrderBy(item => item.Item2).ToList();
            ////////////////////elerhetoMegyekEsPontok.Reverse();
            ////////////////////
            ////////////////////
            ////////////////////for (int j = 0; j < SAJATMEGYESEREGGEL.Count; j++)
            ////////////////////{
            ////////////////////    if (SAJATMEGYESEREGGEL[j].castle || SAJATMEGYESEREGGEL[j].city)
            ////////////////////    {
            ////////////////////        if (SAJATMEGYESEREGGEL[j].house == HOUSE.NONE) //elfoglaltuk-e
            ////////////////////        {
            ////////////////////            //ha igen akkor megtamadjuk
            ////////////////////            //ha tehetünk rá parit
            ////////////////////            if (sajatOsszesMEGYE.Contains(SAJATMEGYESEREGGEL[j]))
            ////////////////////            {
            ////////////////////                FinalKoronaOrderList.Add(new Tuple<Region, Region>(SAJATMEGYESEREGGEL[j], null));
            ////////////////////                sajatOsszesMEGYE.Remove(SAJATMEGYESEREGGEL[j]);
            ////////////////////            }
            ////////////////////        }
            ////////////////////        else
            ////////////////////        {
            ////////////////////            //elvileg ez a mienk, es igy jó elsz
            ////////////////////            //megyunk tovabb
            ////////////////////            for (int i = 0; i < elerhetoMegyekEsPontok.Count; i++)
            ////////////////////            {
            ////////////////////                //mivel rendezet az elso ami okes arra megyunk
            ////////////////////                for (int k = 0; k < SAJATMEGYESEREGGEL[j].neighbours.Count; k++)
            ////////////////////                {
            ////////////////////                    if (SAJATMEGYESEREGGEL[j].neighbours[k].name == elerhetoMegyekEsPontok[i].Item1.name)
            ////////////////////                    {
            ////////////////////                        if (sajatOsszesMEGYE.Contains(SAJATMEGYESEREGGEL[j]))
            ////////////////////                        {
            ////////////////////                            FinalAttackOrderList.Add(new Tuple<Region, Region>(SAJATMEGYESEREGGEL[j], elerhetoMegyekEsPontok[i].Item1));
            ////////////////////                            sajatOsszesMEGYE.Remove(SAJATMEGYESEREGGEL[j]);
            ////////////////////                        }
            ////////////////////                    }
            ////////////////////                }
            ////////////////////            }
            ////////////////////        }
            ////////////////////    }
            ////////////////////    else
            ////////////////////    {
            ////////////////////        //nincsitlofaszse, megnezzuk hova erdemes lepni
            ////////////////////        for (int i = 0; i < elerhetoMegyekEsPontok.Count; i++)
            ////////////////////        {
            ////////////////////            //mivel rendezet az elso ami okes arra megyunk
            ////////////////////            for (int k = 0; k < SAJATMEGYESEREGGEL[j].neighbours.Count; k++)
            ////////////////////            {
            ////////////////////                if (SAJATMEGYESEREGGEL[j].neighbours[k].name == elerhetoMegyekEsPontok[i].Item1.name)
            ////////////////////                {
            ////////////////////                    if (sajatOsszesMEGYE.Contains(SAJATMEGYESEREGGEL[j]))
            ////////////////////                    {
            ////////////////////                        FinalAttackOrderList.Add(new Tuple<Region, Region>(SAJATMEGYESEREGGEL[j], elerhetoMegyekEsPontok[i].Item1));
            ////////////////////                        sajatOsszesMEGYE.Remove(SAJATMEGYESEREGGEL[j]);
            ////////////////////                    }
            ////////////////////                }
            ////////////////////            }
            ////////////////////        }    
            ////////////////////    }
            ////////////////////
            ////////////////////
            ////////////////////
            ////////////////////
            ////////////////////}




            //////    List<Region> kozvetlenMegyek = new List<Region>();
            //////    //levalogatjuk a szamunkra erdekeset, vagyhat amit tamadhatunk amit raidelhetunk amit esetleg foglalhatunk
            //////    for (int i = 0; i < HetVarosList.Count; i++)
            //////    {
            //////        if (IsSzomszedosMegyeE(HetVarosList[i].regio, sajatOsszesMEGYE))
            //////        {
            //////            if (!kozvetlenMegyek.Contains(HetVarosList[i].regio))
            //////            {
            //////                kozvetlenMegyek.Add(HetVarosList[i].regio);
            //////            }
            //////        }
            //////    }
            //////
            ////////elsore megnezzuk hogy van-e itt 2 pontos megye, mert azt tamadjuk
            //////List<Region> ketpontosMegye = new List<Region>();
            //////for (int i = 0; i < kozvetlenMegyek.Count; i++ )
            //////    {
            //////        for (int j = 0; j < HetVarosList.Count; j++)
            //////        {
            //////        if (kozvetlenMegyek[i].name == HetVarosList[j].regio.name && (HetVarosList[j].pont > 1 && HetVarosList[j].pont <= 2))
            //////            {
            //////                if( !ketpontosMegye.Contains(kozvetlenMegyek[i]))
            //////                    ketpontosMegye.Add((kozvetlenMegyek[i]));
            //////            }
            //////        }                    //if (HetVarosList.Where(a => a.regio == kozvetlenMegyek[i]).First().pont >= 2.0f) 
            //////    }
            //////
            //////
            //////for (int j = 0; j < SAJATMEGYESEREGGEL.Count; j++)
            //////{
            //////    if (SAJATMEGYESEREGGEL[j].castle || SAJATMEGYESEREGGEL[j].city)
            //////    {
            //////        if (SAJATMEGYESEREGGEL[j].house == HOUSE.NONE) //elfoglaltuk-e
            //////        {
            //////            //ha igen akkor megtamadjuk
            //////            //ha tehetünk rá parit
            //////            if (sajatOsszesMEGYE.Contains(SAJATMEGYESEREGGEL[j]))
            //////            {
            //////                FinalKoronaOrderList.Add(new Tuple<Region, Region>(SAJATMEGYESEREGGEL[j], null));
            //////                sajatOsszesMEGYE.Remove(SAJATMEGYESEREGGEL[j]);
            //////            }
            //////
            //////        }
            //////    }
            //////}
            //////
            //////
            //////
            //////            //na ezek abszolut támadhatóak,
            //////            //namármost figyelembe veszuk h alattunk 2 pontos megy van-e és ha igen és nem a mien akkor azt elfoglaljuk inkább ellenben mozgunk
            //////
            //////            for (int i = 0; i < ketpontosMegye.Count; i++)
            //////{
            //////    for (int j = 0; j < SAJATMEGYESEREGGEL.Count; j++)
            //////    {
            //////        if (ketpontosMegye[i].neighbours.Contains(SAJATMEGYESEREGGEL[j]))
            //////        {
            //////            if (SAJATMEGYESEREGGEL[j].castle || SAJATMEGYESEREGGEL[j].city)
            //////            {
            //////                if (SAJATMEGYESEREGGEL[j].house == h) //elfoglaltuk-e
            //////                {
            //////                    //ha igen akkor megtamadjuk
            //////                    //ha tehetünk rá parit
            //////                    if (sajatOsszesMEGYE.Contains(SAJATMEGYESEREGGEL[j]))
            //////                    {
            //////                        FinalAttackOrderList.Add(new Tuple<Region, Region>(SAJATMEGYESEREGGEL[j], ketpontosMegye[i]));
            //////                        sajatOsszesMEGYE.Remove(SAJATMEGYESEREGGEL[j]);
            //////                    }
            //////                    
            //////                }
            //////                else
            //////                {
            //////                    if (sajatOsszesMEGYE.Contains(SAJATMEGYESEREGGEL[j]))
            //////                    {
            //////                        //ha nem a mienk akkor placeljuk
            //////                        FinalKoronaOrderList.Add(new Tuple<Region, Region>(SAJATMEGYESEREGGEL[j], null));
            //////                        sajatOsszesMEGYE.Remove(SAJATMEGYESEREGGEL[j]);
            //////                    }
            //////                }
            //////            }
            //////            else
            //////            {
            //////                //amin allunk nincs ertekes pont
            //////                //hat megtamadjuk a msikat
            //////                if (sajatOsszesMEGYE.Contains(SAJATMEGYESEREGGEL[j]))
            //////                {
            //////                    //ha nem a mienk akkor placeljuk
            //////                    FinalAttackOrderList.Add(new Tuple<Region, Region>(SAJATMEGYESEREGGEL[j], ketpontosMegye[i]));
            //////                    sajatOsszesMEGYE.Remove(SAJATMEGYESEREGGEL[j]);
            //////                }
            //////            }
            //////        }
            //////    }
            //////}
            //////
            //////
            //////List<Region> egyvkevesebbpontosMegye = new List<Region>();
            //////for (int i = 0; i < kozvetlenMegyek.Count; i++)
            //////{
            //////    for (int j = 0; j < HetVarosList.Count; j++)
            //////    {
            //////        if (kozvetlenMegyek[i].name == HetVarosList[j].regio.name && (HetVarosList[j].pont > 1 && HetVarosList[j].pont <= 2))
            //////        {
            //////            if (!egyvkevesebbpontosMegye.Contains(kozvetlenMegyek[i]))
            //////                egyvkevesebbpontosMegye.Add((kozvetlenMegyek[i]));
            //////        }
            //////    }                    //if (HetVarosList.Where(a => a.regio == kozvetlenMegyek[i]).First().pont >= 2.0f) 
            //////}
            //////
            //////for (int i = 0; i < egyvkevesebbpontosMegye.Count; i++)
            //////{
            //////    for (int j = 0; j < SAJATMEGYESEREGGEL.Count; j++)
            //////    {
            //////        if (SAJATMEGYESEREGGEL[j].house == h)
            //////        {
            //////            if (MEGYEELLENSEGESMeletttunk.Contains(SAJATMEGYESEREGGEL[j]))
            //////            {
            //////                Region szomszedosmegyeamilehethtamad = null;
            //////                for (int k = 0; k < MEGYEELLENSEGESMeletttunk.Count; k++)
            //////                {
            //////                    if (MEGYEELLENSEGESMeletttunk[k].neighbours.Contains(SAJATMEGYESEREGGEL[j]))
            //////                    {
            //////                        szomszedosmegyeamilehethtamad = MEGYEELLENSEGESMeletttunk[k];
            //////                        break;
            //////                    }
            //////                }
            //////
            //////                if (szomszedosmegyeamilehethtamad != null)
            //////                {
            //////
            //////                    if (this.SeregemNagyobbE(gs, h, SAJATMEGYESEREGGEL[j], szomszedosmegyeamilehethtamad, false))
            //////                    {
            //////                        if (sajatOsszesMEGYE.Contains(SAJATMEGYESEREGGEL[j]))
            //////                        {
            //////                            //ha nem a mienk akkor placeljuk
            //////                            FinalAttackOrderList.Add(new Tuple<Region, Region>(SAJATMEGYESEREGGEL[j], szomszedosmegyeamilehethtamad));
            //////                            sajatOsszesMEGYE.Remove(SAJATMEGYESEREGGEL[j]);
            //////                        }
            //////                        
            //////                    }
            //////                    else
            //////                    {
            //////                        if (sajatOsszesMEGYE.Contains(SAJATMEGYESEREGGEL[j]))
            //////                        {
            //////                            //ha nem a mienk akkor placeljuk
            //////                            FinalDefenseOrderList.Add(new Tuple<Region, Region>(SAJATMEGYESEREGGEL[j], null));
            //////                            sajatOsszesMEGYE.Remove(SAJATMEGYESEREGGEL[j]);
            //////                        }
            //////                        
            //////                    }
            //////                }
            //////            }
            //////            else
            //////            {
            //////                if (sajatOsszesMEGYE.Contains(SAJATMEGYESEREGGEL[j]))
            //////                {
            //////                    //ha nem a mienk akkor placeljuk
            //////                    FinalKoronaOrderList.Add(new Tuple<Region, Region>(SAJATMEGYESEREGGEL[j], null));
            //////                    sajatOsszesMEGYE.Remove(SAJATMEGYESEREGGEL[j]);
            //////                }
            //////            }
            //////        }
            //////    }
            //////}
            //////
            //////
            //////
            //////
            //////List<Region> egynelkevesebbpontosmegye = new List<Region>();
            //////for (int i = 0; i < kozvetlenMegyek.Count; i++)
            //////{
            //////    for (int j = 0; j < HetVarosList.Count; j++)
            //////    {
            //////        if (kozvetlenMegyek[i].name == HetVarosList[j].regio.name && (HetVarosList[j].pont <= 1))
            //////        {
            //////            if (!egynelkevesebbpontosmegye.Contains(kozvetlenMegyek[i]))
            //////                egynelkevesebbpontosmegye.Add((kozvetlenMegyek[i]));
            //////        }
            //////    }                    //if (HetVarosList.Where(a => a.regio == kozvetlenMegyek[i]).First().pont >= 2.0f) 
            //////}
            //////
            //////for (int i = 0; i < egynelkevesebbpontosmegye.Count; i++)
            //////{
            //////    for (int j = 0; j < SAJATMEGYESEREGGEL.Count; j++)
            //////    {
            //////        if (SAJATMEGYESEREGGEL[j] == egynelkevesebbpontosmegye[i])
            //////        {
            //////            if (sajatOsszesMEGYE.Contains(SAJATMEGYESEREGGEL[j]))
            //////            {
            //////                //ha nem a mienk akkor placeljuk
            //////                FinalKoronaOrderList.Add(new Tuple<Region, Region>(SAJATMEGYESEREGGEL[j], null));
            //////                sajatOsszesMEGYE.Remove(SAJATMEGYE[i]);
            //////            }
            //////        }
            //////    }
            //////
            //////}
            //////
            //////
            //////for (int i = 0; i < SAJATMEGYE.Count; i++)
            //////{
            //////    for (int j = 0; j < FinalDefenseOrderList.Count; j++)
            //////    {
            //////        if (SAJATMEGYE[i].neighbours.Contains(FinalDefenseOrderList[j].Item1))
            //////        {
            //////            if (sajatOsszesMEGYE.Contains(SAJATMEGYE[i]))
            //////            {
            //////                //ha nem a mienk akkor placeljuk
            //////                FinalSupportOrderList.Add(new Tuple<Region, Region>(SAJATMEGYE[i], null));
            //////                sajatOsszesMEGYE.Remove(SAJATMEGYE[i]);
            //////            }
            //////        }
            //////    }
            //////
            //////}



            //if (egyvkevesebbpontosMegye[i].neighbours.Contains(SAJATMEGYESEREGGEL[j]))
            //{
            //    //itt kellegy lista h hol van az ellenség hol van és azt megnézni h a szomszédos megyeken van-e elenség mert ott masszivan védekezni fogunk
            //   // if (egyvkevesebbpontosMegye[i].neighbours )
            //    {
            //
            //    }
            //}

            //               //utolsó lepesben megnezzuk h ebbol melyik van hozzank kozel
            //               List<Region> megkellTamadniVaros = new List<Region>();
            //
            //               // azt tudjuk hogy 2 pontot er 1db szabad varos, 1pontot 1 elfoglalt
            //               //legfontosabb elsokorben szomszedos megyekben 2 es 2+os varosok kersese
            //               //ha ilyen nincs akkor az egyeseknel 2 pont alatt az 1pontos megyek ahol van varos az az ELLENESEGE erre nagyon figyeljunk
            //               //ezekbol pickeljuk a bestet
            //               //csata parancshatasara az egysegek MOST EGYOTT MOZOGNAK
            //
            //               // sajat megyeink
            //               List<Region> OrderableRegions = new List<Region>();
            //
            //               foreach (var item in gs.RegionList.Where(r => r.house == h))
            //               {
            //                   OrderableRegions.Add(item);
            //               }
            //
            //               //kozvetlenul elerheto megyek
            //               // sajat megye, kozvetlen szomszedja, ponterteke
            //               List<Tuple<Region, Region, float>> NeighbourRegionsPOINT = new List<Tuple<Region, Region, float>>();
            //
            //               foreach (var item in SAJATMEGYE)
            //               {
            //                   foreach (var neighb in item.neighbours)
            //                   {
            //                       foreach (var v in HetVarosList)
            //                       {
            //                           if (v.regio == neighb)
            //                           {
            //                               //itt bejohet olyan hiba h 3 megye tamadhatja ugyanazt
            //                               //ezert fogjuk es megnezzuk h iylen tuple van-e mar es ha nincs akkor veszuk fe
            //                               if (NeighbourRegionsPOINT.Where(nrp => nrp.Item2 == neighb).Count() == 0)
            //                                   NeighbourRegionsPOINT.Add(new Tuple<Region, Region, float>(item, neighb, v.pont));
            //                           }
            //                       }
            //                   }
            //               }
            //
            //               //erdemes megnezni h a listazott es pontozott megyek szomszedjainak milyen ertekei vannak(ha csokkene akkor egyezes eseten erdemes a masikat pickeleni)
            //
            //               //csokenno rendezett sorrend
            //               NeighbourRegionsPOINT.OrderBy(np => np.Item3);
            //               NeighbourRegionsPOINT.Reverse();
            //
            //               for (int i = 0; i < NeighbourRegionsPOINT.Count; i++)
            //               {
            //
            //                   //elso es legfontosabb ha olyan helyen alnak az egysegekek ahol a terulet meg nem az enyem akkor koronazok
            //                   if (NeighbourRegionsPOINT[i].Item1.house == HOUSE.NONE && VanEIttEgysegem(gs,NeighbourRegionsPOINT[i].Item1, h) && SAJATMEGYE.Contains(NeighbourRegionsPOINT[i].Item1)) 
            //                   {
            //                       FinalKoronaOrderList.Add(NeighbourRegionsPOINT[i].Item1);
            //                       SAJATMEGYE.Remove(NeighbourRegionsPOINT[i].Item1);
            //                   }
            //
            //                   //ez egy kurvajo hely ennek a szomszedjara tuti rakunk tamadas parancsot
            //                   if (NeighbourRegionsPOINT[i].Item3 >= 2 && SAJATMEGYE.Contains(NeighbourRegionsPOINT[i].Item1))
            //                   {
            //                       FinalAttackOrderList.Add(NeighbourRegionsPOINT[i].Item1);
            //                       SAJATMEGYE.Remove(NeighbourRegionsPOINT[i].Item1);
            //                   }
            //
            //                   if (NeighbourRegionsPOINT[i].Item3 > 1 && SAJATMEGYE.Contains(NeighbourRegionsPOINT[i].Item1))
            //                   {
            //                       FinalAttackOrderList.Add(NeighbourRegionsPOINT[i].Item1);
            //                       SAJATMEGYE.Remove(NeighbourRegionsPOINT[i].Item1);
            //                   }
            //
            //                   //ellensegge, itt okoskodni kell majd !!
            //                   if (NeighbourRegionsPOINT[i].Item3 == 1 && NeighbourRegionsPOINT[i].Item2.house != HOUSE.NONE && SAJATMEGYE.Contains(NeighbourRegionsPOINT[i].Item1))
            //                   {
            //                       if (SeregemNagyobbE(gs, h, NeighbourRegionsPOINT[i].Item1, NeighbourRegionsPOINT[i].Item2, true))
            //                       {
            //                           //nagyobb a seregem daraljuk le
            //                           FinalAttackOrderList.Add(NeighbourRegionsPOINT[i].Item1);
            //                           SAJATMEGYE.Remove(NeighbourRegionsPOINT[i].Item1);
            //                       }
            //                       else
            //                       {
            //                           EnemyNextToUs.Add(NeighbourRegionsPOINT[i].Item2);
            //                       }
            //                   }
            //
            //                   //ezek nem olyan jó helyek de ezekre is rakunk
            //                   if (NeighbourRegionsPOINT[i].Item3 < 1 && SAJATMEGYE.Contains(NeighbourRegionsPOINT[i].Item1))
            //                   {
            //                       if (NeighbourRegionsPOINT[i].Item3 < 0.12f)
            //                       {
            //                           FinalKoronaOrderList.Add(NeighbourRegionsPOINT[i].Item1);
            //                       }
            //                       else
            //                       {
            //                           FinalAttackOrderList.Add(NeighbourRegionsPOINT[i].Item1);
            //                       }
            //                       
            //                       SAJATMEGYE.Remove(NeighbourRegionsPOINT[i].Item1);
            //                   }
            //               }
            //           }
            //
            //       //VEDEKEZES/RAID
            //
            //       //megnezzuk h mire tamadhat, ill kivesszuk a legvaloszinubbet
            //
            //       List<Region> veszelyeztettmegyeim = new List<Region>();
            //
            //               // nagyon fontos lesz az a megye, ahol van varam/varosom, van melette ellenseg az kap
            //               //na ezek a megyek alavetoen raidot kapnak, de a varosos megyek def + supportot a szomszedjai
            //               List<Region> jelentosenVeszelyeztettMegyek = new List<Region>();
            //
            //               foreach (var item in EnemyNextToUs)
            //               {
            //                  foreach (var neighb in item.neighbours)
            //                   {
            //                       if (!veszelyeztettmegyeim.Contains(item))
            //                       {
            //                           //RAIDmEZOK
            //                           veszelyeztettmegyeim.Add(item);
            //                       }
            //                   }
            //               }
            //
            //               foreach (var item in EnemyNextToUs)
            //               {
            //                   foreach (var neighb in item.neighbours)
            //                   {
            //                       //mienk és van rajta valami amit fájna elvesziteni,... ez egy ellegge szomoru dolog(lenne)
            //                       //ezert ezek lesznek a DEFFENSE MEZOK
            //                       if (neighb.house == h && (item.castle || item.city))
            //                       {
            //                           jelentosenVeszelyeztettMegyek.Add(neighb);
            //                       }
            //                   }
            //               }
            //
            //               //na már most 
            //               // az attacknal mar vettunk fel megyeket, na az ugy jó
            //               // aztán a raid-ot elvileg attol fuggetlenul pakoljuk le, az is jó
            //               // a DEFENSE jelentosege erosebb mint a RAID, ezert ha RAIDBAN es DEF-ben is van azonos megye a RAIDBOL kivesszuk
            //               // SUPPORT SZIGORUAN DEFFENSE MELLE megy kibaszott fontos, es sokat ha lehet
            //               // a maradekra az a retek koronas fos token aminek a nevet mindig elfeljtem
            //
            //               FinalDefenseOrderList = jelentosenVeszelyeztettMegyek;
            //
            //               foreach (var item in veszelyeztettmegyeim)
            //               {
            //                if (SAJATMEGYE.Contains(item))
            //                   {
            //                       FinalRaidOrderList.Add(item);
            //                      SAJATMEGYE.Remove(item);
            //                   }
            //               }
            //
            //               foreach (var item in jelentosenVeszelyeztettMegyek)
            //               {
            //                   foreach (var neighb in item.neighbours)
            //                   {
            //                   //if (!FinalDefenseOrderList.Contains(item) && !FinalRaidOrderList.Contains(item) && !FinalAttackOrderList.Contains(item))
            //                   if(SAJATMEGYE.Contains(item))
            //                   {
            //                           FinalSupportOrderList.Add(item);
            //                           SAJATMEGYE.Remove(item);
            //
            //                   }
            //               }
            //               }
            //
            //               // na marmost ha maradt meg megyem akkor teszunk ra koronat
            //               foreach (var item in gs.RegionList)
            //               {
            //                   if (item.house == h)
            //                   {
            //                       if (SAJATMEGYE.Contains(item))
            //                       {
            //                           FinalKoronaOrderList.Add(item);
            //                           SAJATMEGYE.Remove(item);
            //
            //                      }
            //                   }
            //               }
            //

            //namarmost fogjuk es placedorderekke alakitjuk oket
            foreach (var item in FinalAttackOrderList)
                {
                    if (!gs.m_lBannedOrders.Contains(ORDER_TYPE.ATTACK_PLUS))
                        PlacedOrderList.Add(new PlacedOrder(h, item.Item1, item.Item2, ORDER_TYPE.ATTACK_PLUS));
                    else if (!gs.m_lBannedOrders.Contains(ORDER_TYPE.ATTACK_NORMAL))
                        PlacedOrderList.Add(new PlacedOrder(h, item.Item1, item.Item2, ORDER_TYPE.ATTACK_PLUS));
                     else
                        PlacedOrderList.Add(new PlacedOrder(h, item.Item1, item.Item2, ORDER_TYPE.ATTACK_PLUS));
            }

                foreach (var item in FinalDefenseOrderList)
                {
                    if (!gs.m_lBannedOrders.Contains(ORDER_TYPE.DEFEND_PLUSPLUS))
                       PlacedOrderList.Add(new PlacedOrder(h, item.Item1, item.Item2, ORDER_TYPE.DEFEND_PLUSPLUS));
                    else 
                        PlacedOrderList.Add(new PlacedOrder(h, item.Item1, item.Item2, ORDER_TYPE.DEFEND_PLUS));

                }

                foreach (var item in FinalSupportOrderList)
                {
                    if (!gs.m_lBannedOrders.Contains(ORDER_TYPE.SUPPORT_PLUS))
                        PlacedOrderList.Add(new PlacedOrder(h, item.Item1, item.Item2, ORDER_TYPE.SUPPORT_PLUS));
                    else
                        PlacedOrderList.Add(new PlacedOrder(h, item.Item1, item.Item2, ORDER_TYPE.SUPPORT));

                }

                foreach (var item in FinalRaidOrderList)
                {
                    if (!gs.m_lBannedOrders.Contains(ORDER_TYPE.RAID_PLUS))
                        PlacedOrderList.Add(new PlacedOrder(h, item.Item1, item.Item2, ORDER_TYPE.RAID_PLUS));
                    else
                        PlacedOrderList.Add(new PlacedOrder(h, item.Item1, item.Item2, ORDER_TYPE.RAID));

                }

                foreach (var item in FinalKoronaOrderList)
                {
                    if (!gs.m_lBannedOrders.Contains(ORDER_TYPE.CONDSOLIDATE_PLUS))
                        PlacedOrderList.Add(new PlacedOrder(h, item.Item1, item.Item2, ORDER_TYPE.CONDSOLIDATE_PLUS));
                    else
                        PlacedOrderList.Add(new PlacedOrder(h, item.Item1, item.Item2, ORDER_TYPE.CONDSOLIDATE));

                }



            }
Example #5
0
        public void Recruit( GameState gs, GAME.MODELS.HOUSE h, ref List<GAME.MODELS.Unit> unitList )
        {
            //kinyerjuk a szajbatekert, de lenyeges adatokat az aktualis allasbol

            //ez a max elkoltheto
            int MusteringPoints = gs.PlayerList.Where(p => p.playerHouse == h).First().musteringPoints;
            //megnezzuk h mi lenne a legjobb belole

            int allUnitCount = gs.UnitsList.Where(u => u.player == h).Count();
            int soldierCount = gs.UnitsList.Count(u => u.player == h && u.type == GAME.MODELS.UNIT_TYPE.SOLDIER);
            int knightCount = gs.UnitsList.Count(u => u.player == h && u.type == GAME.MODELS.UNIT_TYPE.KNIGHT);
            int machineCount = gs.UnitsList.Count(u => u.player == h && u.type == GAME.MODELS.UNIT_TYPE.MACHINE);

            bool recSold = false;
            bool recKnight = false;
            bool recMach = false;
            //torekedunk az S-K-M 40-40-20 aranyra
            if ( (soldierCount / allUnitCount) < 0.4f)
            {
                //katonat vonunk be
                recSold = true;
            }

            if ((knightCount / allUnitCount) < 0.4f)
            {
                //katonat vonunk be
                recKnight = true;
            }

            if ((machineCount / allUnitCount) < 0.2f)
            {
                //katonat vonunk be
                recMach = true;
            }

            //mostmar tudjuk h mit kell bevonni
            // kiszamoljuk h menyi DB-t kellene bevonni, majd ezt aranyositjuk az összes bevonhato pont alapjan
            int shouldrecS = 0;
            int shouldrecK = 0;
            int shouldrecM = 0;
            if (recSold) shouldrecS = Convert.ToInt32(allUnitCount * 0.4f);
            if (recKnight) shouldrecK = Convert.ToInt32(allUnitCount * 0.4f);
            if (recMach) shouldrecM = Convert.ToInt32(allUnitCount * 0.2f);

            int shouldRecPointS = shouldrecS * 1;
            int shouldRecPointK = shouldrecS * 2;
            int shouldRecPointM = shouldrecS * 2;

            int totalShouldRecPoint = shouldRecPointS + shouldRecPointK + shouldRecPointM;

            if (MusteringPoints == totalShouldRecPoint)
            {
                //akkor bevonhatjuk mindet
            }

            if (MusteringPoints > totalShouldRecPoint)
            {
                //aranyositani kell, felszorozni az arannyal a bevonas darabszamat h noljon
                float arany = (MusteringPoints / totalShouldRecPoint);
                if (recSold) shouldrecS = Convert.ToInt32(shouldrecS  * arany);
                if (recKnight) shouldrecK = Convert.ToInt32(shouldrecK * arany);
                if (recMach) shouldrecM = Convert.ToInt32(shouldrecM * arany);
            }

            //KESOBB MEGKELLNEZNI
           // if (MusteringPoints < totalShouldRecPoint)
           // {
           //     //aranyositani kell, be kell az arannyal a bevonas darabszamat h csokkenjen
           //     float arany = (MusteringPoints / totalShouldRecPoint) * 100;
           //     if (recSold) shouldrecS = (int)Math.Round(shouldrecS * arany);
           //     if (recKnight) shouldrecK = (int)Math.Round(shouldrecK * arany);
           //     if (recMach) shouldrecM = (int)Math.Round(shouldrecM * arany);
           // }

            //mostmar faszan megvan hanyat vonunk be, most megnzzuk hova vonhatjuk be oket
            List<GAME.MODELS.Region> lehetsegesHelyek = new List<GAME.MODELS.Region>();
            foreach (var item in gs.RegionList)
            {
                if ( item.house == h )
                {
                    lehetsegesHelyek.Add(item);
                }
            }

            //most ki kell szamolni hogy ezek kozul hova erdemes mekkora esellyel
            //legfontosabb: szomszedos erod, szomszedos varos, sajaterod

            List<GAME.MODELS.Region> TEMPlehetsegesHelyek = new List<GAME.MODELS.Region>();

            foreach (var item in lehetsegesHelyek)
            {
                if (item.castle || item.city)
                {
                    TEMPlehetsegesHelyek.Add(item);
                }
                else
                {
                    foreach (var n in item.neighbours)
                    {
                        if (n.city || n.castle)
                        {
                            TEMPlehetsegesHelyek.Add(item);
                        }
                    }
                }
            }

            //leszurtuk a "jelentektelen" helyeket
            lehetsegesHelyek = TEMPlehetsegesHelyek;

            // MAJD HA MEG LESZ IDO MARCIUS VEGEN HAHAHA - AKKOR 
            ////itt sulyozni fogjuk azt h hova kellene bevonni a lehetseges helyek kozul
            //List<Tuple<GAME.MODELS.Region, float>> sulyozottHelyek = new List<Tuple<GAME.MODELS.Region, float>>();
            //
            //foreach (var item in lehetsegesHelyek)
            //{
            //    //sulyozasi szempontok:
            //    //  - milyen egysegunk van ott
            //}
            string[] avaiableNext = new string[] { "S", "S", "K", "K", "M" };
            string next = "S";
            int freeID = gs.UnitsList.Count;
            Random rnd = new Random();
            int random = rnd.Next(0, lehetsegesHelyek.Count);
 
            while ( ( shouldrecK <= 0 && shouldrecS <= 0 && shouldrecM <= 0) || MusteringPoints >= 0)
            {
                switch (next)
                {
                    case "S":
                        if (MusteringPoints-1 < 0)
                        {
                            goto end;
                        }
                        GAME.MODELS.Unit u = new GAME.MODELS.Unit();
                        u.ID = freeID;

                        freeID++;
                        u.player = h;
                        u.position = lehetsegesHelyek[rnd.Next(0, lehetsegesHelyek.Count)];
                        unitList.Add(u);
                        MusteringPoints = MusteringPoints - 1;
                        shouldrecS--;
                        next = avaiableNext[rnd.Next(0, avaiableNext.Count())];
                        break;
                    case "K":
                        if (MusteringPoints - 2 < 0)
                        {
                            goto end;
                        }
                        u = new GAME.MODELS.Unit();
                        u.ID = freeID;
                        freeID++;
                        u.player = h;
                        u.position = lehetsegesHelyek[rnd.Next(0, lehetsegesHelyek.Count)];
                        unitList.Add(u);
                        MusteringPoints = MusteringPoints - 2;
                        shouldrecK--;
                        next = avaiableNext[rnd.Next(0, avaiableNext.Count())];
                        break;
                    case "M":
                        if (MusteringPoints - 2 < 0)
                        {
                            goto end;
                        }
                        u = new GAME.MODELS.Unit();
                        u.ID = freeID;
                        freeID++;
                        u.player = h;
                        u.position = lehetsegesHelyek[rnd.Next(0, lehetsegesHelyek.Count)];
                        unitList.Add(u);
                        MusteringPoints = MusteringPoints - 2;
                        shouldrecM--;
                        next = avaiableNext[rnd.Next(0, avaiableNext.Count())];
                        break;
                    default:
                        break;
                }
            }
            end:
            return;
        }
Example #6
0
        public void ExecuteRaid(GameState gs, HOUSE h, ref List<PlacedOrder> raidList, ref List<PlacedOrder> attackList, ref List<PlacedOrder> consList, ref List<PlacedOrder> defList, ref List<PlacedOrder> supList, out string desc)
        {
            //azt tudjuk h akkor van pakolva raid ha mellettünk ellenség van
            //namármost megnézzük a raidlistában h melyik raidok a mieink
            //megnézzükh melyik meleltt van ellenség és random választunk

            List<PlacedOrder> amibolValaszthatunk = new List<PlacedOrder>();

            foreach (var item in raidList)
            {
                if (item.ownerPlayerName == h)
                {
                    if (!amibolValaszthatunk.Contains(item))
                    {
                        amibolValaszthatunk.Add(item);
                    }
                }
            }


            if (amibolValaszthatunk.Count > 0)
            {
                PlacedOrder vegrehajtando = amibolValaszthatunk[0];


                //keressük meg h hova táamadhatok

                List<Region> lehetsegesMegye = new List<Region>();

                //ellensege a megye v ellenseg van rajta

                foreach (var item in gs.UnitsList)
                {
                    if (item.player != h)
                    {
                        //szóval ellenség,... a kis gyenyó
                        if (vegrehajtando.regionFrom.neighbours.Contains(item.position))
                        {
                            //esmegszomszedos is
                            if (!lehetsegesMegye.Contains(item.position))
                            {
                                lehetsegesMegye.Add(item.position);
                            }
                        }
                    }
                }

                foreach (var item in gs.RegionList)
                {
                    if (vegrehajtando.regionFrom.neighbours.Contains(item))
                    {
                        if (item.house != h)
                        {
                            //ha nem a milyen de szomszedunk
                            if (!lehetsegesMegye.Contains(item))
                            {
                                lehetsegesMegye.Add(item);
                            }
                        }
                    }
                }

                if (lehetsegesMegye.Count > 0)
                {
                    vegrehajtando.regionTo = lehetsegesMegye[0];


                if (attackList.Count(a => a.regionFrom == vegrehajtando.regionTo) > 0)
                    {
                        attackList.Remove(attackList.Find(a => a.regionFrom == vegrehajtando.regionTo));
                        desc = h + " use " + vegrehajtando.order + " from: " + vegrehajtando.regionFrom.name + " to " + vegrehajtando.regionTo.name;
                        raidList.Remove(vegrehajtando);
                        return;
                    }

                    if (raidList.Count(a => a.regionFrom == vegrehajtando.regionTo) > 0)
                    {
                        raidList.Remove(raidList.Find(a => a.regionFrom == vegrehajtando.regionTo));
                        desc = h + " use " + vegrehajtando.order + " from: " + vegrehajtando.regionFrom.name + " to " + vegrehajtando.regionTo.name;
                        raidList.Remove(vegrehajtando);
                        return;
                    }

                    if (consList.Count(a => a.regionFrom == vegrehajtando.regionTo) > 0)
                    {
                        consList.Remove(consList.Find(a => a.regionFrom == vegrehajtando.regionTo));
                        desc = h + " use " + vegrehajtando.order + " from: " + vegrehajtando.regionFrom.name + " to " + vegrehajtando.regionTo.name;
                        raidList.Remove(vegrehajtando);
                        return;
                    }

                    if (defList.Count(a => a.regionFrom == vegrehajtando.regionTo) > 0)
                    {
                        defList.Remove(defList.Find(a => a.regionFrom == vegrehajtando.regionTo));
                        desc = h + " use " + vegrehajtando.order + " from: " + vegrehajtando.regionFrom.name + " to " + vegrehajtando.regionTo.name;
                        raidList.Remove(vegrehajtando);
                        return;
                    }

                    if (supList.Count(a => a.regionFrom == vegrehajtando.regionTo) > 0)
                    {
                        supList.Remove(supList.Find(a => a.regionFrom == vegrehajtando.regionTo));
                        desc = h + " use " + vegrehajtando.order + " from: " + vegrehajtando.regionFrom.name + " to " + vegrehajtando.regionTo.name;
                        raidList.Remove(vegrehajtando);
                        return;
                    }
                }

                if (raidList.Contains(vegrehajtando))
                {
                    raidList.Remove(vegrehajtando);
                }


            }


            //// most megnezzuk h melettunk hol van serreg
            ////erdemes azt megnezni hogy mi az amit csak egy parancscsal érek el, es mi az amit többel is,
            ////mert akkor zzal kell leszedni amivel csak egyszer erjuk el
            //
            //
            //List<regioPont> regioHanyszorerjukEl = new List<regioPont>();
            //
            //foreach (var item in amibolValaszthatunk)
            //{
            //    foreach (var n in item.regionFrom.neighbours)
            //    {
            //        foreach (var unit in gs.UnitsList)
            //        {
            //            //ha az akis paraszt nem a milyen és a szomszédos région áll akkor bizony hozzáadjuk a listhoz
            //            if (unit.player != h && unit.position == n)
            //            {
            //                regioPont newR;
            //                newR.regioFrom = item.regionFrom;
            //                newR.regioTo = n;
            //                newR.pont = 1;
            //                if ( regioHanyszorerjukEl.Where( a => a.regioTo == n).Count() > 0)
            //                {
            //                    int aktpont = regioHanyszorerjukEl.Find(a => a.regioTo == n).pont;
            //                    regioHanyszorerjukEl.Remove(regioHanyszorerjukEl.Find(a => a.regioTo == n));
            //                    newR.pont = aktpont;
            //                }
            //
            //                regioHanyszorerjukEl.Add(newR);
            //                break;
            //            }
            //        }
            //    }
            //}
            //
            ////namostmár megvan h mi hányszor erheto el,.. lehetoleg novekvo sorrendbe pakolva hasznaljuk
            //
            //regioHanyszorerjukEl = regioHanyszorerjukEl.OrderBy(i => i.pont).ToList();
            //
            ////novekvo sorrenben van
            //
            //
            //PlacedOrder vegrehajtando;
            //
            //if (regioHanyszorerjukEl.Count > 0)
            //{
            //    vegrehajtando = amibolValaszthatunk.Find(m => m.regionFrom == regioHanyszorerjukEl[0].regioFrom);
            //    if (vegrehajtando == null)
            //    {
            //        throw new Exception();
            //    }
            //
            //
            //    //vegrejatas
            //
            //    //mekkeressuk h odamilyen parancsot raktak és azt leszedjuk
            //
            //    if( attackList.Count(a => a.regionFrom == vegrehajtando.regionTo) > 0 )
            //    {
            //        attackList.Remove(attackList.Find(a => a.regionFrom == vegrehajtando.regionTo));
            //        desc = h + " use " + vegrehajtando.order + " from: " + vegrehajtando.regionFrom.name + " to " + vegrehajtando.regionTo.name;
            //        raidList.Remove(vegrehajtando);
            //        return;
            //    }
            //
            //    if (raidList.Count(a => a.regionFrom == vegrehajtando.regionTo) > 0)
            //    {
            //        raidList.Remove(raidList.Find(a => a.regionFrom == vegrehajtando.regionTo));
            //        desc = h + " use " + vegrehajtando.order + " from: " + vegrehajtando.regionFrom.name + " to " + vegrehajtando.regionTo.name;
            //        raidList.Remove(vegrehajtando);
            //        return;
            //    }
            //
            //    if (consList.Count(a => a.regionFrom == vegrehajtando.regionTo) > 0)
            //    {
            //        consList.Remove(consList.Find(a => a.regionFrom == vegrehajtando.regionTo));
            //        desc = h + " use " + vegrehajtando.order + " from: " + vegrehajtando.regionFrom.name + " to " + vegrehajtando.regionTo.name;
            //        raidList.Remove(vegrehajtando);
            //        return;
            //    }
            //
            //    if (defList.Count(a => a.regionFrom == vegrehajtando.regionTo) > 0)
            //    {
            //        defList.Remove(defList.Find(a => a.regionFrom == vegrehajtando.regionTo));
            //        desc = h + " use " + vegrehajtando.order + " from: " + vegrehajtando.regionFrom.name + " to " + vegrehajtando.regionTo.name;
            //        raidList.Remove(vegrehajtando);
            //        return;
            //    }
            //
            //    if (supList.Count(a => a.regionFrom == vegrehajtando.regionTo) > 0)
            //    {
            //        supList.Remove(supList.Find(a => a.regionFrom == vegrehajtando.regionTo));
            //        desc = h + " use " + vegrehajtando.order + " from: " + vegrehajtando.regionFrom.name + " to " + vegrehajtando.regionTo.name;
            //        raidList.Remove(vegrehajtando);
            //        return;
            //    }
            //
            //
            //}
            desc = " raiddalvmi baj van";
        }
Example #7
0
        public PlacedOrder ExecuteAttack(GameState gs, GAME.MODELS.HOUSE h, ref List<PlacedOrder> placedOrderList, ref List<Unit> unitList, out string descText, GameInfo gInfo)
        {
            descText = null;
            List<PlacedOrder> amibolValaszthatunk = new List<PlacedOrder>();

            foreach (var item in placedOrderList)
            {
                if (item.order == ORDER_TYPE.ATTACK_MINUS || item.order == ORDER_TYPE.ATTACK_NORMAL || item.order == ORDER_TYPE.ATTACK_PLUS)
                {
                    if (item.ownerPlayerName == h)
                    {
                        amibolValaszthatunk.Add(item);
                    }
                }
            }
            // na szoval
            ///mindig az elsot hajtjuk vegre
            if (amibolValaszthatunk.Count != 0)
            {
                PlacedOrder vegrehajtando = amibolValaszthatunk[0];

                descText = h.ToString();
                //megnezzuk van-e ellenseg a target teruleten
                //ehhez tudnnonk kellh holvan ellenseg

                List<Region> ezenAmegyenEllensegVan = new List<Region>();
                foreach (var item in unitList)
                {
                    if (item.player != h && item.player != HOUSE.NONE)
                    {
                        if (!ezenAmegyenEllensegVan.Contains(item.position))
                        {
                            ezenAmegyenEllensegVan.Add(item.position);
                        }
                    }
                }


                if (ezenAmegyenEllensegVan.Contains(vegrehajtando.regionTo))
                {
                    //csata
                    // itt asszem bekéne hivni gameinfobol a csatát

                    if (gInfo.Battle(ref unitList, ref gs.RegionList, vegrehajtando.regionFrom, vegrehajtando.regionTo))
                    {
                        //megnyertuk a csattat
                        //atmuvoljuk a seregunket
                        HOUSE vesztes = HOUSE.NONE;

                        foreach (var item in unitList)
                        {
                            //osszegyujtjok h kik vannak itt es koet rajkuk a sajt helyukre
                            if (item.position == vegrehajtando.regionTo)
                            {
                                vesztes = item.player;
                            }
                        }

                        if (vesztes == HOUSE.NONE)
                        {
                            throw new Exception("bajvanbaj,...\nTCS\n");
                        }

                        //most szetdobjuk oket a tobbi mezore

                        List<Region> lehetsegesmegyekazathelyezesre = new List<Region>();

                        foreach (var item in vegrehajtando.regionTo.neighbours)
                        {
                            if ((item.house == vesztes) || ( item.house == HOUSE.NONE))
                            {
                                if (!lehetsegesmegyekazathelyezesre.Contains(item))
                                {
                                    lehetsegesmegyekazathelyezesre.Add(item);
                                }
                            }
                        }

                        descText = h + " execute attack(battle) from " + vegrehajtando.regionFrom.name + " to " + vegrehajtando.regionTo.name + " ( result: WIN )";

                        foreach (var item in unitList)
                        {
                            if (item.position == vegrehajtando.regionTo)
                            {
                                Random rnd = new Random();
                                item.position = lehetsegesmegyekazathelyezesre[rnd.Next(0, lehetsegesmegyekazathelyezesre.Count)];
                                descText += "\n defeated unit: " + item.type + " ( ID: " + item.ID + " ) moved to: " + item.position.name;
                            }
                        }

                        return vegrehajtando;
                    }
                    else
                    {
                        descText = h + " execute attack(battle) from " + vegrehajtando.regionFrom.name + " to " + vegrehajtando.regionTo.name + " ( result: LOST )";
                        return vegrehajtando;
                    }

                    

                }
                else
                {//movin'
                    int sum = 0;
                    foreach (var item in unitList)
                    {
                        //elvileg csak a sajatuk van itt
                        if (item.position == vegrehajtando.regionFrom)
                        {
                            item.position = vegrehajtando.regionTo;
                            sum++;
                        }
                    }
                    descText = h + " execute attack(move) from " + vegrehajtando.regionFrom.name + " to " + vegrehajtando.regionTo.name + " ( moved unit: " + sum + " )";
                }
                //vegultoroljuk
                return vegrehajtando;
            }

            throw new Exception("itt valami elvan baszva");
        }
Example #8
0
        public PlacedOrder ExecuteConsolidate(GameState gs, GAME.MODELS.HOUSE h, ref List<PlacedOrder> placedOrderList, ref List<Region> regionList, out string descText)
        {
            List<PlacedOrder> amibolValaszthatunk = new List<PlacedOrder>();

            foreach (var item in placedOrderList)
            {
                if (item.order == ORDER_TYPE.CONDSOLIDATE || item.order == ORDER_TYPE.CONDSOLIDATE_PLUS)
                {
                    if (item.ownerPlayerName == h)
                    {
                        amibolValaszthatunk.Add(item);
                    }
                }
            }

            // na szoval
            //ezek igazabol terulet foglalo  tokenek, szoval ahol vegrehajtjuk ott az a mienklesz
            if( amibolValaszthatunk.Count > 0 )
            {
                PlacedOrder vegreh = amibolValaszthatunk[0];

                for (int i = 0; i < regionList.Count; i++)
                {
                    if (regionList[i].name == vegreh.regionFrom.name)
                    {
                        regionList[i].house = h;
                    }
                }

                descText = h + " use " + vegreh.order.ToString() + " at: " + vegreh.regionFrom.name;

                return vegreh;
            }

            throw new Exception("szintén");

            //foreach (var item in amibolValaszthatunk)
            //{
            //    Region temp = new Region();
            //    for( int i = 0; i < regionList.Count; i++)
            //    {
            //        if ( item.regionFrom.name == regionList[i].name)
            //        {
            //            temp = regionList[i];
            //            temp.house = h;
            //            regionList.Remove(regionList[i]);
            //            regionList.Insert(i, temp);
            //        }
            //    }
            //}
            //
            ////mostmar h jol elfoglaltuk a helyeket, toroljuk a parancsokat
            //
            //foreach (var v in amibolValaszthatunk)
            //{
            //    for (int i = 0; i < placedOrderList.Count; i++)
            //    {
            //        if (v.regionFrom == placedOrderList[i].regionFrom)
            //        {
            //            placedOrderList.Remove(placedOrderList[i]);
            //        }
            //    }
            //}
        }
Example #9
0
        private bool VanEIttEgysegem(GameState gs, Region item2, HOUSE h)
        {
            foreach (var item in gs.UnitsList)
            {
                if (item.position.name == item2.name && item.player == h)
                {
                    return true;
                }
            }

            return false;
        }
Example #10
0
        private bool SeregemNagyobbE(GameState gs, HOUSE h, Region sajatRegio, Region SzomszedosEllensegesRegio, bool VarostTamadokE)
        {
            int seregemEreje = 0;
            int ellensegEreje = 0;

            foreach (var item in gs.UnitsList)
            {
                if (item.position == SzomszedosEllensegesRegio )
                {
                    if (item.type == UNIT_TYPE.MACHINE)
                    {
                        ellensegEreje += 0;
                    }

                    ellensegEreje += item.attackPoint;
                }

                if (item.position == sajatRegio)
                {
                    if (item.type == UNIT_TYPE.MACHINE)
                    {
                        if (VarostTamadokE)
                        {
                            seregemEreje += item.attackPoint;
                        }
                        else
                        {
                            seregemEreje += 0;
                        }
                    }

                    seregemEreje += item.attackPoint;
                }
            }

            if (seregemEreje == ellensegEreje)
            {
                //akkor majd megraidoljuk
                return false;
            }

            if (seregemEreje > ellensegEreje)
            {
                //nyugodtan megtamadhatjuk a gecibe
                return true;
            }
            else
            {
                return false;
            }

           throw new Exception();
        }