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; }