Guest User

introcreate.py

a guest
Mar 28th, 2015
221
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 19.19 KB | None | 0 0
  1. import chr
  2. import grp
  3. import app
  4. import net
  5. import snd
  6. import wndMgr
  7. import event
  8. import systemSetting
  9. import localeInfo
  10.  
  11. import ui
  12. import networkModule
  13. import math
  14. import snd
  15. import musicInfo
  16. import playerSettingModule
  17. import uiScriptLocale
  18. import uiToolTip
  19.  
  20. LOCALE_PATH = "uiscript/"+uiScriptLocale.CODEPAGE+"_"
  21.  
  22. MAN         = 0
  23. WOMAN       = 1
  24. SHAPE0      = 0
  25. SHAPE1      = 1
  26. PAGE_COUNT  = 2
  27. SLOT_COUNT  = 5
  28. BASE_CHR_ID = 3
  29.  
  30. class CreateCharacterWindow(ui.Window):
  31.    
  32.  
  33.     #SLOT_ROTATION = [135.0, 225.0, 315.0, 45.0]
  34.     SLOT_ROTATION = [135.0, 225.0, 315.0, 45.0, 72.0]
  35.    
  36.  
  37.     CREATE_STAT_POINT = 0
  38.  
  39.     STAT_CON = 0
  40.     STAT_INT = 1
  41.     STAT_STR = 2
  42.     STAT_DEX = 3
  43.  
  44.     STAT_DESCRIPTION =  {
  45.                             STAT_CON : localeInfo.STAT_TOOLTIP_CON,
  46.                             STAT_INT : localeInfo.STAT_TOOLTIP_INT,
  47.                             STAT_STR : localeInfo.STAT_TOOLTIP_STR,
  48.                             STAT_DEX : localeInfo.STAT_TOOLTIP_DEX,
  49.                         }
  50.  
  51.     START_STAT =    (  ## CON INT STR DEX
  52.                         [ 4, 3, 6, 3, ], ## Warrior
  53.                         [ 3, 3, 4, 6, ], ## Assassin
  54.                         [ 3, 5, 5, 3, ], ## Sura
  55.                         [ 4, 6, 3, 3, ], ## Shaman
  56.                         [ 6, 6, 2, 2, ], ## Wolf
  57.                         [ 4, 3, 6, 3, ], ## Warrior
  58.                         [ 3, 3, 4, 6, ], ## Assassin
  59.                         [ 3, 5, 5, 3, ], ## Sura
  60.                         [ 4, 6, 3, 3, ], ## Shaman
  61.                     )
  62.  
  63.     DESCRIPTION_FILE_NAME = (
  64.         uiScriptLocale.JOBDESC_WARRIOR_PATH,
  65.         uiScriptLocale.JOBDESC_ASSASSIN_PATH,
  66.         uiScriptLocale.JOBDESC_SURA_PATH,
  67.         uiScriptLocale.JOBDESC_SHAMAN_PATH,
  68.         uiScriptLocale.JOBDESC_WOLFMAN_PATH,
  69.     )
  70.  
  71.     class DescriptionBox(ui.Window):
  72.         def __init__(self):
  73.             ui.Window.__init__(self)
  74.             self.descIndex = 0
  75.         def __del__(self):
  76.             ui.Window.__del__(self)
  77.         def SetIndex(self, index):
  78.             self.descIndex = index
  79.         def OnRender(self):
  80.             event.RenderEventSet(self.descIndex)
  81.  
  82.     class CharacterRenderer(ui.Window):
  83.         def OnRender(self):
  84.             grp.ClearDepthBuffer()
  85.             grp.SetGameRenderState()
  86.             grp.PushState()
  87.             grp.SetOmniLight()
  88.  
  89.             screenWidth = wndMgr.GetScreenWidth()
  90.             screenHeight = wndMgr.GetScreenHeight()
  91.             newScreenWidth = float(screenWidth - 270)
  92.             newScreenHeight = float(screenHeight)
  93.  
  94.             grp.SetViewport(270.0/screenWidth, 0.0, newScreenWidth/screenWidth, newScreenHeight/screenHeight)
  95.  
  96.             app.SetCenterPosition(0.0, 0.0, 0.0)
  97.             app.SetCamera(1550.0, 15.0, 180.0, 95.0)
  98.             grp.SetPerspective(10.0, newScreenWidth/newScreenHeight, 1000.0, 3000.0)
  99.  
  100.             (x, y) = app.GetCursorPosition()
  101.             grp.SetCursorPosition(x, y)
  102.  
  103.             chr.Deform()
  104.             chr.Render()
  105.  
  106.             grp.RestoreViewport()
  107.             grp.PopState()
  108.             grp.SetInterfaceRenderState()
  109.  
  110.     def __init__(self, stream):
  111.         print "NEW CREATE WINDOW ----------------------------------------------------------------------------"
  112.         ui.Window.__init__(self)
  113.         net.SetPhaseWindow(net.PHASE_WINDOW_CREATE, self)
  114.  
  115.         self.stream=stream
  116.  
  117.     def __del__(self):
  118.         print "---------------------------------------------------------------------------- DELETE CREATE WINDOW"
  119.  
  120.         net.SetPhaseWindow(net.PHASE_WINDOW_CREATE, 0)
  121.         ui.Window.__del__(self)
  122.  
  123.     def Open(self):
  124.         print "OPEN CREATE WINDOW ----------------------------------------------------------------------------"
  125.  
  126.         playerSettingModule.LoadGameData("INIT")
  127.  
  128.         self.reservingRaceIndex = -1
  129.         self.reservingShapeIndex = -1
  130.         self.reservingStartTime = 0
  131.         self.stat = [0, 0, 0, 0]
  132.        
  133.         self.gender = 0
  134.         self.slot = -1
  135.         self.shapeList = [
  136.             [0, 0, 0, 0, 0],
  137.             [0, 0, 0, 0, 0]]
  138.  
  139.         self.descIndex = 0
  140.  
  141.         try:
  142.             dlgBoard = ui.ScriptWindow()
  143.             pythonScriptLoader = ui.PythonScriptLoader()
  144.             pythonScriptLoader.LoadScriptFile(dlgBoard, uiScriptLocale.LOCALE_UISCRIPT_PATH + "createcharacterwindow.py")
  145.  
  146.         except:
  147.             import exception
  148.             exception.Abort("CreateCharacterWindow.Open.LoadObject")
  149.  
  150.         try:
  151.             getChild = dlgBoard.GetChild
  152.  
  153.             self.NameList = []
  154.             self.NameList.append(getChild("name_warrior"))
  155.             self.NameList.append(getChild("name_assassin"))
  156.             self.NameList.append(getChild("name_sura"))
  157.             self.NameList.append(getChild("name_shaman"))
  158.             self.NameList.append(getChild("name_wolfman"))
  159.  
  160.             self.GaugeList = []
  161.             self.GaugeList.append(getChild("hth_gauge"))
  162.             self.GaugeList.append(getChild("int_gauge"))
  163.             self.GaugeList.append(getChild("str_gauge"))
  164.             self.GaugeList.append(getChild("dex_gauge"))
  165.  
  166.             self.btnCreate = getChild("create_button")
  167.             self.btnCancel = getChild("cancel_button")
  168.             self.btnPrev = getChild("prev_button")
  169.             self.btnNext = getChild("next_button")
  170.             self.btnLeft = getChild("left_button")
  171.             self.btnRight = getChild("right_button")
  172.             self.textBoard = getChild("text_board")
  173.  
  174.             self.genderButtonList = []
  175.             self.genderButtonList.append(getChild("gender_button_01"))
  176.             self.genderButtonList.append(getChild("gender_button_02"))
  177.  
  178.             self.shapeButtonList = []
  179.             self.shapeButtonList.append(getChild("shape_button_01"))
  180.             self.shapeButtonList.append(getChild("shape_button_02"))
  181.  
  182.             self.editCharacterName = getChild("character_name_value")
  183.  
  184.             self.statValue = []
  185.             self.statValue.append(getChild("hth_value"))
  186.             self.statValue.append(getChild("int_value"))
  187.             self.statValue.append(getChild("str_value"))
  188.             self.statValue.append(getChild("dex_value"))
  189.  
  190.             getChild("hth_button").ShowToolTip = lambda arg=self.STAT_CON: self.OverInStatButton(arg)
  191.             getChild("hth_button").HideToolTip = lambda arg=self.STAT_CON: self.OverOutStatButton()
  192.             getChild("int_button").ShowToolTip = lambda arg=self.STAT_INT: self.OverInStatButton(arg)
  193.             getChild("int_button").HideToolTip = lambda arg=self.STAT_INT: self.OverOutStatButton()
  194.             getChild("str_button").ShowToolTip = lambda arg=self.STAT_STR: self.OverInStatButton(arg)
  195.             getChild("str_button").HideToolTip = lambda arg=self.STAT_STR: self.OverOutStatButton()
  196.             getChild("dex_button").ShowToolTip = lambda arg=self.STAT_DEX: self.OverInStatButton(arg)
  197.             getChild("dex_button").HideToolTip = lambda arg=self.STAT_DEX: self.OverOutStatButton()
  198.  
  199.             getChild("hth_button").Hide()
  200.             getChild("int_button").Hide()
  201.             getChild("str_button").Hide()
  202.             getChild("dex_button").Hide()
  203.  
  204.             self.backGround = getChild("BackGround")
  205.  
  206.         except:
  207.             import exception
  208.             exception.Abort("CreateCharacterWindow.Open.BindObject")
  209.  
  210.         self.btnCreate.SetEvent(ui.__mem_func__(self.CreateCharacter))
  211.         self.btnCancel.SetEvent(ui.__mem_func__(self.CancelCreate))
  212.         self.btnPrev.SetEvent(ui.__mem_func__(self.PrevDescriptionPage))
  213.         self.btnNext.SetEvent(ui.__mem_func__(self.NextDescriptionPage))
  214.         self.btnLeft.SetEvent(ui.__mem_func__(self.__DecreaseSlotIndex))
  215.         self.btnRight.SetEvent(ui.__mem_func__(self.__IncreaseSlotIndex))
  216.  
  217.         self.genderButtonList[0].SetEvent(ui.__mem_func__(self.__SelectGender), MAN)
  218.         self.genderButtonList[1].SetEvent(ui.__mem_func__(self.__SelectGender), WOMAN)
  219.  
  220.         self.shapeButtonList[0].SetEvent(ui.__mem_func__(self.__SelectShape), SHAPE0)
  221.         self.shapeButtonList[1].SetEvent(ui.__mem_func__(self.__SelectShape), SHAPE1)
  222.         self.editCharacterName.SetReturnEvent(ui.__mem_func__(self.CreateCharacter))
  223.         self.editCharacterName.SetEscapeEvent(ui.__mem_func__(self.CancelCreate))
  224.         self.dlgBoard = dlgBoard
  225.  
  226.         self.curRotation    = [] + self.SLOT_ROTATION
  227.         self.destRotation   = [] + self.SLOT_ROTATION
  228.         self.curNameAlpha   = [0.0, 0.0, 0.0, 0.0, 0.0]
  229.         self.destNameAlpha  = [0.0, 0.0, 0.0, 0.0, 0.0]
  230.         self.curGauge       = [0.0, 0.0, 0.0, 0.0]
  231.         self.destGauge      = [0.0, 0.0, 0.0, 0.0]
  232.  
  233.         self.descriptionBox = self.DescriptionBox()
  234.         self.descriptionBox.Show()
  235.  
  236.         self.chrRenderer = self.CharacterRenderer()
  237.         self.chrRenderer.SetParent(self.backGround)
  238.         self.chrRenderer.Show()
  239.  
  240.         self.toolTip = uiToolTip.ToolTip()
  241.         self.toolTip.ClearToolTip()
  242.  
  243.         self.editCharacterName.SetText("")
  244.  
  245.         self.EnableWindow()
  246.         self.__SelectSlot(0)
  247.  
  248.         app.SetCamera(500.0, 10.0, 180.0, 95.0)
  249.  
  250.         self.__MakeCharacter(0, 0, playerSettingModule.RACE_WARRIOR_M)
  251.         self.__MakeCharacter(0, 1, playerSettingModule.RACE_ASSASSIN_M)
  252.         self.__MakeCharacter(0, 2, playerSettingModule.RACE_SURA_M)
  253.         self.__MakeCharacter(0, 3, playerSettingModule.RACE_SHAMAN_M)
  254.         self.__MakeCharacter(0, 4, playerSettingModule.RACE_WOLFMAN_M)
  255.  
  256.         self.__MakeCharacter(1, 0, playerSettingModule.RACE_WARRIOR_W)
  257.         self.__MakeCharacter(1, 1, playerSettingModule.RACE_ASSASSIN_W)
  258.         self.__MakeCharacter(1, 2, playerSettingModule.RACE_SURA_W)
  259.         self.__MakeCharacter(1, 3, playerSettingModule.RACE_SHAMAN_W)
  260.  
  261.         self.__SelectGender(app.GetRandom(MAN, WOMAN))
  262.         self.__SelectShape(0)
  263.         self.__SelectSlot(app.GetRandom(0, 4))
  264.  
  265.         self.dlgBoard.Show()
  266.         self.Show()
  267.  
  268.         if musicInfo.createMusic != "":
  269.             snd.SetMusicVolume(systemSetting.GetMusicVolume())
  270.             snd.FadeInMusic("BGM/"+musicInfo.createMusic)
  271.  
  272.         app.ShowCursor()
  273.  
  274.     def Close(self):
  275.         print "---------------------------------------------------------------------------- CLOSE CREATE WINDOW"
  276.  
  277.         self.editCharacterName.Enable()
  278.         self.dlgBoard.ClearDictionary()
  279.         self.stream=0
  280.         self.shapeButtonList = []
  281.         self.genderButtonList = []
  282.         self.btnCreate = 0
  283.         self.btnCancel = 0
  284.         self.btnPrev = 0
  285.         self.btnNext = 0
  286.         self.btnLeft = 0
  287.         self.btnRight = 0
  288.         self.textBoard = 0
  289.         self.editCharacterName = 0
  290.         self.backGround = None
  291.  
  292.         if musicInfo.createMusic != "":
  293.             snd.FadeOutMusic("BGM/"+musicInfo.createMusic)
  294.  
  295.         for id in xrange(BASE_CHR_ID + SLOT_COUNT * PAGE_COUNT):
  296.             chr.DeleteInstance(id)
  297.  
  298.         self.dlgBoard.Hide()
  299.         self.Hide()
  300.  
  301.         app.HideCursor()
  302.         event.Destroy()
  303.  
  304.     def EnableWindow(self):
  305.         self.reservingRaceIndex = -1
  306.         self.reservingShapeIndex = -1
  307.         self.btnCreate.Enable()
  308.         self.btnCancel.Enable()
  309.         self.btnPrev.Enable()
  310.         self.btnNext.Enable()
  311.         self.btnLeft.Enable()
  312.         self.btnRight.Enable()
  313.  
  314.         self.editCharacterName.SetFocus()
  315.         self.editCharacterName.Enable()
  316.  
  317.         for page in xrange(PAGE_COUNT):
  318.             for slot in xrange(SLOT_COUNT):
  319.                 chr_id = self.__GetSlotChrID(page, slot)
  320.                 chr.SelectInstance(chr_id)
  321.                 chr.BlendLoopMotion(chr.MOTION_INTRO_WAIT, 0.1)
  322.  
  323.     def DisableWindow(self):
  324.         self.btnCreate.Disable()
  325.         self.btnCancel.Disable()
  326.         self.btnPrev.Disable()
  327.         self.btnNext.Disable()
  328.         self.btnLeft.Disable()
  329.         self.btnRight.Disable()
  330.         self.editCharacterName.Disable()
  331.  
  332.         self.btnCreate.SetUp()
  333.  
  334.     ## Manage Character
  335.     def __GetSlotChrID(self, page, slot):
  336.         return BASE_CHR_ID + page * SLOT_COUNT + slot
  337.  
  338.     def __MakeCharacter(self, page, slot, race):
  339.  
  340.         chr_id = self.__GetSlotChrID(page, slot)
  341.  
  342.         chr.CreateInstance(chr_id)
  343.         chr.SelectInstance(chr_id)
  344.         chr.SetVirtualID(chr_id)
  345.  
  346.         chr.SetRace(race)
  347.         chr.SetArmor(0)
  348.         chr.SetHair(0)
  349.  
  350.         chr.Refresh()
  351.         chr.SetMotionMode(chr.MOTION_MODE_GENERAL)
  352.         chr.SetLoopMotion(chr.MOTION_INTRO_WAIT)
  353.  
  354.         chr.SetRotation(0.0)
  355.         chr.Hide()
  356.  
  357.     def __SelectGender(self, gender):      
  358.         for button in self.genderButtonList:
  359.             button.SetUp()
  360.  
  361.         self.genderButtonList[gender].Down()
  362.  
  363.         self.gender = gender
  364.  
  365.         if gender == MAN:
  366.             for i in xrange(SLOT_COUNT):
  367.                 chr.SelectInstance(self.__GetSlotChrID(0, i))
  368.                 chr.Show()
  369.             for i in xrange(SLOT_COUNT):
  370.                 chr.SelectInstance(self.__GetSlotChrID(1, i))
  371.                 chr.Hide()
  372.         else:
  373.             for i in xrange(SLOT_COUNT):
  374.                 chr.SelectInstance(self.__GetSlotChrID(0, i))
  375.                 chr.Hide()
  376.             for i in xrange(SLOT_COUNT):
  377.                 chr.SelectInstance(self.__GetSlotChrID(1, i))
  378.                 chr.Show()         
  379.  
  380.     def __SelectShape(self, shape):
  381.         self.shapeList[self.gender][self.slot] = shape
  382.  
  383.         for button in self.shapeButtonList:
  384.             button.SetUp()
  385.  
  386.         self.shapeButtonList[shape].Down()
  387.  
  388.         chr_id = self.__GetSlotChrID(self.gender, self.slot)       
  389.         chr.SelectInstance(chr_id)     
  390.         chr.ChangeShape(shape)     
  391.         chr.SetMotionMode(chr.MOTION_MODE_GENERAL)
  392.         chr.SetLoopMotion(chr.MOTION_INTRO_WAIT)
  393.  
  394.     def GetSlotIndex(self):
  395.         return self.slot
  396.  
  397.     def RefreshStat(self):
  398.         statSummary = self.stat[0] + self.stat[1] + self.stat[2] + self.stat[3]
  399.         self.destGauge =    (
  400.                                 float(self.stat[0])/float(statSummary),
  401.                                 float(self.stat[1])/float(statSummary),
  402.                                 float(self.stat[2])/float(statSummary),
  403.                                 float(self.stat[3])/float(statSummary),
  404.                             )
  405.  
  406.         for i in xrange(4):
  407.             self.statValue[i].SetText(str(self.stat[i]))
  408.  
  409.     def __SelectSlot(self, slot):
  410.  
  411.         if slot < 0:
  412.             return
  413.  
  414.         if slot >= SLOT_COUNT:
  415.             return     
  416.  
  417.         if self.slot == slot:
  418.             return
  419.  
  420.         self.slot = slot
  421.         self.ResetStat()
  422.  
  423.         for i in xrange(SLOT_COUNT):
  424.             self.destNameAlpha[i] = 0.0
  425.  
  426.         self.destNameAlpha[slot] = 1.0
  427.  
  428.         for i in xrange(SLOT_COUNT):
  429.             self.destRotation[(i+self.slot)%SLOT_COUNT] = self.SLOT_ROTATION[i]
  430.  
  431.         if self.IsShow():
  432.             snd.PlaySound("sound/ui/click.wav")
  433.  
  434.         event.ClearEventSet(self.descIndex)
  435.         self.descIndex = event.RegisterEventSet(self.DESCRIPTION_FILE_NAME[self.slot])
  436.        
  437.         if localeInfo.IsARABIC():
  438.             event.SetEventSetWidth(self.descIndex, 170)
  439.  
  440.         chr_id = self.__GetSlotChrID(self.gender, slot)
  441.         if chr.HasInstance(chr_id):
  442.             chr.SelectInstance(chr_id)
  443.             self.__SelectShape(self.shapeList[self.gender][slot])
  444.  
  445.     def CreateCharacter(self):
  446.  
  447.         if -1 != self.reservingRaceIndex:
  448.             return
  449.  
  450.         textName = self.editCharacterName.GetText()
  451.         if FALSE == self.__CheckCreateCharacter(textName):
  452.             return
  453.  
  454.         if musicInfo.selectMusic != "":
  455.             snd.FadeLimitOutMusic("BGM/"+musicInfo.selectMusic, systemSetting.GetMusicVolume()*0.05)
  456.  
  457.         self.DisableWindow()
  458.  
  459.        
  460.         chr_id = self.__GetSlotChrID(self.gender, self.slot)
  461.  
  462.         chr.SelectInstance(chr_id)
  463.  
  464.         self.reservingRaceIndex = chr.GetRace()
  465.  
  466.         self.reservingShapeIndex = self.shapeList[self.gender][self.slot]
  467.         self.reservingStartTime = app.GetTime()
  468.  
  469.         for eachSlot in xrange(SLOT_COUNT):
  470.  
  471.             sel_id = self.__GetSlotChrID(self.gender, eachSlot)
  472.  
  473.             chr.SelectInstance(sel_id)
  474.  
  475.             if eachSlot == self.slot:
  476.                 chr.PushOnceMotion(chr.MOTION_INTRO_SELECTED)
  477.             else:
  478.                 chr.PushOnceMotion(chr.MOTION_INTRO_NOT_SELECTED)
  479.  
  480.     def CancelCreate(self):
  481.         self.stream.SetSelectCharacterPhase()
  482.  
  483.     def __DecreaseSlotIndex(self):
  484.         slotIndex = (self.GetSlotIndex() - 1 + SLOT_COUNT) % SLOT_COUNT
  485.         self.__SelectSlot(slotIndex)
  486.  
  487.     def __IncreaseSlotIndex(self):
  488.         slotIndex = (self.GetSlotIndex() + 1) % SLOT_COUNT
  489.         self.__SelectSlot(slotIndex)
  490.  
  491.     def PrevDescriptionPage(self):
  492.         if TRUE == event.IsWait(self.descIndex):
  493.             if event.GetVisibleStartLine(self.descIndex)-5 >= 0:
  494.                 event.SetVisibleStartLine(self.descIndex, event.GetVisibleStartLine(self.descIndex)-5)
  495.                 event.Skip(self.descIndex)
  496.         else:
  497.             event.Skip(self.descIndex)
  498.  
  499.     def NextDescriptionPage(self):
  500.         if TRUE == event.IsWait(self.descIndex):
  501.             event.SetVisibleStartLine(self.descIndex, event.GetVisibleStartLine(self.descIndex)+5)
  502.             event.Skip(self.descIndex)
  503.         else:
  504.             event.Skip(self.descIndex)
  505.  
  506.     def __CheckCreateCharacter(self, name):
  507.         if len(name) == 0:
  508.             self.PopupMessage(localeInfo.CREATE_INPUT_NAME, self.EnableWindow)
  509.             return FALSE
  510.  
  511.         if name.find(localeInfo.CREATE_GM_NAME)!=-1:
  512.             self.PopupMessage(localeInfo.CREATE_ERROR_GM_NAME, self.EnableWindow)
  513.             return FALSE
  514.  
  515.         if net.IsInsultIn(name):
  516.             self.PopupMessage(localeInfo.CREATE_ERROR_INSULT_NAME, self.EnableWindow)
  517.             return FALSE
  518.  
  519.         return TRUE    
  520.  
  521.     def ResetStat(self):
  522.         for i in xrange(4):
  523.             self.stat[i] = self.START_STAT[self.slot][i]
  524.         self.lastStatPoint = self.CREATE_STAT_POINT
  525.         self.RefreshStat()
  526.  
  527.     ## Event
  528.     def OnCreateSuccess(self):
  529.         self.stream.SetSelectCharacterPhase()
  530.  
  531.     def OnCreateFailure(self, type):
  532.         if 1 == type:
  533.             self.PopupMessage(localeInfo.CREATE_EXIST_SAME_NAME, self.EnableWindow)
  534.         else:
  535.             self.PopupMessage(localeInfo.CREATE_FAILURE, self.EnableWindow)
  536.  
  537.     def OnKeyDown(self, key):
  538.  
  539.         if key == 2:
  540.             self.__SelectSlot(0)
  541.         if key == 3:
  542.             self.__SelectSlot(1)
  543.         if key == 4:
  544.             self.__SelectSlot(2)
  545.         if key == 5:
  546.             self.__SelectSlot(3)
  547.         if key == 6:
  548.             self.__SelectSlot(4)
  549.  
  550.         if 203 == key:
  551.             self.__DecreaseSlotIndex()
  552.         if 205 == key:
  553.             self.__IncreaseSlotIndex()
  554.  
  555.         if 59 == key:
  556.             self.__SelectGender(MAN_PAGE)
  557.         if 60 == key:
  558.             self.__SelectGender(WOMAN_PAGE)
  559.  
  560.         return TRUE
  561.  
  562.     def OnUpdate(self):
  563.         chr.Update()
  564.  
  565.         (xposEventSet, yposEventSet) = self.textBoard.GetGlobalPosition()
  566.         event.UpdateEventSet(self.descIndex, xposEventSet+7, -(yposEventSet+7))
  567.         self.descriptionBox.SetIndex(self.descIndex)
  568.  
  569.         for i in xrange(4):
  570.             self.curNameAlpha[i] += (self.destNameAlpha[i] - self.curNameAlpha[i]) / 10.0
  571.             self.NameList[i].SetAlpha(self.curNameAlpha[i])
  572.  
  573.         for i in xrange(4):
  574.             self.curGauge[i] += (self.destGauge[i] - self.curGauge[i]) / 10.0
  575.             if abs(self.curGauge[i] - self.destGauge[i]) < 0.005:
  576.                 self.curGauge[i] = self.destGauge[i]
  577.             self.GaugeList[i].SetPercentage(self.curGauge[i], 1.0)
  578.  
  579.         for page in xrange(PAGE_COUNT):
  580.             for i in xrange(SLOT_COUNT):
  581.                 chr.SelectInstance(self.__GetSlotChrID(page, i))
  582.  
  583.                 distance = 50.0
  584.                 rotRadian = self.curRotation[i] * (math.pi*2) / 360.0
  585.                 x = distance*math.sin(rotRadian) + distance*math.cos(rotRadian)
  586.                 y = distance*math.cos(rotRadian) - distance*math.sin(rotRadian)
  587.                 chr.SetPixelPosition(int(x), int(y), 30)
  588.  
  589.                 if abs(self.destRotation[i] - self.curRotation[i]) < 1.0:
  590.                     self.curRotation[i] = self.destRotation[i]
  591.  
  592.                 dir = app.GetRotatingDirection(self.destRotation[i], self.curRotation[i])
  593.                 rot = app.GetDegreeDifference(self.destRotation[i], self.curRotation[i])
  594.  
  595.                 if app.DEGREE_DIRECTION_RIGHT == dir:
  596.                     self.curRotation[i] += rot / 10.0
  597.                 elif app.DEGREE_DIRECTION_LEFT == dir:
  598.                     self.curRotation[i] -= rot / 10.0
  599.  
  600.                 self.curRotation[i] = (self.curRotation[i] + 360.0) % 360.0
  601.  
  602.         ###########################################################
  603.         if -1 != self.reservingRaceIndex:
  604.             if app.GetTime() - self.reservingStartTime >= 1.5:
  605.  
  606.                 chrSlot=self.stream.GetCharacterSlot()
  607.                 textName = self.editCharacterName.GetText()
  608.                 raceIndex = self.reservingRaceIndex
  609.                 shapeIndex = self.reservingShapeIndex
  610.  
  611.                 startStat = self.START_STAT[self.reservingRaceIndex]
  612.                 statCon = self.stat[0] - startStat[0]
  613.                 statInt = self.stat[1] - startStat[1]
  614.                 statStr = self.stat[2] - startStat[2]
  615.                 statDex = self.stat[3] - startStat[3]
  616.  
  617.                 net.SendCreateCharacterPacket(chrSlot, textName, raceIndex, shapeIndex, statCon, statInt, statStr, statDex)
  618.  
  619.                 self.reservingRaceIndex = -1
  620.  
  621.         ###########################################################
  622.  
  623.     def EmptyFunc(self):
  624.         pass
  625.  
  626.     def PopupMessage(self, msg, func=0):
  627.         if not func:
  628.             func=self.EmptyFunc
  629.  
  630.         self.stream.popupWindow.Close()
  631.         self.stream.popupWindow.Open(msg, func, localeInfo.UI_OK)
  632.  
  633.     def OnPressExitKey(self):
  634.         self.CancelCreate()
  635.         return TRUE
  636.  
  637.     def OverInStatButton(self, stat):
  638.         if not self.STAT_DESCRIPTION.has_key(stat):
  639.             return
  640.  
  641.         self.toolTip.ClearToolTip()
  642.         self.toolTip.AppendTextLine(self.STAT_DESCRIPTION[stat])
  643.         self.toolTip.Show()
  644.  
  645.     def OverOutStatButton(self):
  646.         self.toolTip.Hide()
  647.  
  648. if __name__ == "__main__":
  649.  
  650.     import app
  651.     import wndMgr
  652.     import systemSetting
  653.     import mouseModule
  654.     import networkModule
  655.  
  656.     app.SetMouseHandler(mouseModule.mouseController)
  657.     app.SetHairColorEnable(TRUE)
  658.     wndMgr.SetMouseHandler(mouseModule.mouseController)
  659.     wndMgr.SetScreenSize(systemSetting.GetWidth(), systemSetting.GetHeight())
  660.     app.Create(localeInfo.APP_TITLE, systemSetting.GetWidth(), systemSetting.GetHeight(), 1)
  661.     mouseModule.mouseController.Create()
  662.  
  663.     mainStream = networkModule.MainStream()
  664.     mainStream.Create()
  665.  
  666.     test = CreateCharacterWindow(mainStream)
  667.     test.Open()
  668.  
  669.     app.Loop()
Advertisement
Add Comment
Please, Sign In to add comment