Advertisement
Benji23245

Untitled

Mar 10th, 2018
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 24.34 KB | None | 0 0
  1. // Sonic+Miscellaneous.cpp : Defines the exported functions for the DLL application.
  2. //
  3.  
  4. #include "stdafx.h"
  5. #include "SADXModLoader.h"
  6. #include "functions.h"
  7.  
  8. bool just_untransformed = false;
  9. bool gauge2_lv1 = false;
  10. bool gauge2_lv2 = false;
  11. bool gauge2_full = false;
  12. bool HUD_loaded = false;
  13. bool glow_down = false;
  14. //bool sonic_gameplay = false;
  15.  
  16. int Gauge;
  17. int Gauge2;
  18. int test = 0;
  19. int untest = 0;
  20. int OldRingsHUD;
  21. int can_animate_gain = 0;
  22. int can_animate_loss = 0;
  23. int zero_ring_alpha = 0;
  24. int energy_glow = 0;
  25.  
  26. ////////////////////// HUD //////////////////////////////////////////////////////////////////////////
  27. enum HUDTextureIndex
  28. {
  29. HUD_gauge, HUD_rings, HUD_lives, HUD_score, HUD_timer, HUD_sonic_lv1, HUD_sonic_lv2, HUD_sonic_lv3, HUD_shadow_lv1, HUD_shadow_lv2, HUD_shadow_lv3,
  30. HUD_metal_lv1, HUD_metal_lv2, HUD_metal_lv3, HUD_sonic_life, HUD_tails_life, HUD_knuckles_life, HUD_shadow_life, HUD_amy_life, HUD_gamma_life,
  31. HUD_metalsonic_life, HUD_tailsdoll_life, HUD_metalknuckles_life, HUD_0, HUD_1, HUD_2, HUD_3, HUD_4, HUD_5, HUD_6, HUD_7, HUD_8, HUD_9, HUD_0s_red,
  32. HUD_0s_red_glow, HUD_ring_a, HUD_ring_b, HUD_ring_c, HUD_ring_d, HUD_ring_e, HUD_ring_f, HUD_ring_g, HUD_ring_h, HUD_energy_1, HUD_energy_2, HUD_energy_3,
  33. HUD_energy_left_closure, HUD_energy_middle, HUD_energy_right_closure, HUD_energy_full, HUD_energy_glow, HUD_soniclvl_energy_full, HUD_soniclvl_energy_glow,
  34. HUD_shadowlvl_energy_full, HUD_shadowlvl_energy_glow, HUD_metallvl_energy_full, HUD_metallvl_energy_glow,
  35. };
  36.  
  37.  
  38.  
  39. static NJS_TEXNAME HUD_TEXNAME[57];
  40. static NJS_TEXLIST HUD_TEXLIST = { arrayptrandlength(HUD_TEXNAME) }; //MY OWN HUD STUFF
  41.  
  42.  
  43. static NJS_TEXANIM HUD_TEXANIM[] = {
  44. // w, h, cx, cy, u1, v1, u2, v2, texid, attr
  45. // u2 and v2 must be 0xFF
  46. { 375, 85, 0, 0, 0, 0, 0xFF, 0xFF, HUD_gauge, 0 },//width and height must be the texture's size
  47. { 314, 55, 0, 0, 0, 0, 0xFF, 0xFF, HUD_rings, 0 },//cx and cy are the position on the screen cx => + or - to go left or right; cy => + or - to go up or down
  48. { 314, 55, 0, 0, 0, 0, 0xFF, 0xFF, HUD_lives, 0 },
  49. { 394, 55, 0, 0, 0, 0, 0xFF, 0xFF, HUD_score, 0 },
  50. { 394, 55, 0, 0, 0, 0, 0xFF, 0xFF, HUD_timer, 0 },
  51. { 75, 75, 0, 0, 0, 0, 0xFF, 0xFF, HUD_sonic_life, 0 },
  52. { 75, 75, 0, 0, 0, 0, 0xFF, 0xFF, HUD_tails_life, 0 },
  53. { 75, 75, 0, 0, 0, 0, 0xFF, 0xFF, HUD_knuckles_life, 0 },
  54. { 75, 75, 0, 0, 0, 0, 0xFF, 0xFF, HUD_shadow_life, 0 },
  55. { 75, 75, 0, 0, 0, 0, 0xFF, 0xFF, HUD_amy_life, 0 },
  56. { 75, 75, 0, 0, 0, 0, 0xFF, 0xFF, HUD_gamma_life, 0 },
  57. { 75, 75, 0, 0, 0, 0, 0xFF, 0xFF, HUD_metalsonic_life, 0 },
  58. { 75, 75, 0, 0, 0, 0, 0xFF, 0xFF, HUD_tailsdoll_life, 0 },
  59. { 75, 75, 0, 0, 0, 0, 0xFF, 0xFF, HUD_metalknuckles_life, 0 }
  60. };
  61.  
  62.  
  63. static NJS_TEXANIM HUD_TEXANIM_NUMBERS[] = {
  64.  
  65. { 40, 40, 0, 0, 0, 0, 0xFF, 0xFF, HUD_0, 0 },
  66. { 40, 40, 0, 0, 0, 0, 0xFF, 0xFF, HUD_1, 0 },
  67. { 40, 40, 0, 0, 0, 0, 0xFF, 0xFF, HUD_2, 0 },
  68. { 40, 40, 0, 0, 0, 0, 0xFF, 0xFF, HUD_3, 0 },
  69. { 40, 40, 0, 0, 0, 0, 0xFF, 0xFF, HUD_4, 0 },
  70. { 40, 40, 0, 0, 0, 0, 0xFF, 0xFF, HUD_5, 0 },
  71. { 40, 40, 0, 0, 0, 0, 0xFF, 0xFF, HUD_6, 0 },
  72. { 40, 40, 0, 0, 0, 0, 0xFF, 0xFF, HUD_7, 0 },
  73. { 40, 40, 0, 0, 0, 0, 0xFF, 0xFF, HUD_8, 0 },
  74. { 40, 40, 0, 0, 0, 0, 0xFF, 0xFF, HUD_9, 0 }
  75. };
  76.  
  77.  
  78. static NJS_TEXANIM HUD_TEXANIM_NUMBERS_RING_ANIM[] = {
  79.  
  80. { 50, 50, 0, 0, 0, 0, 0xFF, 0xFF, HUD_ring_a, 0 },
  81. { 50, 50, 0, 0, 0, 0, 0xFF, 0xFF, HUD_ring_b, 0 },
  82. { 50, 50, 0, 0, 0, 0, 0xFF, 0xFF, HUD_ring_c, 0 },
  83. { 50, 50, 0, 0, 0, 0, 0xFF, 0xFF, HUD_ring_d, 0 },
  84. { 50, 50, 0, 0, 0, 0, 0xFF, 0xFF, HUD_ring_e, 0 },
  85. { 50, 50, 0, 0, 0, 0, 0xFF, 0xFF, HUD_ring_f, 0 },
  86. { 50, 50, 0, 0, 0, 0, 0xFF, 0xFF, HUD_ring_g, 0 },
  87. { 50, 50, 0, 0, 0, 0, 0xFF, 0xFF, HUD_ring_h, 0 }
  88. };
  89.  
  90. static NJS_TEXANIM HUD_TEXANIM_NUMBERS_RINGS_0_RED[] = {
  91.  
  92. { 90, 75, 0, 0, 0, 0, 0xFF, 0xFF, HUD_0s_red, 0 }, //-212 -216 why ??
  93. { 90, 75, 0, 0, 0, 0, 0xFF, 0xFF, HUD_0s_red_glow, 0 }
  94. };
  95.  
  96. static NJS_TEXANIM HUD_TEXANIM_ENERGY[] = {
  97.  
  98. { 375, 85, 0, 0, 0, 0, 0xFF, 0xFF, HUD_energy_1, 0 },
  99. { 375, 85, 0, 0, 0, 0, 0xFF, 0xFF, HUD_energy_2, 0 },
  100. { 375, 85, 0, 0, 0, 0, 0xFF, 0xFF, HUD_energy_3, 0 },
  101. { 375, 85, 0, 0, 0, 0, 0xFF, 0xFF, HUD_energy_left_closure, 0 },
  102. { 375, 85, 0, 0, 0, 0, 0xFF, 0xFF, HUD_energy_full, 0 },
  103. { 375, 85, 0, 0, 0, 0, 0xFF, 0xFF, HUD_energy_glow, 0 }
  104. };
  105.  
  106. static NJS_TEXANIM HUD_TEXANIM_ENERGY2[] = {
  107.  
  108. { 375, 85, 0, 0, 0, 0, 0xFF, 0xFF, HUD_energy_middle, 0 }
  109. };
  110.  
  111. static NJS_TEXANIM HUD_TEXANIM_ENERGY3[] = {
  112.  
  113. { 375, 85, 0, 0, 0, 0, 0xFF, 0xFF, HUD_energy_right_closure, 0 }
  114. };
  115.  
  116. static NJS_TEXANIM HUD_TEXANIM_LVL_ENERGY[] = {
  117.  
  118. { 300, 85, 0, 0, 0, 0, 0xFF, 0xFF, HUD_soniclvl_energy_full, 0 },
  119. { 300, 85, 0, 0, 0, 0, 0xFF, 0xFF, HUD_soniclvl_energy_glow, 0 },
  120. { 300, 85, 0, 0, 0, 0, 0xFF, 0xFF, HUD_shadowlvl_energy_full, 0 },
  121. { 300, 85, 0, 0, 0, 0, 0xFF, 0xFF, HUD_shadowlvl_energy_glow, 0 },
  122. { 300, 85, 0, 0, 0, 0, 0xFF, 0xFF, HUD_metallvl_energy_full, 0 },
  123. { 300, 85, 0, 0, 0, 0, 0xFF, 0xFF, HUD_metallvl_energy_glow, 0 }
  124. };
  125.  
  126. static NJS_TEXANIM HUD_TEXANIM_LVLUPS[] = {
  127.  
  128. { 100, 40, 50, 20, 0, 0, 0xFF, 0xFF, HUD_sonic_lv1, 0 }, //-1104, -700
  129. { 100, 40, 50, 20, 0, 0, 0xFF, 0xFF, HUD_sonic_lv2, 0 },
  130. { 100, 40, 50, 20, 0, 0, 0xFF, 0xFF, HUD_sonic_lv3, 0 },
  131. { 100, 40, 50, 20, 0, 0, 0xFF, 0xFF, HUD_shadow_lv1, 0 },
  132. { 100, 40, 50, 20, 0, 0, 0xFF, 0xFF, HUD_shadow_lv2, 0 },
  133. { 100, 40, 50, 20, 0, 0, 0xFF, 0xFF, HUD_shadow_lv3, 0 },
  134. { 100, 40, 50, 20, 0, 0, 0xFF, 0xFF, HUD_metal_lv1, 0 },
  135. { 100, 40, 50, 20, 0, 0, 0xFF, 0xFF, HUD_metal_lv2, 0 },
  136. { 100, 40, 50, 20, 0, 0, 0xFF, 0xFF, HUD_metal_lv3, 0 }
  137. };
  138.  
  139.  
  140. NJS_SPRITE HUD_SPRITE = { { 0.0f, 0.0f, 0.0f }, 1.3f * HorizontalResolution / 1680.0f, 1.3f * VerticalResolution / 1050.0f, 0, &HUD_TEXLIST, HUD_TEXANIM };//the three numbers in the brackets are X, Y, and Z position, then X and Y scaling, rotation, texlist, and texanim
  141. NJS_SPRITE HUD_SPRITE_NUMBERS = { { 0.0f, 0.0f, 0.0f }, 1.3f * HorizontalResolution / 1680.0f, 1.3f * VerticalResolution / 1050.0f, 0, &HUD_TEXLIST, HUD_TEXANIM_NUMBERS };
  142. NJS_SPRITE HUD_SPRITE_RING_ANIM = { { 0.0f, 0.0f, 0.0f }, 1.0f * HorizontalResolution / 1680.0f, 1.0f * VerticalResolution / 1050.0f, 0, &HUD_TEXLIST, HUD_TEXANIM_NUMBERS_RING_ANIM };
  143. NJS_SPRITE HUD_SPRITE_RINGS_0_RED = { { 0.0f, 0.0f, 0.0f }, 1.0f * HorizontalResolution / 1680.0f, 1.0f * VerticalResolution / 1050.0f, 0, &HUD_TEXLIST, HUD_TEXANIM_NUMBERS_RINGS_0_RED };
  144.  
  145. NJS_SPRITE HUD_SPRITE_ENERGY = { { 0.0f, 0.0f, 0.0f }, 1.3f * HorizontalResolution / 1680.0f, 1.3f * VerticalResolution / 1050.0f, 0, &HUD_TEXLIST, HUD_TEXANIM_ENERGY };
  146. NJS_SPRITE HUD_SPRITE_ENERGY2 = { { 0.0f, 0.0f, 0.0f }, 1.3f * HorizontalResolution / 1680.0f, 1.3f * VerticalResolution / 1050.0f, 0, &HUD_TEXLIST, HUD_TEXANIM_ENERGY2 };
  147. NJS_SPRITE HUD_SPRITE_ENERGY3 = { { 0.0f, 0.0f, 0.0f }, 1.3f * HorizontalResolution / 1680.0f, 1.3f * VerticalResolution / 1050.0f, 0, &HUD_TEXLIST, HUD_TEXANIM_ENERGY3 };
  148.  
  149. NJS_SPRITE HUD_SPRITE_LVL_ENERGY = { { 0.0f, 0.0f, 0.0f }, 1.0f * HorizontalResolution / 1680.0f, 1.3f * VerticalResolution / 1050.0f, 0, &HUD_TEXLIST, HUD_TEXANIM_ENERGY3 };
  150. NJS_SPRITE HUD_SPRITE_LVLUPS = { { 0.0f, 0.0f, 0.0f }, 1.0f * HorizontalResolution / 1680.0f, 1.3f * VerticalResolution / 1050.0f, 0, &HUD_TEXLIST, HUD_TEXANIM_ENERGY3 };
  151.  
  152.  
  153. //Counter Zeros
  154. void HudDisplayZerosSTH06(signed int ringCount, unsigned __int8 digits, NJS_SPRITE *hud_R)
  155. {
  156. int count_R; // edi
  157. int i_R; // ecx
  158. int max_R; // eax MAPDST
  159.  
  160. count_R = ringCount;
  161. //if (HideHud >= 0)
  162. //{
  163. if (ringCount >= 100000)
  164. {
  165. count_R = 99999;
  166. }
  167. i_R = digits;
  168. max_R = 1;
  169. if ((signed int)digits > 0)
  170. {
  171. do
  172. {
  173. max_R *= 10;
  174. --i_R;
  175. } while (i_R);
  176. }
  177. if (count_R > --max_R)
  178. {
  179. count_R = max_R;
  180. }
  181. if (digits >= 5u)
  182. {
  183. njDrawSprite2D_Queue(
  184. hud_R,
  185. count_R / 10000,
  186. -1,
  187. NJD_SPRITE_ALPHA | NJD_SPRITE_COLOR,
  188. QueuedModelFlagsB_SomeTextureThing);
  189. hud_R->p.x = hud_R->p.x + 23.4 * HorizontalResolution / 1680.0f;
  190. }
  191. if (digits >= 4u)
  192. {
  193. njDrawSprite2D_Queue(
  194. hud_R,
  195. count_R % 10000 / 1000,
  196. -1,
  197. NJD_SPRITE_ALPHA | NJD_SPRITE_COLOR,
  198. QueuedModelFlagsB_SomeTextureThing);
  199. hud_R->p.x = hud_R->p.x + 23.4 * HorizontalResolution / 1680.0f;
  200. }
  201. if (digits >= 3u)
  202. {
  203. njDrawSprite2D_Queue(
  204. hud_R,
  205. count_R % 1000 / 100,
  206. -1,
  207. NJD_SPRITE_ALPHA | NJD_SPRITE_COLOR,
  208. QueuedModelFlagsB_SomeTextureThing);
  209. hud_R->p.x = hud_R->p.x + 23.4 * HorizontalResolution / 1680.0f;
  210. }
  211. if (digits >= 2u)
  212. {
  213. njDrawSprite2D_Queue(
  214. hud_R,
  215. count_R % 100 / 10,
  216. -1,
  217. NJD_SPRITE_ALPHA | NJD_SPRITE_COLOR,
  218. QueuedModelFlagsB_SomeTextureThing);
  219. hud_R->p.x = hud_R->p.x + 23.4 * HorizontalResolution / 1680.0f;
  220. }
  221. if (digits >= 1u)
  222. {
  223. njDrawSprite2D_Queue(
  224. hud_R,
  225. count_R % 10,
  226. -1,
  227. NJD_SPRITE_ALPHA | NJD_SPRITE_COLOR,
  228. QueuedModelFlagsB_SomeTextureThing);
  229. }
  230. //}
  231. }
  232.  
  233. //Counter No Zeros
  234. void HudDisplayNoZerosSTH06(signed int scoreCount, unsigned __int8 digits, NJS_SPRITE *hud_S)
  235. {
  236. int count_S; // edi
  237. int i_S; // ecx
  238. int max_S; // eax MAPDST
  239.  
  240. count_S = scoreCount;
  241. //if (HideHud >= 0)
  242. //{
  243. if (scoreCount >= 1000000000)
  244. {
  245. count_S = 999999999;
  246. }
  247. i_S = digits;
  248. max_S = 1;
  249. if ((signed int)digits > 0)
  250. {
  251. do
  252. {
  253. max_S *= 10;
  254. --i_S;
  255. } while (i_S);
  256. }
  257. if (count_S > --max_S)
  258. {
  259. count_S = max_S;
  260. }
  261. if (digits >= 9u)
  262. {
  263. njDrawSprite2D_Queue(
  264. hud_S,
  265. count_S / 100000000,
  266. -1,
  267. NJD_SPRITE_ALPHA | NJD_SPRITE_COLOR,
  268. QueuedModelFlagsB_SomeTextureThing);
  269. hud_S->p.x = hud_S->p.x + 23.4 * HorizontalResolution / 1680.0f;
  270. }
  271. if (digits >= 8u)
  272. {
  273. njDrawSprite2D_Queue(
  274. hud_S,
  275. count_S % 100000000 / 10000000,
  276. -1,
  277. NJD_SPRITE_ALPHA | NJD_SPRITE_COLOR,
  278. QueuedModelFlagsB_SomeTextureThing);
  279. hud_S->p.x = hud_S->p.x + 23.4 * HorizontalResolution / 1680.0f;
  280. }
  281. if (digits >= 7u)
  282. {
  283. njDrawSprite2D_Queue(
  284. hud_S,
  285. count_S % 10000000 / 1000000,
  286. -1,
  287. NJD_SPRITE_ALPHA | NJD_SPRITE_COLOR,
  288. QueuedModelFlagsB_SomeTextureThing);
  289. hud_S->p.x = hud_S->p.x + 23.4 * HorizontalResolution / 1680.0f;
  290. }
  291. if (digits >= 6u)
  292. {
  293. njDrawSprite2D_Queue(
  294. hud_S,
  295. count_S % 1000000 / 100000,
  296. -1,
  297. NJD_SPRITE_ALPHA | NJD_SPRITE_COLOR,
  298. QueuedModelFlagsB_SomeTextureThing);
  299. hud_S->p.x = hud_S->p.x + 23.4 * HorizontalResolution / 1680.0f;
  300. }
  301. if (digits >= 5u)
  302. {
  303. njDrawSprite2D_Queue(
  304. hud_S,
  305. count_S % 100000 / 10000,
  306. -1,
  307. NJD_SPRITE_ALPHA | NJD_SPRITE_COLOR,
  308. QueuedModelFlagsB_SomeTextureThing);
  309. hud_S->p.x = hud_S->p.x + 23.4 * HorizontalResolution / 1680.0f;
  310. }
  311. if (digits >= 4u)
  312. {
  313. njDrawSprite2D_Queue(
  314. hud_S,
  315. count_S % 10000 / 1000,
  316. -1,
  317. NJD_SPRITE_ALPHA | NJD_SPRITE_COLOR,
  318. QueuedModelFlagsB_SomeTextureThing);
  319. hud_S->p.x = hud_S->p.x + 23.4 * HorizontalResolution / 1680.0f;
  320. }
  321. if (digits >= 3u)
  322. {
  323. njDrawSprite2D_Queue(
  324. hud_S,
  325. count_S % 1000 / 100,
  326. -1,
  327. NJD_SPRITE_ALPHA | NJD_SPRITE_COLOR,
  328. QueuedModelFlagsB_SomeTextureThing);
  329. hud_S->p.x = hud_S->p.x + 23.4 * HorizontalResolution / 1680.0f;
  330. }
  331. if (digits >= 2u)
  332. {
  333. njDrawSprite2D_Queue(
  334. hud_S,
  335. count_S % 100 / 10,
  336. -1,
  337. NJD_SPRITE_ALPHA | NJD_SPRITE_COLOR,
  338. QueuedModelFlagsB_SomeTextureThing);
  339. hud_S->p.x = hud_S->p.x + 23.4 * HorizontalResolution / 1680.0f;
  340. }
  341. if (digits >= 1u)
  342. {
  343. njDrawSprite2D_Queue(
  344. hud_S,
  345. count_S % 10,
  346. -1,
  347. NJD_SPRITE_ALPHA | NJD_SPRITE_COLOR,
  348. QueuedModelFlagsB_SomeTextureThing);
  349. }
  350. //}
  351. }
  352.  
  353. //Timer Frames counter HUD
  354. void HudDisplayFramesSTH06(signed int frameCount, unsigned __int8 digits, NJS_SPRITE *hud_TF)
  355. {
  356. int count_TF; // edi
  357. int i_TF; // ecx
  358. int max_TF; // eax MAPDST
  359.  
  360. count_TF = 16.666 * frameCount;
  361. //if (HideHud >= 0)
  362. //{
  363. if (frameCount >= 10000)
  364. {
  365. count_TF = 9999;
  366. }
  367. i_TF = digits;
  368. max_TF = 1;
  369. if ((signed int)digits > 0)
  370. {
  371. do
  372. {
  373. max_TF *= 10;
  374. --i_TF;
  375. } while (i_TF);
  376. }
  377. if (count_TF > --max_TF)
  378. {
  379. count_TF = max_TF;
  380. }
  381. if (digits >= 3u)
  382. {
  383. njDrawSprite2D_Queue(
  384. hud_TF,
  385. count_TF / 100,
  386. -1,
  387. NJD_SPRITE_ALPHA | NJD_SPRITE_COLOR,
  388. QueuedModelFlagsB_SomeTextureThing);
  389. hud_TF->p.x = hud_TF->p.x + 23.4 * HorizontalResolution / 1680.0f;
  390. }
  391. if (digits >= 2u)
  392. {
  393. njDrawSprite2D_Queue(
  394. hud_TF,
  395. count_TF % 100 / 10,
  396. -1,
  397. NJD_SPRITE_ALPHA | NJD_SPRITE_COLOR,
  398. QueuedModelFlagsB_SomeTextureThing);
  399. hud_TF->p.x = hud_TF->p.x + 23.4 * HorizontalResolution / 1680.0f;
  400. }
  401. if (digits >= 1u)
  402. {
  403. njDrawSprite2D_Queue(
  404. hud_TF,
  405. count_TF % 10,
  406. -1,
  407. NJD_SPRITE_ALPHA | NJD_SPRITE_COLOR,
  408. QueuedModelFlagsB_SomeTextureThing);
  409. }
  410. //}
  411. }
  412.  
  413.  
  414.  
  415.  
  416. void MyHudThing()
  417. {
  418. if (GameState == 4)
  419. {
  420. can_animate_gain = 0;
  421. can_animate_loss = 0;
  422. energy_glow = 0;
  423. glow_down = false;
  424. }
  425. if (GameState != 21)
  426. {
  427. if (GetCharacterObject(0))
  428. {
  429. njColorBlendingMode(NJD_SOURCE_COLOR, NJD_COLOR_BLENDING_SRCALPHA);
  430. njColorBlendingMode(NJD_DESTINATION_COLOR, NJD_COLOR_BLENDING_INVSRCALPHA);
  431. SetMaterialAndSpriteColor_Float(1, 1, 1, 1);
  432. HUD_SPRITE.p.x = -44 * 1.3f * HorizontalResolution / 1680.0f;
  433. HUD_SPRITE.p.y = 70 * 1.3f * VerticalResolution / 1050.0f;
  434. njDrawSprite2D_Queue(&HUD_SPRITE, HUD_score, -1, NJD_SPRITE_ALPHA | NJD_SPRITE_COLOR, (QueuedModelFlagsB)0);
  435. HUD_SPRITE.p.x = -44 * 1.3f * HorizontalResolution / 1680.0f;
  436. HUD_SPRITE.p.y = 120 * 1.3f * VerticalResolution / 1050.0f;
  437. njDrawSprite2D_Queue(&HUD_SPRITE, HUD_timer, -1, NJD_SPRITE_ALPHA | NJD_SPRITE_COLOR, (QueuedModelFlagsB)0);
  438. HUD_SPRITE.p.x = -44 * 1.3f * HorizontalResolution / 1680.0f;
  439. HUD_SPRITE.p.y = 170 * 1.3f * VerticalResolution / 1050.0f;
  440. njDrawSprite2D_Queue(&HUD_SPRITE, HUD_rings, -1, NJD_SPRITE_ALPHA | NJD_SPRITE_COLOR, (QueuedModelFlagsB)0);
  441. HUD_SPRITE.p.x = -44 * 1.3f * HorizontalResolution / 1680.0f;
  442. HUD_SPRITE.p.y = 220 * 1.3f * VerticalResolution / 1050.0f;
  443. njDrawSprite2D_Queue(&HUD_SPRITE, HUD_lives, -1, NJD_SPRITE_ALPHA | NJD_SPRITE_COLOR, (QueuedModelFlagsB)0);
  444. if (GetCharacterID(0) == Characters_Sonic && MetalSonicFlag == 0)
  445. {
  446. HUD_SPRITE.p.x = 810 * 1.3f * HorizontalResolution / 1680.0f;
  447. HUD_SPRITE.p.y = 660 * 1.3f * VerticalResolution / 1050.0f;
  448. njDrawSprite2D_Queue(&HUD_SPRITE, HUD_metalknuckles_life, -1, NJD_SPRITE_ALPHA | NJD_SPRITE_COLOR, (QueuedModelFlagsB)0);
  449. HUD_SPRITE.p.x = 110 * 1.3f * HorizontalResolution / 1680.0f;
  450. HUD_SPRITE.p.y = 205 * 1.3f * VerticalResolution / 1050.0f;
  451. njDrawSprite2D_Queue(&HUD_SPRITE, HUD_sonic_life, -1, NJD_SPRITE_ALPHA | NJD_SPRITE_COLOR, (QueuedModelFlagsB)0);
  452. }
  453. else if (GetCharacterID(0) == Characters_Tails)
  454. {
  455. njDrawSprite2D_Queue(&HUD_SPRITE, HUD_tails_life, -1, NJD_SPRITE_ALPHA | NJD_SPRITE_COLOR, (QueuedModelFlagsB)0);
  456. }
  457. else if (GetCharacterID(0) == Characters_Knuckles)
  458. {
  459. njDrawSprite2D_Queue(&HUD_SPRITE, HUD_knuckles_life, -1, NJD_SPRITE_ALPHA | NJD_SPRITE_COLOR, (QueuedModelFlagsB)0);
  460. }
  461. else if (GetCharacterID(0) == Characters_Amy)
  462. {
  463. njDrawSprite2D_Queue(&HUD_SPRITE, HUD_amy_life, -1, NJD_SPRITE_ALPHA | NJD_SPRITE_COLOR, (QueuedModelFlagsB)0);
  464. }
  465. else if (GetCharacterID(0) == Characters_Gamma)
  466. {
  467. njDrawSprite2D_Queue(&HUD_SPRITE, HUD_gamma_life, -1, NJD_SPRITE_ALPHA | NJD_SPRITE_COLOR, (QueuedModelFlagsB)0);
  468. }
  469.  
  470.  
  471. ////Energy Counter
  472.  
  473. //if (Gauge > 0 && Gauge < 100)
  474. //{
  475. // njDrawSprite2D_Queue(&HUD_SPRITE_ENERGY, 0, -1, NJD_SPRITE_ALPHA | NJD_SPRITE_COLOR, (QueuedModelFlagsB)0);
  476. //}
  477. //else if (Gauge >= 100 && Gauge < 200)
  478. //{
  479. // njDrawSprite2D_Queue(&HUD_SPRITE_ENERGY, 1, -1, NJD_SPRITE_ALPHA | NJD_SPRITE_COLOR, (QueuedModelFlagsB)0);
  480. //}
  481. //else if (Gauge >= 200 && Gauge < 300)
  482. //{
  483. // njDrawSprite2D_Queue(&HUD_SPRITE_ENERGY, 2, -1, NJD_SPRITE_ALPHA | NJD_SPRITE_COLOR, (QueuedModelFlagsB)0);
  484. //}
  485. //else if (Gauge >= 300 && Gauge < 10000)
  486. //{
  487. // HUD_SPRITE_ENERGY2.sx = Gauge * 0.0033333f;
  488. // HUD_SPRITE_ENERGY3.p.x = Gauge * 0.02f;
  489. // njDrawSprite2D_Queue(&HUD_SPRITE_ENERGY, 3, -1, NJD_SPRITE_ALPHA | NJD_SPRITE_COLOR, (QueuedModelFlagsB)0);
  490. // njDrawSprite2D_Queue(&HUD_SPRITE_ENERGY2, 0, -1, NJD_SPRITE_ALPHA | NJD_SPRITE_COLOR, (QueuedModelFlagsB)0);
  491. // njDrawSprite2D_Queue(&HUD_SPRITE_ENERGY3, 0, -1, NJD_SPRITE_ALPHA | NJD_SPRITE_COLOR, (QueuedModelFlagsB)0);
  492.  
  493. //}
  494. //else if (Gauge >= 10000)
  495. //{
  496. // njDrawSprite2D_Queue(&HUD_SPRITE_ENERGY, 4, -1, NJD_SPRITE_ALPHA | NJD_SPRITE_COLOR, (QueuedModelFlagsB)0);
  497. // if (energy_glow <= 20)
  498. // {
  499. // if (!glow_down)
  500. // {
  501. // if (energy_glow < 20)
  502. // {
  503. // ++energy_glow;
  504. // SetMaterialAndSpriteColor_Float((0 + energy_glow) / 20.0f, 1, 1, 1);
  505. // njDrawSprite2D_Queue(&HUD_SPRITE_ENERGY, 5, -1, NJD_SPRITE_ALPHA | NJD_SPRITE_COLOR, (QueuedModelFlagsB)0);
  506. // }
  507. // else if (energy_glow == 20)
  508. // {
  509. // energy_glow = 0;
  510. // SetMaterialAndSpriteColor_Float(1, 1, 1, 1);
  511. // njDrawSprite2D_Queue(&HUD_SPRITE_ENERGY, 5, -1, NJD_SPRITE_ALPHA | NJD_SPRITE_COLOR, (QueuedModelFlagsB)0);
  512. // glow_down = true;
  513. // }
  514. // }
  515. // else if (glow_down)
  516. // {
  517. // if (energy_glow < 20)
  518. // {
  519. // ++energy_glow;
  520. // SetMaterialAndSpriteColor_Float((20 - energy_glow) / 20.0f, 1, 1, 1);
  521. // njDrawSprite2D_Queue(&HUD_SPRITE_ENERGY, 5, -1, NJD_SPRITE_ALPHA | NJD_SPRITE_COLOR, (QueuedModelFlagsB)0);
  522. // }
  523. // else if (energy_glow == 20)
  524. // {
  525. // energy_glow = 0;
  526. // SetMaterialAndSpriteColor_Float(0, 1, 1, 1);
  527. // njDrawSprite2D_Queue(&HUD_SPRITE_ENERGY, 5, -1, NJD_SPRITE_ALPHA | NJD_SPRITE_COLOR, (QueuedModelFlagsB)0);
  528. // glow_down = false;
  529. // }
  530. // }
  531. // }
  532. // SetMaterialAndSpriteColor_Float(1, 1, 1, 1);
  533. //}
  534.  
  535.  
  536. //Ring Counter
  537. HUD_SPRITE_NUMBERS.p.x = 157 * 1.3f * HorizontalResolution / 1680.0f;
  538. HUD_SPRITE_NUMBERS.p.y = 174 * 1.3f * VerticalResolution / 1050.0f;
  539. HUD_SPRITE_RINGS_0_RED.p.x = (HUD_SPRITE_NUMBERS.p.x/1.3f) + (55 * HorizontalResolution / 1680.0f);
  540. HUD_SPRITE_RINGS_0_RED.p.y = (HUD_SPRITE_NUMBERS.p.y/1.3f) + (42 * VerticalResolution / 1050.0f);
  541. if (Rings == 0)
  542. {
  543. njDrawSprite2D_Queue(&HUD_SPRITE_RINGS_0_RED, 0, -1, NJD_SPRITE_ALPHA | NJD_SPRITE_COLOR, (QueuedModelFlagsB)0);
  544. ++zero_ring_alpha;
  545. SetMaterialAndSpriteColor_Float((9 - zero_ring_alpha) / 9.0f, 1, 1, 1);
  546. njDrawSprite2D_Queue(&HUD_SPRITE_RINGS_0_RED, 1, -1, NJD_SPRITE_ALPHA | NJD_SPRITE_COLOR, (QueuedModelFlagsB)0);
  547. SetMaterialAndSpriteColor_Float(1, 1, 1, 1);
  548. if (zero_ring_alpha == 9)
  549. {
  550. zero_ring_alpha = 0;
  551. }
  552. }
  553. else if (Rings > 0 && Rings < 1000)
  554. {
  555. HudDisplayZerosSTH06(Rings, 3, &HUD_SPRITE_NUMBERS);
  556. zero_ring_alpha = 0;
  557. }
  558. else if (Rings >= 1000)
  559. {
  560. HudDisplayZerosSTH06(Rings, 4, &HUD_SPRITE_NUMBERS);
  561. zero_ring_alpha = 0;
  562. }
  563. HUD_SPRITE_RING_ANIM.p.x = 161 * HorizontalResolution / 1680.0f;
  564. HUD_SPRITE_RING_ANIM.p.y = 225 * VerticalResolution / 1050.0f;
  565. if (Rings - OldRingsHUD > 0)
  566. {
  567. can_animate_loss = 0;
  568. ++can_animate_gain;
  569. njDrawSprite2D_Queue(&HUD_SPRITE_RING_ANIM, can_animate_gain, -1, NJD_SPRITE_ALPHA | NJD_SPRITE_COLOR, (QueuedModelFlagsB)0);
  570. if (can_animate_gain == 7)
  571. {
  572. OldRingsHUD = Rings;
  573. can_animate_gain = 0;
  574. }
  575. }
  576. else if (Rings - OldRingsHUD < 0)
  577. {
  578. can_animate_gain = 0;
  579. ++can_animate_loss;
  580. njDrawSprite2D_Queue(&HUD_SPRITE_RING_ANIM, 8 - can_animate_loss, -1, NJD_SPRITE_ALPHA | NJD_SPRITE_COLOR, (QueuedModelFlagsB)0);
  581. if (can_animate_loss == 7)
  582. {
  583. OldRingsHUD = Rings;
  584. can_animate_loss = 0;
  585. }
  586. }
  587. else if (OldRingsHUD == Rings)
  588. {
  589. njDrawSprite2D_Queue(&HUD_SPRITE_RING_ANIM, 0, -1, NJD_SPRITE_ALPHA | NJD_SPRITE_COLOR, (QueuedModelFlagsB)0);
  590. }
  591.  
  592. //Timer Minutes
  593. HUD_SPRITE_NUMBERS.p.x = (130.846 * 1.3f * HorizontalResolution / 1680.0f);
  594. HUD_SPRITE_NUMBERS.p.y = (124 * 1.3f * VerticalResolution / 1050.0f);
  595. HudDisplayZerosSTH06(TimeMinutes, 2, &HUD_SPRITE_NUMBERS);
  596.  
  597. //Timer Seconds
  598. HUD_SPRITE_NUMBERS.p.x = HUD_SPRITE_NUMBERS.p.x + (35 *1.3f * HorizontalResolution / ( 1680.0f));
  599. HUD_SPRITE_NUMBERS.p.y = HUD_SPRITE_NUMBERS.p.y;
  600. HudDisplayZerosSTH06(TimeSeconds, 2, &HUD_SPRITE_NUMBERS);
  601.  
  602. //Timer Frames
  603. HUD_SPRITE_NUMBERS.p.x = HUD_SPRITE_NUMBERS.p.x + (37 *1.3f * HorizontalResolution / ( 1680.0f));
  604. HUD_SPRITE_NUMBERS.p.y = HUD_SPRITE_NUMBERS.p.y;
  605. HudDisplayFramesSTH06(TimeFrames, 3, &HUD_SPRITE_NUMBERS);
  606.  
  607.  
  608.  
  609.  
  610.  
  611.  
  612. //Lives Counter
  613. HUD_SPRITE_NUMBERS.p.y = 224 * 1.3f * VerticalResolution / 1050.0f;
  614. if (Lives < 10)
  615. {
  616. HUD_SPRITE_NUMBERS.p.x = 194.538 * 1.3f * HorizontalResolution / 1680.0f;
  617. HudDisplayNoZerosSTH06(Lives, 1, &HUD_SPRITE_NUMBERS);
  618. }
  619. else if (Lives >= 10)
  620. {
  621. HUD_SPRITE_NUMBERS.p.x = 176.538 * 1.3f * HorizontalResolution / 1680.0f;
  622. HudDisplayNoZerosSTH06(Lives, 2, &HUD_SPRITE_NUMBERS);
  623. }
  624.  
  625.  
  626.  
  627.  
  628. //Score Counter
  629. HUD_SPRITE_NUMBERS.p.y = 71.692 * 1.3f * VerticalResolution / 1050.0f;
  630. if (EnemyBonus < 10)
  631. {
  632. HUD_SPRITE_NUMBERS.p.x = 274.692 * 1.3f * HorizontalResolution / 1680.0f;
  633. HudDisplayNoZerosSTH06(EnemyBonus, 1, &HUD_SPRITE_NUMBERS);
  634. }
  635. else if (EnemyBonus >= 10 && EnemyBonus < 100)
  636. {
  637. HUD_SPRITE_NUMBERS.p.x = 256.692 * 1.3f * HorizontalResolution / 1680.0f;
  638. HudDisplayNoZerosSTH06(EnemyBonus, 2, &HUD_SPRITE_NUMBERS);
  639. }
  640. else if (EnemyBonus >= 100 && EnemyBonus < 1000)
  641. {
  642. HUD_SPRITE_NUMBERS.p.x = 238.692 * 1.3f * HorizontalResolution / 1680.0f;
  643. HudDisplayNoZerosSTH06(EnemyBonus, 3, &HUD_SPRITE_NUMBERS);
  644. }
  645. else if (EnemyBonus >= 1000 && EnemyBonus < 10000)
  646. {
  647. HUD_SPRITE_NUMBERS.p.x = 220.692 * 1.3f * HorizontalResolution / 1680.0f;
  648. HudDisplayNoZerosSTH06(EnemyBonus, 4, &HUD_SPRITE_NUMBERS);
  649. }
  650. else if (EnemyBonus >= 10000 && EnemyBonus < 100000)
  651. {
  652. HUD_SPRITE_NUMBERS.p.x = 202.692 * 1.3f * HorizontalResolution / 1680.0f;
  653. HudDisplayNoZerosSTH06(EnemyBonus, 5, &HUD_SPRITE_NUMBERS);
  654. }
  655. else if (EnemyBonus >= 100000 && EnemyBonus < 1000000)
  656. {
  657. HUD_SPRITE_NUMBERS.p.x = 184.692 * 1.3f * HorizontalResolution / 1680.0f;
  658. HudDisplayNoZerosSTH06(EnemyBonus, 6, &HUD_SPRITE_NUMBERS);
  659. }
  660. else if (EnemyBonus >= 1000000 && EnemyBonus < 10000000)
  661. {
  662. HUD_SPRITE_NUMBERS.p.x = 166.692 * 1.3f * HorizontalResolution / 1680.0f;
  663. HudDisplayNoZerosSTH06(EnemyBonus, 7, &HUD_SPRITE_NUMBERS);
  664. }
  665. else if (EnemyBonus >= 10000000 && EnemyBonus < 100000000)
  666. {
  667. HUD_SPRITE_NUMBERS.p.x = 148.692 * 1.3f * HorizontalResolution / 1680.0f;
  668. HudDisplayNoZerosSTH06(EnemyBonus, 8, &HUD_SPRITE_NUMBERS);
  669. }
  670. else
  671. {
  672. HUD_SPRITE_NUMBERS.p.x = 130.692 * 1.3f * HorizontalResolution / 1680.0f;
  673. HudDisplayNoZerosSTH06(EnemyBonus, 9, &HUD_SPRITE_NUMBERS);
  674. }
  675. }
  676. }
  677. }
  678.  
  679.  
  680.  
  681.  
  682.  
  683.  
  684.  
  685.  
  686.  
  687.  
  688.  
  689.  
  690.  
  691. ///////////////////////////////////////////////////////////////////////////////////////////////////////////
  692.  
  693. extern "C"
  694. {
  695. __declspec(dllexport) ModInfo SADXModInfo = { ModLoaderVer };
  696.  
  697.  
  698. __declspec(dllexport) void Init(const char *path, const HelperFunctions &helperFunctions)
  699. {
  700. Sonic_Init(path, helperFunctions);
  701. Miscellaneous_Init(path, helperFunctions);
  702. WriteJump((void*)0x425F90, MyHudThing);
  703. WriteData((char*)0x427F50, (char)0xC3);
  704. }
  705.  
  706. __declspec(dllexport) void OnInput()
  707. {
  708. Sonic_OnInput();
  709. //Miscellaneous_OnInput();
  710. }
  711.  
  712. __declspec(dllexport) void OnFrame()
  713. {
  714. //if (ControllerPointers[0]->PressedButtons & Buttons_Y)
  715. //{
  716. // sonic_gameplay = true;
  717. //}
  718. //if (ControllerPointers[0]->PressedButtons & Buttons_B)
  719. //{
  720. // sonic_gameplay = false;
  721. //}
  722. //if (sonic_gameplay)
  723. //{
  724. // Sonic_OnFrame();
  725. //}
  726. Sonic_OnFrame();
  727. Miscellaneous_OnFrame();
  728.  
  729.  
  730.  
  731.  
  732.  
  733.  
  734. //Character Select HUD
  735. //if (GameState == 21)
  736. //{
  737. if (GetCharacterObject(0))
  738. {
  739. LoadPVM("HUD", &HUD_TEXLIST);// do better loading (not have it repeat)
  740. //njDrawSprite2D_Queue(&HUD_SPRITE2, char_sel_sonic, -1, NJD_SPRITE_ALPHA, (QueuedModelFlagsB)0);
  741. }
  742. //}
  743.  
  744.  
  745. //HUD *******************************************************************************************************************************************
  746.  
  747.  
  748.  
  749. }
  750.  
  751. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement