Advertisement
Guest User

skillcolor.py

a guest
Oct 29th, 2022
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 22.57 KB | None | 0 0
  1. # (c) 2019 Owsap Productions
  2.  
  3. import app
  4. import ui
  5. import uiCommon
  6. import grp
  7. import wndMgr
  8. import uiScriptLocale
  9. import localeInfo
  10. import player
  11. import chat
  12. import uiToolTip
  13. import skill
  14. #import cfg
  15. import uiCommon
  16. import sys
  17.  
  18. COLOR_PRESET_SELECT_UI_SHOW_MAX = 10
  19. HEX_CODE_LENGTH = 7
  20. COLOR_PRESET_SAVE_MAX = (COLOR_PRESET_SELECT_UI_SHOW_MAX * (HEX_CODE_LENGTH + 1)) - 1
  21.  
  22. COLOR_PRESET_TOOLTIP_LIST = [
  23. localeInfo.SKILL_COLOR_PRESET_TOOLTIP_1,
  24. localeInfo.SKILL_COLOR_PRESET_TOOLTIP_2,
  25. localeInfo.SKILL_COLOR_PRESET_TOOLTIP_3
  26. ]
  27.  
  28. CUSTOM_COLOR_HEX_CODE_TOOLTIP_LIST = [
  29. localeInfo.SKILL_COLOR_CUSTOM_HEX_CODE_TOOLTIP_1,
  30. localeInfo.SKILL_COLOR_CUSTOM_HEX_CODE_TOOLTIP_2
  31. ]
  32.  
  33. class SkillColorWindow(ui.ScriptWindow):
  34. def __init__(self, skillSlot, skillIndex):
  35. ui.Window.__init__(self)
  36. self.isLoaded = False
  37.  
  38. self.skillSlot = skillSlot
  39. self.skillIndex = skillIndex
  40.  
  41. self.pickerPos = (0, 0)
  42. self.genColor = None
  43. self.tmpGenColor = None
  44. self.colorMarker = None
  45. self.toolTip = None
  46. self.popup = None
  47. self.questionDialog = None
  48. self.selectedColor = False
  49. self.page = 1
  50.  
  51. self.colorPresetDict = {}
  52. self.colorPresetListOpen = False
  53. self.colorPresetWindowHeight = 0
  54. self.colorPresetPreview = False
  55. self.selectedColorPreset = 0
  56.  
  57. self.selectedColorTab = 0
  58. self.updatesSinceColorUpdate = 0
  59.  
  60. self.skillColors = []
  61.  
  62. def __del__(self):
  63. ui.Window.__del__(self)
  64.  
  65. def __LoadWindow(self):
  66. if self.isLoaded == 1:
  67. return
  68.  
  69. self.isLoaded = 1
  70.  
  71. try:
  72. pyScrLoader = ui.PythonScriptLoader()
  73. pyScrLoader.LoadScriptFile(self, "UIScript/SkillColorWindow.py")
  74. except:
  75. import exception
  76. exception.Abort("SkillColorWindow.__LoadWindow.LoadScriptFile")
  77.  
  78. try:
  79. self.__BindObject()
  80. except:
  81. import exception
  82. exception.Abort("SkillColorWindow.__LoadWindow.__BindObject")
  83.  
  84. try:
  85. self.__BindEvent()
  86. except:
  87. import exception
  88. exception.Abort("SkillColorWindow.__LoadWindow.__BindEvent")
  89.  
  90. def __BindObject(self):
  91. self.GetChild("Board").SetCloseEvent(ui.__mem_func__(self.Close))
  92.  
  93. self.thinBoard = self.GetChild("ThinBoard")
  94.  
  95. self.bgColorBar = self.GetChild("BGColorBar")
  96. self.bgImg = self.GetChild("BGImage")
  97.  
  98. self.bgColorPickerImg = self.GetChild("BGColorPickerImage")
  99. self.bgColorPickerButton = self.GetChild("BGColorPickerButton")
  100. self.bgColorPickerDotImg = self.GetChild("BGColorPickerDotImage")
  101. self.bgColorPickerDotImg.Hide()
  102.  
  103. self.bg2Img = self.GetChild("BG2Image")
  104.  
  105. self.bg2ColorPresetButton = self.GetChild("BG2ColorPresetButton")
  106. self.bg2ColorPresetWindow = self.GetChild("BG2ColorPresetWindow")
  107. self.bg2ColorPresetEditLine = self.GetChild("BG2ColorPresetEditLine")
  108. self.bg2ColorPresetToolTip = self.GetChild("BG2ColorPresetToolTip")
  109.  
  110. self.bg2ColorPresetSaveButton = self.GetChild("BG2ColorPresetSaveButton")
  111. self.bg2ColorPresetClearButton = self.GetChild("BG2ColorPresetClearButton")
  112.  
  113. self.bg2MouseOverImage = self.GetChild("BG2MouseOverImage")
  114. self.bg2MouseOverImage.Hide()
  115.  
  116. self.bg2CustonColorInputSlotImg = self.GetChild("BG2CustomColorInputSlotImage")
  117. self.bg2CustomColorEditLine = self.GetChild("BG2CustomColorEditLine")
  118. self.bg2CustomColorToolTip = self.GetChild("BG2CustomColorToolTip")
  119.  
  120. self.defaultButton = self.GetChild("DefaultButton")
  121.  
  122. self.confirmButton = self.GetChild("ConfirmButton")
  123. self.cancelButton = self.GetChild("CancelButton")
  124.  
  125. self.bgColorLayerButton = []
  126. self.bgColorLayerButton.append(self.GetChild("ColorLayer1Button"))
  127. self.bgColorLayerButton.append(self.GetChild("ColorLayer2Button"))
  128. self.bgColorLayerButton.append(self.GetChild("ColorLayer3Button"))
  129. self.bgColorLayerButton.append(self.GetChild("ColorLayer4Button"))
  130. self.bgColorLayerButton.append(self.GetChild("ColorLayer5Button"))
  131.  
  132. def __BindEvent(self):
  133. if self.bgColorPickerButton:
  134. self.bgColorPickerButton.SetEvent(ui.__mem_func__(self.OnClickColorPicker))
  135.  
  136. if self.confirmButton:
  137. self.confirmButton.SetEvent(ui.__mem_func__(self.OnClickConfirmButton))
  138.  
  139. if self.cancelButton:
  140. self.cancelButton.SetEvent(ui.__mem_func__(self.OnClickCancelButton))
  141.  
  142. if self.defaultButton:
  143. self.defaultButton.SetEvent(ui.__mem_func__(self.OnClickDefaultButton))
  144.  
  145. if self.bg2CustomColorEditLine:
  146. self.bg2CustomColorEditLine.OnIMEUpdate = ui.__mem_func__(self.OnUpdateHex)
  147.  
  148. ## Color Preset List
  149. if self.bg2ColorPresetEditLine and self.bg2ColorPresetButton:
  150. self.bg2ColorPresetEditLine.SetEvent(ui.__mem_func__(self.OnClickColorPresetButton))
  151. self.bg2ColorPresetButton.SetEvent(ui.__mem_func__(self.OnClickColorPresetButton))
  152. self.bg2ColorPresetEditLine.SetTextAlignLeft(self.bg2ColorPresetEditLine.GetText(), 2)
  153.  
  154. if self.bg2ColorPresetSaveButton:
  155. self.bg2ColorPresetSaveButton.SetEvent(ui.__mem_func__(self.OnClickSaveColorButton))
  156. self.bg2ColorPresetSaveButton.Disable()
  157. self.bg2ColorPresetSaveButton.Down()
  158.  
  159. if self.bg2ColorPresetClearButton:
  160. self.bg2ColorPresetClearButton.SetEvent(ui.__mem_func__(self.OnClickClearColorButton))
  161. self.bg2ColorPresetClearButton.Disable()
  162. self.bg2ColorPresetClearButton.Down()
  163.  
  164. ## ToolTips
  165. if self.bg2ColorPresetToolTip:
  166. self.colorPresetToolTip = self.__CreateGameTypeToolTip(localeInfo.SKILL_COLOR_PRESET_TOOLTIP_TITLE, COLOR_PRESET_TOOLTIP_LIST)
  167.  
  168. if self.bg2CustomColorToolTip:
  169. self.customColorToolTip = self.__CreateGameTypeToolTip(localeInfo.SKILL_COLOR_CUSTOM_HEX_CODE_TOOLTIP_TITLE, CUSTOM_COLOR_HEX_CODE_TOOLTIP_LIST)
  170.  
  171. i = 0
  172. for btn in self.bgColorLayerButton:
  173. btn.SetEvent(ui.__mem_func__(self.OnClickColorTab), i)
  174. i = i + 1
  175.  
  176. self.toolTip = uiToolTip.ToolTip()
  177. self.toolTip.ClearToolTip()
  178.  
  179. self.popup = uiCommon.PopupDialog()
  180.  
  181. self.currentSkillColor = []
  182. tmpSkillColor = player.GetSkillColor(self.skillSlot)
  183. for tmpColor in tmpSkillColor:
  184. self.currentSkillColor.append(tmpColor)
  185. self.skillColors.append(tmpColor)
  186.  
  187. self.GetCurrentColor(self.skillSlot)
  188. self.ReloadSavedColorPreset(self.skillSlot)
  189. self.ReloadPage()
  190. self.OnClickColorTab(0)
  191.  
  192. def OnClickColorTab(self, colorID):
  193. for btn in self.bgColorLayerButton:
  194. btn.Enable()
  195.  
  196. self.bgColorLayerButton[colorID].Disable()
  197. self.selectedColorTab = colorID
  198.  
  199. decColor = 0
  200.  
  201. if self.currentSkillColor[colorID] > 0:
  202. decColor = self.currentSkillColor[colorID]
  203.  
  204. skillColorCode = hex(decColor).split('x')[-1]
  205. self.OnUpdateHex(True, skillColorCode)
  206.  
  207. def GetCurrentColor(self, skillSlot):
  208. currentSkillColor = player.GetSkillColor(skillSlot)
  209. decColor = 0
  210.  
  211. if currentSkillColor[0] > 0:
  212. decColor = currentSkillColor[0]
  213.  
  214. elif currentSkillColor[1] > 0:
  215. decColor = currentSkillColor[1]
  216.  
  217. elif currentSkillColor[2] > 0:
  218. decColor = currentSkillColor[2]
  219.  
  220. elif currentSkillColor[3] > 0:
  221. decColor = currentSkillColor[3]
  222.  
  223. elif currentSkillColor[4] > 0:
  224. decColor = currentSkillColor[4]
  225.  
  226. else:
  227. return # no color data from current skill slot index
  228.  
  229. skillColorCode = hex(decColor).split('x')[-1]
  230. self.OnUpdateHex(True, skillColorCode)
  231.  
  232. def GetSavedColorPresets(self, skillSlot):
  233. skillSlotColorCfg = "000000"
  234. hexCodeList = skillSlotColorCfg.split()
  235.  
  236. tmpColorPresetSaves = []
  237.  
  238. index = 0
  239. while index < len(hexCodeList):
  240. tmpColorPresetSaves.append(hexCodeList[index])
  241. index += 1
  242.  
  243. return tmpColorPresetSaves
  244.  
  245. def OnClickSaveColorButton(self):
  246. if not self.genColor or not self.selectedColor or not self.tmpGenColor:
  247. self.popup.SetText(localeInfo.SKILL_COLOR_SELECT_FIRST)
  248. self.popup.Open()
  249. return
  250.  
  251. r, g, b = (self.tmpGenColor[0], self.tmpGenColor[1], self.tmpGenColor[2])
  252. hexCode = "#{:02x}{:02x}{:02x}".format(int(r), int(g), int(b))
  253.  
  254. skillColorCfg = "000000"
  255. if len(skillColorCfg) >= COLOR_PRESET_SAVE_MAX:
  256. self.popup.SetText(localeInfo.SKILL_COLOR_CANNOT_SAVE)
  257. self.popup.Open()
  258. return
  259.  
  260. #if len(skillColorCfg) < HEX_CODE_LENGTH:
  261. # cfg.Set(cfg.SAVE_SKILL_COLOR, str(self.skillSlot), hexCode)
  262. #else:
  263. # cfg.Set(cfg.SAVE_SKILL_COLOR, str(self.skillSlot), skillColorCfg + " " + hexCode)
  264.  
  265. self.ReloadSavedColorPreset(self.skillSlot)
  266.  
  267. def ReloadSavedColorPreset(self, skillColor):
  268. if self.colorPresetListOpen:
  269. self.__ColorPresetWindow(False)
  270.  
  271. if self.bg2ColorPresetEditLine:
  272. if not self.GetSavedColorPresets(self.skillSlot):
  273. self.bg2ColorPresetEditLine.SetText(localeInfo.SKILL_COLOR_SELECT_PRESET_NONE)
  274. else:
  275. self.bg2ColorPresetEditLine.SetText(localeInfo.SKILL_COLOR_SELECT_PRESET)
  276.  
  277. self.colorPresetDict = {}
  278. self.colorPresetListOpen = False
  279. self.colorPresetWindowHeight = 0
  280. self.colorPresetPreview = False
  281. self.selectedColorPreset = 0
  282.  
  283. self.bg2MouseOverImage.SetParent(self)
  284.  
  285. def OnClickClearColorButton(self):
  286. skillColorPreset = self.GetSavedColorPresets(self.skillSlot)
  287. selectedColorCode = skillColorPreset[self.selectedColorPreset][:HEX_CODE_LENGTH]
  288.  
  289. skillColorCfg = "000000"
  290. skillColorCfgStr = skillColorCfg.replace(selectedColorCode, '')
  291.  
  292. #cfg.Set(cfg.SAVE_SKILL_COLOR, str(self.skillSlot), skillColorCfgStr)
  293.  
  294. self.ClearColors()
  295.  
  296. self.ReloadSavedColorPreset(self.skillSlot)
  297.  
  298. def ClearColors(self):
  299. if self.genColor:
  300. self.genColor = (0, 0, 0)
  301.  
  302. if self.tmpGenColor:
  303. self.tmpGenColor = (0, 0, 0)
  304.  
  305. self.selectedColorPreset = 0
  306.  
  307. if self.bg2CustomColorEditLine:
  308. self.bg2CustomColorEditLine.SetText("")
  309.  
  310. def OnClickColorPresetButton(self):
  311. self.__CreateColorPresetButton()
  312.  
  313. if self.colorPresetListOpen:
  314. self.__ColorPresetWindow(False)
  315. else:
  316. self.__ColorPresetWindow(True)
  317.  
  318. def __ColorPresetWindow(self, show):
  319. if True == show:
  320. self.colorPresetListOpen = True
  321. if self.bg2ColorPresetWindow:
  322. self.bg2ColorPresetWindow.SetSize(131, self.colorPresetWindowHeight)
  323.  
  324. for button in self.colorPresetDict.values():
  325. button.Show()
  326. else:
  327. self.colorPresetListOpen = False
  328. if self.bg2ColorPresetWindow:
  329. self.bg2ColorPresetWindow.SetSize(131, 0)
  330.  
  331. for button in self.colorPresetDict.values():
  332. button.Hide()
  333.  
  334. def __CreateColorPresetButton(self):
  335. if not self.bg2ColorPresetWindow:
  336. return
  337.  
  338. if self.colorPresetDict:
  339. return
  340.  
  341. colorPresetList = self.GetSavedColorPresets(self.skillSlot)
  342. if not colorPresetList:
  343. return
  344.  
  345. buttonHeight = 16
  346. dictLen = len(colorPresetList)
  347. self.colorPresetWindowHeight = dictLen * buttonHeight
  348.  
  349. for i in xrange(min(COLOR_PRESET_SELECT_UI_SHOW_MAX, dictLen)):
  350. key = i
  351. button = ui.Button()
  352. button.SetParent(self.bg2ColorPresetWindow)
  353. button.SetPosition(0, buttonHeight * i - 1)
  354.  
  355. if 1 == dictLen:
  356. button.SetUpVisual("d:/ymir work/ui/game/mailbox/friend_list_pattern_only.sub")
  357. button.SetDownVisual("d:/ymir work/ui/game/mailbox/friend_list_pattern_only.sub")
  358. button.SetOverVisual("d:/ymir work/ui/game/mailbox/friend_list_pattern_only.sub")
  359. elif i == 0:
  360. button.SetUpVisual("d:/ymir work/ui/game/mailbox/friend_list_pattern_top.sub")
  361. button.SetDownVisual("d:/ymir work/ui/game/mailbox/friend_list_pattern_top.sub")
  362. button.SetOverVisual("d:/ymir work/ui/game/mailbox/friend_list_pattern_top.sub")
  363. elif i >= COLOR_PRESET_SELECT_UI_SHOW_MAX - 1:
  364. button.SetUpVisual("d:/ymir work/ui/game/mailbox/friend_list_pattern_bottom.sub")
  365. button.SetDownVisual("d:/ymir work/ui/game/mailbox/friend_list_pattern_bottom.sub")
  366. button.SetOverVisual("d:/ymir work/ui/game/mailbox/friend_list_pattern_bottom.sub")
  367. else:
  368. button.SetUpVisual("d:/ymir work/ui/game/mailbox/friend_list_pattern_middle.sub")
  369. button.SetDownVisual("d:/ymir work/ui/game/mailbox/friend_list_pattern_middle.sub")
  370. button.SetOverVisual("d:/ymir work/ui/game/mailbox/friend_list_pattern_middle.sub")
  371.  
  372. button.SetEvent(ui.__mem_func__(self.OnClickColorPreset), key)
  373. button.SetOverEvent(ui.__mem_func__(self.OnColorPresetOver), key)
  374. button.SetOverOutEvent(ui.__mem_func__(self.OnColorPresetOut), key)
  375. button.SetListText(colorPresetList[key][:HEX_CODE_LENGTH])
  376. button.Hide()
  377.  
  378. self.colorPresetDict[key] = button
  379.  
  380. self.bg2MouseOverImage.SetParent(self.bg2ColorPresetWindow)
  381.  
  382. def OnClickColorPreset(self, index):
  383. for button in self.colorPresetDict.values():
  384. button.Hide()
  385.  
  386. self.__ColorPresetWindow(False)
  387.  
  388. skillColorPreset = self.GetSavedColorPresets(self.skillSlot)
  389. skillColorPresetCode = skillColorPreset[index][:HEX_CODE_LENGTH]
  390.  
  391. self.selectedColorPreset = index
  392.  
  393. if self.bg2ColorPresetEditLine:
  394. self.bg2ColorPresetEditLine.SetText(skillColorPresetCode)
  395.  
  396. if self.bg2ColorPresetClearButton:
  397. self.bg2ColorPresetClearButton.Enable()
  398. self.bg2ColorPresetClearButton.SetUp()
  399.  
  400. self.OnUpdateHex(True, skillColorPresetCode)
  401.  
  402. def OnColorPresetOver(self, index):
  403. if not self.bg2MouseOverImage:
  404. return
  405.  
  406. button = self.colorPresetDict[index]
  407. if 0 == button:
  408. return
  409.  
  410. skillColorPreset = self.GetSavedColorPresets(self.skillSlot)
  411. skillColorPresetCode = skillColorPreset[index][:HEX_CODE_LENGTH]
  412. self.__PreviewColorPreset(skillColorPresetCode)
  413.  
  414. (buttonX, buttonY) = button.GetLocalPosition()
  415. self.bg2MouseOverImage.SetParent(self.bg2ColorPresetWindow)
  416. self.bg2MouseOverImage.SetPosition(buttonX, buttonY)
  417. self.bg2MouseOverImage.Show()
  418.  
  419. def OnColorPresetOut(self, index):
  420. if not self.bg2MouseOverImage:
  421. return
  422.  
  423. self.colorPresetPreview = False
  424.  
  425. self.bg2MouseOverImage.Hide()
  426.  
  427. def __PreviewColorPreset(self, hexCode):
  428. if hexCode == "":
  429. return
  430.  
  431. color = str(hexCode).split("#")
  432. rgbColor = self.HexToRGB(str(color[1]))
  433.  
  434. if rgbColor[0] <= 20 and rgbColor[1] <= 20 and rgbColor[2] <= 20:
  435. rgbColorNew = list(rgbColor)
  436. rgbColorNew[0] = 0
  437. rgbColorNew[1] = 0
  438. rgbColorNew[2] = 0
  439. rgbColor = tuple(rgbColorNew)
  440.  
  441. r, g, b = (float(rgbColor[0]) / 255, float(rgbColor[1]) / 255, float(rgbColor[2]) / 255)
  442.  
  443. self.colorPresetPreview = True
  444.  
  445. if self.bgColorBar:
  446. self.bgColorBar.SetColor(grp.GenerateColor(r, g, b, 1.0))
  447.  
  448. def OnUpdateHex(self, loadPreset = False, hexCode = ""):
  449. if loadPreset == True:
  450. text = hexCode
  451. else:
  452. ui.EditLine.OnIMEUpdate(self.bg2CustomColorEditLine)
  453. text = self.bg2CustomColorEditLine.GetText()
  454.  
  455. if len(text):
  456. self.bg2CustomColorEditLine.SetText(str(text))
  457. self.bgColorPickerDotImg.Hide()
  458.  
  459. strLen = len(str(text))
  460. if strLen >= HEX_CODE_LENGTH - 1:
  461. if text.find("#") == -1:
  462. self.bg2CustomColorEditLine.SetText("")
  463. self.bg2CustomColorEditLine.SetText("#" + str(text) + "")
  464.  
  465. color = str(self.bg2CustomColorEditLine.GetText()).split("#")
  466. rgbColor = self.HexToRGB(str(color[1]))
  467.  
  468. if rgbColor[0] <= 20 and rgbColor[1] <= 20 and rgbColor[2] <= 20:
  469. rgbColorNew = list(rgbColor)
  470. rgbColorNew[0] = 0
  471. rgbColorNew[1] = 0
  472. rgbColorNew[2] = 0
  473. rgbColor = tuple(rgbColorNew)
  474. self.selectedColor = False
  475. else:
  476. self.selectedColor = True
  477.  
  478. r, g, b = (float(rgbColor[0]) / 255, float(rgbColor[1]) / 255, float(rgbColor[2]) / 255)
  479. self.genColor = (r, g, b)
  480.  
  481. if self.bgColorBar:
  482. self.bgColorBar.SetColor(grp.GenerateColor(r, g, b, 1.0))
  483.  
  484. if self.bg2ColorPresetSaveButton:
  485. self.bg2ColorPresetSaveButton.Enable()
  486. self.bg2ColorPresetSaveButton.SetUp()
  487.  
  488. tmpR, tmpG, tmpB = (float(rgbColor[0]), float(rgbColor[1]), float(rgbColor[2]))
  489. self.skillColors[self.selectedColorTab] = grp.GenerateColor(tmpR / 255, tmpG / 255, tmpB / 255, 0.0) # i think?
  490. self.currentSkillColor[self.selectedColorTab] = grp.GenerateColor(tmpR / 255, tmpG / 255, tmpB / 255, 0.0) # i think?
  491. self.tmpGenColor = (tmpR, tmpG, tmpB)
  492. else:
  493. if self.bg2ColorPresetSaveButton:
  494. self.bg2ColorPresetSaveButton.Disable()
  495. self.bg2ColorPresetSaveButton.Down()
  496.  
  497. self.selectedColor = False
  498.  
  499. def OnClickPrevButton(self):
  500. if self.page <= 1:
  501. return
  502.  
  503. self.page -= 1
  504. self.ReloadPage()
  505.  
  506. def OnClickNextButton(self):
  507. if self.page >= 2:
  508. return
  509.  
  510. self.page += 1
  511. self.ReloadPage()
  512.  
  513. def ReloadPage(self):
  514. if self.colorPresetListOpen:
  515. self.__ColorPresetWindow(False)
  516.  
  517. page = self.page
  518.  
  519. if page >= 2:
  520. self.bgColorPickerImg.Hide()
  521. self.bg2Img.Show()
  522.  
  523. for btn in self.bgColorLayerButton:
  524. btn.Hide()
  525. else:
  526. self.bgColorPickerImg.Show()
  527. self.bg2Img.Hide()
  528.  
  529. for btn in self.bgColorLayerButton:
  530. btn.Show()
  531.  
  532. def OnClickCancelButton(self):
  533. self.Close()
  534.  
  535. def OnClickDefaultButton(self):
  536. questionDialog = uiCommon.QuestionDialog()
  537. questionDialog.SetText(localeInfo.SKILL_COLOR_DO_YOU_RESET)
  538. questionDialog.SetAcceptEvent(lambda arg = 0 : ui.__mem_func__(self.OnAcceptQuestionDialog)(arg))
  539. questionDialog.SetCancelEvent(ui.__mem_func__(self.OnCloseQuestionDialog))
  540. questionDialog.Open()
  541. self.questionDialog = questionDialog
  542.  
  543. def OnClickConfirmButton(self):
  544. if not self.genColor or not self.selectedColor:
  545. self.popup.SetText(localeInfo.SKILL_COLOR_SELECT_FIRST)
  546. self.popup.Open()
  547. return
  548.  
  549. questionDialog = uiCommon.QuestionDialog()
  550. questionDialog.SetText(localeInfo.SKILL_COLOR_DO_YOU_CHANGE)
  551. questionDialog.SetAcceptEvent(lambda arg = 1 : ui.__mem_func__(self.OnAcceptQuestionDialog)(arg))
  552. questionDialog.SetCancelEvent(ui.__mem_func__(self.OnCloseQuestionDialog))
  553. questionDialog.Open()
  554. self.questionDialog = questionDialog
  555.  
  556. def OnAcceptQuestionDialog(self, arg):
  557. if arg == 0:
  558. player.SetSkillColor(self.skillSlot, 0, 0, 0, 0, 0)
  559. else:
  560. player.SetSkillColor(self.skillSlot, self.skillColors[0], self.skillColors[1], self.skillColors[2], self.skillColors[3], self.skillColors[4])
  561.  
  562. self.Close()
  563.  
  564. self.OnCloseQuestionDialog()
  565. return True
  566.  
  567. def OnCloseQuestionDialog(self):
  568. self.questionDialog.Close()
  569. self.questionDialog = None
  570. return True
  571.  
  572. def OnPressEscapeKey(self):
  573. self.Close()
  574. return True
  575.  
  576. def Close(self):
  577. self.Hide()
  578.  
  579. def Show(self, page = 1):
  580. ui.ScriptWindow.Show(self)
  581.  
  582. if not self.isLoaded:
  583. self.page = page
  584. self.__LoadWindow()
  585.  
  586. self.SetCenterPosition()
  587. self.SetTop()
  588.  
  589. def OnClickColorPicker(self):
  590. rgbColor = self.GetRGBColor()
  591.  
  592. if rgbColor[0] <= 20 and rgbColor[1] <= 20 and rgbColor[2] <= 20:
  593. rgbColorNew = list(rgbColor)
  594. rgbColorNew[0] = 0
  595. rgbColorNew[1] = 0
  596. rgbColorNew[2] = 0
  597. rgbColor = tuple(rgbColorNew)
  598. self.selectedColor = False
  599. else:
  600. self.selectedColor = True
  601.  
  602. r, g, b = (float(rgbColor[0]) / 255, float(rgbColor[1]) / 255, float(rgbColor[2]) / 255)
  603. self.genColor = (r, g, b)
  604.  
  605. if self.bgColorBar:
  606. self.bgColorBar.SetColor(grp.GenerateColor(r, g, b, 1.0))
  607.  
  608. if self.bg2ColorPresetSaveButton:
  609. self.bg2ColorPresetSaveButton.Enable()
  610. self.bg2ColorPresetSaveButton.SetUp()
  611.  
  612. if self.bgColorPickerDotImg:
  613. self.bgColorPickerDotImg.SetPosition(self.pickerPos[0] - (self.bgColorPickerDotImg.GetWidth()/2), self.pickerPos[1] - (self.bgColorPickerDotImg.GetHeight()/2))
  614. self.bgColorPickerDotImg.Show()
  615.  
  616. colorMarker = ui.TextLine()
  617. colorMarker.SetParent(self.bgColorPickerDotImg)
  618. colorMarker.SetPosition(5, -15)
  619. colorMarker.SetHorizontalAlignCenter()
  620. r, g, b = self.GetRGBColor()
  621. hexCode = "#{:02x}{:02x}{:02x}".format(int(r), int(g), int(b))
  622. colorMarker.SetText("%s" % hexCode)
  623. colorMarker.Show()
  624. self.colorMarker = colorMarker
  625.  
  626. tmpR, tmpG, tmpB = (float(rgbColor[0]), float(rgbColor[1]), float(rgbColor[2]))
  627. self.skillColors[self.selectedColorTab] = grp.GenerateColor(tmpR / 255, tmpG / 255, tmpB / 255, 0.0)
  628. self.currentSkillColor[self.selectedColorTab] = grp.GenerateColor(tmpR / 255, tmpG / 255, tmpB / 255, 0.0) # i think?
  629. self.tmpGenColor = (tmpR, tmpG, tmpB)
  630.  
  631. if self.bg2CustomColorEditLine:
  632. r, g, b = (self.tmpGenColor[0], self.tmpGenColor[1], self.tmpGenColor[2])
  633. hexCode = "#{:02x}{:02x}{:02x}".format(int(r), int(g), int(b))
  634. self.bg2CustomColorEditLine.SetText(str(hexCode))
  635.  
  636. def HexToRGB(self, strValue):
  637. strValue = strValue.lstrip("#")
  638. lv = len(strValue)
  639. rgbCode = (0, 0 ,0)
  640. try:
  641. rgbCode = tuple(int(strValue[i:i+int(lv/3)], 16) for i in range(0, lv, int(lv/3)))
  642. except:
  643. pass # unvalid hex string
  644.  
  645. return rgbCode
  646.  
  647. def GetRGBColor(self):
  648. xMouse, yMouse = wndMgr.GetRealMousePosition()
  649. return wndMgr.GetColorAtPosition(xMouse, yMouse)
  650.  
  651. def ChangeColor(self, x, y):
  652. if x > 255:
  653. x = 255
  654.  
  655. if y > 255:
  656. y = 255
  657.  
  658. rgbColor = self.GetRGBColor()
  659. r, g, b = (float(rgbColor[0]) / 255, float(rgbColor[1]) / 255, float(rgbColor[2]) / 255)
  660.  
  661. self.updatesSinceColorUpdate = 0
  662.  
  663. if self.bgColorBar:
  664. self.bgColorBar.SetColor(grp.GenerateColor(r, g, b, 1.0))
  665.  
  666. def OnUpdate(self):
  667. self.updatesSinceColorUpdate = self.updatesSinceColorUpdate + 1
  668. if self.bgColorPickerButton.IsIn():
  669. xBtn, yBtn = self.bgColorPickerButton.GetGlobalPosition()
  670. btnHeight = self.bgColorPickerButton.GetHeight()
  671. xMousePos, yMousePos = wndMgr.GetMousePosition()
  672.  
  673. if yMousePos - yBtn < btnHeight - 1:
  674. xMouse = xMousePos - xBtn
  675. yMouse = yMousePos - yBtn
  676.  
  677. if xMouse > 255:
  678. xMouse = 255
  679.  
  680. if yMouse > 255:
  681. yMouse = 255
  682.  
  683. self.pickerPos = (xMouse, yMouse)
  684. if self.updatesSinceColorUpdate > 5:
  685. self.ChangeColor(xMouse, yMouse)
  686.  
  687. if self.toolTip:
  688. try:
  689. r, g, b = self.GetRGBColor()
  690. hexCode = "#{:02x}{:02x}{:02x}".format(int(r), int(g), int(b))
  691. toolTipText = localeInfo.SKILL_COLOR_PICK_TOOLTIP % (skill.GetSkillName(self.skillIndex, 0), hexCode)
  692. arglen = len(str(toolTipText))
  693. self.toolTip.ClearToolTip()
  694. self.toolTip.SetThinBoardSize(5 * arglen)
  695. self.toolTip.AppendTextLine(toolTipText, 0xffffff00)
  696. self.toolTip.Show()
  697. except:
  698. return # skill.GetSkillName - Failed to find skill index
  699. else:
  700. self.toolTip.Hide()
  701. elif self.bg2ColorPresetToolTip.IsIn():
  702. if self.colorPresetToolTip:
  703. self.colorPresetToolTip.Show()
  704. else:
  705. self.colorPresetToolTip.Hide()
  706. elif self.bg2CustomColorToolTip.IsIn():
  707. if self.customColorToolTip:
  708. self.customColorToolTip.Show()
  709. else:
  710. self.customColorToolTip.Hide()
  711. else:
  712. if not self.colorPresetPreview:
  713. if self.genColor and self.bgColorBar:
  714. self.bgColorBar.SetColor(grp.GenerateColor(self.genColor[0], self.genColor[1], self.genColor[2], 1.0))
  715. else:
  716. self.bgColorBar.SetColor(grp.GenerateColor(0, 0, 0, 0.0))
  717.  
  718. if self.toolTip:
  719. self.toolTip.Hide()
  720.  
  721. if self.colorPresetToolTip:
  722. self.colorPresetToolTip.Hide()
  723.  
  724. if self.customColorToolTip:
  725. self.customColorToolTip.Hide()
  726.  
  727. def __CreateGameTypeToolTip(self, title, descList):
  728. tooltip = uiToolTip.ToolTip()
  729. tooltip.SetTitle(title)
  730. tooltip.AppendSpace(7)
  731.  
  732. for desc in descList:
  733. tooltip.AutoAppendTextLine(desc)
  734.  
  735. tooltip.AlignHorizonalCenter()
  736. tooltip.SetTop()
  737. return tooltip
  738.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement