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_); }
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); }
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_); }
//////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////// 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); } } }
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; }
public virtual void addProducer(CProducerUnit cu) { dlogger_.info("Adding Producer " + cu); producers_.Add(cu); producerMap_.Add(cu.gid_, cu); }
//////////////////////////////////////////////////////////////////// //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]; } }