hxp
2024-12-26 22c964784d465c77365c2495f6d43117618d8482
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
#!/usr/bin/python
# -*- coding: GBK -*-
#-------------------------------------------------------------------------------
#
##@package Player.RemoteQuery.GY_Query_PlayerMirror
#
# @todo:Íæ¼Ò¾µÏñ´ò°üÊý¾Ý
# @author hxp
# @date 2024-10-17
# @version 1.0
#
# ÏêϸÃèÊö: Íæ¼Ò¾µÏñ´ò°üÊý¾Ý
#
#-------------------------------------------------------------------------------
#"""Version = 2024-10-17 15:00"""
#-------------------------------------------------------------------------------
 
import GameWorld
import MirrorAttack
import PlayerViewCacheTube
#---------------------------------------------------------------------
 
#  @param query_Type ÇëÇóÀàÐÍ
#  @param query_ID ÇëÇóµÄÍæ¼ÒID
#  @param packCMDList ·¢°üÃüÁî
#  @param tick µ±Ç°Ê±¼ä
#  @return "True" or "False" or ""
def DoLogic(query_Type, query_ID, packCMDList, tick):
    GameWorld.DebugLog("GY_Query_PlayerMirror DoLogic", query_ID)
    msgInfo, packDataDict = packCMDList
    msgType = msgInfo["msgType"]
    # ¾µÏñÕ½¶·
    if msgType == "MirrorBattle":
        curPlayer = None
        playerID = msgInfo.get("playerID", 0)
        if playerID:
            curPlayer = GameWorld.GetPlayerManager().FindPlayerByID(playerID)
            if not curPlayer or curPlayer.IsEmpty():
                return ''
        MirrorAttack.OnMirrorBattleInit(msgInfo, packDataDict, curPlayer)
        
    # ÆäËû¹¦ÄÜ
    elif msgType == "":
        pass
    
    return ''
 
 
def DoResult(curPlayer , callFunName , funResult , tick):
    GameWorld.DebugLog("GY_Query_PlayerMirror DoResult %s" % str(funResult), curPlayer.GetPlayerID())
    funResult = eval(funResult)
    if not funResult:
        return
    msgType = funResult[0]
    msgData = funResult[1]
    
    if msgType == "PackDataSyncState":
        PlayerViewCacheTube.UpdPackDataSyncState(curPlayer, msgData)
        if msgData.get("PackDataCross"): # Èç¹û¿ç·þÐèÒªµÄ£¬Á¢¼´Í¬²½Ò»´Î
            PlayerViewCacheTube.UpdateGameServerPlayerCache(curPlayer, tick)
    elif msgType == "PullPlayerPackData":
        msgInfo = msgData
        __DoPullPlayerPackData(curPlayer, msgInfo, tick)
        
    elif msgType == "PullPlayerViewCache":
        msgInfo = msgData
        __DoPullPlayerViewCache(curPlayer, msgInfo, tick)
        
    return
 
def __DoPullPlayerPackData(curPlayer, msgInfo, tick):
    pullFrom = msgInfo.get("pullFrom")
    # 0 »ò ·Ç±¾·þ´ú±í¿ç·þÐèÒª
    if pullFrom == 0 or (pullFrom > 0 and pullFrom != GameWorld.GetServerGroupID()):
        PlayerViewCacheTube.SetPackDataCrossSyncState(curPlayer)
    else:
        PlayerViewCacheTube.SetPackDataSyncState(curPlayer)
    PlayerViewCacheTube.UpdateGameServerPlayerCache(curPlayer, tick, packMsg=msgInfo)
    return
 
def __DoPullPlayerViewCache(curPlayer, msgInfo, tick):
    viewFrom = msgInfo.get("viewFrom")
    # 0 »ò ·Ç±¾·þ´ú±í¿ç·þÐèÒª
    if viewFrom == 0 or (viewFrom > 0 and viewFrom != GameWorld.GetServerGroupID()):
        PlayerViewCacheTube.SetViewCacheCrossSyncState(curPlayer)
    PlayerViewCacheTube.UpdateGameServerPlayerCache(curPlayer, tick, packMsg=msgInfo, isOnlyViewCache=True)
    return