Advertisement
Guest User

Untitled

a guest
Mar 22nd, 2019
154
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 11.89 KB | None | 0 0
  1. import ui
  2. import uiScriptLocale
  3. import net
  4. import app
  5. import dbg
  6. import player
  7. import background
  8. import wndMgr
  9.  
  10. import localeInfo
  11. import chrmgr
  12. import colorInfo
  13. import constInfo
  14.  
  15. import playerSettingModule
  16. import stringCommander
  17. import emotion
  18.  
  19. ####################################
  20. # 빠른 실행을 위한 모듈 로딩 분담
  21. ####################################
  22. import uiRefine
  23. import uiToolTip
  24. import uiAttachMetin
  25. import uiPickMoney
  26. import uiChat
  27. import uiMessenger
  28. import uiHelp
  29. import uiWhisper
  30. import uiPointReset
  31. import uiShop
  32. import uiExchange
  33. import uiSystem
  34. import uiOption
  35. import uiRestart
  36. ####################################
  37.  
  38. class LoadingWindow(ui.ScriptWindow):
  39.     def __init__(self, stream):
  40.         print "NEW LOADING WINDOW -------------------------------------------------------------------------------"
  41.         ui.Window.__init__(self)
  42.         net.SetPhaseWindow(net.PHASE_WINDOW_LOAD, self)
  43.  
  44.         self.stream=stream
  45.         self.loadingImage=0
  46.         self.loadingGage=0
  47.         self.errMsg=0
  48.         self.update=0
  49.         self.playerX=0
  50.         self.playerY=0
  51.         self.loadStepList=[]
  52.  
  53.     def __del__(self):
  54.         print "---------------------------------------------------------------------------- DELETE LOADING WINDOW"
  55.         net.SetPhaseWindow(net.PHASE_WINDOW_LOAD, 0)
  56.         ui.Window.__del__(self)
  57.  
  58.     def Open(self):
  59.         print "OPEN LOADING WINDOW -------------------------------------------------------------------------------"
  60.  
  61.         #app.HideCursor()
  62.  
  63.         try:
  64.             pyScrLoader = ui.PythonScriptLoader()
  65.            
  66.             if localeInfo.IsYMIR() or localeInfo.IsWE_KOREA() or localeInfo.IsCANADA() or localeInfo.IsBRAZIL() or localeInfo.IsEUROPE() or localeInfo.IsJAPAN():
  67.                 pyScrLoader.LoadScriptFile(self, uiScriptLocale.LOCALE_UISCRIPT_PATH + "LoadingWindow.py")
  68.             else:          
  69.                 pyScrLoader.LoadScriptFile(self, "UIScript/LoadingWindow.py")
  70.         except:
  71.             import exception
  72.             exception.Abort("LodingWindow.Open - LoadScriptFile Error")
  73.  
  74.         try:
  75.             self.loadingImage=self.GetChild("BackGround")
  76.             self.errMsg=self.GetChild("ErrorMessage")
  77.             self.loadingGage=self.GetChild("FullGage")
  78.         except:
  79.             import exception
  80.             exception.Abort("LodingWindow.Open - LoadScriptFile Error")
  81.  
  82.         self.errMsg.Hide()
  83.  
  84.         if localeInfo.IsHONGKONG():
  85.             imgFileNameDict = {
  86.                 0 : app.GetLocalePath() + "/ui/loading/loading0.sub",
  87.                 1 : app.GetLocalePath() + "/ui/loading/loading1.sub",
  88.                 2 : app.GetLocalePath() + "/ui/loading/loading2.sub",
  89.                 3 : app.GetLocalePath() + "/ui/loading/loading3.sub",
  90.                 4 : app.GetLocalePath() + "/ui/loading/loading4.sub",
  91.                 5 : app.GetLocalePath() + "/ui/loading/loading5.sub",
  92.                 6 : app.GetLocalePath() + "/ui/loading/loading6.sub"
  93.             }
  94.         elif localeInfo.IsCIBN10():
  95.             imgFileNameDict = {
  96.                 0 : app.GetLocalePath() + "/ui/loading/loading0.jpg",
  97.                 1 : app.GetLocalePath() + "/ui/loading/loading1.jpg",
  98.                 2 : app.GetLocalePath() + "/ui/loading/loading2.jpg",
  99.                 3 : app.GetLocalePath() + "/ui/loading/loading3.jpg",
  100.                 4 : app.GetLocalePath() + "/ui/loading/loading4.jpg",
  101.                 5 : app.GetLocalePath() + "/ui/loading/loading5.jpg",
  102.                 6 : app.GetLocalePath() + "/ui/loading/loading6.jpg",
  103.                 7 : app.GetLocalePath() + "/ui/loading/loading7.jpg",
  104.             }
  105.         elif localeInfo.IsYMIR() or localeInfo.IsWE_KOREA() or localeInfo.IsCANADA() or localeInfo.IsBRAZIL() or localeInfo.IsEUROPE() or localeInfo.IsJAPAN():
  106.             imgFileNameDict = {
  107.                 0 : uiScriptLocale.LOCALE_UISCRIPT_PATH + "loading/loading0.sub",
  108.                 1 : uiScriptLocale.LOCALE_UISCRIPT_PATH + "loading/loading1.sub",
  109.                 2 : uiScriptLocale.LOCALE_UISCRIPT_PATH + "loading/loading2.sub",
  110.                 3 : uiScriptLocale.LOCALE_UISCRIPT_PATH + "loading/loading3.sub",
  111.  
  112.             }
  113.         elif constInfo.SUB2_LOADING_ENABLE:
  114.             imgFileNameDict = {
  115.                 0 : "d:/ymir work/uiloading/background_loading_warrior.sub",
  116.                 1 : "d:/ymir work/uiloading/background_loading_assassin.sub",
  117.                 2 : "d:/ymir work/uiloading/background_loading_shaman.sub",
  118.                 3 : "d:/ymir work/uiloading/background_loading_sura.sub",
  119.                 4 : "d:/ymir work/uiloading/background_loading_assassin2.sub",
  120.                 5 : "d:/ymir work/uiloading/background_loading_sura2.sub",
  121.                 6 : "d:/ymir work/uiloading/background_loading_assassin3.sub",
  122.                 7 : "d:/ymir work/uiloading/background_loading_assassin3.sub",
  123.             }
  124.         else:
  125.             imgFileNameDict = {
  126.                 0 : "d:/ymir work/ui/intro/pattern/background_loading_warrior.jpg",
  127.                 1 : "d:/ymir work/ui/intro/pattern/background_loading_assassin.jpg",
  128.                 2 : "d:/ymir work/ui/intro/pattern/background_loading_shaman.jpg",
  129.             }
  130.  
  131.         try:
  132.             imgFileName = imgFileNameDict[app.GetRandom(0, len(imgFileNameDict) - 1)]
  133.             self.loadingImage.LoadImage(imgFileName)
  134.  
  135.         except:
  136.             print "LoadingWindow.Open.LoadImage - %s File Load Error" % (imgFileName)
  137.             self.loadingImage.Hide()
  138.  
  139.  
  140.         width = float(wndMgr.GetScreenWidth()) / float(self.loadingImage.GetWidth())
  141.         height = float(wndMgr.GetScreenHeight()) / float(self.loadingImage.GetHeight())
  142.  
  143.         self.loadingImage.SetScale(width, height)
  144.         self.loadingGage.SetPercentage(2, 100)
  145.  
  146.         self.Show()
  147.  
  148.         chrSlot=self.stream.GetCharacterSlot()
  149.         net.SendSelectCharacterPacket(chrSlot)
  150.  
  151.         app.SetFrameSkip(0)
  152.  
  153.     def Close(self):
  154.         print "---------------------------------------------------------------------------- CLOSE LOADING WINDOW"
  155.  
  156.         app.SetFrameSkip(1)
  157.  
  158.         self.loadStepList=[]
  159.         self.loadingImage=0
  160.         self.loadingGage=0
  161.         self.errMsg=0
  162.         self.ClearDictionary()
  163.         self.Hide()
  164.  
  165.     def OnPressEscapeKey(self):
  166.         app.SetFrameSkip(1)
  167.         self.stream.SetLoginPhase()
  168.         return TRUE
  169.  
  170.     def __SetNext(self, next):
  171.         if next:
  172.             self.update=ui.__mem_func__(next)
  173.         else:
  174.             self.update=0
  175.  
  176.     def __SetProgress(self, p):
  177.         if self.loadingGage:
  178.             self.loadingGage.SetPercentage(2+98*p/100, 100)
  179.  
  180.     def DEBUG_LoadData(self, playerX, playerY):
  181.         self.playerX=playerX
  182.         self.playerY=playerY
  183.  
  184.         self.__RegisterSkill() ## 로딩 중간에 실행 하면 문제 발생
  185.         self.__RegisterTitleName()
  186.         self.__RegisterColor()
  187.         self.__InitData()
  188.         self.__LoadMap()
  189.         self.__LoadSound()
  190.         self.__LoadEffect()
  191.         self.__LoadWarrior()
  192.         self.__LoadAssassin()
  193.         self.__LoadSura()
  194.         self.__LoadShaman()
  195.         self.__LoadSkill()
  196.         self.__LoadEnemy()
  197.         self.__LoadNPC()
  198.         self.__StartGame()
  199.  
  200.     def LoadData(self, playerX, playerY):
  201.         self.playerX=playerX
  202.         self.playerY=playerY
  203.  
  204.         self.__RegisterDungeonMapName()
  205.         self.__RegisterSkill() ## 로딩 중간에 실행 하면 문제 발생
  206.         self.__RegisterTitleName()
  207.         self.__RegisterColor()
  208.         self.__RegisterEmotionIcon()
  209.  
  210.         self.loadStepList=[
  211.             (0, ui.__mem_func__(self.__InitData)),
  212.             (10, ui.__mem_func__(self.__LoadMap)),
  213.             (30, ui.__mem_func__(self.__LoadSound)),
  214.             (40, ui.__mem_func__(self.__LoadEffect)),
  215.             (50, ui.__mem_func__(self.__LoadWarrior)),
  216.             (60, ui.__mem_func__(self.__LoadAssassin)),
  217.             (70, ui.__mem_func__(self.__LoadSura)),
  218.             (80, ui.__mem_func__(self.__LoadShaman)),
  219.             (90, ui.__mem_func__(self.__LoadSkill)),
  220.             (93, ui.__mem_func__(self.__LoadEnemy)),
  221.             (97, ui.__mem_func__(self.__LoadNPC)),
  222.  
  223.             # GUILD_BUILDING
  224.             (98, ui.__mem_func__(self.__LoadGuildBuilding)),
  225.             # END_OF_GUILD_BUILDING
  226.  
  227.             (100, ui.__mem_func__(self.__StartGame)),
  228.         ]
  229.  
  230.         self.__SetProgress(0)
  231.         #self.__SetNext(self.__LoadMap)
  232.  
  233.     def OnUpdate(self):
  234.         if len(self.loadStepList)>0:
  235.             (progress, runFunc)=self.loadStepList[0]
  236.  
  237.             try:
  238.                 runFunc()
  239.             except:
  240.                 self.errMsg.Show()
  241.                 self.loadStepList=[]
  242.  
  243.                 ## 이곳에서 syserr.txt 를 보낸다.
  244.  
  245.                 import dbg
  246.                 dbg.TraceError(" !!! Failed to load game data : STEP [%d]" % (progress))
  247.  
  248.                 #import shutil
  249.                 #import os
  250.                 #shutil.copyfile("syserr.txt", "errorlog.txt")
  251.                 #os.system("errorlog.exe")
  252.  
  253.                 app.Exit()
  254.  
  255.                 return
  256.  
  257.             self.loadStepList.pop(0)
  258.  
  259.             self.__SetProgress(progress)
  260.  
  261.     def __InitData(self):
  262.         playerSettingModule.LoadGameData("INIT")
  263.  
  264.     def __RegisterDungeonMapName(self):
  265.         background.RegisterDungeonMapName("metin2_map_spiderdungeon")
  266.         background.RegisterDungeonMapName("metin2_map_monkeydungeon")
  267.         background.RegisterDungeonMapName("metin2_map_monkeydungeon_02")
  268.         background.RegisterDungeonMapName("metin2_map_monkeydungeon_03")
  269.         background.RegisterDungeonMapName("metin2_map_deviltower1")
  270.  
  271.     def __RegisterSkill(self):
  272.  
  273.         race = net.GetMainActorRace()
  274.         group = net.GetMainActorSkillGroup()
  275.         empire = net.GetMainActorEmpire()
  276.  
  277.         playerSettingModule.RegisterSkill(race, group, empire)
  278.  
  279.     if app.ENABLE_EXTENDED_ALIGNMENT_SYSTEM:
  280.         def __RegisterTitleName(self):
  281.  
  282.             def GetTitleData(gender):
  283.                 return localeInfo.TITLE_NAME_DICT.get(gender, ('UNKNOWN_GENDER', ))
  284.  
  285.             def GetTitleNamesTuple(*title_data):
  286.                 titleNamesTuple = map(iter, title_data)
  287.                 while titleNamesTuple:
  288.                     yield tuple(map(next, titleNamesTuple))
  289.  
  290.             for titleNameIndex, (titleNameFemale, titleNameMale) in enumerate(GetTitleNamesTuple(GetTitleData(localeInfo.GENDER_FEMALE), GetTitleData(localeInfo.GENDER_MALE))):
  291.                 chrmgr.RegisterTitleName(titleNameIndex, titleNameFemale, titleNameMale)
  292.     else:
  293.         def __RegisterTitleName(self):
  294.             for i in xrange(len(localeInfo.TITLE_NAME_LIST)):
  295.                     chrmgr.RegisterTitleName(i, localeInfo.TITLE_NAME_LIST[i])
  296.  
  297.     def __RegisterColor(self):
  298.  
  299.         ## Name
  300.         NAME_COLOR_DICT = {
  301.             chrmgr.NAMECOLOR_PC : colorInfo.CHR_NAME_RGB_PC,
  302.             chrmgr.NAMECOLOR_NPC : colorInfo.CHR_NAME_RGB_NPC,
  303.             chrmgr.NAMECOLOR_MOB : colorInfo.CHR_NAME_RGB_MOB,
  304.             chrmgr.NAMECOLOR_PVP : colorInfo.CHR_NAME_RGB_PVP,
  305.             chrmgr.NAMECOLOR_PK : colorInfo.CHR_NAME_RGB_PK,
  306.             chrmgr.NAMECOLOR_PARTY : colorInfo.CHR_NAME_RGB_PARTY,
  307.             chrmgr.NAMECOLOR_WARP : colorInfo.CHR_NAME_RGB_WARP,
  308.             chrmgr.NAMECOLOR_WAYPOINT : colorInfo.CHR_NAME_RGB_WAYPOINT,
  309.  
  310.             chrmgr.NAMECOLOR_EMPIRE_MOB : colorInfo.CHR_NAME_RGB_EMPIRE_MOB,
  311.             chrmgr.NAMECOLOR_EMPIRE_NPC : colorInfo.CHR_NAME_RGB_EMPIRE_NPC,
  312.             chrmgr.NAMECOLOR_EMPIRE_PC+1 : colorInfo.CHR_NAME_RGB_EMPIRE_PC_A,
  313.             chrmgr.NAMECOLOR_EMPIRE_PC+2 : colorInfo.CHR_NAME_RGB_EMPIRE_PC_B,
  314.             chrmgr.NAMECOLOR_EMPIRE_PC+3 : colorInfo.CHR_NAME_RGB_EMPIRE_PC_C,
  315.         }
  316.         for name, rgb in NAME_COLOR_DICT.items():
  317.             chrmgr.RegisterNameColor(name, rgb[0], rgb[1], rgb[2])
  318.  
  319.         ## Title
  320.         TITLE_COLOR_DICT = (    colorInfo.TITLE_RGB_GOOD_4,
  321.                                 colorInfo.TITLE_RGB_GOOD_3,
  322.                                 colorInfo.TITLE_RGB_GOOD_2,
  323.                                 colorInfo.TITLE_RGB_GOOD_1,
  324.                                 colorInfo.TITLE_RGB_NORMAL,
  325.                                 colorInfo.TITLE_RGB_EVIL_1,
  326.                                 colorInfo.TITLE_RGB_EVIL_2,
  327.                                 colorInfo.TITLE_RGB_EVIL_3,
  328.                                 colorInfo.TITLE_RGB_EVIL_4, )
  329.         count = 0
  330.         for rgb in TITLE_COLOR_DICT:
  331.             chrmgr.RegisterTitleColor(count, rgb[0], rgb[1], rgb[2])
  332.             count += 1
  333.  
  334.     def __RegisterEmotionIcon(self):
  335.         emotion.RegisterEmotionIcons()
  336.  
  337.     def __LoadMap(self):
  338.         net.Warp(self.playerX, self.playerY)
  339.  
  340.     def __LoadSound(self):
  341.         playerSettingModule.LoadGameData("SOUND")
  342.  
  343.     def __LoadEffect(self):
  344.         playerSettingModule.LoadGameData("EFFECT")
  345.  
  346.     def __LoadWarrior(self):
  347.         playerSettingModule.LoadGameData("WARRIOR")
  348.  
  349.     def __LoadAssassin(self):
  350.         playerSettingModule.LoadGameData("ASSASSIN")
  351.  
  352.     def __LoadSura(self):
  353.         playerSettingModule.LoadGameData("SURA")
  354.  
  355.     def __LoadShaman(self):
  356.         playerSettingModule.LoadGameData("SHAMAN")
  357.  
  358.     def __LoadSkill(self):
  359.         playerSettingModule.LoadGameData("SKILL")
  360.  
  361.     def __LoadEnemy(self):
  362.         playerSettingModule.LoadGameData("ENEMY")
  363.  
  364.     def __LoadNPC(self):
  365.         playerSettingModule.LoadGameData("NPC")
  366.  
  367.     # GUILD_BUILDING
  368.     def __LoadGuildBuilding(self):
  369.         playerSettingModule.LoadGuildBuildingList(localeInfo.GUILD_BUILDING_LIST_TXT)
  370.     # END_OF_GUILD_BUILDING
  371.  
  372.     def __StartGame(self):
  373.         background.SetViewDistanceSet(background.DISTANCE0, 25600)
  374.         """
  375.         background.SetViewDistanceSet(background.DISTANCE1, 19200)
  376.         background.SetViewDistanceSet(background.DISTANCE2, 12800)
  377.         background.SetViewDistanceSet(background.DISTANCE3, 9600)
  378.         background.SetViewDistanceSet(background.DISTANCE4, 6400)
  379.         """
  380.         background.SelectViewDistanceNum(background.DISTANCE0)
  381.  
  382.         app.SetGlobalCenterPosition(self.playerX, self.playerY)
  383.  
  384.         net.StartGame()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement