#!/usr/bin/python  
 | 
# -*- coding: GBK -*-  
 | 
#-------------------------------------------------------------------------------  
 | 
#  
 | 
##@package GM.Commands.PlayerMirror  
 | 
#  
 | 
# @todo:´´½¨Íæ¼Ò¾µÏñ½øÐÐÕ½¶·  
 | 
# @author hxp  
 | 
# @date 2024-10-17  
 | 
# @version 1.0  
 | 
#  
 | 
# ÏêϸÃèÊö: ´´½¨Íæ¼Ò¾µÏñ, ¿¼ÂǵØÍ¼ÈËÂúÎÊÌ⣬py¿ÉÒÔ×ö¸öÔ¤ÅУ¬¿Éµ÷ÕûµØÍ¼ÅäÖõÄÈËÊýÉÏÏÞ  
 | 
#  
 | 
#-------------------------------------------------------------------------------  
 | 
#"""Version = 2024-10-17 15:00"""  
 | 
#-------------------------------------------------------------------------------  
 | 
  
 | 
import GameWorld  
 | 
import MirrorAttack  
 | 
import PlayerViewCacheTube  
 | 
import PlayerFB  
 | 
import ChConfig  
 | 
  
 | 
## GMÃüÁîÖ´ÐÐÈë¿Ú  
 | 
#  @param curPlayer µ±Ç°Íæ¼Ò  
 | 
#  @param paramList ²ÎÊýÁбí [Íæ¼ÒID]  
 | 
#  @return None  
 | 
#  @remarks º¯ÊýÏêϸ˵Ã÷.  
 | 
def OnExec(curPlayer, paramList):  
 | 
    if not paramList:  
 | 
        GameWorld.DebugAnswer(curPlayer, "-------------------%s" % GameWorld.GetCurrentDataTimeStr())  
 | 
        GameWorld.DebugAnswer(curPlayer, "´´½¨Õ½¶·: PlayerMirror c ÊÇ·ñºǫ́ [Ä¿±êID ID2 ...]")  
 | 
        GameWorld.DebugAnswer(curPlayer, "¿ªÊ¼Õ½¶·: PlayerMirror s")  
 | 
        GameWorld.DebugAnswer(curPlayer, "Ìø¹ýÕ½¶·: PlayerMirror q")  
 | 
        GameWorld.DebugAnswer(curPlayer, "Í˳öÕ½¶·: PlayerMirror e")  
 | 
        GameWorld.DebugAnswer(curPlayer, "¸üоµÏñ: PlayerMirror 5")  
 | 
        GameWorld.DebugAnswer(curPlayer, "ÊÇ·ñºǫ́:0-Íæ¼Ò×ÔÉí²ÎÓëÕ½¶·")  
 | 
        GameWorld.DebugAnswer(curPlayer, "ÊÇ·ñºǫ́:1-Íæ¼ÒÎÞ¸ÐÖª£¬ÏµÍ³Ö±½Ó³ö½á¹û")  
 | 
        GameWorld.DebugAnswer(curPlayer, "Ä¿±êID:ÎÞ-×Ô¼º;>0-ÆäËûÍæ¼ÒIDÖ§³Ö¿ç·þÍæ¼ÒID")  
 | 
        GameWorld.DebugAnswer(curPlayer, "Ä¿±êID¶à¸öʱΪ¶à¶Ô¶àÕ½¶·")  
 | 
        GameWorld.DebugAnswer(curPlayer, "¶à¶Ô¶àÕóÓª·ÖÅä¾ù·ÖAABBB¼´Íæ¼ÒºÍAA¶ÔBBB")  
 | 
        return  
 | 
      
 | 
    mapID = ChConfig.Def_FBMapID_MirrorBattle  
 | 
    lineID = 0  
 | 
    tick = GameWorld.GetGameWorld().GetTick()  
 | 
    playerID = curPlayer.GetPlayerID()  
 | 
    value1 = paramList[0]  
 | 
    if value1 == "c":  
 | 
        isSysbg = paramList[1] if len(paramList) > 1 else 0  
 | 
        if not isSysbg:  
 | 
            if not PlayerFB.DoEnterCustomScene(curPlayer, mapID, lineID, tick):  
 | 
                GameWorld.DebugAnswer(curPlayer, "½øÈë×Ô¶¨ÒåPK´´¾°Ê§°Ü:%s" % mapID)  
 | 
                return  
 | 
              
 | 
        mirrorIDList = paramList[2:]  
 | 
        if not mirrorIDList:  
 | 
            mirrorIDList.append(playerID)  
 | 
              
 | 
        factionIDListA, factionIDListB = [playerID], []  
 | 
        while mirrorIDList:  
 | 
            # ºóÃæÎª¶ÔÊÖ  
 | 
            factionIDListB.append(mirrorIDList.pop(-1))  
 | 
            # Ç°ÃæÎª¶ÓÓÑ  
 | 
            if mirrorIDList:  
 | 
                factionIDListA.append(mirrorIDList.pop(0))  
 | 
                  
 | 
        posX, posY = curPlayer.GetPosX(), curPlayer.GetPosY()  
 | 
        battlePlayerList = []  
 | 
        for i, batPlayerID in enumerate(factionIDListA):  
 | 
            battlePlayerList.append({"playerID":batPlayerID, "faction":1, "posX":posX, "posY":posY + i * 5})  
 | 
        for i, batPlayerID in enumerate(factionIDListB):  
 | 
            battlePlayerList.append({"playerID":batPlayerID, "faction":2, "posX":posX + 5, "posY":posY + i * 5})  
 | 
              
 | 
        requestID = playerID  
 | 
        if MirrorAttack.OnRequestCreateMirrorBattle(mapID, lineID, requestID, battlePlayerList, isSysbg, curPlayer):  
 | 
            GameWorld.DebugAnswer(curPlayer, "ÇëÇó´´½¨¾µÏñ: %s VS %s" % (factionIDListA, factionIDListB))  
 | 
        else:  
 | 
            GameWorld.DebugAnswer(curPlayer, "ÇëÇó´´½¨¾µÏñʧ°Ü: %s VS %s" % (factionIDListA, factionIDListB))  
 | 
              
 | 
    elif value1 == "s":  
 | 
        battle = MirrorAttack.GetMirrorBattle(curPlayer)  
 | 
        if battle:  
 | 
            MirrorAttack.OnMirrorBattleStart(battle.battleID)  
 | 
              
 | 
    elif value1 == "q":  
 | 
        battle = MirrorAttack.GetMirrorBattle(curPlayer)  
 | 
        if battle:  
 | 
            MirrorAttack.DoMirrorBattleQuick(battle.battleID)  
 | 
              
 | 
    elif value1 == "e":  
 | 
        PlayerFB.DoExitCustomScene(curPlayer)  
 | 
          
 | 
    elif value1 == 5:  
 | 
        tick = GameWorld.GetGameWorld().GetTick()  
 | 
        PlayerViewCacheTube.UpdateGameServerPlayerCache(curPlayer, tick, forcePackData=True)  
 | 
        GameWorld.DebugAnswer(curPlayer, "ÒѸüÐÂ×îоµÏñ»º´æ!")  
 | 
          
 | 
    return  
 |