def __init__(self, width, height): self.width = width self.height = height self.depth = height self.socket_adapter_queue = Queue.Queue(maxsize=0) self.socket_adapter = SocketAdapter() thread.start_new_thread(self.socketAdapterThread, ()) terra_gen = TerraGen(self.width, self.height, self.depth) # terrain only contains the generated terrain self.terrain = terra_gen.getTerrain() self.sendTerrain(self.terrain) # import sys # sys.exit() # self.socket_adapter_queue.put(self.terrain) # world contains the animated world like npcs # self.world = deepcopy(self.terrain) # self.entities = deepcopy(self.terrain) self.world_npc = deepcopy(self.terrain) self.world_botany = deepcopy(self.terrain)
class WorldGrid(object): def __init__(self, width, height): self.width = width self.height = height self.depth = height self.socket_adapter_queue = Queue.Queue(maxsize=0) self.socket_adapter = SocketAdapter() thread.start_new_thread(self.socketAdapterThread, ()) terra_gen = TerraGen(self.width, self.height, self.depth) # terrain only contains the generated terrain self.terrain = terra_gen.getTerrain() self.sendTerrain(self.terrain) # import sys # sys.exit() # self.socket_adapter_queue.put(self.terrain) # world contains the animated world like npcs # self.world = deepcopy(self.terrain) # self.entities = deepcopy(self.terrain) self.world_npc = deepcopy(self.terrain) self.world_botany = deepcopy(self.terrain) # self.printAsciiWorld(self.terrain) def socketAdapterThread(self): self.socket_adapter.openSocket() while True: data = self.socket_adapter_queue.get() self.socket_adapter.send(data) def printWorld(self, world): for row in world: row_string = "" for item in row: row_string += " " + str(item) print row_string def printAsciiWorld(self, world): for row in world: row_string = "" for field in row: try: ascii_field = legend.id_terrain_dict[field] except KeyError: ascii_field = field row_string += " " + ascii_field print row_string def updateNPC(self, oldy, oldx, y, x, type, growth, id): self.world_npc[y][x] = type self.socket_adapter_queue.put([type.encode("ASCII"), growth, id, oldy, oldx, y, x]) def deadNPC(self, message, type, id, y, x): self.socket_adapter_queue.put([message.encode("ASCII"), type.encode("ASCII"), id, y, x]) def insertBotany(self, y, x, entity): self.world_botany[y][x] = entity # print self.entities def updateBotany(self, y, x, name, growth): # self.world_botany[y][x] = name self.socket_adapter_queue.put([name.encode("ASCII"), growth, y, x]) def getField(self, y, x): # print "Field", y, x, self.terrain[y][x] return self.terrain[y][x] def getBotany(self, y, x): # print self.world_botany return self.world_botany[y][x] # def getCurrentBotany(self, y, x): # print self.world_botany # return self.world_botany[y][x] def getTerrain(self): return self.terrain # self.world def getWorld(self): world_string = "" for row in self.world_npc: row_string = "" for field in row: try: ascii_field = legend.id_terrain_dict[field] except KeyError: ascii_field = field row_string += " " + ascii_field # print row_string world_string += row_string + "\n" self.world_npc = deepcopy(self.terrain) return world_string def sendTerrainNew(self, terrain): for z, layer in enumerate(self.terrain): print z, layer for i, line in enumerate(layer): name = "terrain".encode("ASCII") list = [name, i, z, line] list = str(list).replace(" [", "").replace("]]", "]") self.socket_adapter_queue.put(list.encode("ASCII")) def sendTerrain(self, terrain): # name = "terrain" # for i, row in enumerate(terrain): # row_list = [name.encode("ASCII"), i] # for item in row: # row_list.append(item) # # print "#", str(row_list) # self.socket_adapter_queue.put(str(list)) for i, line in enumerate(terrain): # print i, len(line) name = "terrain".encode("ASCII") list = [name, i, line] list = str(list).replace(" [", "").replace("]]", "]") # print "LIST", list self.socket_adapter_queue.put(list.encode("ASCII"))