Advertisement
Guest User

Untitled

a guest
Jul 24th, 2018
342
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 14.29 KB | None | 0 0
  1. import ui
  2. import localeInfo
  3. import player
  4. import item
  5. import uiToolTip
  6. import wndMgr
  7. import app
  8.  
  9. class CharacterDetailsUI(ui.ScriptWindow):
  10. def __init__(self, parent):
  11. self.uiCharacterStatus = parent
  12. ui.ScriptWindow.__init__(self)
  13. self.toolTip = uiToolTip.ToolTip()
  14.  
  15. self.__LoadScript()
  16.  
  17. def __del__(self):
  18. self.uiCharacterStatus = None
  19. self.toolTip = None
  20. ui.ScriptWindow.__del__(self)
  21.  
  22. def __LoadScript(self):
  23.  
  24. try:
  25. pyScrLoader = ui.PythonScriptLoader()
  26. pyScrLoader.LoadScriptFile(self, "UIScript/CharacterDetailsWindow.py")
  27. except:
  28. import exception
  29. exception.Abort("CharacterDetailsUI.__LoadScript")
  30.  
  31. ## CharacterWindow.py 의 width = 253
  32. self.Width = 253 - 3
  33.  
  34. self.GetChild("TitleBar").CloseButtonHide()
  35. self.ScrollBar = self.GetChild("ScrollBar")
  36. self.ScrollBar.SetScrollEvent(ui.__mem_func__(self.OnScroll))
  37.  
  38. ## 출력되는 UI 최대 숫자
  39. self.UI_MAX_COUNT = 13
  40. self.UI_MAX_VIEW_COUNT = 6
  41.  
  42. ## UI KEY & VALUE
  43. self.INFO_TEXT = 0
  44. self.INFO_TOOLTIP = 1
  45. self.INFO_VALUE = 2
  46. self.CATEGORY_STARTLINE = -1
  47. self.CATEGORY_ENDLINE = -2
  48.  
  49. ## Child 셋팅
  50. self.labelList = []
  51. self.labelValueList = []
  52. self.labelTextList = []
  53. self.horizonBarList = []
  54. self.horizonBarNameList = []
  55.  
  56. for i in xrange(self.UI_MAX_COUNT):
  57. self.labelList.append( self.GetChild("label%s"%i) )
  58. self.labelValueList.append( self.GetChild("labelvalue%s"%i) )
  59. self.labelTextList.append( self.GetChild("labelname%s"%i) )
  60. self.horizonBarList.append( self.GetChild("horizontalbar%s"%i) )
  61. self.horizonBarNameList.append( self.GetChild("horizontalbarName%s"%i) )
  62.  
  63. for i in xrange(self.UI_MAX_COUNT):
  64. self.labelTextList[i].SetOverEvent( ui.__mem_func__(self.__ButtonOverIn), i )
  65. self.labelTextList[i].SetOverOutEvent( ui.__mem_func__(self.__ButtonOverOut), i )
  66.  
  67. self.__Initialize()
  68.  
  69. def __Initialize(self):
  70. self.InfoList = []
  71.  
  72. ## 추가 데미지
  73. self.InfoList.append( [ localeInfo.DETAILS_CATE_1, "", self.CATEGORY_STARTLINE ] )
  74. self.InfoList.append( [ localeInfo.DETAILS_1, localeInfo.DETAILS_TOOLTIP_1, 43 ] )
  75.  
  76. # if app.ENABLE_PVP_BALANCE or app.ENABLE_PENDANT:
  77. # self.InfoList.append( [ localeInfo.DETAILS_2, localeInfo.DETAILS_TOOLTIP_2, item.APPLY_RESIST_HUMAN ] )
  78.  
  79. self.InfoList.append( [ localeInfo.DETAILS_3, localeInfo.DETAILS_TOOLTIP_3, 45 ] )
  80. self.InfoList.append( [ localeInfo.DETAILS_4, localeInfo.DETAILS_TOOLTIP_4, 47 ] )
  81. self.InfoList.append( [ localeInfo.DETAILS_5, localeInfo.DETAILS_TOOLTIP_5, 53 ] )
  82.  
  83. # if app.ENABLE_ELEMENT_ADD:
  84. # self.InfoList.append( [ localeInfo.DETAILS_6, localeInfo.DETAILS_TOOLTIP_6, item.APPLY_ATTBONUS_CZ ] )
  85.  
  86. self.InfoList.append( [ localeInfo.DETAILS_7, localeInfo.DETAILS_TOOLTIP_7, 44 ] )
  87. self.InfoList.append( [ localeInfo.DETAILS_8, localeInfo.DETAILS_TOOLTIP_8, 46 ] )
  88. self.InfoList.append( [ localeInfo.DETAILS_9, localeInfo.DETAILS_TOOLTIP_9, 48 ] )
  89.  
  90. # if app.ENABLE_ELEMENT_ADD:
  91. # self.InfoList.append( [ localeInfo.DETAILS_10, localeInfo.DETAILS_TOOLTIP_10, item.APPLY_ATTBONUS_DESERT ] )
  92. # self.InfoList.append( [ localeInfo.DETAILS_11, localeInfo.DETAILS_TOOLTIP_11, item.APPLY_ATTBONUS_INSECT ] )
  93.  
  94. self.InfoList.append( [ localeInfo.DETAILS_12, localeInfo.DETAILS_TOOLTIP_12, 95 ] )
  95. self.InfoList.append( [ localeInfo.DETAILS_13, localeInfo.DETAILS_TOOLTIP_13, 96 ] )
  96. self.InfoList.append( [ localeInfo.DETAILS_14, localeInfo.DETAILS_TOOLTIP_14, 122 ] )
  97. self.InfoList.append( [ localeInfo.DETAILS_15, localeInfo.DETAILS_TOOLTIP_15, 124 ] )
  98. self.InfoList.append( [ localeInfo.DETAILS_16, localeInfo.DETAILS_TOOLTIP_16, 121 ] )
  99. self.InfoList.append( [ localeInfo.DETAILS_17, localeInfo.DETAILS_TOOLTIP_17, 123 ] )
  100. self.InfoList.append( [ localeInfo.DETAILS_18, localeInfo.DETAILS_TOOLTIP_18, 132 ] )
  101. self.InfoList.append( [ localeInfo.DETAILS_19, localeInfo.DETAILS_TOOLTIP_19, 131 ] )
  102. self.InfoList.append( [ localeInfo.DETAILS_20, localeInfo.DETAILS_TOOLTIP_20, 40 ] )
  103. self.InfoList.append( [ localeInfo.DETAILS_21, localeInfo.DETAILS_TOOLTIP_21, 41 ] )
  104. self.InfoList.append( [ localeInfo.DETAILS_22, localeInfo.DETAILS_TOOLTIP_22, 136 ] )
  105. self.InfoList.append( [ localeInfo.DETAILS_23, localeInfo.DETAILS_TOOLTIP_23, 137 ] )
  106. self.InfoList.append( [ "", "", self.CATEGORY_ENDLINE ] )
  107.  
  108. ## 엘리멘탈 속성
  109. self.InfoList.append( [ localeInfo.DETAILS_CATE_2, "", self.CATEGORY_STARTLINE ] )
  110. self.InfoList.append( [ localeInfo.DETAILS_76, localeInfo.DETAILS_TOOLTIP_76, 77 ] )
  111. self.InfoList.append( [ localeInfo.DETAILS_24, localeInfo.DETAILS_TOOLTIP_24, 76 ] )
  112. self.InfoList.append( [ localeInfo.DETAILS_25, localeInfo.DETAILS_TOOLTIP_25, 133 ] )
  113. self.InfoList.append( [ localeInfo.DETAILS_26, localeInfo.DETAILS_TOOLTIP_26, 135 ] )
  114. self.InfoList.append( [ localeInfo.DETAILS_27, localeInfo.DETAILS_TOOLTIP_27, 75 ] )
  115. self.InfoList.append( [ localeInfo.DETAILS_28, localeInfo.DETAILS_TOOLTIP_28, 78 ] )
  116. self.InfoList.append( [ localeInfo.DETAILS_29, localeInfo.DETAILS_TOOLTIP_29, 134 ] )
  117. # self.InfoList.append( [ localeInfo.DETAILS_77, localeInfo.DETAILS_TOOLTIP_77, item.APPLY_RESIST_MAGIC_REDUCTION ] )
  118.  
  119. # if app.ENABLE_ELEMENT_ADD:
  120. # self.InfoList.append( [ localeInfo.DETAILS_30, localeInfo.DETAILS_TOOLTIP_30, item.APPLY_ENCHANT_ELECT ] )
  121. # self.InfoList.append( [ localeInfo.DETAILS_31, localeInfo.DETAILS_TOOLTIP_31, item.APPLY_ENCHANT_ICE ] )
  122. # self.InfoList.append( [ localeInfo.DETAILS_32, localeInfo.DETAILS_TOOLTIP_32, item.APPLY_ENCHANT_DARK ] )
  123. # self.InfoList.append( [ localeInfo.DETAILS_33, localeInfo.DETAILS_TOOLTIP_33, item.APPLY_ENCHANT_FIRE ] )
  124. # self.InfoList.append( [ localeInfo.DETAILS_34, localeInfo.DETAILS_TOOLTIP_34, item.APPLY_ENCHANT_WIND ] )
  125. # self.InfoList.append( [ localeInfo.DETAILS_35, localeInfo.DETAILS_TOOLTIP_35, item.APPLY_ENCHANT_EARTH ] )
  126.  
  127. self.InfoList.append( [ "", "", self.CATEGORY_ENDLINE ] )
  128.  
  129. ## 직업 속성
  130. self.InfoList.append( [ localeInfo.DETAILS_CATE_3, "", self.CATEGORY_STARTLINE ] )
  131. self.InfoList.append( [ localeInfo.DETAILS_36, localeInfo.DETAILS_TOOLTIP_36, 54 ] )
  132. self.InfoList.append( [ localeInfo.DETAILS_37, localeInfo.DETAILS_TOOLTIP_37, 55 ] )
  133. self.InfoList.append( [ localeInfo.DETAILS_38, localeInfo.DETAILS_TOOLTIP_38, 56 ] )
  134. self.InfoList.append( [ localeInfo.DETAILS_39, localeInfo.DETAILS_TOOLTIP_39, 57 ] )
  135. # self.InfoList.append( [ localeInfo.DETAILS_40, localeInfo.DETAILS_TOOLTIP_40, item.APPLY_ATTBONUS_WOLFMAN ] )
  136. self.InfoList.append( [ localeInfo.DETAILS_41, localeInfo.DETAILS_TOOLTIP_41, 59 ] )
  137. self.InfoList.append( [ localeInfo.DETAILS_42, localeInfo.DETAILS_TOOLTIP_42, 60 ] )
  138. self.InfoList.append( [ localeInfo.DETAILS_43, localeInfo.DETAILS_TOOLTIP_43, 61 ] )
  139. self.InfoList.append( [ localeInfo.DETAILS_44, localeInfo.DETAILS_TOOLTIP_44, 62 ] )
  140. # self.InfoList.append( [ localeInfo.DETAILS_45, localeInfo.DETAILS_TOOLTIP_45, item.APPLY_RESIST_WOLFMAN ] )
  141. self.InfoList.append( [ "", "", self.CATEGORY_ENDLINE ] )
  142.  
  143. ## 무기 속성
  144. self.InfoList.append( [ localeInfo.DETAILS_CATE_4, "", self.CATEGORY_STARTLINE ] )
  145. self.InfoList.append( [ localeInfo.DETAILS_46, localeInfo.DETAILS_TOOLTIP_46, 69 ] )
  146. self.InfoList.append( [ localeInfo.DETAILS_47, localeInfo.DETAILS_TOOLTIP_47, 70 ] )
  147. self.InfoList.append( [ localeInfo.DETAILS_48, localeInfo.DETAILS_TOOLTIP_48, 71 ] )
  148. # self.InfoList.append( [ localeInfo.DETAILS_49, localeInfo.DETAILS_TOOLTIP_49, item.APPLY_RESIST_CLAW ] )
  149. self.InfoList.append( [ localeInfo.DETAILS_50, localeInfo.DETAILS_TOOLTIP_50, 72 ] )
  150. self.InfoList.append( [ localeInfo.DETAILS_51, localeInfo.DETAILS_TOOLTIP_51, 73 ] )
  151. self.InfoList.append( [ localeInfo.DETAILS_52, localeInfo.DETAILS_TOOLTIP_52, 74 ] )
  152. # if app.ENABLE_PENDANT:
  153. # self.InfoList.append( [ localeInfo.DETAILS_ATTBONUS_SWORD, localeInfo.DETAILS_TOOLTIP_ATTBONUS_SWORD , item.APPLY_ATTBONUS_SWORD ] )
  154. # self.InfoList.append( [ localeInfo.DETAILS_ATTBONUS_TWOHAND, localeInfo.DETAILS_TOOLTIP_ATTBONUS_TWOHAND, item.APPLY_ATTBONUS_TWOHAND ] )
  155. # self.InfoList.append( [ localeInfo.DETAILS_ATTBONUS_DAGGER, localeInfo.DETAILS_TOOLTIP_ATTBONUS_DAGGER , item.APPLY_ATTBONUS_DAGGER ] )
  156. # self.InfoList.append( [ localeInfo.DETAILS_ATTBONUS_BELL, localeInfo.DETAILS_TOOLTIP_ATTBONUS_BELL , item.APPLY_ATTBONUS_BELL ] )
  157. # self.InfoList.append( [ localeInfo.DETAILS_ATTBONUS_FAN , localeInfo.DETAILS_TOOLTIP_ATTBONUS_FAN , item.APPLY_ATTBONUS_FAN ] )
  158. # self.InfoList.append( [ localeInfo.DETAILS_ATTBONUS_BOW, localeInfo.DETAILS_TOOLTIP_ATTBONUS_BOW , item.APPLY_ATTBONUS_BOW ] )
  159. # self.InfoList.append( [ localeInfo.DETAILS_ATTBONUS_CLAW, localeInfo.DETAILS_TOOLTIP_ATTBONUS_CLAW , item.APPLY_ATTBONUS_CLAW ] )
  160. # self.InfoList.append( [ localeInfo.DETAILS_RESIST_MOUNT_FALL, localeInfo.DETAILS_TOOLTIP_RESIST_MOUNT_FALL , item.APPLY_RESIST_MOUNT_FALL ] )
  161. self.InfoList.append( [ "", "", self.CATEGORY_ENDLINE ] )
  162.  
  163. ## 기타
  164. self.InfoList.append( [ localeInfo.DETAILS_CATE_5, "", self.CATEGORY_STARTLINE ] )
  165. self.InfoList.append( [ localeInfo.DETAILS_53, localeInfo.DETAILS_TOOLTIP_53, 38 ] )
  166. self.InfoList.append( [ localeInfo.DETAILS_54, localeInfo.DETAILS_TOOLTIP_54, 39 ] )
  167. self.InfoList.append( [ localeInfo.DETAILS_55, localeInfo.DETAILS_TOOLTIP_55, 37 ] )
  168. self.InfoList.append( [ localeInfo.DETAILS_56, localeInfo.DETAILS_TOOLTIP_56, 81 ] )
  169. # self.InfoList.append( [ localeInfo.DETAILS_57, localeInfo.DETAILS_TOOLTIP_57, item.APPLY_BLEEDING_PCT ] )
  170. # self.InfoList.append( [ localeInfo.DETAILS_58, localeInfo.DETAILS_TOOLTIP_58, item.APPLY_BLEEDING_REDUCE ] )
  171. self.InfoList.append( [ localeInfo.DETAILS_59, localeInfo.DETAILS_TOOLTIP_59, 63 ] )
  172. self.InfoList.append( [ localeInfo.DETAILS_60, localeInfo.DETAILS_TOOLTIP_60, 64 ] )
  173. self.InfoList.append( [ localeInfo.DETAILS_61, localeInfo.DETAILS_TOOLTIP_61, 32 ] )
  174. self.InfoList.append( [ localeInfo.DETAILS_62, localeInfo.DETAILS_TOOLTIP_62, 33 ] )
  175. self.InfoList.append( [ localeInfo.DETAILS_63, localeInfo.DETAILS_TOOLTIP_63, 67 ] )
  176. self.InfoList.append( [ localeInfo.DETAILS_64, localeInfo.DETAILS_TOOLTIP_64, 68 ] )
  177. self.InfoList.append( [ localeInfo.DETAILS_65, localeInfo.DETAILS_TOOLTIP_65, 79 ] )
  178. self.InfoList.append( [ localeInfo.DETAILS_66, localeInfo.DETAILS_TOOLTIP_66, 87 ] )
  179. self.InfoList.append( [ localeInfo.DETAILS_67, localeInfo.DETAILS_TOOLTIP_67, 82 ] )
  180. self.InfoList.append( [ localeInfo.DETAILS_68, localeInfo.DETAILS_TOOLTIP_68, 83 ] )
  181. self.InfoList.append( [ localeInfo.DETAILS_69, localeInfo.DETAILS_TOOLTIP_69, 84 ] )
  182. self.InfoList.append( [ localeInfo.DETAILS_70, localeInfo.DETAILS_TOOLTIP_70, 85 ] )
  183. self.InfoList.append( [ "", "", self.CATEGORY_ENDLINE ] )
  184.  
  185. ## MALL
  186. self.InfoList.append( [ localeInfo.DETAILS_CATE_6, "", self.CATEGORY_STARTLINE ] )
  187. self.InfoList.append( [ localeInfo.DETAILS_71, localeInfo.DETAILS_TOOLTIP_71, 114 ] )
  188. self.InfoList.append( [ localeInfo.DETAILS_72, localeInfo.DETAILS_TOOLTIP_72, 115 ] )
  189. self.InfoList.append( [ localeInfo.DETAILS_73, localeInfo.DETAILS_TOOLTIP_73, 116 ] )
  190. self.InfoList.append( [ localeInfo.DETAILS_74, localeInfo.DETAILS_TOOLTIP_74, 117 ] )
  191. self.InfoList.append( [ localeInfo.DETAILS_75, localeInfo.DETAILS_TOOLTIP_75, 118 ] )
  192. #self.InfoList.append( [ "", "", self.CATEGORY_ENDLINE ] )
  193.  
  194. self.Diff = len(self.InfoList) - self.UI_MAX_COUNT #self.Diff = len(self.InfoList) - (self.UI_MAX_VIEW_COUNT ) andern wenn Spezialboni aus soll.
  195. stepSize = 1.0 / self.Diff
  196. self.ScrollBar.SetScrollStep( stepSize )
  197. self.ScollPos = 0
  198. self.RefreshLabel()
  199.  
  200. def Show(self):
  201. ui.ScriptWindow.Show(self)
  202. self.SetTop()
  203.  
  204. def Close(self):
  205. self.Hide()
  206.  
  207. def OnUpdate(self):
  208. self.__Initialize()
  209.  
  210. def AdjustPosition(self, x, y):
  211. self.SetPosition(x + self.Width, y)
  212.  
  213. def OnScroll(self):
  214. self.RefreshLabel()
  215.  
  216. def RefreshLabel(self):
  217. self.ScollPos = int(self.ScrollBar.GetPos() * self.Diff)
  218. self.LabelLineCount = 0
  219. self.startline_endlinecount = 0
  220. for i in xrange(self.UI_MAX_COUNT) :
  221. idx = i + self.ScollPos
  222.  
  223. if idx < len(self.InfoList) :
  224. text = self.InfoList[idx][self.INFO_TEXT]
  225. type = self.InfoList[idx][self.INFO_VALUE]
  226.  
  227. if type == self.CATEGORY_STARTLINE:
  228. self.__LabelTitleLine(i+self.LabelLineCount, text)
  229. self.startline_endlinecount += 1
  230. elif type == self.CATEGORY_ENDLINE:
  231. self.__EmptyLine(i+self.LabelLineCount)
  232. self.startline_endlinecount += 1
  233. else:
  234. value = player.GetStatus(type)
  235. self.__LabelLine(i+self.LabelLineCount, text, value)
  236. if i+self.LabelLineCount < self.UI_MAX_COUNT:
  237. self.labelTextList[i+self.LabelLineCount].SetOverEvent( ui.__mem_func__(self.__ButtonOverIn), self.LabelLineCount + self.startline_endlinecount )
  238. self.labelTextList[i+self.LabelLineCount].SetOverOutEvent( ui.__mem_func__(self.__ButtonOverOut), self.LabelLineCount + self.startline_endlinecount )
  239. self.LabelLineCount += 1
  240. else:
  241. self.__EmptyLine(i+self.LabelLineCount)
  242.  
  243.  
  244. def __LabelTitleLine(self, idx, text):
  245. if(idx < self.UI_MAX_COUNT):
  246. self.labelList[idx].Hide()
  247. self.labelTextList[idx].Hide()
  248. self.horizonBarList[idx].Show()
  249. self.horizonBarNameList[idx].SetText( text )
  250.  
  251. def __EmptyLine(self, idx):
  252. if(idx < self.UI_MAX_COUNT):
  253. self.labelList[idx].Hide()
  254. self.labelTextList[idx].Hide()
  255. self.horizonBarList[idx].Hide()
  256.  
  257. def __LabelLine(self, idx, text, value):
  258. if(idx < self.UI_MAX_COUNT):
  259. self.labelTextList[idx].Show()
  260. self.horizonBarList[idx].Hide()
  261. self.labelList[idx].Hide()
  262.  
  263. self.labelTextList[idx].SetText( text )
  264.  
  265. if(idx+1 < self.UI_MAX_COUNT):
  266. self.labelList[idx+1].Show()
  267. self.horizonBarList[idx+1].Hide()
  268. self.labelTextList[idx+1].Hide()
  269. self.labelValueList[idx+1].SetText( str(value) )
  270.  
  271. def __ButtonOverIn(self, i):
  272. idx = i + self.ScollPos
  273. tooltip = self.InfoList[idx][self.INFO_TOOLTIP]
  274.  
  275. arglen = len(str(tooltip))
  276. pos_x, pos_y = wndMgr.GetMousePosition()
  277.  
  278. self.toolTip.ClearToolTip()
  279. self.toolTip.SetThinBoardSize(11 * arglen)
  280. self.toolTip.SetToolTipPosition(pos_x + 50, pos_y + 50)
  281. self.toolTip.AppendTextLine(tooltip, 0xffffff00)
  282. self.toolTip.Show()
  283.  
  284. def __ButtonOverOut(self, idx):
  285. self.toolTip.Hide()
  286.  
  287. def OnTop(self):
  288. if self.uiCharacterStatus:
  289. self.uiCharacterStatus.SetTop()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement