Пример #1
0
    def __queryToonMaxHpResponse(self, db, retCode):
        maxHpDatagram = db.values.get('setMaxHp', None)
        if retCode == 0 and maxHpDatagram != None:
            di = PyDatagramIterator(maxHpDatagram)
            maxHp = di.getInt16()
        else:
            # The toonId is unknown or not a toon.
            maxHp = None

        db.userCallback(maxHp, *db.userArgs)
    def fromNetString(self, netString):
        self.tracks.clear()
        dg = PyDatagram(netString)
        dgi = PyDatagramIterator(dg)

        avDoId = dgi.getUint32()
        favGagId = dgi.getUint8()

        self.avatar = base.cr.doId2do.get(avDoId, None)
        self.avatarName = None if not self.avatar else self.avatar.getName()

        self.favoriteGag = base.cr.attackMgr.getAttackName(favGagId)

        while dgi.getRemainingSize() > 0:
            track = GagGlobals.TrackNameById.get(dgi.getUint8())
            exp = dgi.getInt16()
            maxExp = dgi.getInt16()
            increment = dgi.getInt16()
            self.tracks[track] = Track(track, exp, maxExp, increment)
        return avDoId
Пример #3
0
 def _processData(self, netDatagram):
     # convert incoming Datagram to dict
     myIterator = PyDatagramIterator(netDatagram)
     msg = {}
     msg[SEQN] = myIterator.getInt32()
     msg[AKN] = myIterator.getInt32()
     msg[MSG_TYPE] = myIterator.getInt16()
     msg[OOL] = myIterator.getInt8()
     msg[OAKN] = self.decode(myIterator.getString())
     if not msg[MSG_TYPE] == MULT:
         msg[DATA] = self.decode(myIterator.getString())
     else:
         msg[DATA] = (myIterator.getString())
     # msg.append(self.decode(myIterator.getString()))
     return msg
def getTrackExperienceFromNetString(netString):
    dg = PyDatagram(netString)
    dgi = PyDatagramIterator(dg)

    tracks = {}

    for track in TrackNameById.values():
        tracks[track] = 0

    while dgi.getRemainingSize() > 0:
        trackId = dgi.getUint8()
        exp = dgi.getInt16()

        tracks[TrackNameById.get(trackId)] = exp
    return tracks
Пример #5
0
 def server_processing(self,datagram):
     data_iter = PyDatagramIterator(datagram)
     msgID = data_iter.getUint16()
     if msgID == PRINT_MESSAGE:
         messageToPrint = data_iter.getString()
         print messageToPrint
     if msgID == ARMY_MOVE_REQUEST:
         army_id = data_iter.getInt16()
         ax = data_iter.getFloat64()
         ay = data_iter.getFloat64()
         tx = data_iter.getFloat64()
         ty = data_iter.getFloat64()
         base.armies[army_id].set_target(False,tx,ty)
     if msgID == CLIENT_CHAT:
         r = data_iter.getInt32()
         g = data_iter.getInt32()
         b = data_iter.getInt32()
         text = data_iter.getString()
         self.server_messager("chat_send",[(r,g,b),text])
         #base.main_menu.chat_add((r,g,b,1),text)
     if msgID == CLIENT_READY:
         but_id = data_iter.getInt32()
         state = data_iter.getInt32()
         self.server_messager("ready_button",[but_id,state])
         #base.main_menu.chat_add((r,g,b,1),text)
     if msgID == CLIENT_LOADED:
         self.server_messager("all_loaded",[])
         base.menu_manager.menus["mp-load"].load_complete()
     if msgID == CLIENT_INIT_REQUEST:
         pn = data_iter.getString()
         pk = data_iter.getString()
         base.menu_manager.menus["mp-game"].obj_list[6]["text"] = pn
         base.menu_manager.menus["mp-game"].obj_list[7]["text"] = pk
         self.server_messager("client_update",[base.menu_manager.menus["mp-game"].obj_list[4]["text"],
                                              base.menu_manager.menus["mp-game"].obj_list[5]["text"],
                                              base.menu_manager.menus["mp-game"].obj_list[8]["indicatorValue"],
                                              base.menu_manager.menus["mp-game"].map_selected])
     if msgID == BUILD_START_REQUEST:
         t_id = data_iter.getInt32()
         player = data_iter.getInt32()
         type = data_iter.getString()
         base.towers[t_id].build_start()
     if msgID == BUILD_CANCEL_REQUEST:
         t_id = data_iter.getInt32()
         player = data_iter.getInt32()
         type = data_iter.getString()
         base.towers[t_id].build_cancel()
Пример #6
0
 def client_processing(self,datagram):
     data_iter = PyDatagramIterator(datagram)
     msgID = data_iter.getUint16()
     if msgID == PRINT_MESSAGE:
         messageToPrint = data_iter.getString()
         print messageToPrint
     if msgID == ARMY_MOVE:
         army_id = data_iter.getInt16()
         ax = data_iter.getFloat64()
         ay = data_iter.getFloat64()
         tx = data_iter.getFloat64()
         ty = data_iter.getFloat64()
         base.armies[army_id].node_path.setX(ax)
         base.armies[army_id].node_path.setY(ay)
         base.armies[army_id].move_to_point(tx,ty)
     if msgID == CLIENT_INIT_UPDATE:
         p1_name = data_iter.getString()
         p1_kingdom = data_iter.getString()
         p1_ready = data_iter.getInt32()
         game_map = data_iter.getInt32()
         base.menu_manager.menus["mp-game"].client_update(p1_name,p1_kingdom,p1_ready,game_map)
     if msgID == SERVER_CHAT:
         r = data_iter.getInt32()
         g = data_iter.getInt32()
         b = data_iter.getInt32()
         text = data_iter.getString()
         base.menu_manager.menus["mp-game"].chat_add((r,g,b),text)
     if msgID == SERVER_READY:
         but_id = data_iter.getInt32()
         state = data_iter.getInt32()
         base.menu_manager.menus["mp-game"].obj_list[but_id]["indicatorValue"]=state
         base.menu_manager.menus["mp-game"].start_game_check()
     if msgID == SERVER_LOADED:
         base.menu_manager.menus["mp-load"].load()
     if msgID == ALL_LOADED:
         base.menu_manager.menus["mp-load"].load_complete()
     if msgID == GAME_START:
         base.menu_manager.menu_goto("mp-load")
     if msgID == MAP_SET:
         map = data_iter.getInt32()
         base.menu_manager.menus["mp-game"].map_selected = map
         mapname = base.menu_manager.menus["mp-game"].maplist[map]["fullname"]
         mapimage = base.menu_manager.menus["mp-game"].maplist[map]["preview"]
         base.menu_manager.menus["mp-game"].obj_list[11]["text"]=mapname
         base.menu_manager.menus["mp-game"].obj_list[10].setImage(mapimage)
     if msgID == BATTLE_TURN:
         bat = data_iter.getInt32()
         turn = data_iter.getInt32()
         base.battles[bat].turn_change(turn)
     if msgID == BATTLE_START:
         a1 = data_iter.getInt32()
         a1_x = data_iter.getFloat32()
         a1_y = data_iter.getFloat32()
         a2 = data_iter.getInt32()
         a2_x = data_iter.getFloat32()
         a2_y = data_iter.getFloat32()
         army_start = data_iter.getInt32()
         base.armies[a1].stop()
         base.armies[a2].stop()
         base.armies[a1].node_path.setPos(a1_x,a1_y,0)
         base.armies[a2].node_path.setPos(a2_x,a2_y,0)
         base.battles.append(TimObjects.Battle([base.armies[a1],base.armies[a2]],army_start))
     if msgID == BATTLE_CLASH:
         battle = data_iter.getInt32()
         a1 = data_iter.getInt32()
         a2 = data_iter.getInt32()
         result = data_iter.getString()
         buff = data_iter.getInt8()
         base.battles[battle].clash(base.armies[a1],base.armies[a2],result,buff)
     if msgID == BATTLE_ARMYADD:
         bat = data_iter.getInt32()
         army = data_iter.getInt32()
         a_x = data_iter.getFloat32()
         a_y = data_iter.getFloat32()
         base.battles[bat].add_army(base.armies[army])
         base.armies[army].node_path.setPos(a_x,a_y,0)
     if msgID == BATTLE_END:
         bat = data_iter.getInt32()
         base.battles[bat].end()
     if msgID == BUILD_START:
         t_id = data_iter.getInt32()
         player = data_iter.getInt8()
         type = data_iter.getString()
         base.towers[t_id].build_start()
     if msgID == TOWER_CAPTURE:
         t_id = data_iter.getInt32()
         player = data_iter.getInt8()
         base.towers[t_id].change_owner(player)
     if msgID == BUILD_CANCEL:
         t_id = data_iter.getInt32()
         base.towers[t_id].build_cancel()
     if msgID == BUILD_COMPLETE:
         t_id = data_iter.getInt32()
         player = data_iter.getInt8()
         type = data_iter.getString()
         base.towers[t_id].create_counter()