Advertisement
Pr0nogo

Untitled

Jul 4th, 2020
111
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.09 KB | None | 0 0
  1. // 004593A0 = CmdBtn_DrawTooltip(), arg 1 Dialog *dlg, eax Control *button -- https://pastebin.com/raw/cjRjtdAa
  2. pub unsafe fn cmdbtn_draw_tooltip_hook(
  3. bin1: *mut bw::Control,
  4. bin2: *mut bw::Control,
  5. orig: &dyn Fn(*mut bw::Control, *mut bw::Control)) {
  6. if bin1 == bin2 {
  7. /* bw::hide_tooltip();
  8. bw::tooltip_minerals = 0;
  9. bw::tooltip_gas = 0;
  10. bw::tooltip_energy_p = 0;
  11. bw::tooltip_energy_t = 0;
  12. bw::tooltip_energy_z = 0;
  13. bw::tooltip_supply_p = 0;
  14. bw::tooltip_supply_t = 0;
  15. bw::tooltip_supply_z = 0;
  16. bw::tooltip_upgrade_repeat = 0;*/
  17. bw::clear_cmdbtn_tooltip(); // originally inlined
  18. return;
  19. }
  20. let mut bin1Var = bin1;
  21. let mut bin2Var = bin2;
  22. let mut field3E = *bin1.next + 0x3E;
  23. if bin1Var == null_mut() {
  24. if field3E == null_mut() {
  25. return;
  26. }
  27. let mut flags = *field3E.flags;
  28. if flags & 1 == 0 { // Update image event
  29. *field3E.flags =| 1;
  30. bw::mark_control_dirty(field3E);
  31. }
  32. field3E = 0;
  33. //Label 43
  34. bw::clear_cmdbtn_tooltip();
  35. return;
  36. }
  37. if *bin1.flags & 8 == 0 {
  38. bw::clear_cmdbtn_tooltip();
  39. return;
  40. }
  41. let mut val = *bin1.val;
  42. let mut string = bw::get_stat_txt_str(val[8]);
  43. let mut stringArr = string[1];
  44. if v6 & 2 != 0 {
  45. field3E = bin1;
  46. bw::set_tooltip_resources(0, 0, 0, 0, 0, 0, 0, 0);
  47. let mut valArr = val[9];
  48. bw::tooltip_upgrade_repeat = 0;
  49. if valArr != null_mut() {
  50. let mut valArr2 = valArr;
  51. if stringArr == 2 {
  52. valArr2 = bw::get_upgrade_level((*bw::active_sel.0).player as u8, var[7]) as u8 + 8;
  53. }
  54. let mut txtString = bw::get_stat_txt_str(valArr2);
  55. bw::draw_cmdbtn_tooltip_text(txtString as u32);
  56. }
  57. else {
  58. bw::clear_cmdbtn_tooltip();
  59. }
  60. }
  61. else {
  62. bw::highlight(field3E);
  63. let mut valArr3 = valArr - 1;
  64. let mut ttMinerals: u16 = 0;
  65. let mut ttGas: u16 = 0;
  66. let mut ttUpgRep: u16 = 0;
  67. let mut ttEnergyP: u16 = 0;
  68. let mut ttEnergyT: u16 = 0;
  69. let mut ttEnergyZ: u16 = 0;
  70. let mut ttSupplyP: u16 = 0;
  71. let mut ttSupplyT: u16 = 0;
  72. let mut ttSupplyZ: u16 = 0;
  73. // SWITCH valArr3
  74. match valArr3 {
  75. 1 => {
  76. let mut local = val[7];
  77. let mut groupFlags = bw::units_dat_group_flags[local];
  78. let mut lobyte |= ((bw::units_dat_flags[local] & 0x400) != 0) + 1 << 0x00_ff;
  79. let mut reqSupply1: u16 = 0;
  80. let mut reqSupply2: u16 = 0;
  81. let mut reqSupply3: u16 = 0;
  82. if groupFlags & 4 == 1 {
  83. reqSupply1 = bw::units_dat_supply_req[local];
  84. }
  85. let mut math1 = reqSupply1 * lobyte as u8;
  86. if groupFlags & 2 == 1 {
  87. reqSupply2 = bw::units_dat_supply_req[local];
  88. }
  89. let mut math2 = reqSupply2 * lobyte as u8;
  90. if groupFlags & 1 == 1 {
  91. reqSupply3 = bw::units_dat_supply_req[local];
  92. }
  93. let mut math3 = reqSupply3 * lobyte as u8;
  94. ttSupplyZ = (math3 * lobyte as u8) >> 1;
  95. ttMinerals = bw::units_dat_ore_cost[local];
  96. ttSupplyT = math2 >> 1;
  97. ttSupplyP = math1 >> 1;
  98. ttGas = bw::units_dat_gas_cost[local];
  99. //label 36
  100. ttEnergyP = 0;
  101. ttEnergyT = 0;
  102. ttEnergyZ = 0;
  103. //label 37
  104. bw::set_tooltip_resources(ttMinerals, ttEnergyP, ttGas, ttEnergyT, ttEnergyZ, ttSupplyP, ttSupplyT, ttSupplyZ);
  105. //label 38
  106. ttUpgRep = 0;
  107. bw::draw_cmdbtn_tooltip_text(string);
  108. }
  109. 2 => {
  110. let mut localUnit = bw::active_sel;
  111. let mut localPlayer = (*localUnit.0).player;
  112. let mut fourteen: u8 = val + 14 as u8;
  113. let mut upgGas = bw::get_next_upgrade_gas_cost(localPlayer, fourteen);
  114. let mut wtf |= (*localUnit.0).player << 0x00_ff;
  115. let mut upgOre = bw::get_next_upgrade_ore_cost(wtf, fourteen);
  116. bw::set_tooltip_resources(upgOre, 0, upgGas, 0, 0, 0, 0, 0);
  117. let mut local = val[7];
  118. if bw::upgrades_dat_repeat_count[local] <= 1 {
  119. //label 38
  120. ttUpgRep = 0;
  121. bw::draw_cmdbtn_tooltip_text(string);
  122. }
  123. ttUpgRep = bw::get_upgrade_level((*bw::active_sel.0).player as u8, local) + 1 as u8;
  124. bw::draw_cmdbtn_tooltip_text((string as u32) + 2);
  125. }
  126. 3 => {
  127. let mut local = val[7];
  128. let mut race = bw::get_race(bw::active_sel.0);
  129. let mut energyCost: u16 = 0;
  130. if race != null_mut() {
  131. if race == 1 {
  132. ttGas = bw::tech_dat_energy_cost[local];
  133. //label 32
  134. ttEnergyP = 0;
  135. ttSupplyZ = 0;
  136. ttSupplyT = 0;
  137. ttSupplyP = 0;
  138. ttEnergyZ = energyCost;
  139. ttEnergyT = ttGas;
  140. ttGas = 0;
  141. ttMinerals = 0;
  142. //label 37
  143. bw::set_tooltip_resources(ttMinerals, ttEnergyP, ttGas, ttEnergyT, ttEnergyZ, ttSupplyP, ttSupplyT, ttSupplyZ);
  144. //label 38
  145. ttUpgRep = 0;
  146. bw::draw_cmdbtn_tooltip_text(string);
  147. }
  148. }
  149. else {
  150. energyCost = bw::tech_dat_energy_cost[local];
  151. }
  152. ttGas = 0;
  153. if race == 2 {
  154. ttSupplyZ = 0;
  155. ttSupplyT = 0;
  156. ttSupplyP = 0;
  157. ttEnergyP = bw::tech_dat_energy_cost[local];
  158. ttEnergyZ = energyCost;
  159. ttEnergyT = 0;
  160. ttMinerals = 0;
  161. //label 37
  162. bw::set_tooltip_resources(ttMinerals, ttEnergyP, ttGas, ttEnergyT, ttEnergyZ, ttSupplyP, ttSupplyT, ttSupplyZ);
  163. //label 38
  164. ttUpgRep = 0;
  165. bw::draw_cmdbtn_tooltip_text(string);
  166. }
  167. //label 32
  168. ttEnergyP = 0;
  169. ttSupplyZ = 0;
  170. ttSupplyT = 0;
  171. ttSupplyP = 0;
  172. ttEnergyZ = energyCost;
  173. ttEnergyT = ttGas;
  174. ttGas = 0;
  175. ttMinerals = 0;
  176. //label 37
  177. bw::set_tooltip_resources(ttMinerals, ttEnergyP, ttGas, ttEnergyT, ttEnergyZ, ttSupplyP, ttSupplyT, ttSupplyZ);
  178. //label 38
  179. ttUpgRep = 0;
  180. bw::draw_cmdbtn_tooltip_text(string);
  181. }
  182. 4 => {
  183. let mut local = val[7];
  184. ttGas = bw::tech_dat_gas_cost[local];
  185. ttMinerals = bw::tech_dat_ore_cost[local];
  186. //label 35
  187. ttSupplyP = 0;
  188. ttSupplyT = 0;
  189. ttSupplyZ = 0;
  190. //label 36
  191. ttEnergyP = 0;
  192. ttEnergyT = 0;
  193. ttEnergyZ = 0;
  194. //label 37
  195. bw::set_tooltip_resources(ttMinerals, ttEnergyP, ttGas, ttEnergyT, ttEnergyZ, ttSupplyP, ttSupplyT, ttSupplyZ);
  196. //label 38
  197. ttUpgRep = 0;
  198. bw::draw_cmdbtn_tooltip_text(string);
  199. }
  200. 5 => {
  201. let mut local = val[7];
  202. ttGas = bw::units_dat_gas_cost[local];
  203. ttMinerals = bw::units_dat_ore_cost[local];
  204. //label 35
  205. ttSupplyP = 0;
  206. ttSupplyT = 0;
  207. ttSupplyZ = 0;
  208. //label 36
  209. ttEnergyP = 0;
  210. ttEnergyT = 0;
  211. ttEnergyZ = 0;
  212. //label 37
  213. bw::set_tooltip_resources(ttMinerals, ttEnergyP, ttGas, ttEnergyT, ttEnergyZ, ttSupplyP, ttSupplyT, ttSupplyZ);
  214. //label 38
  215. ttUpgRep = 0;
  216. bw::draw_cmdbtn_tooltip_text(string);
  217. }
  218. _ => {
  219. ttMinerals = 0;
  220. ttGas = 0;
  221. //label 35
  222. ttSupplyP = 0;
  223. ttSupplyT = 0;
  224. ttSupplyZ = 0;
  225. //label 36
  226. ttEnergyP = 0;
  227. ttEnergyT = 0;
  228. ttEnergyZ = 0;
  229. //label 37
  230. bw::set_tooltip_resources(ttMinerals, ttEnergyP, ttGas, ttEnergyT, ttEnergyZ, ttSupplyP, ttSupplyT, ttSupplyZ);
  231. //label 38
  232. ttUpgRep = 0;
  233. bw::draw_cmdbtn_tooltip_text(string);
  234. }
  235. }
  236. }
  237. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement