示例#1
0
        public virtual void removeCity(CProducerUnit du)
        {
            for (int i = 0; i < cities_.Count; i++)
            {
                if (cities_[i].gid_ == du.gid_)
                {
                    if (aiLogging_)
                    {
                        dlogger_.info("Removing City : " + cities_[i]);
                    }
                    cities_.RemoveAt(i);
                    break;
                }
            }

            cityMap_.Remove(du.gid_);
            for (int i = 0; i < knownCitiesVec_.Count; i++)
            {
                if (knownCitiesVec_[i].gid_ == du.gid_)
                {
                    knownCitiesVec_.RemoveAt(i);
                    break;
                }
            }

            masterObjects_.Remove(du.gid_);
        }
示例#2
0
 public virtual void addCity(CProducerUnit cc)
 {
     if (aiLogging_)
     {
         dlogger_.info("Adding City: " + cc);
     }
     cities_.Add(cc);
     cityMap_.Add(cc.gid_, cc);
     knownCitiesVec_.Add(cc);
     masterObjects_.Add(cc.gid_, cc);
 }
示例#3
0
 public virtual void removeProducer(CProducerUnit cu)
 {
     for (int i = 0; i < producers_.Count; i++)
     {
         if (cu.gid_ == producers_[i].gid_)
         {
             producers_.RemoveAt(i);
             break;
         }
     }
     producerMap_.Remove(cu.gid_);
 }
示例#4
0
        ////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////


        ////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////
        public virtual void addCities(List <CProducerUnit> cities)
        {
            if (cities != null)
            {
                for (int i = 0; i < cities.Count; i++)
                {
                    CProducerUnit cc = cities[i];
                    if (aiLogging_)
                    {
                        dlogger_.info("S - Adding City " + cc);
                    }
                    addCity(cc);
                }
            }
        }
示例#5
0
        public void encodeChildren(CEncodedObjectOutputBufferI output)
        {
            output.openObject(CPlayer.TAGS);
            foreach (CPlayer cp in players_)
            {
                cp.encode(output);
            }
            output.objectEnd();

            var spotc = new List <CProducerUnit>();
            var spotu = new List <CUnit>();
            var spotp = new List <CProducerUnit>();

            foreach (CUnit cu in spots_)
            {
                if (cu.entry_.isCity())
                {
                    spotc.Add((CProducerUnit)cu);
                }
                else if (cu.entry_.isProducer())
                {
                    spotp.Add((CProducerUnit)cu);
                }
                else
                {
                    spotu.Add(cu);
                }
            }

            output.openObject(SPOTU);
            foreach (CUnit u in spotu)
            {
                CUnit.encodeCUnit(u, output);
            }
            output.objectEnd();

            output.openObject(SPOTC);
            foreach (CProducerUnit c in spotc)
            {
                CProducerUnit.encodeCProducerUnit(c, output);
            }
            output.objectEnd();

            output.openObject(SPOTP);
            foreach (CProducerUnit p in spotp)
            {
                CProducerUnit.encodeCProducerUnit(p, output);
            }
            output.objectEnd();

            output.openObject(CITIES);
            foreach (CProducerUnit c in cities_)
            {
                CProducerUnit.encodeCProducerUnit(c, output);
            }
            output.objectEnd();

            output.openObject(UNITS);
            foreach (CUnit u in units_)
            {
                if (!u.entry_.isProducer())
                {
                    CUnit.encodeCUnit(u, output);
                }
            }
            output.objectEnd();

            output.openObject(PRODUCERS);
            dlogger_.info("Prods:" + Convert.ToString(producers_.Count));
            foreach (CProducerUnit p in producers_)
            {
                CProducerUnit.encodeCProducerUnit(p, output);
            }
            output.objectEnd();

            output.openObject(CSupplyRoute.TAGS);
            foreach (CSupplyRoute csr in supplySources_.Values)
            {
                csr.encode(output);
            }
            output.objectEnd();

            map_.encode(output);

            gameRules_.encode(output);

            vc_.encode(output);

            output.openObject(CProposal.TAGS);
            foreach (CProposal p in proposals_)
            {
                p.encode(output);
            }
            output.objectEnd();

            output.openObject(CProductionReportData.TAGS);
            foreach (CProductionReportData prd in prodReport_)
            {
                prd.encode(output);
            }
            output.objectEnd();

            //random for use of AI
            random_.encode(AI_RANDOM_TAG, output);
            return;
        }
示例#6
0
 public virtual void addProducer(CProducerUnit cu)
 {
     dlogger_.info("Adding Producer " + cu);
     producers_.Add(cu);
     producerMap_.Add(cu.gid_, cu);
 }
示例#7
0
        ////////////////////////////////////////////////////////////////////
        //Reloading
        protected AIPlayerData(
            int position,
            string path,
            string logname,
            Dictionary <string, string> caMap,
            CEncodedObjectInputBufferI bin,
            AIEventInterfaceI aiEvent,
            AICommandInterfaceI command,
            AIQueryI query,
            AICheatI cheat,
            int logLevel)
            : base(position, path, logname, caMap, bin, aiEvent, command, query, cheat, logLevel)
        {
            dlogger_ = new CSubLog("PlayerData:" + Convert.ToString(position), realLog_);


            curturn_          = EncodeUtil.parseInt(caMap[CUR_TURN]);
            numPlayers_       = EncodeUtil.parseInt(caMap[NUM_PLAYERS]);
            rdWeight_         = EncodeUtil.parseInt(caMap[RD_WEIGHT]);
            unitsBeforeDrain_ = EncodeUtil.parseInt(caMap[UNITS_BEFORE_DRAIN]);

            bin.nextTag(CPlayer.TAGS);
            if (bin.hasChildren())
            {
                bin.firstChild();
                while (!bin.reachedEndTag(CPlayer.TAGS))
                {
                    players_.Add(new CPlayer(bin));
                }
            }
            bin.endTag(CPlayer.TAGS);

            bin.nextTag(SPOTU);
            if (bin.hasChildren())
            {
                bin.firstChild();
                while (!bin.reachedEndTag(SPOTU))
                {
                    CUnit u = CUnit.decodeCUnit(bin, query_);
                    masterObjects_.Add(u.gid_, u);
                    spotMap_.Add(u.gid_, u);
                    spots_.Add(u);
                }
            }
            bin.endTag(SPOTU);


            bin.nextTag(SPOTC);
            if (bin.hasChildren())
            {
                bin.firstChild();
                while (!bin.reachedEndTag(SPOTC))
                {
                    CProducerUnit c = CProducerUnit.decodeCProducerUnit(bin, query_);
                    masterObjects_.Add(c.gid_, c);
                    knownCitiesVec_.Add(c);
                    spotMap_.Add(c.gid_, c);
                    spots_.Add(c);
                }
            }
            bin.endTag(SPOTC);

            bin.nextTag(SPOTP);
            if (bin.hasChildren())
            {
                bin.firstChild();
                while (!bin.reachedEndTag(SPOTP))
                {
                    CProducerUnit p = CProducerUnit.decodeCProducerUnit(bin, query);
                    masterObjects_.Add(p.gid_, p);
                    spotMap_.Add(p.gid_, p);
                    spots_.Add(p);
                }
            }
            bin.endTag(SPOTP);

            bin.nextTag(CITIES);
            if (bin.hasChildren())
            {
                bin.firstChild();
                while (!bin.reachedEndTag(CITIES))
                {
                    CProducerUnit c = CProducerUnit.decodeCProducerUnit(bin, query_);
                    masterObjects_.Add(c.gid_, c);
                    knownCitiesVec_.Add(c);
                    cities_.Add(c);
                    cityMap_.Add(c.gid_, c);
                }
            }
            bin.endTag(CITIES);


            bin.nextTag(UNITS);
            if (bin.hasChildren())
            {
                bin.firstChild();
                while (!bin.reachedEndTag(UNITS))
                {
                    CUnit u = CUnit.decodeCUnit(bin, query_);
                    masterObjects_.Add(u.gid_, u);
                    unitMap_.Add(u.gid_, u);
                    units_.Add(u);
                }
            }
            bin.endTag(UNITS);

            bin.nextTag(PRODUCERS);
            if (bin.hasChildren())
            {
                bin.firstChild();
                while (!bin.reachedEndTag(PRODUCERS))
                {
                    CProducerUnit p = CProducerUnit.decodeCProducerUnit(bin, query_);
                    masterObjects_.Add(p.gid_, p);
                    producers_.Add(p);
                    producerMap_.Add(p.gid_, p);
                    unitMap_.Add(p.gid_, p);
                    units_.Add(p);
                }
            }
            bin.endTag(PRODUCERS);

            bin.nextTag(CSupplyRoute.TAGS);
            if (bin.hasChildren())
            {
                bin.firstChild();
                while (!bin.reachedEndTag(CSupplyRoute.TAGS))
                {
                    var csr = new CSupplyRoute(bin);
                    supplySources_.Add(csr.rid_, csr);
                }
            }
            bin.endTag(CSupplyRoute.TAGS);

            map_     = new AIMap(bin);
            mapUtil_ = map_.mapUtil_;

            gameRules_ = new CGameRules(bin);

            vc_ = new CVictoryConditions(bin);

            bin.nextTag(CProposal.TAGS);
            if (bin.hasChildren())
            {
                bin.firstChild();
                while (!bin.reachedEndTag(CProposal.TAGS))
                {
                    var p = new CProposal(bin);
                    proposals_.Add(p);
                }
            }
            bin.endTag(CProposal.TAGS);

            bin.nextTag(CProductionReportData.TAGS);
            if (bin.hasChildren())
            {
                bin.firstChild();
                while (!bin.reachedEndTag(CProductionReportData.TAGS))
                {
                    var prd = new CProductionReportData(bin);
                    prodReport_.Add(prd);
                }
            }
            bin.endTag(CProductionReportData.TAGS);


            random_ = new CMTRandom(AI_RANDOM_TAG, bin);

            //retrieve flyover
            foUnit_ = null;
            if (caMap.ContainsKey(FOUNIT_ID))
            {
                uint fid = EncodeUtil.parseUInt(caMap[FOUNIT_ID]);
                foUnit_ = masterObjects_[fid];
            }
        }