sprites.js 45 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085
  1. /*
  2. * ===========================================================================
  3. *
  4. * Wolf3D Browser Version GPL Source Code
  5. * Copyright (C) 2012 id Software LLC, a ZeniMax Media company.
  6. *
  7. * This file is part of the Wolf3D Browser Version GPL Source Code ("Wolf3D Browser Source Code").
  8. *
  9. * Wolf3D Browser Source Code is free software: you can redistribute it and/or modify
  10. * it under the terms of the GNU General Public License as published by
  11. * the Free Software Foundation, either version 2 of the License, or
  12. * (at your option) any later version.
  13. *
  14. * Wolf3D Browser Source Code is distributed in the hope that it will be useful,
  15. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  16. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  17. * GNU General Public License for more details.
  18. *
  19. * You should have received a copy of the GNU General Public License version 2
  20. * along with Wolf3D Browser Source Code. If not, see <http://www.gnu.org/licenses/>.
  21. *
  22. * If you have questions concerning this license, you may contact in writing id Software LLC, c/o ZeniMax Media Inc., Suite 120, Rockville, Maryland 20850 USA.
  23. *
  24. * ===========================================================================
  25. */
  26. Wolf.Sprites = (function() {
  27. var spriteTextures = [];
  28. //
  29. // sprite constants
  30. //
  31. var spriteNames = [
  32. "SPR_DEMO",
  33. "SPR_DEATHCAM",
  34. //
  35. // static sprites
  36. //
  37. // 002
  38. "SPR_STAT_0", "SPR_STAT_1","SPR_STAT_2", "SPR_STAT_3",
  39. "SPR_STAT_4", "SPR_STAT_5","SPR_STAT_6", "SPR_STAT_7",
  40. "SPR_STAT_8", "SPR_STAT_9","SPR_STAT_10","SPR_STAT_11",
  41. "SPR_STAT_12","SPR_STAT_13","SPR_STAT_14","SPR_STAT_15",
  42. "SPR_STAT_16","SPR_STAT_17","SPR_STAT_18","SPR_STAT_19",
  43. "SPR_STAT_20","SPR_STAT_21","SPR_STAT_22","SPR_STAT_23",
  44. "SPR_STAT_24","SPR_STAT_25","SPR_STAT_26","SPR_STAT_27",
  45. "SPR_STAT_28","SPR_STAT_29","SPR_STAT_30","SPR_STAT_31",
  46. "SPR_STAT_32","SPR_STAT_33","SPR_STAT_34","SPR_STAT_35",
  47. "SPR_STAT_36","SPR_STAT_37","SPR_STAT_38","SPR_STAT_39",
  48. "SPR_STAT_40","SPR_STAT_41","SPR_STAT_42","SPR_STAT_43",
  49. "SPR_STAT_44","SPR_STAT_45","SPR_STAT_46","SPR_STAT_47",
  50. "SPR_STAT_48","SPR_STAT_49","SPR_STAT_50","SPR_STAT_51",
  51. //
  52. // Guard
  53. //
  54. // 054
  55. "SPR_GRD_S_1","SPR_GRD_S_2","SPR_GRD_S_3","SPR_GRD_S_4",
  56. "SPR_GRD_S_5","SPR_GRD_S_6","SPR_GRD_S_7","SPR_GRD_S_8",
  57. "SPR_GRD_W1_1","SPR_GRD_W1_2","SPR_GRD_W1_3","SPR_GRD_W1_4",
  58. "SPR_GRD_W1_5","SPR_GRD_W1_6","SPR_GRD_W1_7","SPR_GRD_W1_8",
  59. "SPR_GRD_W2_1","SPR_GRD_W2_2","SPR_GRD_W2_3","SPR_GRD_W2_4",
  60. "SPR_GRD_W2_5","SPR_GRD_W2_6","SPR_GRD_W2_7","SPR_GRD_W2_8",
  61. "SPR_GRD_W3_1","SPR_GRD_W3_2","SPR_GRD_W3_3","SPR_GRD_W3_4",
  62. "SPR_GRD_W3_5","SPR_GRD_W3_6","SPR_GRD_W3_7","SPR_GRD_W3_8",
  63. "SPR_GRD_W4_1","SPR_GRD_W4_2","SPR_GRD_W4_3","SPR_GRD_W4_4",
  64. "SPR_GRD_W4_5","SPR_GRD_W4_6","SPR_GRD_W4_7","SPR_GRD_W4_8",
  65. "SPR_GRD_PAIN_1","SPR_GRD_DIE_1","SPR_GRD_DIE_2","SPR_GRD_DIE_3",
  66. "SPR_GRD_PAIN_2","SPR_GRD_DEAD",
  67. "SPR_GRD_SHOOT1","SPR_GRD_SHOOT2","SPR_GRD_SHOOT3",
  68. //
  69. // Dog
  70. //
  71. // 103
  72. "SPR_DOG_W1_1","SPR_DOG_W1_2","SPR_DOG_W1_3","SPR_DOG_W1_4",
  73. "SPR_DOG_W1_5","SPR_DOG_W1_6","SPR_DOG_W1_7","SPR_DOG_W1_8",
  74. "SPR_DOG_W2_1","SPR_DOG_W2_2","SPR_DOG_W2_3","SPR_DOG_W2_4",
  75. "SPR_DOG_W2_5","SPR_DOG_W2_6","SPR_DOG_W2_7","SPR_DOG_W2_8",
  76. "SPR_DOG_W3_1","SPR_DOG_W3_2","SPR_DOG_W3_3","SPR_DOG_W3_4",
  77. "SPR_DOG_W3_5","SPR_DOG_W3_6","SPR_DOG_W3_7","SPR_DOG_W3_8",
  78. "SPR_DOG_W4_1","SPR_DOG_W4_2","SPR_DOG_W4_3","SPR_DOG_W4_4",
  79. "SPR_DOG_W4_5","SPR_DOG_W4_6","SPR_DOG_W4_7","SPR_DOG_W4_8",
  80. "SPR_DOG_DIE_1","SPR_DOG_DIE_2","SPR_DOG_DIE_3","SPR_DOG_DEAD",
  81. "SPR_DOG_JUMP1","SPR_DOG_JUMP2","SPR_DOG_JUMP3",
  82. //
  83. // SS
  84. //
  85. // 142
  86. "SPR_SS_S_1","SPR_SS_S_2","SPR_SS_S_3","SPR_SS_S_4",
  87. "SPR_SS_S_5","SPR_SS_S_6","SPR_SS_S_7","SPR_SS_S_8",
  88. "SPR_SS_W1_1","SPR_SS_W1_2","SPR_SS_W1_3","SPR_SS_W1_4",
  89. "SPR_SS_W1_5","SPR_SS_W1_6","SPR_SS_W1_7","SPR_SS_W1_8",
  90. "SPR_SS_W2_1","SPR_SS_W2_2","SPR_SS_W2_3","SPR_SS_W2_4",
  91. "SPR_SS_W2_5","SPR_SS_W2_6","SPR_SS_W2_7","SPR_SS_W2_8",
  92. "SPR_SS_W3_1","SPR_SS_W3_2","SPR_SS_W3_3","SPR_SS_W3_4",
  93. "SPR_SS_W3_5","SPR_SS_W3_6","SPR_SS_W3_7","SPR_SS_W3_8",
  94. "SPR_SS_W4_1","SPR_SS_W4_2","SPR_SS_W4_3","SPR_SS_W4_4",
  95. "SPR_SS_W4_5","SPR_SS_W4_6","SPR_SS_W4_7","SPR_SS_W4_8",
  96. "SPR_SS_PAIN_1","SPR_SS_DIE_1","SPR_SS_DIE_2","SPR_SS_DIE_3",
  97. "SPR_SS_PAIN_2","SPR_SS_DEAD",
  98. "SPR_SS_SHOOT1","SPR_SS_SHOOT2","SPR_SS_SHOOT3",
  99. //
  100. // Mutant
  101. //
  102. // 191
  103. "SPR_MUT_S_1","SPR_MUT_S_2","SPR_MUT_S_3","SPR_MUT_S_4",
  104. "SPR_MUT_S_5","SPR_MUT_S_6","SPR_MUT_S_7","SPR_MUT_S_8",
  105. "SPR_MUT_W1_1","SPR_MUT_W1_2","SPR_MUT_W1_3","SPR_MUT_W1_4",
  106. "SPR_MUT_W1_5","SPR_MUT_W1_6","SPR_MUT_W1_7","SPR_MUT_W1_8",
  107. "SPR_MUT_W2_1","SPR_MUT_W2_2","SPR_MUT_W2_3","SPR_MUT_W2_4",
  108. "SPR_MUT_W2_5","SPR_MUT_W2_6","SPR_MUT_W2_7","SPR_MUT_W2_8",
  109. "SPR_MUT_W3_1","SPR_MUT_W3_2","SPR_MUT_W3_3","SPR_MUT_W3_4",
  110. "SPR_MUT_W3_5","SPR_MUT_W3_6","SPR_MUT_W3_7","SPR_MUT_W3_8",
  111. "SPR_MUT_W4_1","SPR_MUT_W4_2","SPR_MUT_W4_3","SPR_MUT_W4_4",
  112. "SPR_MUT_W4_5","SPR_MUT_W4_6","SPR_MUT_W4_7","SPR_MUT_W4_8",
  113. "SPR_MUT_PAIN_1","SPR_MUT_DIE_1","SPR_MUT_DIE_2","SPR_MUT_DIE_3",
  114. "SPR_MUT_PAIN_2","SPR_MUT_DIE_4","SPR_MUT_DEAD",
  115. "SPR_MUT_SHOOT1","SPR_MUT_SHOOT2","SPR_MUT_SHOOT3","SPR_MUT_SHOOT4",
  116. //
  117. // Officer
  118. //
  119. // 242
  120. "SPR_OFC_S_1","SPR_OFC_S_2","SPR_OFC_S_3","SPR_OFC_S_4",
  121. "SPR_OFC_S_5","SPR_OFC_S_6","SPR_OFC_S_7","SPR_OFC_S_8",
  122. "SPR_OFC_W1_1","SPR_OFC_W1_2","SPR_OFC_W1_3","SPR_OFC_W1_4",
  123. "SPR_OFC_W1_5","SPR_OFC_W1_6","SPR_OFC_W1_7","SPR_OFC_W1_8",
  124. "SPR_OFC_W2_1","SPR_OFC_W2_2","SPR_OFC_W2_3","SPR_OFC_W2_4",
  125. "SPR_OFC_W2_5","SPR_OFC_W2_6","SPR_OFC_W2_7","SPR_OFC_W2_8",
  126. "SPR_OFC_W3_1","SPR_OFC_W3_2","SPR_OFC_W3_3","SPR_OFC_W3_4",
  127. "SPR_OFC_W3_5","SPR_OFC_W3_6","SPR_OFC_W3_7","SPR_OFC_W3_8",
  128. "SPR_OFC_W4_1","SPR_OFC_W4_2","SPR_OFC_W4_3","SPR_OFC_W4_4",
  129. "SPR_OFC_W4_5","SPR_OFC_W4_6","SPR_OFC_W4_7","SPR_OFC_W4_8",
  130. "SPR_OFC_PAIN_1","SPR_OFC_DIE_1","SPR_OFC_DIE_2","SPR_OFC_DIE_3",
  131. "SPR_OFC_PAIN_2","SPR_OFC_DIE_4","SPR_OFC_DEAD",
  132. "SPR_OFC_SHOOT1","SPR_OFC_SHOOT2","SPR_OFC_SHOOT3",
  133. //
  134. // Ghosts
  135. //
  136. // 292
  137. "SPR_BLINKY_W1","SPR_BLINKY_W2","SPR_PINKY_W1","SPR_PINKY_W2",
  138. "SPR_CLYDE_W1","SPR_CLYDE_W2","SPR_INKY_W1","SPR_INKY_W2",
  139. //
  140. // Hans
  141. //
  142. // 300
  143. "SPR_BOSS_W1","SPR_BOSS_W2","SPR_BOSS_W3","SPR_BOSS_W4",
  144. "SPR_BOSS_SHOOT1","SPR_BOSS_SHOOT2","SPR_BOSS_SHOOT3","SPR_BOSS_DEAD",
  145. "SPR_BOSS_DIE1","SPR_BOSS_DIE2","SPR_BOSS_DIE3",
  146. //
  147. // Schabbs
  148. //
  149. // 311
  150. "SPR_SCHABB_W1","SPR_SCHABB_W2","SPR_SCHABB_W3","SPR_SCHABB_W4",
  151. "SPR_SCHABB_SHOOT1","SPR_SCHABB_SHOOT2",
  152. "SPR_SCHABB_DIE1","SPR_SCHABB_DIE2","SPR_SCHABB_DIE3","SPR_SCHABB_DEAD",
  153. "SPR_HYPO1","SPR_HYPO2","SPR_HYPO3","SPR_HYPO4",
  154. //
  155. // Fake
  156. //
  157. // 325
  158. "SPR_FAKE_W1","SPR_FAKE_W2","SPR_FAKE_W3","SPR_FAKE_W4",
  159. "SPR_FAKE_SHOOT","SPR_FIRE1","SPR_FIRE2",
  160. "SPR_FAKE_DIE1","SPR_FAKE_DIE2","SPR_FAKE_DIE3","SPR_FAKE_DIE4",
  161. "SPR_FAKE_DIE5","SPR_FAKE_DEAD",
  162. //
  163. // Hitler
  164. //
  165. // 338
  166. "SPR_MECHA_W1","SPR_MECHA_W2","SPR_MECHA_W3","SPR_MECHA_W4",
  167. "SPR_MECHA_SHOOT1","SPR_MECHA_SHOOT2","SPR_MECHA_SHOOT3","SPR_MECHA_DEAD",
  168. "SPR_MECHA_DIE1","SPR_MECHA_DIE2","SPR_MECHA_DIE3",
  169. "SPR_HITLER_W1","SPR_HITLER_W2","SPR_HITLER_W3","SPR_HITLER_W4",
  170. "SPR_HITLER_SHOOT1","SPR_HITLER_SHOOT2","SPR_HITLER_SHOOT3","SPR_HITLER_DEAD",
  171. "SPR_HITLER_DIE1","SPR_HITLER_DIE2","SPR_HITLER_DIE3","SPR_HITLER_DIE4",
  172. "SPR_HITLER_DIE5","SPR_HITLER_DIE6","SPR_HITLER_DIE7",
  173. //
  174. // Giftmacher
  175. //
  176. // 364
  177. "SPR_GIFT_W1","SPR_GIFT_W2","SPR_GIFT_W3","SPR_GIFT_W4",
  178. "SPR_GIFT_SHOOT1","SPR_GIFT_SHOOT2",
  179. "SPR_GIFT_DIE1","SPR_GIFT_DIE2","SPR_GIFT_DIE3","SPR_GIFT_DEAD",
  180. //
  181. // Rocket, smoke and small explosion
  182. //
  183. // 374
  184. "SPR_ROCKET_1","SPR_ROCKET_2","SPR_ROCKET_3","SPR_ROCKET_4",
  185. "SPR_ROCKET_5","SPR_ROCKET_6","SPR_ROCKET_7","SPR_ROCKET_8",
  186. "SPR_SMOKE_1","SPR_SMOKE_2","SPR_SMOKE_3","SPR_SMOKE_4",
  187. "SPR_BOOM_1","SPR_BOOM_2","SPR_BOOM_3",
  188. //
  189. // Angel of Death's DeathSparks(tm)
  190. //
  191. // 389
  192. "SPR_HROCKET_1","SPR_HROCKET_2","SPR_HROCKET_3","SPR_HROCKET_4",
  193. "SPR_HROCKET_5","SPR_HROCKET_6","SPR_HROCKET_7","SPR_HROCKET_8",
  194. "SPR_HSMOKE_1","SPR_HSMOKE_2","SPR_HSMOKE_3","SPR_HSMOKE_4",
  195. "SPR_HBOOM_1","SPR_HBOOM_2","SPR_HBOOM_3",
  196. "SPR_SPARK1","SPR_SPARK2","SPR_SPARK3","SPR_SPARK4",
  197. //
  198. // Gretel
  199. //
  200. // 408
  201. "SPR_GRETEL_W1","SPR_GRETEL_W2","SPR_GRETEL_W3","SPR_GRETEL_W4",
  202. "SPR_GRETEL_SHOOT1","SPR_GRETEL_SHOOT2","SPR_GRETEL_SHOOT3","SPR_GRETEL_DEAD",
  203. "SPR_GRETEL_DIE1","SPR_GRETEL_DIE2","SPR_GRETEL_DIE3",
  204. //
  205. // Fat Face
  206. //
  207. // 419
  208. "SPR_FAT_W1","SPR_FAT_W2","SPR_FAT_W3","SPR_FAT_W4",
  209. "SPR_FAT_SHOOT1","SPR_FAT_SHOOT2","SPR_FAT_SHOOT3","SPR_FAT_SHOOT4",
  210. "SPR_FAT_DIE1","SPR_FAT_DIE2","SPR_FAT_DIE3","SPR_FAT_DEAD",
  211. //
  212. // bj
  213. //
  214. // 431
  215. "SPR_BJ_W1","SPR_BJ_W2","SPR_BJ_W3","SPR_BJ_W4",
  216. "SPR_BJ_JUMP1","SPR_BJ_JUMP2","SPR_BJ_JUMP3","SPR_BJ_JUMP4",
  217. //
  218. // SPEAR OF DESTINY
  219. //
  220. //
  221. // Trans Grosse
  222. //
  223. // 439
  224. "SPR_TRANS_W1","SPR_TRANS_W2","SPR_TRANS_W3","SPR_TRANS_W4",
  225. "SPR_TRANS_SHOOT1","SPR_TRANS_SHOOT2","SPR_TRANS_SHOOT3","SPR_TRANS_DEAD",
  226. "SPR_TRANS_DIE1","SPR_TRANS_DIE2","SPR_TRANS_DIE3",
  227. //
  228. // Wilhelm
  229. //
  230. // 450
  231. "SPR_WILL_W1","SPR_WILL_W2","SPR_WILL_W3","SPR_WILL_W4",
  232. "SPR_WILL_SHOOT1","SPR_WILL_SHOOT2","SPR_WILL_SHOOT3","SPR_WILL_SHOOT4",
  233. "SPR_WILL_DIE1","SPR_WILL_DIE2","SPR_WILL_DIE3","SPR_WILL_DEAD",
  234. //
  235. // UberMutant
  236. //
  237. // 462
  238. "SPR_UBER_W1","SPR_UBER_W2","SPR_UBER_W3","SPR_UBER_W4",
  239. "SPR_UBER_SHOOT1","SPR_UBER_SHOOT2","SPR_UBER_SHOOT3","SPR_UBER_SHOOT4",
  240. "SPR_UBER_DIE1","SPR_UBER_DIE2","SPR_UBER_DIE3","SPR_UBER_DIE4",
  241. "SPR_UBER_DEAD",
  242. //
  243. // Death Knight
  244. //
  245. // 475
  246. "SPR_DEATH_W1","SPR_DEATH_W2","SPR_DEATH_W3","SPR_DEATH_W4",
  247. "SPR_DEATH_SHOOT1","SPR_DEATH_SHOOT2","SPR_DEATH_SHOOT3","SPR_DEATH_SHOOT4",
  248. "SPR_DEATH_DIE1","SPR_DEATH_DIE2","SPR_DEATH_DIE3","SPR_DEATH_DIE4",
  249. "SPR_DEATH_DIE5","SPR_DEATH_DIE6","SPR_DEATH_DEAD",
  250. //
  251. // Ghost
  252. //
  253. // 490
  254. "SPR_SPECTRE_W1","SPR_SPECTRE_W2","SPR_SPECTRE_W3","SPR_SPECTRE_W4",
  255. "SPR_SPECTRE_F1","SPR_SPECTRE_F2","SPR_SPECTRE_F3","SPR_SPECTRE_F4",
  256. //
  257. // Angel of Death
  258. //
  259. // 498
  260. "SPR_ANGEL_W1","SPR_ANGEL_W2","SPR_ANGEL_W3","SPR_ANGEL_W4",
  261. "SPR_ANGEL_SHOOT1","SPR_ANGEL_SHOOT2","SPR_ANGEL_TIRED1","SPR_ANGEL_TIRED2",
  262. "SPR_ANGEL_DIE1","SPR_ANGEL_DIE2","SPR_ANGEL_DIE3","SPR_ANGEL_DIE4",
  263. "SPR_ANGEL_DIE5","SPR_ANGEL_DIE6","SPR_ANGEL_DIE7","SPR_ANGEL_DEAD",
  264. //
  265. // player attack frames
  266. //
  267. // 514
  268. "SPR_KNIFEREADY","SPR_KNIFEATK1","SPR_KNIFEATK2","SPR_KNIFEATK3",
  269. "SPR_KNIFEATK4",
  270. "SPR_PISTOLREADY","SPR_PISTOLATK1","SPR_PISTOLATK2","SPR_PISTOLATK3",
  271. "SPR_PISTOLATK4",
  272. "SPR_MACHINEGUNREADY","SPR_MACHINEGUNATK1","SPR_MACHINEGUNATK2","MACHINEGUNATK3",
  273. "SPR_MACHINEGUNATK4",
  274. "SPR_CHAINREADY","SPR_CHAINATK1","SPR_CHAINATK2","SPR_CHAINATK3",
  275. "SPR_CHAINATK4"
  276. ];
  277. var spriteConsts = {};
  278. for (var i=0,n=spriteNames.length;i<n;i++) {
  279. spriteConsts[spriteNames[i]] = i;
  280. }
  281. var sheets = [
  282. {},
  283. {},
  284. {sheet:"002_053.png",size:128,idx:0,num:52},
  285. {sheet:"002_053.png",size:128,idx:1,num:52},
  286. {sheet:"002_053.png",size:128,idx:2,num:52},
  287. {sheet:"002_053.png",size:128,idx:3,num:52},
  288. {sheet:"002_053.png",size:128,idx:4,num:52},
  289. {sheet:"002_053.png",size:128,idx:5,num:52},
  290. {sheet:"002_053.png",size:128,idx:6,num:52},
  291. {sheet:"002_053.png",size:128,idx:7,num:52},
  292. {sheet:"002_053.png",size:128,idx:8,num:52},
  293. {sheet:"002_053.png",size:128,idx:9,num:52},
  294. {sheet:"002_053.png",size:128,idx:10,num:52},
  295. {sheet:"002_053.png",size:128,idx:11,num:52},
  296. {sheet:"002_053.png",size:128,idx:12,num:52},
  297. {sheet:"002_053.png",size:128,idx:13,num:52},
  298. {sheet:"002_053.png",size:128,idx:14,num:52},
  299. {sheet:"002_053.png",size:128,idx:15,num:52},
  300. {sheet:"002_053.png",size:128,idx:16,num:52},
  301. {sheet:"002_053.png",size:128,idx:17,num:52},
  302. {sheet:"002_053.png",size:128,idx:18,num:52},
  303. {sheet:"002_053.png",size:128,idx:19,num:52},
  304. {sheet:"002_053.png",size:128,idx:20,num:52},
  305. {sheet:"002_053.png",size:128,idx:21,num:52},
  306. {sheet:"002_053.png",size:128,idx:22,num:52},
  307. {sheet:"002_053.png",size:128,idx:23,num:52},
  308. {sheet:"002_053.png",size:128,idx:24,num:52},
  309. {sheet:"002_053.png",size:128,idx:25,num:52},
  310. {sheet:"002_053.png",size:128,idx:26,num:52},
  311. {sheet:"002_053.png",size:128,idx:27,num:52},
  312. {sheet:"002_053.png",size:128,idx:28,num:52},
  313. {sheet:"002_053.png",size:128,idx:29,num:52},
  314. {sheet:"002_053.png",size:128,idx:30,num:52},
  315. {sheet:"002_053.png",size:128,idx:31,num:52},
  316. {sheet:"002_053.png",size:128,idx:32,num:52},
  317. {sheet:"002_053.png",size:128,idx:33,num:52},
  318. {sheet:"002_053.png",size:128,idx:34,num:52},
  319. {sheet:"002_053.png",size:128,idx:35,num:52},
  320. {sheet:"002_053.png",size:128,idx:36,num:52},
  321. {sheet:"002_053.png",size:128,idx:37,num:52},
  322. {sheet:"002_053.png",size:128,idx:38,num:52},
  323. {sheet:"002_053.png",size:128,idx:39,num:52},
  324. {sheet:"002_053.png",size:128,idx:40,num:52},
  325. {sheet:"002_053.png",size:128,idx:41,num:52},
  326. {sheet:"002_053.png",size:128,idx:42,num:52},
  327. {sheet:"002_053.png",size:128,idx:43,num:52},
  328. {sheet:"002_053.png",size:128,idx:44,num:52},
  329. {sheet:"002_053.png",size:128,idx:45,num:52},
  330. {sheet:"002_053.png",size:128,idx:46,num:52},
  331. {sheet:"002_053.png",size:128,idx:47,num:52},
  332. {sheet:"002_053.png",size:128,idx:48,num:52},
  333. {sheet:"002_053.png",size:128,idx:49,num:52},
  334. {sheet:"002_053.png",size:128,idx:50,num:52},
  335. {sheet:"002_053.png",size:128,idx:51,num:52},
  336. {sheet:"054_102.png",size:128,idx:0,num:49},
  337. {sheet:"054_102.png",size:128,idx:1,num:49},
  338. {sheet:"054_102.png",size:128,idx:2,num:49},
  339. {sheet:"054_102.png",size:128,idx:3,num:49},
  340. {sheet:"054_102.png",size:128,idx:4,num:49},
  341. {sheet:"054_102.png",size:128,idx:5,num:49},
  342. {sheet:"054_102.png",size:128,idx:6,num:49},
  343. {sheet:"054_102.png",size:128,idx:7,num:49},
  344. {sheet:"054_102.png",size:128,idx:8,num:49},
  345. {sheet:"054_102.png",size:128,idx:9,num:49},
  346. {sheet:"054_102.png",size:128,idx:10,num:49},
  347. {sheet:"054_102.png",size:128,idx:11,num:49},
  348. {sheet:"054_102.png",size:128,idx:12,num:49},
  349. {sheet:"054_102.png",size:128,idx:13,num:49},
  350. {sheet:"054_102.png",size:128,idx:14,num:49},
  351. {sheet:"054_102.png",size:128,idx:15,num:49},
  352. {sheet:"054_102.png",size:128,idx:16,num:49},
  353. {sheet:"054_102.png",size:128,idx:17,num:49},
  354. {sheet:"054_102.png",size:128,idx:18,num:49},
  355. {sheet:"054_102.png",size:128,idx:19,num:49},
  356. {sheet:"054_102.png",size:128,idx:20,num:49},
  357. {sheet:"054_102.png",size:128,idx:21,num:49},
  358. {sheet:"054_102.png",size:128,idx:22,num:49},
  359. {sheet:"054_102.png",size:128,idx:23,num:49},
  360. {sheet:"054_102.png",size:128,idx:24,num:49},
  361. {sheet:"054_102.png",size:128,idx:25,num:49},
  362. {sheet:"054_102.png",size:128,idx:26,num:49},
  363. {sheet:"054_102.png",size:128,idx:27,num:49},
  364. {sheet:"054_102.png",size:128,idx:28,num:49},
  365. {sheet:"054_102.png",size:128,idx:29,num:49},
  366. {sheet:"054_102.png",size:128,idx:30,num:49},
  367. {sheet:"054_102.png",size:128,idx:31,num:49},
  368. {sheet:"054_102.png",size:128,idx:32,num:49},
  369. {sheet:"054_102.png",size:128,idx:33,num:49},
  370. {sheet:"054_102.png",size:128,idx:34,num:49},
  371. {sheet:"054_102.png",size:128,idx:35,num:49},
  372. {sheet:"054_102.png",size:128,idx:36,num:49},
  373. {sheet:"054_102.png",size:128,idx:37,num:49},
  374. {sheet:"054_102.png",size:128,idx:38,num:49},
  375. {sheet:"054_102.png",size:128,idx:39,num:49},
  376. {sheet:"054_102.png",size:128,idx:40,num:49},
  377. {sheet:"054_102.png",size:128,idx:41,num:49},
  378. {sheet:"054_102.png",size:128,idx:42,num:49},
  379. {sheet:"054_102.png",size:128,idx:43,num:49},
  380. {sheet:"054_102.png",size:128,idx:44,num:49},
  381. {sheet:"054_102.png",size:128,idx:45,num:49},
  382. {sheet:"054_102.png",size:128,idx:46,num:49},
  383. {sheet:"054_102.png",size:128,idx:47,num:49},
  384. {sheet:"054_102.png",size:128,idx:48,num:49},
  385. {sheet:"103_141.png",size:64,idx:0,num:39},
  386. {sheet:"103_141.png",size:64,idx:1,num:39},
  387. {sheet:"103_141.png",size:64,idx:2,num:39},
  388. {sheet:"103_141.png",size:64,idx:3,num:39},
  389. {sheet:"103_141.png",size:64,idx:4,num:39},
  390. {sheet:"103_141.png",size:64,idx:5,num:39},
  391. {sheet:"103_141.png",size:64,idx:6,num:39},
  392. {sheet:"103_141.png",size:64,idx:7,num:39},
  393. {sheet:"103_141.png",size:64,idx:8,num:39},
  394. {sheet:"103_141.png",size:64,idx:9,num:39},
  395. {sheet:"103_141.png",size:64,idx:10,num:39},
  396. {sheet:"103_141.png",size:64,idx:11,num:39},
  397. {sheet:"103_141.png",size:64,idx:12,num:39},
  398. {sheet:"103_141.png",size:64,idx:13,num:39},
  399. {sheet:"103_141.png",size:64,idx:14,num:39},
  400. {sheet:"103_141.png",size:64,idx:15,num:39},
  401. {sheet:"103_141.png",size:64,idx:16,num:39},
  402. {sheet:"103_141.png",size:64,idx:17,num:39},
  403. {sheet:"103_141.png",size:64,idx:18,num:39},
  404. {sheet:"103_141.png",size:64,idx:19,num:39},
  405. {sheet:"103_141.png",size:64,idx:20,num:39},
  406. {sheet:"103_141.png",size:64,idx:21,num:39},
  407. {sheet:"103_141.png",size:64,idx:22,num:39},
  408. {sheet:"103_141.png",size:64,idx:23,num:39},
  409. {sheet:"103_141.png",size:64,idx:24,num:39},
  410. {sheet:"103_141.png",size:64,idx:25,num:39},
  411. {sheet:"103_141.png",size:64,idx:26,num:39},
  412. {sheet:"103_141.png",size:64,idx:27,num:39},
  413. {sheet:"103_141.png",size:64,idx:28,num:39},
  414. {sheet:"103_141.png",size:64,idx:29,num:39},
  415. {sheet:"103_141.png",size:64,idx:30,num:39},
  416. {sheet:"103_141.png",size:64,idx:31,num:39},
  417. {sheet:"103_141.png",size:64,idx:32,num:39},
  418. {sheet:"103_141.png",size:64,idx:33,num:39},
  419. {sheet:"103_141.png",size:64,idx:34,num:39},
  420. {sheet:"103_141.png",size:64,idx:35,num:39},
  421. {sheet:"103_141.png",size:64,idx:36,num:39},
  422. {sheet:"103_141.png",size:64,idx:37,num:39},
  423. {sheet:"103_141.png",size:64,idx:38,num:39},
  424. {sheet:"142_190.png",size:64,idx:0,num:49},
  425. {sheet:"142_190.png",size:64,idx:1,num:49},
  426. {sheet:"142_190.png",size:64,idx:2,num:49},
  427. {sheet:"142_190.png",size:64,idx:3,num:49},
  428. {sheet:"142_190.png",size:64,idx:4,num:49},
  429. {sheet:"142_190.png",size:64,idx:5,num:49},
  430. {sheet:"142_190.png",size:64,idx:6,num:49},
  431. {sheet:"142_190.png",size:64,idx:7,num:49},
  432. {sheet:"142_190.png",size:64,idx:8,num:49},
  433. {sheet:"142_190.png",size:64,idx:9,num:49},
  434. {sheet:"142_190.png",size:64,idx:10,num:49},
  435. {sheet:"142_190.png",size:64,idx:11,num:49},
  436. {sheet:"142_190.png",size:64,idx:12,num:49},
  437. {sheet:"142_190.png",size:64,idx:13,num:49},
  438. {sheet:"142_190.png",size:64,idx:14,num:49},
  439. {sheet:"142_190.png",size:64,idx:15,num:49},
  440. {sheet:"142_190.png",size:64,idx:16,num:49},
  441. {sheet:"142_190.png",size:64,idx:17,num:49},
  442. {sheet:"142_190.png",size:64,idx:18,num:49},
  443. {sheet:"142_190.png",size:64,idx:19,num:49},
  444. {sheet:"142_190.png",size:64,idx:20,num:49},
  445. {sheet:"142_190.png",size:64,idx:21,num:49},
  446. {sheet:"142_190.png",size:64,idx:22,num:49},
  447. {sheet:"142_190.png",size:64,idx:23,num:49},
  448. {sheet:"142_190.png",size:64,idx:24,num:49},
  449. {sheet:"142_190.png",size:64,idx:25,num:49},
  450. {sheet:"142_190.png",size:64,idx:26,num:49},
  451. {sheet:"142_190.png",size:64,idx:27,num:49},
  452. {sheet:"142_190.png",size:64,idx:28,num:49},
  453. {sheet:"142_190.png",size:64,idx:29,num:49},
  454. {sheet:"142_190.png",size:64,idx:30,num:49},
  455. {sheet:"142_190.png",size:64,idx:31,num:49},
  456. {sheet:"142_190.png",size:64,idx:32,num:49},
  457. {sheet:"142_190.png",size:64,idx:33,num:49},
  458. {sheet:"142_190.png",size:64,idx:34,num:49},
  459. {sheet:"142_190.png",size:64,idx:35,num:49},
  460. {sheet:"142_190.png",size:64,idx:36,num:49},
  461. {sheet:"142_190.png",size:64,idx:37,num:49},
  462. {sheet:"142_190.png",size:64,idx:38,num:49},
  463. {sheet:"142_190.png",size:64,idx:39,num:49},
  464. {sheet:"142_190.png",size:64,idx:40,num:49},
  465. {sheet:"142_190.png",size:64,idx:41,num:49},
  466. {sheet:"142_190.png",size:64,idx:42,num:49},
  467. {sheet:"142_190.png",size:64,idx:43,num:49},
  468. {sheet:"142_190.png",size:64,idx:44,num:49},
  469. {sheet:"142_190.png",size:64,idx:45,num:49},
  470. {sheet:"142_190.png",size:64,idx:46,num:49},
  471. {sheet:"142_190.png",size:64,idx:47,num:49},
  472. {sheet:"142_190.png",size:64,idx:48,num:49},
  473. {sheet:"191_241.png",size:64,idx:0,num:51},
  474. {sheet:"191_241.png",size:64,idx:1,num:51},
  475. {sheet:"191_241.png",size:64,idx:2,num:51},
  476. {sheet:"191_241.png",size:64,idx:3,num:51},
  477. {sheet:"191_241.png",size:64,idx:4,num:51},
  478. {sheet:"191_241.png",size:64,idx:5,num:51},
  479. {sheet:"191_241.png",size:64,idx:6,num:51},
  480. {sheet:"191_241.png",size:64,idx:7,num:51},
  481. {sheet:"191_241.png",size:64,idx:8,num:51},
  482. {sheet:"191_241.png",size:64,idx:9,num:51},
  483. {sheet:"191_241.png",size:64,idx:10,num:51},
  484. {sheet:"191_241.png",size:64,idx:11,num:51},
  485. {sheet:"191_241.png",size:64,idx:12,num:51},
  486. {sheet:"191_241.png",size:64,idx:13,num:51},
  487. {sheet:"191_241.png",size:64,idx:14,num:51},
  488. {sheet:"191_241.png",size:64,idx:15,num:51},
  489. {sheet:"191_241.png",size:64,idx:16,num:51},
  490. {sheet:"191_241.png",size:64,idx:17,num:51},
  491. {sheet:"191_241.png",size:64,idx:18,num:51},
  492. {sheet:"191_241.png",size:64,idx:19,num:51},
  493. {sheet:"191_241.png",size:64,idx:20,num:51},
  494. {sheet:"191_241.png",size:64,idx:21,num:51},
  495. {sheet:"191_241.png",size:64,idx:22,num:51},
  496. {sheet:"191_241.png",size:64,idx:23,num:51},
  497. {sheet:"191_241.png",size:64,idx:24,num:51},
  498. {sheet:"191_241.png",size:64,idx:25,num:51},
  499. {sheet:"191_241.png",size:64,idx:26,num:51},
  500. {sheet:"191_241.png",size:64,idx:27,num:51},
  501. {sheet:"191_241.png",size:64,idx:28,num:51},
  502. {sheet:"191_241.png",size:64,idx:29,num:51},
  503. {sheet:"191_241.png",size:64,idx:30,num:51},
  504. {sheet:"191_241.png",size:64,idx:31,num:51},
  505. {sheet:"191_241.png",size:64,idx:32,num:51},
  506. {sheet:"191_241.png",size:64,idx:33,num:51},
  507. {sheet:"191_241.png",size:64,idx:34,num:51},
  508. {sheet:"191_241.png",size:64,idx:35,num:51},
  509. {sheet:"191_241.png",size:64,idx:36,num:51},
  510. {sheet:"191_241.png",size:64,idx:37,num:51},
  511. {sheet:"191_241.png",size:64,idx:38,num:51},
  512. {sheet:"191_241.png",size:64,idx:39,num:51},
  513. {sheet:"191_241.png",size:64,idx:40,num:51},
  514. {sheet:"191_241.png",size:64,idx:41,num:51},
  515. {sheet:"191_241.png",size:64,idx:42,num:51},
  516. {sheet:"191_241.png",size:64,idx:43,num:51},
  517. {sheet:"191_241.png",size:64,idx:44,num:51},
  518. {sheet:"191_241.png",size:64,idx:45,num:51},
  519. {sheet:"191_241.png",size:64,idx:46,num:51},
  520. {sheet:"191_241.png",size:64,idx:47,num:51},
  521. {sheet:"191_241.png",size:64,idx:48,num:51},
  522. {sheet:"191_241.png",size:64,idx:49,num:51},
  523. {sheet:"191_241.png",size:64,idx:50,num:51},
  524. {sheet:"242_291.png",size:64,idx:0,num:50},
  525. {sheet:"242_291.png",size:64,idx:1,num:50},
  526. {sheet:"242_291.png",size:64,idx:2,num:50},
  527. {sheet:"242_291.png",size:64,idx:3,num:50},
  528. {sheet:"242_291.png",size:64,idx:4,num:50},
  529. {sheet:"242_291.png",size:64,idx:5,num:50},
  530. {sheet:"242_291.png",size:64,idx:6,num:50},
  531. {sheet:"242_291.png",size:64,idx:7,num:50},
  532. {sheet:"242_291.png",size:64,idx:8,num:50},
  533. {sheet:"242_291.png",size:64,idx:9,num:50},
  534. {sheet:"242_291.png",size:64,idx:10,num:50},
  535. {sheet:"242_291.png",size:64,idx:11,num:50},
  536. {sheet:"242_291.png",size:64,idx:12,num:50},
  537. {sheet:"242_291.png",size:64,idx:13,num:50},
  538. {sheet:"242_291.png",size:64,idx:14,num:50},
  539. {sheet:"242_291.png",size:64,idx:15,num:50},
  540. {sheet:"242_291.png",size:64,idx:16,num:50},
  541. {sheet:"242_291.png",size:64,idx:17,num:50},
  542. {sheet:"242_291.png",size:64,idx:18,num:50},
  543. {sheet:"242_291.png",size:64,idx:19,num:50},
  544. {sheet:"242_291.png",size:64,idx:20,num:50},
  545. {sheet:"242_291.png",size:64,idx:21,num:50},
  546. {sheet:"242_291.png",size:64,idx:22,num:50},
  547. {sheet:"242_291.png",size:64,idx:23,num:50},
  548. {sheet:"242_291.png",size:64,idx:24,num:50},
  549. {sheet:"242_291.png",size:64,idx:25,num:50},
  550. {sheet:"242_291.png",size:64,idx:26,num:50},
  551. {sheet:"242_291.png",size:64,idx:27,num:50},
  552. {sheet:"242_291.png",size:64,idx:28,num:50},
  553. {sheet:"242_291.png",size:64,idx:29,num:50},
  554. {sheet:"242_291.png",size:64,idx:30,num:50},
  555. {sheet:"242_291.png",size:64,idx:31,num:50},
  556. {sheet:"242_291.png",size:64,idx:32,num:50},
  557. {sheet:"242_291.png",size:64,idx:33,num:50},
  558. {sheet:"242_291.png",size:64,idx:34,num:50},
  559. {sheet:"242_291.png",size:64,idx:35,num:50},
  560. {sheet:"242_291.png",size:64,idx:36,num:50},
  561. {sheet:"242_291.png",size:64,idx:37,num:50},
  562. {sheet:"242_291.png",size:64,idx:38,num:50},
  563. {sheet:"242_291.png",size:64,idx:39,num:50},
  564. {sheet:"242_291.png",size:64,idx:40,num:50},
  565. {sheet:"242_291.png",size:64,idx:41,num:50},
  566. {sheet:"242_291.png",size:64,idx:42,num:50},
  567. {sheet:"242_291.png",size:64,idx:43,num:50},
  568. {sheet:"242_291.png",size:64,idx:44,num:50},
  569. {sheet:"242_291.png",size:64,idx:45,num:50},
  570. {sheet:"242_291.png",size:64,idx:46,num:50},
  571. {sheet:"242_291.png",size:64,idx:47,num:50},
  572. {sheet:"242_291.png",size:64,idx:48,num:50},
  573. {sheet:"242_291.png",size:64,idx:49,num:50},
  574. {sheet:"292_299.png",size:64,idx:0,num:8},
  575. {sheet:"292_299.png",size:64,idx:1,num:8},
  576. {sheet:"292_299.png",size:64,idx:2,num:8},
  577. {sheet:"292_299.png",size:64,idx:3,num:8},
  578. {sheet:"292_299.png",size:64,idx:4,num:8},
  579. {sheet:"292_299.png",size:64,idx:5,num:8},
  580. {sheet:"292_299.png",size:64,idx:6,num:8},
  581. {sheet:"292_299.png",size:64,idx:7,num:8},
  582. {sheet:"300_310.png",size:64,idx:0,num:11},
  583. {sheet:"300_310.png",size:64,idx:1,num:11},
  584. {sheet:"300_310.png",size:64,idx:2,num:11},
  585. {sheet:"300_310.png",size:64,idx:3,num:11},
  586. {sheet:"300_310.png",size:64,idx:4,num:11},
  587. {sheet:"300_310.png",size:64,idx:5,num:11},
  588. {sheet:"300_310.png",size:64,idx:6,num:11},
  589. {sheet:"300_310.png",size:64,idx:7,num:11},
  590. {sheet:"300_310.png",size:64,idx:8,num:11},
  591. {sheet:"300_310.png",size:64,idx:9,num:11},
  592. {sheet:"300_310.png",size:64,idx:10,num:11},
  593. {sheet:"311_324.png",size:64,idx:0,num:14},
  594. {sheet:"311_324.png",size:64,idx:1,num:14},
  595. {sheet:"311_324.png",size:64,idx:2,num:14},
  596. {sheet:"311_324.png",size:64,idx:3,num:14},
  597. {sheet:"311_324.png",size:64,idx:4,num:14},
  598. {sheet:"311_324.png",size:64,idx:5,num:14},
  599. {sheet:"311_324.png",size:64,idx:6,num:14},
  600. {sheet:"311_324.png",size:64,idx:7,num:14},
  601. {sheet:"311_324.png",size:64,idx:8,num:14},
  602. {sheet:"311_324.png",size:64,idx:9,num:14},
  603. {sheet:"311_324.png",size:64,idx:10,num:14},
  604. {sheet:"311_324.png",size:64,idx:11,num:14},
  605. {sheet:"311_324.png",size:64,idx:12,num:14},
  606. {sheet:"311_324.png",size:64,idx:13,num:14},
  607. {sheet:"325_337.png",size:64,idx:0,num:13},
  608. {sheet:"325_337.png",size:64,idx:1,num:13},
  609. {sheet:"325_337.png",size:64,idx:2,num:13},
  610. {sheet:"325_337.png",size:64,idx:3,num:13},
  611. {sheet:"325_337.png",size:64,idx:4,num:13},
  612. {sheet:"325_337.png",size:64,idx:5,num:13},
  613. {sheet:"325_337.png",size:64,idx:6,num:13},
  614. {sheet:"325_337.png",size:64,idx:7,num:13},
  615. {sheet:"325_337.png",size:64,idx:8,num:13},
  616. {sheet:"325_337.png",size:64,idx:9,num:13},
  617. {sheet:"325_337.png",size:64,idx:10,num:13},
  618. {sheet:"325_337.png",size:64,idx:11,num:13},
  619. {sheet:"325_337.png",size:64,idx:12,num:13},
  620. {sheet:"338_363.png",size:64,idx:0,num:26},
  621. {sheet:"338_363.png",size:64,idx:1,num:26},
  622. {sheet:"338_363.png",size:64,idx:2,num:26},
  623. {sheet:"338_363.png",size:64,idx:3,num:26},
  624. {sheet:"338_363.png",size:64,idx:4,num:26},
  625. {sheet:"338_363.png",size:64,idx:5,num:26},
  626. {sheet:"338_363.png",size:64,idx:6,num:26},
  627. {sheet:"338_363.png",size:64,idx:7,num:26},
  628. {sheet:"338_363.png",size:64,idx:8,num:26},
  629. {sheet:"338_363.png",size:64,idx:9,num:26},
  630. {sheet:"338_363.png",size:64,idx:10,num:26},
  631. {sheet:"338_363.png",size:64,idx:11,num:26},
  632. {sheet:"338_363.png",size:64,idx:12,num:26},
  633. {sheet:"338_363.png",size:64,idx:13,num:26},
  634. {sheet:"338_363.png",size:64,idx:14,num:26},
  635. {sheet:"338_363.png",size:64,idx:15,num:26},
  636. {sheet:"338_363.png",size:64,idx:16,num:26},
  637. {sheet:"338_363.png",size:64,idx:17,num:26},
  638. {sheet:"338_363.png",size:64,idx:18,num:26},
  639. {sheet:"338_363.png",size:64,idx:19,num:26},
  640. {sheet:"338_363.png",size:64,idx:20,num:26},
  641. {sheet:"338_363.png",size:64,idx:21,num:26},
  642. {sheet:"338_363.png",size:64,idx:22,num:26},
  643. {sheet:"338_363.png",size:64,idx:23,num:26},
  644. {sheet:"338_363.png",size:64,idx:24,num:26},
  645. {sheet:"338_363.png",size:64,idx:25,num:26},
  646. {sheet:"364_373.png",size:64,idx:0,num:10},
  647. {sheet:"364_373.png",size:64,idx:1,num:10},
  648. {sheet:"364_373.png",size:64,idx:2,num:10},
  649. {sheet:"364_373.png",size:64,idx:3,num:10},
  650. {sheet:"364_373.png",size:64,idx:4,num:10},
  651. {sheet:"364_373.png",size:64,idx:5,num:10},
  652. {sheet:"364_373.png",size:64,idx:6,num:10},
  653. {sheet:"364_373.png",size:64,idx:7,num:10},
  654. {sheet:"364_373.png",size:64,idx:8,num:10},
  655. {sheet:"364_373.png",size:64,idx:9,num:10},
  656. {sheet:"374_388.png",size:64,idx:0,num:15},
  657. {sheet:"374_388.png",size:64,idx:1,num:15},
  658. {sheet:"374_388.png",size:64,idx:2,num:15},
  659. {sheet:"374_388.png",size:64,idx:3,num:15},
  660. {sheet:"374_388.png",size:64,idx:4,num:15},
  661. {sheet:"374_388.png",size:64,idx:5,num:15},
  662. {sheet:"374_388.png",size:64,idx:6,num:15},
  663. {sheet:"374_388.png",size:64,idx:7,num:15},
  664. {sheet:"374_388.png",size:64,idx:8,num:15},
  665. {sheet:"374_388.png",size:64,idx:9,num:15},
  666. {sheet:"374_388.png",size:64,idx:10,num:15},
  667. {sheet:"374_388.png",size:64,idx:11,num:15},
  668. {sheet:"374_388.png",size:64,idx:12,num:15},
  669. {sheet:"374_388.png",size:64,idx:13,num:15},
  670. {sheet:"374_388.png",size:64,idx:14,num:15},
  671. {sheet:"389_407.png",size:64,idx:0,num:19},
  672. {sheet:"389_407.png",size:64,idx:1,num:19},
  673. {sheet:"389_407.png",size:64,idx:2,num:19},
  674. {sheet:"389_407.png",size:64,idx:3,num:19},
  675. {sheet:"389_407.png",size:64,idx:4,num:19},
  676. {sheet:"389_407.png",size:64,idx:5,num:19},
  677. {sheet:"389_407.png",size:64,idx:6,num:19},
  678. {sheet:"389_407.png",size:64,idx:7,num:19},
  679. {sheet:"389_407.png",size:64,idx:8,num:19},
  680. {sheet:"389_407.png",size:64,idx:9,num:19},
  681. {sheet:"389_407.png",size:64,idx:10,num:19},
  682. {sheet:"389_407.png",size:64,idx:11,num:19},
  683. {sheet:"389_407.png",size:64,idx:12,num:19},
  684. {sheet:"389_407.png",size:64,idx:13,num:19},
  685. {sheet:"389_407.png",size:64,idx:14,num:19},
  686. {sheet:"389_407.png",size:64,idx:15,num:19},
  687. {sheet:"389_407.png",size:64,idx:16,num:19},
  688. {sheet:"389_407.png",size:64,idx:17,num:19},
  689. {sheet:"389_407.png",size:64,idx:18,num:19},
  690. {sheet:"408_418.png",size:64,idx:0,num:11},
  691. {sheet:"408_418.png",size:64,idx:1,num:11},
  692. {sheet:"408_418.png",size:64,idx:2,num:11},
  693. {sheet:"408_418.png",size:64,idx:3,num:11},
  694. {sheet:"408_418.png",size:64,idx:4,num:11},
  695. {sheet:"408_418.png",size:64,idx:5,num:11},
  696. {sheet:"408_418.png",size:64,idx:6,num:11},
  697. {sheet:"408_418.png",size:64,idx:7,num:11},
  698. {sheet:"408_418.png",size:64,idx:8,num:11},
  699. {sheet:"408_418.png",size:64,idx:9,num:11},
  700. {sheet:"408_418.png",size:64,idx:10,num:11},
  701. {sheet:"419_430.png",size:64,idx:0,num:12},
  702. {sheet:"419_430.png",size:64,idx:1,num:12},
  703. {sheet:"419_430.png",size:64,idx:2,num:12},
  704. {sheet:"419_430.png",size:64,idx:3,num:12},
  705. {sheet:"419_430.png",size:64,idx:4,num:12},
  706. {sheet:"419_430.png",size:64,idx:5,num:12},
  707. {sheet:"419_430.png",size:64,idx:6,num:12},
  708. {sheet:"419_430.png",size:64,idx:7,num:12},
  709. {sheet:"419_430.png",size:64,idx:8,num:12},
  710. {sheet:"419_430.png",size:64,idx:9,num:12},
  711. {sheet:"419_430.png",size:64,idx:10,num:12},
  712. {sheet:"419_430.png",size:64,idx:11,num:12},
  713. {sheet:"431_438.png",size:64,idx:0,num:8},
  714. {sheet:"431_438.png",size:64,idx:1,num:8},
  715. {sheet:"431_438.png",size:64,idx:2,num:8},
  716. {sheet:"431_438.png",size:64,idx:3,num:8},
  717. {sheet:"431_438.png",size:64,idx:4,num:8},
  718. {sheet:"431_438.png",size:64,idx:5,num:8},
  719. {sheet:"431_438.png",size:64,idx:6,num:8},
  720. {sheet:"431_438.png",size:64,idx:7,num:8},
  721. {sheet:"439_449.png",size:64,idx:0,num:11},
  722. {sheet:"439_449.png",size:64,idx:1,num:11},
  723. {sheet:"439_449.png",size:64,idx:2,num:11},
  724. {sheet:"439_449.png",size:64,idx:3,num:11},
  725. {sheet:"439_449.png",size:64,idx:4,num:11},
  726. {sheet:"439_449.png",size:64,idx:5,num:11},
  727. {sheet:"439_449.png",size:64,idx:6,num:11},
  728. {sheet:"439_449.png",size:64,idx:7,num:11},
  729. {sheet:"439_449.png",size:64,idx:8,num:11},
  730. {sheet:"439_449.png",size:64,idx:9,num:11},
  731. {sheet:"439_449.png",size:64,idx:10,num:11},
  732. {sheet:"450_461.png",size:64,idx:0,num:12},
  733. {sheet:"450_461.png",size:64,idx:1,num:12},
  734. {sheet:"450_461.png",size:64,idx:2,num:12},
  735. {sheet:"450_461.png",size:64,idx:3,num:12},
  736. {sheet:"450_461.png",size:64,idx:4,num:12},
  737. {sheet:"450_461.png",size:64,idx:5,num:12},
  738. {sheet:"450_461.png",size:64,idx:6,num:12},
  739. {sheet:"450_461.png",size:64,idx:7,num:12},
  740. {sheet:"450_461.png",size:64,idx:8,num:12},
  741. {sheet:"450_461.png",size:64,idx:9,num:12},
  742. {sheet:"450_461.png",size:64,idx:10,num:12},
  743. {sheet:"450_461.png",size:64,idx:11,num:12},
  744. {sheet:"462_474.png",size:64,idx:0,num:13},
  745. {sheet:"462_474.png",size:64,idx:1,num:13},
  746. {sheet:"462_474.png",size:64,idx:2,num:13},
  747. {sheet:"462_474.png",size:64,idx:3,num:13},
  748. {sheet:"462_474.png",size:64,idx:4,num:13},
  749. {sheet:"462_474.png",size:64,idx:5,num:13},
  750. {sheet:"462_474.png",size:64,idx:6,num:13},
  751. {sheet:"462_474.png",size:64,idx:7,num:13},
  752. {sheet:"462_474.png",size:64,idx:8,num:13},
  753. {sheet:"462_474.png",size:64,idx:9,num:13},
  754. {sheet:"462_474.png",size:64,idx:10,num:13},
  755. {sheet:"462_474.png",size:64,idx:11,num:13},
  756. {sheet:"462_474.png",size:64,idx:12,num:13},
  757. {sheet:"475_489.png",size:64,idx:0,num:15},
  758. {sheet:"475_489.png",size:64,idx:1,num:15},
  759. {sheet:"475_489.png",size:64,idx:2,num:15},
  760. {sheet:"475_489.png",size:64,idx:3,num:15},
  761. {sheet:"475_489.png",size:64,idx:4,num:15},
  762. {sheet:"475_489.png",size:64,idx:5,num:15},
  763. {sheet:"475_489.png",size:64,idx:6,num:15},
  764. {sheet:"475_489.png",size:64,idx:7,num:15},
  765. {sheet:"475_489.png",size:64,idx:8,num:15},
  766. {sheet:"475_489.png",size:64,idx:9,num:15},
  767. {sheet:"475_489.png",size:64,idx:10,num:15},
  768. {sheet:"475_489.png",size:64,idx:11,num:15},
  769. {sheet:"475_489.png",size:64,idx:12,num:15},
  770. {sheet:"475_489.png",size:64,idx:13,num:15},
  771. {sheet:"475_489.png",size:64,idx:14,num:15},
  772. {sheet:"490_497.png",size:64,idx:0,num:8},
  773. {sheet:"490_497.png",size:64,idx:1,num:8},
  774. {sheet:"490_497.png",size:64,idx:2,num:8},
  775. {sheet:"490_497.png",size:64,idx:3,num:8},
  776. {sheet:"490_497.png",size:64,idx:4,num:8},
  777. {sheet:"490_497.png",size:64,idx:5,num:8},
  778. {sheet:"490_497.png",size:64,idx:6,num:8},
  779. {sheet:"490_497.png",size:64,idx:7,num:8},
  780. {sheet:"498_513.png",size:64,idx:0,num:16},
  781. {sheet:"498_513.png",size:64,idx:1,num:16},
  782. {sheet:"498_513.png",size:64,idx:2,num:16},
  783. {sheet:"498_513.png",size:64,idx:3,num:16},
  784. {sheet:"498_513.png",size:64,idx:4,num:16},
  785. {sheet:"498_513.png",size:64,idx:5,num:16},
  786. {sheet:"498_513.png",size:64,idx:6,num:16},
  787. {sheet:"498_513.png",size:64,idx:7,num:16},
  788. {sheet:"498_513.png",size:64,idx:8,num:16},
  789. {sheet:"498_513.png",size:64,idx:9,num:16},
  790. {sheet:"498_513.png",size:64,idx:10,num:16},
  791. {sheet:"498_513.png",size:64,idx:11,num:16},
  792. {sheet:"498_513.png",size:64,idx:12,num:16},
  793. {sheet:"498_513.png",size:64,idx:13,num:16},
  794. {sheet:"498_513.png",size:64,idx:14,num:16},
  795. {sheet:"498_513.png",size:64,idx:15,num:16},
  796. {sheet:"514_533.png",size:128,idx:0,num:20},
  797. {sheet:"514_533.png",size:128,idx:1,num:20},
  798. {sheet:"514_533.png",size:128,idx:2,num:20},
  799. {sheet:"514_533.png",size:128,idx:3,num:20},
  800. {sheet:"514_533.png",size:128,idx:4,num:20},
  801. {sheet:"514_533.png",size:128,idx:5,num:20},
  802. {sheet:"514_533.png",size:128,idx:6,num:20},
  803. {sheet:"514_533.png",size:128,idx:7,num:20},
  804. {sheet:"514_533.png",size:128,idx:8,num:20},
  805. {sheet:"514_533.png",size:128,idx:9,num:20},
  806. {sheet:"514_533.png",size:128,idx:10,num:20},
  807. {sheet:"514_533.png",size:128,idx:11,num:20},
  808. {sheet:"514_533.png",size:128,idx:12,num:20},
  809. {sheet:"514_533.png",size:128,idx:13,num:20},
  810. {sheet:"514_533.png",size:128,idx:14,num:20},
  811. {sheet:"514_533.png",size:128,idx:15,num:20},
  812. {sheet:"514_533.png",size:128,idx:16,num:20},
  813. {sheet:"514_533.png",size:128,idx:17,num:20},
  814. {sheet:"514_533.png",size:128,idx:18,num:20},
  815. {sheet:"514_533.png",size:128,idx:19,num:20}
  816. ];
  817. Wolf.setConsts(spriteConsts);
  818. Wolf.setConsts({
  819. SPRT_ONE_TEX : 1,
  820. SPRT_NO_ROT : 2,
  821. SPRT_CHG_POS : 4,
  822. SPRT_CHG_TEX : 8,
  823. SPRT_REMOVE : 16,
  824. MAX_SPRITES : 1024,
  825. MAX_VIS_SPRITES : 128
  826. });
  827. function getNewSprite(level) {
  828. var n;
  829. var newSprite = {
  830. x : 0,
  831. y : 0,
  832. angle : 0,
  833. // very clever to make it not just (x>>TILESHIFT)
  834. // but also (x>>TILESHIFT)-1 if (x%TILEWIDTH)<HALFTILE
  835. // so we will check only 4 files instead of 9 as Carmack did!
  836. tile : {
  837. x : 0,
  838. y : 0
  839. },
  840. // controls appearence of this sprite:
  841. // SPRT_ONE_TEX: use one texture for each rotation
  842. // SPRT_NO_ROT: do not rotate sprite (fence)
  843. // SPRT_CHG_POS
  844. // SPRT_CHG_TEX
  845. // SPRT_REMOVE
  846. flags : 0,
  847. // 8 textures: one for each rotation phase!
  848. // if SPRT_ONE_TEX flag use tex with index 0!
  849. // these are Wolf sprite texture numbers, not OpenGL sprites
  850. // or indexes in the textureManager list
  851. tex : []
  852. };
  853. // check if we can recycle a spot first
  854. /*
  855. for (n=0; n < level.numSprites ; ++n) {
  856. sprt = level.sprites[n];
  857. if (sprt.flags & Wolf.SPRT_REMOVE) {
  858. // free spot: clear it first
  859. //memset( sprt, 0, sizeof( sprite_t ) );
  860. level.sprites[n] = newSprite;
  861. return n;
  862. }
  863. }
  864. */
  865. /*
  866. if (level.numSprites >= Wolf.MAX_SPRITES) {
  867. Wolf.log("Warning n_of_sprt == MAX_SPRITES");
  868. return -1;
  869. }
  870. */
  871. Wolf.Renderer.loadSprite(newSprite);
  872. level.sprites.push(newSprite);
  873. return newSprite;
  874. //level.numSprites++
  875. //return level.numSprites-1;
  876. }
  877. function setPos(level, sprite, x, y, angle) {
  878. /*
  879. if (sprite_id == -1) {
  880. return;
  881. }
  882. */
  883. //var sprite = level.sprites[sprite_id];
  884. sprite.x = x;
  885. sprite.y = y;
  886. sprite.angle = angle;
  887. sprite.tile.x = Wolf.POS2TILE( x );
  888. sprite.tile.y = Wolf.POS2TILE( y );
  889. sprite.flags |= Wolf.SPRT_CHG_POS;
  890. if (!(x & Wolf.HALFTILE)) { // (x%TILEGLOBAL>=HALFTILE)
  891. sprite.tile.x--;
  892. }
  893. if (!(y & Wolf.HALFTILE)) {
  894. sprite.tile.y--;
  895. }
  896. }
  897. function setTex(level, sprite, index, tex) {
  898. /*
  899. if (sprite_id == -1) {
  900. return;
  901. }
  902. */
  903. //cacheTextures(tex, tex);
  904. if (index == -1) { // one texture for each phase
  905. sprite.tex[0] = tex;
  906. sprite.flags |= Wolf.SPRT_ONE_TEX;
  907. } else {
  908. sprite.tex[index] = tex;
  909. }
  910. sprite.flags |= Wolf.SPRT_CHG_TEX;
  911. }
  912. function cacheTextures(start, end) {
  913. var i, texname;
  914. for( i = start ; i <= end ; ++i ) {
  915. if (!spriteTextures[i]) {
  916. //texname = "sprites/" + () + ".png";
  917. //spriteTextures[i] = TM_FindTexture( texname, TT_Sprite );
  918. }
  919. }
  920. }
  921. function getTexture(id) {
  922. return sheets[id];
  923. }
  924. function createVisList(viewport, level, visibleTiles) {
  925. var tx, ty, n, num, numVisible,
  926. vislist,
  927. sprt;
  928. vislist = [];
  929. numVisible = 0;
  930. for (n=0, num=level.sprites.length; n < num; ++n) {
  931. sprt = level.sprites[n];
  932. if (sprt.flags & Wolf.SPRT_REMOVE) {
  933. continue;
  934. }
  935. tx = sprt.tile.x;
  936. ty = sprt.tile.y;
  937. if (tx > 63) {
  938. tx = 63;
  939. }
  940. if (ty > 63) {
  941. ty = 63;
  942. }
  943. // can be in any of 4 surrounding tiles; not 9 - see definition of tilex & tiley
  944. if (visibleTiles[tx][ty] || visibleTiles[tx + 1][ty] || visibleTiles[tx][ty + 1] || visibleTiles[tx + 1][ty + 1]) {
  945. // player spoted it
  946. var vis = vislist[vislist.length] = {};
  947. vis.dist = Wolf.Math.lineLen2Point(sprt.x - viewport.x, sprt.y - viewport.y, viewport.angle);
  948. vis.x = sprt.x;
  949. vis.y = sprt.y;
  950. vis.angle = sprt.angle;
  951. vis.tex = sprt.tex[0]; //FIXME!
  952. vis.sprite = sprt;
  953. if(++numVisible > Wolf.MAX_VIS_SPRITES) {
  954. break; // vislist full
  955. }
  956. }
  957. }
  958. // sorting list
  959. if (numVisible) { // do not sort if no entries
  960. //vislist.sort();
  961. //qsort( vislist, numVisible, sizeof( visobj_t ), Sprite_cmpVis );
  962. }
  963. return vislist;
  964. }
  965. function remove(level, sprite) {
  966. if (!sprite) {
  967. return;
  968. }
  969. sprite.flags |= Wolf.SPRT_REMOVE;
  970. Wolf.Renderer.unloadSprite(sprite);
  971. }
  972. function clean(level) {
  973. var i, num,
  974. liveSprites = [];
  975. for (i=0, num=level.sprites.length; i < num; ++i) {
  976. if (level.sprites[i].flags & Wolf.SPRT_REMOVE) {
  977. continue;
  978. }
  979. liveSprites.push(level.sprites[i]);
  980. }
  981. level.sprites = liveSprites;
  982. }
  983. return {
  984. getNewSprite : getNewSprite,
  985. setPos : setPos,
  986. setTex : setTex,
  987. cacheTextures : cacheTextures,
  988. getTexture : getTexture,
  989. createVisList : createVisList,
  990. remove : remove,
  991. clean : clean
  992. };
  993. })();