Advertisement
deadx2

Untitled

Aug 7th, 2017
120
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 18.06 KB | None | 0 0
  1. import uimg, grp, nonplayer, math, constInfo, time, item, uiToolTip, uiCommon, event, chat
  2.  
  3. class AchievementWindow(uimg.ScriptWindow):
  4.  
  5. def __init__(self):
  6. uimg.ScriptWindow.__init__(self)
  7. self.isLoaded = False
  8. self.__LoadWindow()
  9.  
  10. def __LoadWindow(self):
  11. try:
  12. pyScrLoader = uimg.PythonScriptLoader()
  13. pyScrLoader.LoadScriptFile(self, "UIScript/Achievement.py")
  14. except:
  15. import exception
  16. exception.Abort("AchievementWindow.LoadWindow.LoadObject")
  17.  
  18. self.categorys = [
  19. ["|cffe6d0a2Poziom", 1],
  20. ["|cffe6d0a2Twoja Droga", 2],
  21. ["|cffe6d0a2Biolog", 3],
  22. ["|cffe6d0a2Pupile", 4],
  23. ["|cffe6d0a2Wyzwania", 5],
  24. ["|cffe6d0a2Zabójstwa", 6],
  25. ["|cffe6d0a2Inne", 7],
  26. ]
  27.  
  28. self.categorysName = [
  29. ["|cffe6d0a2Podsumowanie", 0],
  30. ["|cffe6d0a2Poziom", 1],
  31. ["|cffe6d0a2Twoja Droga", 2],
  32. ["|cffe6d0a2Biolog", 3],
  33. ["|cffe6d0a2Pupile", 4],
  34. ["|cffe6d0a2Wyzwania", 5],
  35. ["|cffe6d0a2Zabójstwa", 6],
  36. ["|cffe6d0a2Inne", 7],
  37. ]
  38.  
  39. pos_x = [52, (52+110), (52+(110*2)), (52+(110*3)), (52+(110*4)), 52, (52+110)]
  40. pos_y = [90, 90, 90, 90, 90, 120, 120]
  41.  
  42. self.category = 0
  43. self.categoryName = "|cffe6d0a2Podsumowanie"
  44. self.type = 0
  45. self.achievementsPos = 0
  46. self.progress = {}
  47.  
  48. self.BindObjects()
  49. self.BindEvents()
  50. self.isLoaded = True
  51.  
  52. def BindObjects(self):
  53. self.board = self.GetChild("board")
  54.  
  55. self.PokazJebaneSkille = uimg.Button()
  56. self.PokazJebaneSkille.SetParent(self.board)
  57. self.PokazJebaneSkille.SetPosition(250, 40)
  58. self.PokazJebaneSkille.SetUpVisual("illumina/skill_system/btn_skile_01.tga")
  59. self.PokazJebaneSkille.SetOverVisual("illumina/skill_system/btn_skile_02.tga")
  60. self.PokazJebaneSkille.SetDownVisual("illumina/skill_system/btn_skile_03.tga")
  61. # self.PokazJebaneSkille.SetText("Umiejetnosci")
  62. self.PokazJebaneSkille.SetEvent(self.PokazTeSkille)
  63. self.PokazJebaneSkille.Show()
  64.  
  65. self.elements = {
  66. 'windows' : {'home' : self.GetChild("HomeWindow"), 'achievements' : self.GetChild("AchievementsWindow")},
  67. 'objects' : {
  68. 'shopButton' : self.GetChild("AchievementshopButton"),
  69. # 'leftArrow' : self.GetChild("LeftArrow"), 'rightArrow' : self.GetChild("RightArrow"),
  70. 'home' : {
  71. 'box_0' : AchievementBox(), 'box_1' : AchievementBox(), 'box_2' : AchievementBox(), 'box_3' : AchievementBox(),
  72. 'last_box_0' : AchievementLastFinished(), 'last_box_1' : AchievementLastFinished(), 'last_box_2' : AchievementLastFinished(), 'last_box_3' : AchievementLastFinished(), 'last_box_4' : AchievementLastFinished(), 'last_box_5' : AchievementLastFinished(),
  73. 'last_window' : self.GetChild("bgLastAchievements"),
  74. 'upArrow' : self.GetChild("UpArrow"), 'downArrow' : self.GetChild("DownArrow"),
  75. 'upArrowLast' : self.GetChild("LastUpArrow"), 'downArrowLast' : self.GetChild("LastDownArrow"),
  76. },
  77. 'achievements' : {
  78. 'scrollbar' : self.GetChild("ScrollBar"),
  79. 'box_0' : AchievementBox(), 'box_1' : AchievementBox(), 'box_2' : AchievementBox(), 'box_3' : AchievementBox(), 'box_4' : AchievementBox(),
  80. 'btn_type_0' : self.GetChild("Type0Button"), 'btn_type_1' : self.GetChild("Type1Button"), 'btn_type_2' : self.GetChild("Type2Button"),
  81. 'type_1' : [], 'type_2' : [],
  82. },
  83. }
  84. }
  85. self.arrows = {'categorys' : 0, 'global_achievements' : 0, 'last_achievements' : 0}
  86.  
  87. def ThinBoard(self, parent, moveable, x, y, width, heigh, center):
  88. thin = uimg.ThinBoard()
  89. if parent != None:
  90. thin.SetParent(parent)
  91. if moveable == TRUE:
  92. thin.AddFlag('movable')
  93. thin.AddFlag('float')
  94. thin.SetSize(width, heigh)
  95. thin.SetPosition(x, y)
  96. if center == TRUE:
  97. thin.SetCenterPosition()
  98. thin.Show()
  99. return thin
  100.  
  101. def BindEvents(self):
  102. self.globalProgress = AchievementProgressBar()
  103. #self.globalProgress = uimg.ThinBoard()
  104. self.globalProgress.SetParent(self.board)
  105. self.globalProgress.SetSize(440, 30)
  106. self.globalProgress.SetPosition(0, 46+9)
  107. self.globalProgress.SetWindowHorizontalAlignCenter()
  108. self.globalProgress.SetText('|cffa08784Całość wykonanych osiągnięć ')
  109. self.globalProgress.SetProgress(10, 155)
  110. self.globalProgress.Show()
  111.  
  112. self.board.SetCloseEvent(uimg.__mem_func__(self.Close))
  113. self.shopButton = AchievementShopWindow()
  114. self.elements['objects']['shopButton'].SetEvent(uimg.__mem_func__(self.shopButton.Open))
  115.  
  116. # self.elements['objects']['leftArrow'].SetEvent(uimg.__mem_func__(self.__OnClickArrow), 'CATEGORY_LEFT')
  117. # self.elements['objects']['rightArrow'].SetEvent(uimg.__mem_func__(self.__OnClickArrow), 'CATEGORY_RIGHT')
  118.  
  119. self.elements['objects']['home']['upArrow'].SetEvent(uimg.__mem_func__(self.__OnClickArrow), 'GLOBAL_UP')
  120. self.elements['objects']['home']['downArrow'].SetEvent(uimg.__mem_func__(self.__OnClickArrow), 'GLOBAL_DOWN')
  121.  
  122. self.elements['objects']['home']['upArrowLast'].SetEvent(uimg.__mem_func__(self.__OnClickArrow), 'LAST_UP')
  123. self.elements['objects']['home']['downArrowLast'].SetEvent(uimg.__mem_func__(self.__OnClickArrow), 'LAST_DOWN')
  124.  
  125. self.elements['objects']['achievements']['scrollbar'].SetScrollEvent(uimg.__mem_func__(self.__OnScroll))
  126.  
  127. self.elements['objects']['achievements']['box_0'].Open(self.elements['windows']['achievements'], -10, 40)
  128. self.elements['objects']['achievements']['box_1'].Open(self.elements['windows']['achievements'], -10, 40+40+20)
  129. self.elements['objects']['achievements']['box_2'].Open(self.elements['windows']['achievements'], -10, 40+(40+20)*2)
  130. self.elements['objects']['achievements']['box_3'].Open(self.elements['windows']['achievements'], -10, 40+(40+20)*3)
  131. self.elements['objects']['achievements']['box_4'].Open(self.elements['windows']['achievements'], -10, 40+(40+20)*4)
  132.  
  133. self.elements['objects']['home']['box_0'].Open(self.elements['windows']['home'], -120, 40)
  134. self.elements['objects']['home']['box_1'].Open(self.elements['windows']['home'], -120, 40+58+14)
  135. self.elements['objects']['home']['box_2'].Open(self.elements['windows']['home'], -120, 40+(58+14)*2)
  136. self.elements['objects']['home']['box_3'].Open(self.elements['windows']['home'], -120, 40+(58+14)*3)
  137.  
  138. self.elements['objects']['home']['last_box_0'].Open(self.elements['objects']['home']['last_window'], 0, 42)
  139. self.elements['objects']['home']['last_box_1'].Open(self.elements['objects']['home']['last_window'], 0, 42+30+7)
  140. self.elements['objects']['home']['last_box_2'].Open(self.elements['objects']['home']['last_window'], 0, 42+(30+7)*2)
  141. self.elements['objects']['home']['last_box_3'].Open(self.elements['objects']['home']['last_window'], 0, 42+(30+7)*3)
  142. self.elements['objects']['home']['last_box_4'].Open(self.elements['objects']['home']['last_window'], 0, 42+(30+7)*4)
  143. self.elements['objects']['home']['last_box_5'].Open(self.elements['objects']['home']['last_window'], 0, 42+(30+7)*5)
  144.  
  145. for i in xrange(3):
  146. self.elements['objects']['achievements']['btn_type_%d' % i].SetEvent(uimg.__mem_func__(self.SetType), i)
  147.  
  148. def __del__(self):
  149. uimg.ScriptWindow.__del__(self)
  150.  
  151. def SetCategory(self, category):
  152. self.achievementsPos = 0
  153. self.category = category
  154. self.categoryName = self.categorysName[category][0]
  155. self.RefreshCategorys()
  156. if self.category == 0:
  157. self.elements['windows']['achievements'].Hide()
  158. self.elements['windows']['home'].Show()
  159. self.arrows['global_achievements'] = 0
  160. self.RefreshGlobalProgress()
  161. self.RefreshLastFinished()
  162. else:
  163. self.CreateTypes()
  164. self.elements['windows']['home'].Hide()
  165. self.elements['windows']['achievements'].Show()
  166. self.SetType(0)
  167.  
  168. def CreateTypes(self):
  169. self.elements['objects']['achievements']['type_1'] = []
  170. self.elements['objects']['achievements']['type_2'] = []
  171. try:
  172. for i in xrange(len(constInfo.Achievements["achievements"][self.category])):
  173. if constInfo.Achievements["achievements"][self.category][i][0] < constInfo.Achievements["achievements"][self.category][i][1]:
  174. self.elements['objects']['achievements']['type_1'].append(constInfo.Achievements["achievements"][self.category][i])
  175. elif constInfo.Achievements["achievements"][self.category][i][0] >= constInfo.Achievements["achievements"][self.category][i][1]:
  176. self.elements['objects']['achievements']['type_2'].append(constInfo.Achievements["achievements"][self.category][i])
  177. except:
  178. pass
  179.  
  180. def __OnClickArrow(self, arrow):
  181. if arrow == 'CATEGORY_LEFT':
  182. self.arrows['categorys'] -= 1
  183. self.RefreshCategorys()
  184. elif arrow == 'CATEGORY_RIGHT':
  185. self.arrows['categorys'] += 1
  186. self.RefreshCategorys()
  187. elif arrow == 'GLOBAL_UP':
  188. self.arrows['global_achievements'] -= 1
  189. self.RefreshGlobalProgress()
  190. elif arrow == 'GLOBAL_DOWN':
  191. self.arrows['global_achievements'] += 1
  192. self.RefreshGlobalProgress()
  193. elif arrow == 'LAST_UP':
  194. self.arrows['last_achievements'] -= 1
  195. self.RefreshLastFinished()
  196. elif arrow == 'LAST_DOWN':
  197. self.arrows['last_achievements'] += 1
  198. self.RefreshLastFinished()
  199.  
  200. def PokazTeSkille(self):
  201. event.QuestButtonClick(constInfo.Okienko)
  202.  
  203.  
  204. def SetType(self, type):
  205. for i in xrange(3):
  206. self.elements['objects']['achievements']['btn_type_%d' % i].SetUp()
  207. self.elements['objects']['achievements']['btn_type_%d' % type].Down()
  208. self.type = type
  209. self.achievementsPos = 0
  210. self.elements['objects']['achievements']['scrollbar'].SetPos(0)
  211. self.RefreshAchievements()
  212.  
  213. def RefreshGlobalProgress(self):
  214. self.SetGlobalProgress()
  215. try:
  216. for i in xrange(4):
  217. self.elements['objects']['home']['box_%d' % i].Hide()
  218. except:
  219. pass
  220. try:
  221. for i in xrange(min(4, len(self.categorys))):
  222. curCategory = self.categorys[self.arrows['global_achievements'] + i][1]
  223. self.elements['objects']['home']['box_%d' % i].SetContent(0, self.progress['current_category_%d' % curCategory], self.progress['max_category_%d' % curCategory], 0)
  224. self.elements['objects']['home']['box_%d' % i].SetTitle(self.categorys[curCategory-1][0])
  225. self.elements['objects']['home']['box_%d' % i].Show()
  226. except:
  227. pass
  228.  
  229. if (self.categorys > 4):
  230. if (self.arrows['global_achievements'] <= 0):
  231. self.elements['objects']['home']['downArrow'].Show()
  232. self.elements['objects']['home']['upArrow'].Hide()
  233. elif (self.arrows['global_achievements']+4 < len(self.categorys)):
  234. self.elements['objects']['home']['downArrow'].Show()
  235. self.elements['objects']['home']['upArrow'].Show()
  236. elif (self.arrows['global_achievements']+4 >= len(self.categorys)):
  237. self.elements['objects']['home']['downArrow'].Hide()
  238. self.elements['objects']['home']['upArrow'].Show()
  239. else:
  240. self.elements['objects']['home']['upArrow'].Hide()
  241. self.elements['objects']['home']['downArrow'].Hide()
  242.  
  243. def RefreshLastFinished(self):
  244. for i in xrange(6):
  245. self.elements['objects']['home']['last_box_%d' % i].Hide()
  246.  
  247. try:
  248. for i in xrange(min(6, len(constInfo.Achievements['last_achievements']))):
  249. curAchievement = constInfo.Achievements['last_achievements'][(len(constInfo.Achievements['last_achievements'])-1) - (self.arrows['last_achievements'] + i)]
  250. if curAchievement[0] == 2 or curAchievement[0] == 3 or curAchievement[0] == 4:
  251. self.elements['objects']['home']['last_box_%d' % i].SetText(self.GetDescByCat(curAchievement[0]) % (curAchievement[1], nonplayer.GetMonsterName(curAchievement[3])))
  252. else:
  253. self.elements['objects']['home']['last_box_%d' % i].SetText(self.GetDescByCat(curAchievement[0]) % curAchievement[1])
  254. self.elements['objects']['home']['last_box_%d' % i].SetPoints(curAchievement[2])
  255. self.elements['objects']['home']['last_box_%d' % i].Show()
  256. except:
  257. pass
  258.  
  259. if (len(constInfo.Achievements['last_achievements']) > 6):
  260. if (self.arrows['last_achievements'] <= 0):
  261. self.elements['objects']['home']['downArrowLast'].Show()
  262. self.elements['objects']['home']['upArrowLast'].Hide()
  263. elif (self.arrows['last_achievements']+6 < len(constInfo.Achievements['last_achievements'])):
  264. self.elements['objects']['home']['downArrowLast'].Show()
  265. self.elements['objects']['home']['upArrowLast'].Show()
  266. elif (self.arrows['last_achievements']+6 >= len(constInfo.Achievements['last_achievements'])):
  267. self.elements['objects']['home']['downArrowLast'].Hide()
  268. self.elements['objects']['home']['upArrowLast'].Show()
  269. else:
  270. self.elements['objects']['home']['upArrowLast'].Hide()
  271. self.elements['objects']['home']['downArrowLast'].Hide()
  272.  
  273. def RefreshCategorys_new(self):
  274. scrolledId = self.arrows['categorys']
  275. self.elements['objects'] = self.CreateCategoryButton(self.board, 35+18+111, 94, self.arrows['categorys' : 0], self.SetCategory)
  276. self.elements['objects'].Show()
  277.  
  278.  
  279. def RefreshCategorys(self):
  280. try:
  281. for i in xrange(6):
  282. self.elements['objects']['category_%d' % i].Hide()
  283. except:
  284. pass
  285. try:
  286. tmpCategorys = [["|cffe6d0a2Podsumowanie", 0]]
  287. tmpCategorys += self.categorys
  288. for i in xrange(min(6, len(tmpCategorys))):
  289. scrolledId = i + self.arrows['categorys']
  290. # self.elements['objects']['category_%d' % i] = self.CreateCategoryButton(self.board, 35+18+111*i, 94, tmpCategorys[scrolledId][0], self.SetCategory, tmpCategorys[scrolledId][1])
  291. self.elements['objects']['category_%d' % i] = self.CreateCategoryButton(self.board, pos_x[i], pos_y[i], tmpCategorys[scrolledId][0], self.SetCategory, tmpCategorys[scrolledId][1])
  292. # self.elements['objects']['category_%d' % i+1] = self.CreateCategoryButton(self.board, 35+18+111, 94, tmpCategorys[scrolledId][0], self.SetCategory, tmpCategorys[scrolledId][1])
  293. # self.elements['objects']['category_%d' % i+1].Show()
  294. # self.elements['objects']['category_%d' % i+2] = self.CreateCategoryButton(self.board, 18+111, 94, tmpCategorys[scrolledId][0], self.SetCategory, tmpCategorys[scrolledId][1])
  295. # self.elements['objects']['category_%d' % i+2].Show()
  296.  
  297. if self.categoryName == tmpCategorys[scrolledId][0]:
  298. self.elements['objects']['category_%d' % i].Down()
  299. self.elements['objects']['category_%d' % i].Show()
  300. except:
  301. pass
  302. '''
  303. if (len(tmpCategorys) > 5):
  304. if (self.arrows['categorys'] <= 0):
  305. self.elements['objects']['rightArrow'].Show()
  306. self.elements['objects']['leftArrow'].Hide()
  307. elif (self.arrows['categorys']+5 < len(tmpCategorys)):
  308. self.elements['objects']['leftArrow'].Show()
  309. self.elements['objects']['rightArrow'].Show()
  310. elif (self.arrows['categorys']+5 >= len(tmpCategorys)):
  311. self.elements['objects']['rightArrow'].Hide()
  312. self.elements['objects']['leftArrow'].Show()
  313. else:
  314. self.elements['objects']['leftArrow'].Hide()
  315. self.elements['objects']['rightArrow'].Hide()
  316. '''
  317. def RefreshAchievements(self):
  318. self.CreateTypes()
  319. for i in xrange(5):
  320. self.elements['objects']['achievements']['box_%d' % i].Hide()
  321.  
  322. try:
  323. if self.type == 0:
  324. achievements = constInfo.Achievements["achievements"][self.category]
  325. elif self.type == 1:
  326. achievements = self.elements['objects']['achievements']['type_1']
  327. elif self.type == 2:
  328. achievements = self.elements['objects']['achievements']['type_2']
  329.  
  330. for i in xrange(5):
  331. curAchievement = achievements[self.achievementsPos + i]
  332. self.elements['objects']['achievements']['box_%d' % i].SetContent(self.category, curAchievement[0], curAchievement[1], curAchievement[2], curAchievement[3])
  333. self.elements['objects']['achievements']['box_%d' % i].Show()
  334. except:
  335. self.elements['objects']['achievements']['scrollbar'].Hide()
  336. return
  337.  
  338. if len(achievements) <= 5:
  339. self.elements['objects']['achievements']['scrollbar'].Hide()
  340. else:
  341. self.elements['objects']['achievements']['scrollbar'].SetMiddleBarSize(float(5)/float(len(achievements)))
  342. self.elements['objects']['achievements']['scrollbar'].Show()
  343.  
  344. def __OnScroll(self):
  345. try:
  346. if self.type == 0:
  347. achievementslen = len(constInfo.Achievements["achievements"][self.category])
  348. elif self.type == 1:
  349. achievementslen = len(self.elements['objects']['achievements']['type_1'])
  350. elif self.type == 2:
  351. achievementslen = len(self.elements['objects']['achievements']['type_2'])
  352. self.achievementsPos = int(self.elements['objects']['achievements']['scrollbar'].GetPos() * (achievementslen-5))
  353. except:
  354. pass
  355. self.RefreshAchievements()
  356.  
  357. def SetGlobalProgress(self):
  358. Finished,inProgress = 0,0
  359. for i in xrange(len(self.categorys)):
  360. self.progress['current_category_%d' % self.categorys[i][1]] = 0
  361. self.progress['max_category_%d' % self.categorys[i][1]] = 0
  362. for cat in constInfo.Achievements["achievements"]:
  363. for i in xrange(len(constInfo.Achievements["achievements"][cat])):
  364. inProgress += 1
  365. if constInfo.Achievements["achievements"][cat][i][0] >= constInfo.Achievements["achievements"][cat][i][1]:
  366. self.progress['current_category_%d' % cat] += 1
  367. Finished += 1
  368. self.progress['max_category_%d' % cat] = len(constInfo.Achievements["achievements"][cat])
  369. self.globalProgress.SetProgress(Finished, inProgress)
  370.  
  371. def SetAchievementFinisehd(self, category, valueReached, points, mobVnum):
  372. firstLine = 'Has alcanzado un logro:'
  373. if category == 2 or category == 3 or category == 4:
  374. secondLine = self.GetDescByCat(category) % (valueReached, nonplayer.GetMonsterName(mobVnum))
  375. else:
  376. secondLine = self.GetDescByCat(category) % valueReached
  377. thirdLine = '|cffa08784Punkty: %d' % points
  378. self.finishedAchievement = FinishedAchievementDialog()
  379. self.finishedAchievement.SetFirstLineText(firstLine)
  380. self.finishedAchievement.SetSecondLineText(secondLine)
  381. self.finishedAchievement.SetThirdLineText(thirdLine)
  382. self.finishedAchievement.Open(10)
  383.  
  384. def GetDescByCat(self, category):
  385. return ("Subir al nivel %d","Matar a %dx %s","Matar a %dx %s","Romper %dx %s","|cffa08784Jugar |cffa07970%d |cffa08784minutos","Matar %dx jugadores")[category-1]
  386.  
  387. def CreateCategoryButton(self, parent, x, y, text, func, arg):
  388. Button = uimg.RadioButton()
  389. Button.SetParent(parent)
  390. Button.SetUpVisual("illumina/inne/btn_kod2_long_01.tga")
  391. Button.SetOverVisual("illumina/inne/btn_kod2_long_02.tga")
  392. Button.SetDownVisual("illumina/inne/btn_kod2_long_03.tga")
  393. Button.SetText(text)
  394.  
  395. Button.SetEvent(uimg.__mem_func__(func), arg)
  396. Button.SetPosition(x, y)
  397. #Button.Down()
  398. Button.Show()
  399. return Button
  400.  
  401. def Destroy(self):
  402. self.Close()
  403. self.ClearDictionary()
  404.  
  405. def Open(self):
  406. if not self.isLoaded:
  407. self.__LoadWindow()
  408.  
  409. self.SetCategory(0)
  410. self.SetCenterPosition()
  411. self.SetTop()
  412. self.Show()
  413.  
  414. def Close(self):
  415. self.Hide()
  416. return TRUE
  417.  
  418. def OnPressEscapeKey(self):
  419. self.Close()
  420. return TRUE
  421.  
  422. def OnPressExitKey(self):
  423. self.Close()
  424. return TRUE
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement