Guest User

introcreate.py

a guest
Mar 8th, 2016
334
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 34.10 KB | None | 0 0
  1. import ui
  2. import chr
  3. import grp
  4. import app
  5. import net
  6. import snd
  7. import math
  8. import event
  9. import wndMgr
  10. import uiToolTip
  11. import constInfo
  12. import musicInfo
  13. import localeInfo
  14. import networkModule
  15. import systemSetting
  16. import uiScriptLocale
  17. import playerSettingModule
  18.  
  19. MAN = 0
  20. WOMAN = 1
  21. SHAPE0 = 0
  22. SHAPE1 = 1
  23. PAGE_COUNT = 2
  24. SLOT_COUNT = 5
  25. BASE_CHR_ID = 3
  26. LOCALE_PATH = "uiscript/"+uiScriptLocale.CODEPAGE+"_"
  27.  
  28. class CreateCharacterWindow(ui.Window):
  29. CREATE_STAT_POINT = 0
  30.  
  31. STAT_CON = 0
  32. STAT_INT = 1
  33. STAT_STR = 2
  34. STAT_DEX = 3
  35. START_STAT = (
  36. [4, 3, 6, 3,],
  37. [3, 3, 4, 6,],
  38. [3, 5, 5, 3,],
  39. [4, 6, 3, 3,],
  40. [6, 2, 6, 2,],
  41. )
  42.  
  43. EMPIRE_NAME = {
  44. net.EMPIRE_A : localeInfo.EMPIRE_A,
  45. net.EMPIRE_B : localeInfo.EMPIRE_B,
  46. net.EMPIRE_C : localeInfo.EMPIRE_C
  47. }
  48.  
  49. STAT_DESCRIPTION = {
  50. STAT_CON : localeInfo.STAT_TOOLTIP_CON,
  51. STAT_INT : localeInfo.STAT_TOOLTIP_INT,
  52. STAT_STR : localeInfo.STAT_TOOLTIP_STR,
  53. STAT_DEX : localeInfo.STAT_TOOLTIP_DEX,
  54. }
  55.  
  56. DESCRIPTION_FILE_NAME = (
  57. uiScriptLocale.JOBDESC_WARRIOR_PATH,
  58. uiScriptLocale.JOBDESC_ASSASSIN_PATH,
  59. uiScriptLocale.JOBDESC_SURA_PATH,
  60. uiScriptLocale.JOBDESC_SHAMAN_PATH,
  61. uiScriptLocale.JOBDESC_WOLF_PATH,
  62. )
  63.  
  64. RACE_DECT = {
  65. 0 : playerSettingModule.RACE_WARRIOR_M,
  66. 1 : playerSettingModule.RACE_ASSASSIN_M,
  67. 2 : playerSettingModule.RACE_SURA_M,
  68. 3 : playerSettingModule.RACE_SHAMAN_M,
  69. 4 : playerSettingModule.RACE_WOLF_M,
  70. 5 : playerSettingModule.RACE_WARRIOR_W,
  71. 6 : playerSettingModule.RACE_ASSASSIN_W,
  72. 7 : playerSettingModule.RACE_SURA_W,
  73. 8 : playerSettingModule.RACE_SHAMAN_W,
  74. 9 : playerSettingModule.RACE_WOLF_W,
  75. }
  76.  
  77. FACE_IMAGE_DICT = {
  78. 0 : "icon/face/warrior_m.tga",
  79. 1 : "icon/face/assassin_m.tga",
  80. 2 : "icon/face/sura_m.tga",
  81. 3 : "icon/face/shaman_m.tga",
  82. 4 : "icon/face/wolf_m.tga",
  83. 5 : "icon/face/warrior_w.tga",
  84. 6 : "icon/face/assassin_w.tga",
  85. 7 : "icon/face/sura_w.tga",
  86. 8 : "icon/face/shaman_w.tga",
  87. 9 : "icon/face/wolf_w.tga",
  88. }
  89.  
  90. RACE_NAME = {
  91. 0 : localeInfo.JOB_WARRIOR,
  92. 1 : localeInfo.JOB_ASSASSIN,
  93. 2 : localeInfo.JOB_SURA,
  94. 3 : localeInfo.JOB_SHAMAN,
  95. 4 : localeInfo.JOB_WOLF,
  96. 5 : localeInfo.JOB_WARRIOR,
  97. 6 : localeInfo.JOB_ASSASSIN,
  98. 7 : localeInfo.JOB_SURA,
  99. 8 : localeInfo.JOB_SHAMAN,
  100. 9 : localeInfo.JOB_WOLF,
  101. }
  102.  
  103. class DescriptionBox(ui.Window):
  104. def __init__(self):
  105. ui.Window.__init__(self)
  106. self.descIndex = 0
  107. def __del__(self):
  108. ui.Window.__del__(self)
  109. def SetIndex(self, index):
  110. self.descIndex = index
  111. def OnRender(self):
  112. event.RenderEventSet(self.descIndex)
  113.  
  114. class CharacterRenderer(ui.Window):
  115. def OnRender(self):
  116. grp.ClearDepthBuffer()
  117. grp.SetGameRenderState()
  118. grp.PushState()
  119. grp.SetOmniLight()
  120.  
  121. screenWidth = wndMgr.GetScreenWidth()
  122. screenHeight = wndMgr.GetScreenHeight()
  123. newScreenWidth = float(screenWidth - 270)
  124. newScreenHeight = float(screenHeight)
  125. grp.SetViewport(270.0/screenWidth, 0.0, newScreenWidth/screenWidth, newScreenHeight/screenHeight)
  126.  
  127. app.SetCenterPosition(0.0, 0.0, 0.0)
  128. app.SetCamera(1550.0, 15.0, 180.0, 95.0)
  129. grp.SetPerspective(10.0, newScreenWidth/newScreenHeight, 1000.0, 3000.0)
  130.  
  131. (x, y) = app.GetCursorPosition()
  132. grp.SetCursorPosition(x, y)
  133.  
  134. chr.Deform()
  135. chr.Render()
  136.  
  137. grp.RestoreViewport()
  138. grp.PopState()
  139. grp.SetInterfaceRenderState()
  140.  
  141. def __init__(self, stream):
  142. print "NEW CREATE WINDOW ----------------------------------------------------------------------------"
  143.  
  144. ui.Window.__init__(self)
  145. net.SetPhaseWindow(net.PHASE_WINDOW_CREATE, self)
  146. self.stream=stream
  147.  
  148. def __del__(self):
  149. print "---------------------------------------------------------------------------- DELETE CREATE WINDOW"
  150.  
  151. net.SetPhaseWindow(net.PHASE_WINDOW_CREATE, 0)
  152. ui.Window.__del__(self)
  153.  
  154. def Open(self):
  155. print "OPEN CREATE WINDOW ----------------------------------------------------------------------------"
  156.  
  157. playerSettingModule.LoadGameData("INIT")
  158. self.reservingRaceIndex = -1
  159. self.reservingShapeIndex = -1
  160. self.reservingStartTime = 0
  161. self.stat = [0, 0, 0, 0]
  162. self.slot = 0
  163. self.gender = 0
  164. self.shapeList = [[0, 0, 0, 0, 0],[0, 0, 0, 0, 0]]
  165. self.descIndex = 0
  166. try:
  167. dlgBoard = ui.ScriptWindow()
  168. pythonScriptLoader = ui.PythonScriptLoader()
  169. pythonScriptLoader.LoadScriptFile(dlgBoard, uiScriptLocale.LOCALE_UISCRIPT_PATH + "createcharacterwindow.py")
  170. except:
  171. import exception
  172. exception.Abort("CreateCharacterWindow.Open.LoadObject")
  173.  
  174. try:
  175. getChild = dlgBoard.GetChild
  176. self.backGroundImg1 = getChild("BackGround")
  177. self.backGroundImg2 = getChild("BackGround2")
  178. self.backGroundImg2.Hide()
  179. self.backGroundImg3 = getChild("BackGround3")
  180. self.backGroundImg3.Hide()
  181.  
  182. self.empireName = getChild("EmpireName")
  183. self.EmpireFlagA = getChild("EmpireFlag_A")
  184. self.EmpireFlagB = getChild("EmpireFlag_B")
  185. self.EmpireFlagC = getChild("EmpireFlag_C")
  186.  
  187. self.CharacterSlot_0 = getChild("WARRIOR")
  188. self.CharacterFace_0 = getChild("CharacterFace_0")
  189. self.CharacterSlot_1 = getChild("ASSASSIN")
  190. self.CharacterFace_1 = getChild("CharacterFace_1")
  191. self.CharacterSlot_2 = getChild("SURA")
  192. self.CharacterFace_2 = getChild("CharacterFace_2")
  193. self.CharacterSlot_3 = getChild("SHAMAN")
  194. self.CharacterFace_3 = getChild("CharacterFace_3")
  195. self.CharacterSlot_4 = getChild("WOLF")
  196. self.CharacterFace_4 = getChild("CharacterFace_4")
  197. self.DiscFace = getChild("DiscFace")
  198. self.raceName = getChild("raceName_Text")
  199.  
  200. self.NameList = []
  201. self.NameList.append(getChild("name_warrior"))
  202. self.NameList.append(getChild("name_assassin"))
  203. self.NameList.append(getChild("name_sura"))
  204. self.NameList.append(getChild("name_shaman"))
  205. self.NameList.append(getChild("name_wolf"))
  206.  
  207. self.GaugeList = []
  208. self.GaugeList.append(getChild("hth_gauge"))
  209. self.GaugeList.append(getChild("int_gauge"))
  210. self.GaugeList.append(getChild("str_gauge"))
  211. self.GaugeList.append(getChild("dex_gauge"))
  212.  
  213. self.btnCreate = getChild("create_button")
  214. self.btnCancel = getChild("cancel_button")
  215. self.btnPrev = getChild("prev_button")
  216. self.btnNext = getChild("next_button")
  217. self.textBoard = getChild("text_board")
  218.  
  219. self.genderButtonList = []
  220. self.genderButtonList.append(getChild("gender_button_01"))
  221. self.genderButtonList.append(getChild("gender_button_02"))
  222.  
  223. self.shapeButtonList = []
  224. self.shapeButtonList.append(getChild("shape_button_01"))
  225. self.shapeButtonList.append(getChild("shape_button_02"))
  226.  
  227. self.editCharacterName = getChild("character_name_value")
  228.  
  229. self.statValue = []
  230. self.statValue.append(getChild("hth_value"))
  231. self.statValue.append(getChild("int_value"))
  232. self.statValue.append(getChild("str_value"))
  233. self.statValue.append(getChild("dex_value"))
  234.  
  235. getChild("hth_slot").ShowToolTip = lambda arg=self.STAT_CON: self.OverInStatButton(arg)
  236. getChild("hth_slot").HideToolTip = lambda arg=self.STAT_CON: self.OverOutStatButton()
  237. getChild("int_slot").ShowToolTip = lambda arg=self.STAT_INT: self.OverInStatButton(arg)
  238. getChild("int_slot").HideToolTip = lambda arg=self.STAT_INT: self.OverOutStatButton()
  239. getChild("str_slot").ShowToolTip = lambda arg=self.STAT_STR: self.OverInStatButton(arg)
  240. getChild("str_slot").HideToolTip = lambda arg=self.STAT_STR: self.OverOutStatButton()
  241. getChild("dex_slot").ShowToolTip = lambda arg=self.STAT_DEX: self.OverInStatButton(arg)
  242. getChild("dex_slot").HideToolTip = lambda arg=self.STAT_DEX: self.OverOutStatButton()
  243. getChild("hth_slot").Hide()
  244. getChild("int_slot").Hide()
  245. getChild("str_slot").Hide()
  246. getChild("dex_slot").Hide()
  247.  
  248. self.genderButtonList[0].ShowToolTip = lambda arg=1: self.OverInButton(arg)
  249. self.genderButtonList[0].HideToolTip = lambda arg=1: self.OverOutButton()
  250. self.genderButtonList[1].ShowToolTip = lambda arg=2: self.OverInButton(arg)
  251. self.genderButtonList[1].HideToolTip = lambda arg=2: self.OverOutButton()
  252. self.shapeButtonList[0].ShowToolTip = lambda arg=3: self.OverInButton(arg)
  253. self.shapeButtonList[0].HideToolTip = lambda arg=3: self.OverOutButton()
  254. self.shapeButtonList[1].ShowToolTip = lambda arg=4: self.OverInButton(arg)
  255. self.shapeButtonList[1].HideToolTip = lambda arg=4: self.OverOutButton()
  256. getChild("prev_button").ShowToolTip = lambda arg=5: self.OverInButton(arg)
  257. getChild("prev_button").HideToolTip = lambda arg=5: self.OverOutButton()
  258. getChild("next_button").ShowToolTip = lambda arg=6: self.OverInButton(arg)
  259. getChild("next_button").HideToolTip = lambda arg=6: self.OverOutButton()
  260. getChild("create_button").ShowToolTip = lambda arg=7: self.OverInButton(arg)
  261. getChild("create_button").HideToolTip = lambda arg=7: self.OverOutButton()
  262. getChild("cancel_button").ShowToolTip = lambda arg=8: self.OverInButton(arg)
  263. getChild("cancel_button").HideToolTip = lambda arg=8: self.OverOutButton()
  264. getChild("WARRIOR").ShowToolTip = lambda arg=9: self.OverInButton(arg)
  265. getChild("WARRIOR").HideToolTip = lambda arg=9: self.OverOutButton()
  266. getChild("ASSASSIN").ShowToolTip = lambda arg=10: self.OverInButton(arg)
  267. getChild("ASSASSIN").HideToolTip = lambda arg=10: self.OverOutButton()
  268. getChild("SURA").ShowToolTip = lambda arg=11: self.OverInButton(arg)
  269. getChild("SURA").HideToolTip = lambda arg=11: self.OverOutButton()
  270. getChild("SHAMAN").ShowToolTip = lambda arg=12: self.OverInButton(arg)
  271. getChild("SHAMAN").HideToolTip = lambda arg=12: self.OverOutButton()
  272. getChild("WOLF").ShowToolTip = lambda arg=13: self.OverInButton(arg)
  273. getChild("WOLF").HideToolTip = lambda arg=13: self.OverOutButton()
  274. except:
  275. import exception
  276. exception.Abort("CreateCharacterWindow.Open.BindObject")
  277.  
  278. self.CharacterSlot_0.SAFE_SetEvent(self.__SelectSlot, 0)
  279. self.CharacterSlot_1.SAFE_SetEvent(self.__SelectSlot, 1)
  280. self.CharacterSlot_2.SAFE_SetEvent(self.__SelectSlot, 2)
  281. self.CharacterSlot_3.SAFE_SetEvent(self.__SelectSlot, 3)
  282. self.CharacterSlot_4.SAFE_SetEvent(self.__SelectSlot, 4)
  283. self.CharacterSlot_4.Hide()
  284. if constInfo.WOLF_MAN != "DISABLED" and constInfo.WOLF_MAN == "ENABLED":
  285. self.CharacterSlot_4.Show()
  286. elif constInfo.WOLF_WOMEN != "DISABLED" and constInfo.WOLF_WOMEN == "ENABLED":
  287. self.CharacterSlot_4.Show()
  288.  
  289. self.btnCreate.SetEvent(ui.__mem_func__(self.CreateCharacter))
  290. self.btnCancel.SetEvent(ui.__mem_func__(self.CancelCreate))
  291. self.btnPrev.SetEvent(ui.__mem_func__(self.PrevDescriptionPage))
  292. self.btnNext.SetEvent(ui.__mem_func__(self.NextDescriptionPage))
  293.  
  294. self.genderButtonList[0].SetEvent(ui.__mem_func__(self.__SelectGender), MAN)
  295. self.genderButtonList[1].SetEvent(ui.__mem_func__(self.__SelectGender), WOMAN)
  296.  
  297. self.shapeButtonList[0].SetEvent(ui.__mem_func__(self.__SelectShape), SHAPE0)
  298. self.shapeButtonList[1].SetEvent(ui.__mem_func__(self.__SelectShape), SHAPE1)
  299. self.editCharacterName.SetReturnEvent(ui.__mem_func__(self.CreateCharacter))
  300. self.editCharacterName.SetEscapeEvent(ui.__mem_func__(self.CancelCreate))
  301. self.dlgBoard = dlgBoard
  302.  
  303. self.curNameAlpha = [0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
  304. self.destNameAlpha = [0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
  305. self.curGauge = [0.0, 0.0, 0.0, 0.0]
  306. self.destGauge = [0.0, 0.0, 0.0, 0.0]
  307.  
  308. self.descriptionBox = self.DescriptionBox()
  309. self.descriptionBox.Show()
  310.  
  311. self.toolTip = uiToolTip.ToolTip()
  312. self.toolTip.ClearToolTip()
  313.  
  314. self.editCharacterName.SetText("")
  315.  
  316. self.EnableWindow()
  317.  
  318. app.SetCamera(500.0, 10.0, 180.0, 95.0)
  319.  
  320. self.__SelectSlot(0)
  321.  
  322. self.dlgBoard.Show()
  323. self.Show()
  324.  
  325. if musicInfo.createMusic != "":
  326. snd.SetMusicVolume(systemSetting.GetMusicVolume())
  327. snd.FadeInMusic("BGM/"+musicInfo.createMusic)
  328.  
  329. self.SetEmpire(net.GetEmpireID())
  330. app.ShowCursor()
  331.  
  332. def Close(self):
  333. print "---------------------------------------------------------------------------- CLOSE CREATE WINDOW"
  334.  
  335. self.editCharacterName.Enable()
  336. self.dlgBoard.ClearDictionary()
  337. self.stream = 0
  338. self.shapeButtonList = []
  339. self.genderButtonList = []
  340. self.btnCreate = 0
  341. self.btnCancel = 0
  342. self.btnPrev = 0
  343. self.btnNext = 0
  344. self.textBoard = 0
  345. self.editCharacterName = 0
  346. self.backGroundImg1 = None
  347. self.backGroundImg2 = None
  348. self.backGroundImg3 = None
  349. self.EmpireFlagA = None
  350. self.EmpireFlagB = None
  351. self.EmpireFlagC = None
  352. if musicInfo.createMusic != "":
  353. snd.FadeOutMusic("BGM/"+musicInfo.createMusic)
  354.  
  355. for id in xrange(BASE_CHR_ID + SLOT_COUNT * PAGE_COUNT):
  356. chr.DeleteInstance(id)
  357.  
  358. self.dlgBoard.Hide()
  359. self.Hide()
  360.  
  361. app.HideCursor()
  362. event.Destroy()
  363.  
  364. def SetEmpire(self, id):
  365. self.empireName.SetText(self.EMPIRE_NAME.get(id, ""))
  366. if id == 1:
  367. self.empireName.SetFontColor(1.0, 0, 0)
  368. self.EmpireFlagA.Show()
  369. self.EmpireFlagB.Hide()
  370. self.EmpireFlagC.Hide()
  371. self.BackGround = self.backGroundImg1
  372. self.backGroundImg1.Show()
  373. self.backGroundImg2.Hide()
  374. self.backGroundImg3.Hide()
  375.  
  376. self.chrRenderer = self.CharacterRenderer()
  377. self.chrRenderer.SetParent(self.backGroundImg1)
  378. self.chrRenderer.Show()
  379. elif id == 2:
  380. self.empireName.SetFontColor(1.0, 1.0, 0.0)
  381. self.EmpireFlagA.Hide()
  382. self.EmpireFlagB.Show()
  383. self.EmpireFlagC.Hide()
  384. self.BackGround = self.backGroundImg2
  385. self.backGroundImg1.Hide()
  386. self.backGroundImg2.Show()
  387. self.backGroundImg3.Hide()
  388.  
  389. self.chrRenderer = self.CharacterRenderer()
  390. self.chrRenderer.SetParent(self.backGroundImg2)
  391. self.chrRenderer.Show()
  392. elif id == 3:
  393. self.empireName.SetFontColor(0.0, 0, 1.0)
  394. self.EmpireFlagA.Hide()
  395. self.EmpireFlagB.Hide()
  396. self.EmpireFlagC.Show()
  397. self.BackGround = self.backGroundImg3
  398. self.backGroundImg1.Hide()
  399. self.backGroundImg2.Hide()
  400. self.backGroundImg3.Show()
  401.  
  402. self.chrRenderer = self.CharacterRenderer()
  403. self.chrRenderer.SetParent(self.backGroundImg3)
  404. self.chrRenderer.Show()
  405.  
  406. def EnableWindow(self):
  407. self.reservingRaceIndex = -1
  408. self.reservingShapeIndex = -1
  409. self.btnCreate.Enable()
  410. self.btnCancel.Enable()
  411. self.btnPrev.Enable()
  412. self.btnNext.Enable()
  413. self.editCharacterName.SetFocus()
  414. self.editCharacterName.Enable()
  415. for page in xrange(PAGE_COUNT):
  416. if page == 2 and constInfo.WOLF_WOMEN != "DISABLED" and constInfo.WOLF_WOMEN == "ENABLED":
  417. SLOT_COUNT_TWO = 5
  418. else:
  419. if constInfo.WOLF_MAN != "DISABLED" and constInfo.WOLF_MAN == "ENABLED":
  420. SLOT_COUNT_TWO = 5
  421. else:
  422. SLOT_COUNT_TWO = 4
  423.  
  424. for slot in xrange(SLOT_COUNT_TWO):
  425. chr_id = self.__GetSlotChrID(page, slot)
  426. chr.SelectInstance(chr_id)
  427. chr.BlendLoopMotion(chr.MOTION_INTRO_WAIT, 0.1)
  428.  
  429. def DisableWindow(self):
  430. self.btnCreate.Disable()
  431. self.btnCancel.Disable()
  432. self.btnPrev.Disable()
  433. self.btnNext.Disable()
  434. self.editCharacterName.Disable()
  435. self.btnCreate.SetUp()
  436.  
  437. def __GetSlotChrID(self, gender, slot):
  438. return self.RACE_DECT[gender + slot]
  439.  
  440. def __MakeCharacter(self, race):
  441. chr_id = self.__GetSlotChrID(self.gender, self.slot)
  442. chr.CreateInstance(chr_id)
  443. chr.SelectInstance(chr_id)
  444. chr.SetVirtualID(chr_id)
  445. chr.SetRace(chr_id)
  446. chr.SetArmor(0)
  447. chr.SetHair(0)
  448. chr.Refresh()
  449. chr.SetMotionMode(chr.MOTION_MODE_GENERAL)
  450. chr.SetLoopMotion(chr.MOTION_INTRO_WAIT)
  451. chr.SetRotation(0.0)
  452.  
  453. distance = 50.0
  454. rotRadian = 82.0 * (math.pi*2) / 360.0
  455. x = distance*math.sin(rotRadian) + distance*math.cos(rotRadian)
  456. y = distance*math.cos(rotRadian) - distance*math.sin(rotRadian)
  457. chr.SetPixelPosition(int(x), int(y), 30)
  458. chr.Hide()
  459.  
  460. def __SelectGender(self, gender):
  461. slot = self.slot
  462. if constInfo.WOLF_WOMEN != "ENABLED" and constInfo.WOLF_WOMEN == "DISABLED" and slot == 4 and gender == 1:
  463. for button in self.genderButtonList:
  464. button.Down()
  465.  
  466. self.genderButtonList[gender].SetUp()
  467. return
  468. elif constInfo.WOLF_MAN != "ENABLED" and constInfo.WOLF_MAN == "DISABLED" and slot == 4 and gender == 0:
  469. for button in self.genderButtonList:
  470. button.Down()
  471.  
  472. self.genderButtonList[gender].SetUp()
  473. return
  474.  
  475. for button in self.genderButtonList:
  476. button.SetUp()
  477.  
  478. self.genderButtonList[gender].Down()
  479. self.gender = gender
  480. if gender == 0 and self.slot > 4:
  481. slot = self.slot - 4
  482. elif gender == 1 and self.slot < 4:
  483. slot = self.slot + 4
  484. if gender == 1 and self.slot > 8:
  485. slot = self.slot - 4
  486.  
  487. for i in xrange(9):
  488. chr.DeleteInstance(i)
  489.  
  490. chr_id = self.__GetSlotChrID(self.gender, slot)
  491. chr.CreateInstance(chr_id)
  492. chr.SelectInstance(chr_id)
  493. chr.SetVirtualID(chr_id)
  494. chr.SetRace(chr_id)
  495. chr.SetArmor(0)
  496. chr.SetHair(0)
  497. chr.Refresh()
  498. chr.SetMotionMode(chr.MOTION_MODE_GENERAL)
  499. chr.SetLoopMotion(chr.MOTION_INTRO_WAIT)
  500. chr.SetRotation(0.0)
  501.  
  502. distance = 50.0
  503. rotRadian = 82.0 * (math.pi*2) / 360.0
  504. x = distance*math.sin(rotRadian) + distance*math.cos(rotRadian)
  505. y = distance*math.cos(rotRadian) - distance*math.sin(rotRadian)
  506. chr.SetPixelPosition(int(x), int(y), 30)
  507. chr.Show()
  508.  
  509. def __SelectShape(self, shape):
  510. self.shapeList[self.gender][self.slot] = shape
  511. for button in self.shapeButtonList:
  512. button.SetUp()
  513.  
  514. self.shapeButtonList[shape].Down()
  515. chr_id = self.__GetSlotChrID(self.gender, self.slot)
  516. chr.SelectInstance(chr_id)
  517. chr.ChangeShape(shape)
  518. chr.SetMotionMode(chr.MOTION_MODE_GENERAL)
  519. chr.SetLoopMotion(chr.MOTION_INTRO_WAIT)
  520.  
  521. def GetSlotIndex(self):
  522. return self.slot
  523.  
  524. def RefreshStat(self):
  525. statSummary = self.stat[0] + self.stat[1] + self.stat[2] + self.stat[3]
  526. self.destGauge = (
  527. float(self.stat[0])/float(statSummary),
  528. float(self.stat[1])/float(statSummary),
  529. float(self.stat[2])/float(statSummary),
  530. float(self.stat[3])/float(statSummary),
  531. )
  532.  
  533. for i in xrange(4):
  534. self.statValue.SetText(str(self.stat))
  535.  
  536. def __SelectSlot(self, slot):
  537. self.slot = slot
  538. self.ResetStat()
  539.  
  540. for i in xrange(9):
  541. chr.DeleteInstance(i)
  542.  
  543. self.genderButtonList[0].Show()
  544. self.genderButtonList[1].Show()
  545. self.DiscFace.LoadImage(self.FACE_IMAGE_DICT[slot])
  546. self.DiscFace.Show()
  547. self.raceName.SetText(self.RACE_NAME[slot])
  548. self.raceName.Show()
  549. if slot == 0:
  550. self.CharacterSlot_0.Down()
  551. self.CharacterSlot_1.SetUp()
  552. self.CharacterSlot_2.SetUp()
  553. self.CharacterSlot_3.SetUp()
  554. self.CharacterSlot_4.SetUp()
  555. elif slot == 1:
  556. self.CharacterSlot_1.Down()
  557. self.CharacterSlot_0.SetUp()
  558. self.CharacterSlot_2.SetUp()
  559. self.CharacterSlot_3.SetUp()
  560. self.CharacterSlot_4.SetUp()
  561. elif slot == 2:
  562. self.CharacterSlot_2.Down()
  563. self.CharacterSlot_0.SetUp()
  564. self.CharacterSlot_1.SetUp()
  565. self.CharacterSlot_3.SetUp()
  566. self.CharacterSlot_4.SetUp()
  567. elif slot == 3:
  568. self.CharacterSlot_3.Down()
  569. self.CharacterSlot_0.SetUp()
  570. self.CharacterSlot_1.SetUp()
  571. self.CharacterSlot_2.SetUp()
  572. self.CharacterSlot_4.SetUp()
  573. elif slot == 4:
  574. self.CharacterSlot_4.Down()
  575. self.CharacterSlot_0.SetUp()
  576. self.CharacterSlot_1.SetUp()
  577. self.CharacterSlot_2.SetUp()
  578. self.CharacterSlot_3.SetUp()
  579. if constInfo.WOLF_MAN != "DISABLED" and constInfo.WOLF_MAN == "ENABLED":
  580. self.genderButtonList[0].Show()
  581. else:
  582. self.genderButtonList[0].Hide()
  583.  
  584. if constInfo.WOLF_WOMEN != "DISABLED" and constInfo.WOLF_WOMEN == "ENABLED":
  585. self.genderButtonList[1].Show()
  586. else:
  587. self.genderButtonList[1].Hide()
  588.  
  589. self.__MakeCharacter(slot)
  590. self.__SelectGender(0)
  591. self.__SelectShape(0)
  592.  
  593. event.ClearEventSet(self.descIndex)
  594. self.descIndex = event.RegisterEventSet(self.DESCRIPTION_FILE_NAME[self.slot])
  595. if localeInfo.IsARABIC():
  596. event.SetEventSetWidth(self.descIndex, 170)
  597.  
  598. chr_id = self.__GetSlotChrID(self.gender, slot)
  599. if chr.HasInstance(chr_id):
  600. chr.SelectInstance(chr_id)
  601. self.__SelectShape(self.shapeList[self.gender][slot])
  602.  
  603. def CreateCharacter(self):
  604. if -1 != self.reservingRaceIndex:
  605. return
  606.  
  607. textName = self.editCharacterName.GetText()
  608. if self.__CheckCreateCharacter(textName) == FALSE:
  609. return
  610.  
  611. if musicInfo.selectMusic != "":
  612. snd.FadeLimitOutMusic("BGM/"+musicInfo.selectMusic, systemSetting.GetMusicVolume()*0.05)
  613.  
  614. self.DisableWindow()
  615. chr_id = self.__GetSlotChrID(self.gender, self.slot)
  616. chr.SelectInstance(chr_id)
  617. self.reservingRaceIndex = chr.GetRace()
  618.  
  619. print("========================================================")
  620. print("Race : %d" % (self.reservingRaceIndex))
  621. print("========================================================")
  622.  
  623. self.reservingShapeIndex = self.shapeList[self.gender][self.slot]
  624. self.reservingStartTime = app.GetTime()
  625. for eachSlot in xrange(SLOT_COUNT):
  626. sel_id = self.__GetSlotChrID(self.gender, eachSlot)
  627. chr.SelectInstance(sel_id)
  628. if eachSlot == self.slot:
  629. chr.PushOnceMotion(chr.MOTION_INTRO_SELECTED)
  630. else:
  631. chr.PushOnceMotion(chr.MOTION_INTRO_NOT_SELECTED)
  632. self.toolTip.Hide()
  633.  
  634. def CancelCreate(self):
  635. self.stream.SetSelectCharacterPhase()
  636.  
  637. def PrevDescriptionPage(self):
  638. if event.IsWait(self.descIndex) == TRUE:
  639. if event.GetVisibleStartLine(self.descIndex)-14 >= 0:
  640. event.SetVisibleStartLine(self.descIndex, event.GetVisibleStartLine(self.descIndex)-14)
  641. event.Skip(self.descIndex)
  642. else:
  643. event.Skip(self.descIndex)
  644.  
  645. def NextDescriptionPage(self):
  646. if TRUE == event.IsWait(self.descIndex):
  647. event.SetVisibleStartLine(self.descIndex, event.GetVisibleStartLine(self.descIndex)+14)
  648. event.Skip(self.descIndex)
  649. else:
  650. event.Skip(self.descIndex)
  651.  
  652. def __CheckCreateCharacter(self, name):
  653. if len(name) == 0:
  654. self.PopupMessage(localeInfo.CREATE_INPUT_NAME, self.EnableWindow)
  655. return FALSE
  656. elif name.find(localeInfo.CREATE_GM_NAME)!=-1:
  657. self.PopupMessage(localeInfo.CREATE_ERROR_GM_NAME, self.EnableWindow)
  658. return FALSE
  659. elif net.IsInsultIn(name):
  660. self.PopupMessage(localeInfo.CREATE_ERROR_INSULT_NAME, self.EnableWindow)
  661. return FALSE
  662.  
  663. return TRUE
  664.  
  665. def ResetStat(self):
  666. for i in xrange(4):
  667. self.stat = self.START_STAT[self.slot]
  668.  
  669. self.lastStatPoint = self.CREATE_STAT_POINT
  670. self.RefreshStat()
  671.  
  672. def OnCreateSuccess(self):
  673. self.stream.SetSelectCharacterPhase()
  674.  
  675. def OnCreateFailure(self, type):
  676. if type == 1:
  677. self.PopupMessage(localeInfo.CREATE_EXIST_SAME_NAME, self.EnableWindow)
  678. else:
  679. self.PopupMessage(localeInfo.CREATE_FAILURE, self.EnableWindow)
  680.  
  681. def OnUpdate(self):
  682. chr.Update()
  683. (xposEventSet, yposEventSet) = self.textBoard.GetGlobalPosition()
  684. event.UpdateEventSet(self.descIndex, xposEventSet+7, -(yposEventSet+7))
  685. self.descriptionBox.SetIndex(self.descIndex)
  686. SLOT_COUNT_TWO = 4
  687. if constInfo.WOLF_WOMEN != "DISABLED" and constInfo.WOLF_WOMEN == "ENABLED":
  688. SLOT_COUNT_TWO += 1
  689. else:
  690. if constInfo.WOLF_MAN != "DISABLED" and constInfo.WOLF_MAN == "ENABLED":
  691. SLOT_COUNT_TWO += 1
  692.  
  693. if SLOT_COUNT_TWO > 5:
  694. SLOT_COUNT_TWO = 5
  695.  
  696. for page in xrange(PAGE_COUNT):
  697. SLOT_COUNT_RES = 5
  698. for i in xrange(SLOT_COUNT_RES):
  699. self.curNameAlpha += (self.destNameAlpha - self.curNameAlpha) / 10.0
  700. self.NameList.SetAlpha(self.curNameAlpha)
  701.  
  702. for i in xrange(4):
  703. self.curGauge += (self.destGauge - self.curGauge) / 10.0
  704. if abs(self.curGauge - self.destGauge) < 0.005:
  705. self.curGauge = self.destGauge
  706. self.GaugeList.SetPercentage(self.curGauge, 1.0)
  707.  
  708. if -1 != self.reservingRaceIndex:
  709. if app.GetTime() - self.reservingStartTime >= 1.5:
  710. chrSlot=self.stream.GetCharacterSlot()
  711. textName = self.editCharacterName.GetText()
  712. raceIndex = self.reservingRaceIndex
  713. shapeIndex = self.reservingShapeIndex
  714.  
  715. startStat = self.START_STAT[self.slot]
  716. statCon = self.stat[0] - startStat[0]
  717. statInt = self.stat[1] - startStat[1]
  718. statStr = self.stat[2] - startStat[2]
  719. statDex = self.stat[3] - startStat[3]
  720.  
  721. net.SendCreateCharacterPacket(chrSlot, textName, raceIndex, shapeIndex, statCon, statInt, statStr, statDex)
  722. self.reservingRaceIndex = -1
  723.  
  724. def EmptyFunc(self):
  725. pass
  726.  
  727. def PopupMessage(self, msg, func=0):
  728. if not func:
  729. func=self.EmptyFunc
  730.  
  731. self.stream.popupWindow.Close()
  732. self.stream.popupWindow.Open(msg, func, localeInfo.UI_OK)
  733.  
  734. def OnPressExitKey(self):
  735. self.CancelCreate()
  736. return TRUE
  737.  
  738. def OverInStatButton(self, stat):
  739. if not self.STAT_DESCRIPTION.has_key(stat):
  740. return
  741.  
  742. self.toolTip.ClearToolTip()
  743. self.toolTip.AppendTextLine(self.STAT_DESCRIPTION[stat])
  744. self.toolTip.Show()
  745.  
  746. def OverOutStatButton(self):
  747. self.toolTip.Hide()
  748.  
  749. def OverInButton(self, stat):
  750. if stat == 1:
  751. self.toolTip.ClearToolTip()
  752. self.toolTip.AlignHorizonalCenter()
  753. self.toolTip.AutoAppendNewTextLine(localeInfo.CHARACTER_CREATE_MALE, grp.GenerateColor(1.0, 1.0, 0.0, 1.0))
  754. self.toolTip.Show()
  755. elif stat == 2:
  756. self.toolTip.ClearToolTip()
  757. self.toolTip.AlignHorizonalCenter()
  758. self.toolTip.AutoAppendNewTextLine(localeInfo.CHARACTER_CREATE_FEMALE, grp.GenerateColor(1.0, 1.0, 0.0, 1.0))
  759. self.toolTip.Show()
  760. elif stat == 3:
  761. self.toolTip.ClearToolTip()
  762. self.toolTip.AlignHorizonalCenter()
  763. self.toolTip.AutoAppendNewTextLine(localeInfo.CHARACTER_CREATE_APPEARANCE1, grp.GenerateColor(1.0, 1.0, 0.0, 1.0))
  764. self.toolTip.Show()
  765. elif stat == 4:
  766. self.toolTip.ClearToolTip()
  767. self.toolTip.AlignHorizonalCenter()
  768. self.toolTip.AutoAppendNewTextLine(localeInfo.CHARACTER_CREATE_APPEARANCE2, grp.GenerateColor(1.0, 1.0, 0.0, 1.0))
  769. self.toolTip.Show()
  770. elif stat == 5:
  771. self.toolTip.ClearToolTip()
  772. self.toolTip.AlignHorizonalCenter()
  773. self.toolTip.AutoAppendNewTextLine(uiScriptLocale.CREATE_PREV, grp.GenerateColor(1.0, 1.0, 0.0, 1.0))
  774. self.toolTip.Show()
  775. elif stat == 6:
  776. self.toolTip.ClearToolTip()
  777. self.toolTip.AlignHorizonalCenter()
  778. self.toolTip.AutoAppendNewTextLine(uiScriptLocale.CREATE_NEXT, grp.GenerateColor(1.0, 1.0, 0.0, 1.0))
  779. self.toolTip.Show()
  780. elif stat == 7:
  781. self.toolTip.ClearToolTip()
  782. self.toolTip.AlignHorizonalCenter()
  783. self.toolTip.AutoAppendNewTextLine(uiScriptLocale.CREATE_CREATE, grp.GenerateColor(1.0, 1.0, 0.0, 1.0))
  784. self.toolTip.Show()
  785. elif stat == 8:
  786. self.toolTip.ClearToolTip()
  787. self.toolTip.AlignHorizonalCenter()
  788. self.toolTip.AutoAppendNewTextLine(uiScriptLocale.CANCEL, grp.GenerateColor(1.0, 1.0, 0.0, 1.0))
  789. self.toolTip.Show()
  790. elif stat == 9:
  791. self.toolTip.ClearToolTip()
  792. self.toolTip.AlignHorizonalCenter()
  793. self.toolTip.AutoAppendNewTextLine(localeInfo.JOB_WARRIOR, grp.GenerateColor(1.0, 1.0, 0.0, 1.0))
  794. self.toolTip.Show()
  795. elif stat == 10:
  796. self.toolTip.ClearToolTip()
  797. self.toolTip.AlignHorizonalCenter()
  798. self.toolTip.AutoAppendNewTextLine(localeInfo.JOB_ASSASSIN, grp.GenerateColor(1.0, 1.0, 0.0, 1.0))
  799. self.toolTip.Show()
  800. elif stat == 11:
  801. self.toolTip.ClearToolTip()
  802. self.toolTip.AlignHorizonalCenter()
  803. self.toolTip.AutoAppendNewTextLine(localeInfo.JOB_SURA, grp.GenerateColor(1.0, 1.0, 0.0, 1.0))
  804. self.toolTip.Show()
  805. elif stat == 12:
  806. self.toolTip.ClearToolTip()
  807. self.toolTip.AlignHorizonalCenter()
  808. self.toolTip.AutoAppendNewTextLine(localeInfo.JOB_SHAMAN, grp.GenerateColor(1.0, 1.0, 0.0, 1.0))
  809. self.toolTip.Show()
  810. elif stat == 13:
  811. self.toolTip.ClearToolTip()
  812. self.toolTip.AlignHorizonalCenter()
  813. self.toolTip.AutoAppendNewTextLine(localeInfo.JOB_WOLF, grp.GenerateColor(1.0, 1.0, 0.0, 1.0))
  814. self.toolTip.Show()
  815.  
  816. def OverOutButton(self):
  817. self.toolTip.Hide()
  818.  
  819. if __name__ == "__main__":
  820.  
  821. import app
  822. import wndMgr
  823. import systemSetting
  824. import mouseModule
  825. import networkModule
  826.  
  827. app.SetMouseHandler(mouseModule.mouseController)
  828. app.SetHairColorEnable(TRUE)
  829. wndMgr.SetMouseHandler(mouseModule.mouseController)
  830. wndMgr.SetScreenSize(systemSetting.GetWidth(), systemSetting.GetHeight())
  831. app.Create(localeInfo.APP_TITLE, systemSetting.GetWidth(), systemSetting.GetHeight(), 1)
  832. mouseModule.mouseController.Create()
  833.  
  834. mainStream = networkModule.MainStream()
  835. mainStream.Create()
  836.  
  837. test = CreateCharacterWindow(mainStream)
  838. test.Open()
  839.  
  840. app.Loop()
Add Comment
Please, Sign In to add comment