Marty-v58/client/pack/root/uimovechannel.py
metin2clean e94957cd33 client
2024-06-01 15:32:17 -05:00

128 lines
3.3 KiB
Python

import app
import dbg
import ui
import exception
import localeInfo
import chat
import serverInfo
import net
def GetServerID():
serverID = 0
for k in serverInfo.REGION_DICT[0].keys():
if serverInfo.REGION_DICT[0][k]["name"] == net.GetServerInfo().split(",")[0]:
serverID = k
break
return serverID
class MoveChannelWindow(ui.ScriptWindow):
def __init__(self):
ui.ScriptWindow.__init__(self)
self.__Initialize()
self.__LoadWindow()
def __del__(self):
ui.ScriptWindow.__del__(self)
def __Initialize(self):
self.titleBar = None
self.channelButtonList = []
self.currentChannel = 0
self.ingameChannel = 1
self.board = None
self.titleBar = None
self.blackBoard = None
self.acceptButton = None
self.cancelButton = None
@ui.WindowDestroy
def Destroy(self):
self.__Initialize()
self.ClearDictionary()
self.Hide()
def Open(self):
if self.ingameChannel < 99:
self.SelectChannel(self.ingameChannel - 1)
else:
self.__RefreshChannelButtons()
self.SetCenterPosition()
self.Show()
def Close(self):
self.Hide()
def OnPressEscapeKey(self):
self.Close()
return True
def __LoadWindow(self):
# run once
if getattr(self, "IsLoaded", False):
return
self.IsLoaded = True
# load ui
try:
pyScrLoader = ui.PythonScriptLoader()
pyScrLoader.LoadScriptFile(self, "UIScript/MoveChannelDialog.py")
except:
exception.Abort("MoveChannelWindow.__LoadWindow.LoadScript")
# getters
try:
self.board = self.GetChild("MoveChannelBoard")
self.titleBar = self.GetChild("MoveChannelTitle")
self.blackBoard = self.GetChild("BlackBoard")
self.acceptButton = self.GetChild("AcceptButton")
self.cancelButton = self.GetChild("CancelButton")
except:
exception.Abort("MoveChannelWindow.__LoadWindow.BindObject")
# events
self.titleBar.SetCloseEvent(ui.__mem_func__(self.Close))
self.acceptButton.SetEvent(ui.__mem_func__(self.ChangeChannel))
self.cancelButton.SetEvent(ui.__mem_func__(self.Close))
# dynamic buttons
self.__AddChannelButtons()
def GetChannelCount(self):
return len(serverInfo.REGION_DICT[0][GetServerID()]["channel"])
def __AddChannelButtons(self):
ELEM_SIZE = 30
BOARD_SIZE = ELEM_SIZE * self.GetChannelCount()
self.SetSize(190, 80 + BOARD_SIZE)
self.board.SetSize(190, 80 + BOARD_SIZE)
self.blackBoard.SetSize(163, 7 + BOARD_SIZE)
for i in xrange(self.GetChannelCount()):
self.channelButtonList.append(ui.MakeRadioButton(self.blackBoard, 7, 7 + ELEM_SIZE * i, "d:/ymir work/ui/game/myshop_deco/", "select_btn_01.sub", "select_btn_02.sub", "select_btn_03.sub"))
self.channelButtonList[i].SetText(serverInfo.REGION_DICT[0][GetServerID()]["channel"][i]["name"])
self.channelButtonList[i].SetEvent(lambda arg=i: self.SelectChannel(arg))
self.channelButtonList[i].Show()
def __RefreshChannelButtons(self):
for i in xrange(self.GetChannelCount()):
if i == self.currentChannel:
self.channelButtonList[i].Down()
else:
self.channelButtonList[i].SetUp()
def SelectChannel(self,channel):
self.currentChannel = channel
self.__RefreshChannelButtons()
def ChangeChannel(self):
channelID = self.currentChannel + 1
if channelID <= 0: #skip invalid channel ids
chat.AppendChat(chat.CHAT_TYPE_INFO , localeInfo.MOVE_CHANNEL_NOT_MOVE)
return
self.Close()
net.SendChatPacket("/change_channel {}".format(channelID))