def packGardenData(plants, statuary, started=True): dg = PyDatagram() for plant in plants: a, b, c, d, e = plant dg.addUint32(a) dg.addInt8(b) dg.addUint32(c) dg.addInt8(d) dg.addUint16(e) dg.addUint8(statuary) dg.addBool(started) return dg.getMessage()
def packGardenData(plants, statuary, started = True): dg = PyDatagram() for plant in plants: a, b, c, d, e = plant dg.addUint32(a) dg.addInt8(b) dg.addUint32(c) dg.addInt8(d) dg.addUint16(e) dg.addUint8(statuary) dg.addBool(started) return dg.getMessage()
def d_setShardData(self): dg = PyDatagram() self.context += 1 self.context %= 200 dg.addUint8(self.context) buildings = self.air.doFindAllInstances( DistributedBuildingAI.DistributedBuildingAI) for bldg in buildings: if bldg.__class__ in ( DistributedBuildingAI.DistributedBuildingAI, DistributedAnimBuildingAI.DistributedAnimBuildingAI): if not bldg.zoneId % 1000: # sz bldg, ignore continue if bldg.zoneId // 1000 == 7: # ff bldg, ignore now continue data = bldg.getPickleData() dg.addString("block") dg.addUint16(bldg.zoneId - (bldg.zoneId % 1000)) dg.addUint16(bldg.zoneId) dg.addUint8(int(data['block'])) dg.addString(data['state'].lower()) dg.addUint8(ord(data['track'])) dg.addUint8(int(data['difficulty'])) dg.addInt8(int(data['numFloors'])) self.bldgs.add(bldg) self.writeInvasion(dg) self.sendUpdate("setShardData", [dg.getMessage()]) self.air.notify.info("Sent shard data to UD") taskMgr.doMethodLater(60, self.__timeout, 'UD-sync-timeout')
def d_updateBlock(self, bldg): if not bldg in self.bldgs: return data = bldg.getPickleData() dg = PyDatagram() dg.addUint16(bldg.zoneId - (bldg.zoneId % 1000)) dg.addUint16(bldg.zoneId) dg.addUint8(int(data['block'])) state = data['state'].lower() if state.startswith('clear'): state = 'cogdo' if state.endswith('cogdo') else 'suit' dg.addString(state) dg.addUint8(ord(data['track'])) dg.addUint8(int(data['difficulty'])) dg.addInt8(int(data['numFloors'])) self.sendUpdate("doUpdate", ["block", dg.getMessage()])
def d_updateBlock(self, bldg): if not bldg in self.bldgs: return data = bldg.getPickleData() dg = PyDatagram() dg.addUint16(bldg.zoneId - (bldg.zoneId % 1000)) dg.addUint16(bldg.zoneId) dg.addUint8(int(data['block'])) state = data['state'].lower() if state.startswith('clear'): state = 'cogdo' if state.endswith('cogdo') else 'suit' dg.addString(state) dg.addUint8(ord(data['track'])) dg.addUint8(int(data['difficulty'])) dg.addInt8(int(data['numFloors'])) self.sendUpdate("doUpdate", ["block", dg.getMessage()])
def d_setShardData(self): dg = PyDatagram() self.context += 1 self.context %= 200 dg.addUint8(self.context) buildings = self.air.doFindAllInstances(DistributedBuildingAI.DistributedBuildingAI) for bldg in buildings: if bldg.__class__ in (DistributedBuildingAI.DistributedBuildingAI, DistributedAnimBuildingAI.DistributedAnimBuildingAI): if not bldg.zoneId % 1000: # sz bldg, ignore continue if bldg.zoneId // 1000 == 7: # ff bldg, ignore now continue data = bldg.getPickleData() dg.addString("block") dg.addUint16(bldg.zoneId - (bldg.zoneId % 1000)) dg.addUint16(bldg.zoneId) dg.addUint8(int(data['block'])) dg.addString(data['state'].lower()) dg.addUint8(ord(data['track'])) dg.addUint8(int(data['difficulty'])) dg.addInt8(int(data['numFloors'])) self.bldgs.add(bldg) self.writeInvasion(dg) self.sendUpdate("setShardData", [dg.getMessage()]) self.air.notify.info("Sent shard data to UD") taskMgr.doMethodLater(60, self.__timeout, 'UD-sync-timeout')