示例#1
0
    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)
示例#2
0
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"))