Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // 004593A0 = CmdBtn_DrawTooltip(), arg 1 Dialog *dlg, eax Control *button -- https://pastebin.com/raw/cjRjtdAa
- pub unsafe fn cmdbtn_draw_tooltip_hook(
- bin1: *mut bw::Control,
- bin2: *mut bw::Control,
- orig: &dyn Fn(*mut bw::Control, *mut bw::Control)) {
- if bin1 == bin2 {
- /* bw::hide_tooltip();
- bw::tooltip_minerals = 0;
- bw::tooltip_gas = 0;
- bw::tooltip_energy_p = 0;
- bw::tooltip_energy_t = 0;
- bw::tooltip_energy_z = 0;
- bw::tooltip_supply_p = 0;
- bw::tooltip_supply_t = 0;
- bw::tooltip_supply_z = 0;
- bw::tooltip_upgrade_repeat = 0;*/
- bw::clear_cmdbtn_tooltip(); // originally inlined
- return;
- }
- let mut bin1Var = bin1;
- let mut bin2Var = bin2;
- let mut field3E = *bin1.next + 0x3E;
- if bin1Var == null_mut() {
- if field3E == null_mut() {
- return;
- }
- let mut flags = *field3E.flags;
- if flags & 1 == 0 { // Update image event
- *field3E.flags =| 1;
- bw::mark_control_dirty(field3E);
- }
- field3E = 0;
- //Label 43
- bw::clear_cmdbtn_tooltip();
- return;
- }
- if *bin1.flags & 8 == 0 {
- bw::clear_cmdbtn_tooltip();
- return;
- }
- let mut val = *bin1.val;
- let mut string = bw::get_stat_txt_str(val[8]);
- let mut stringArr = string[1];
- if v6 & 2 != 0 {
- field3E = bin1;
- bw::set_tooltip_resources(0, 0, 0, 0, 0, 0, 0, 0);
- let mut valArr = val[9];
- bw::tooltip_upgrade_repeat = 0;
- if valArr != null_mut() {
- let mut valArr2 = valArr;
- if stringArr == 2 {
- valArr2 = bw::get_upgrade_level((*bw::active_sel.0).player as u8, var[7]) as u8 + 8;
- }
- let mut txtString = bw::get_stat_txt_str(valArr2);
- bw::draw_cmdbtn_tooltip_text(txtString as u32);
- }
- else {
- bw::clear_cmdbtn_tooltip();
- }
- }
- else {
- bw::highlight(field3E);
- let mut valArr3 = valArr - 1;
- let mut ttMinerals: u16 = 0;
- let mut ttGas: u16 = 0;
- let mut ttUpgRep: u16 = 0;
- let mut ttEnergyP: u16 = 0;
- let mut ttEnergyT: u16 = 0;
- let mut ttEnergyZ: u16 = 0;
- let mut ttSupplyP: u16 = 0;
- let mut ttSupplyT: u16 = 0;
- let mut ttSupplyZ: u16 = 0;
- // SWITCH valArr3
- match valArr3 {
- 1 => {
- let mut local = val[7];
- let mut groupFlags = bw::units_dat_group_flags[local];
- let mut lobyte |= ((bw::units_dat_flags[local] & 0x400) != 0) + 1 << 0x00_ff;
- let mut reqSupply1: u16 = 0;
- let mut reqSupply2: u16 = 0;
- let mut reqSupply3: u16 = 0;
- if groupFlags & 4 == 1 {
- reqSupply1 = bw::units_dat_supply_req[local];
- }
- let mut math1 = reqSupply1 * lobyte as u8;
- if groupFlags & 2 == 1 {
- reqSupply2 = bw::units_dat_supply_req[local];
- }
- let mut math2 = reqSupply2 * lobyte as u8;
- if groupFlags & 1 == 1 {
- reqSupply3 = bw::units_dat_supply_req[local];
- }
- let mut math3 = reqSupply3 * lobyte as u8;
- ttSupplyZ = (math3 * lobyte as u8) >> 1;
- ttMinerals = bw::units_dat_ore_cost[local];
- ttSupplyT = math2 >> 1;
- ttSupplyP = math1 >> 1;
- ttGas = bw::units_dat_gas_cost[local];
- //label 36
- ttEnergyP = 0;
- ttEnergyT = 0;
- ttEnergyZ = 0;
- //label 37
- bw::set_tooltip_resources(ttMinerals, ttEnergyP, ttGas, ttEnergyT, ttEnergyZ, ttSupplyP, ttSupplyT, ttSupplyZ);
- //label 38
- ttUpgRep = 0;
- bw::draw_cmdbtn_tooltip_text(string);
- }
- 2 => {
- let mut localUnit = bw::active_sel;
- let mut localPlayer = (*localUnit.0).player;
- let mut fourteen: u8 = val + 14 as u8;
- let mut upgGas = bw::get_next_upgrade_gas_cost(localPlayer, fourteen);
- let mut wtf |= (*localUnit.0).player << 0x00_ff;
- let mut upgOre = bw::get_next_upgrade_ore_cost(wtf, fourteen);
- bw::set_tooltip_resources(upgOre, 0, upgGas, 0, 0, 0, 0, 0);
- let mut local = val[7];
- if bw::upgrades_dat_repeat_count[local] <= 1 {
- //label 38
- ttUpgRep = 0;
- bw::draw_cmdbtn_tooltip_text(string);
- }
- ttUpgRep = bw::get_upgrade_level((*bw::active_sel.0).player as u8, local) + 1 as u8;
- bw::draw_cmdbtn_tooltip_text((string as u32) + 2);
- }
- 3 => {
- let mut local = val[7];
- let mut race = bw::get_race(bw::active_sel.0);
- let mut energyCost: u16 = 0;
- if race != null_mut() {
- if race == 1 {
- ttGas = bw::tech_dat_energy_cost[local];
- //label 32
- ttEnergyP = 0;
- ttSupplyZ = 0;
- ttSupplyT = 0;
- ttSupplyP = 0;
- ttEnergyZ = energyCost;
- ttEnergyT = ttGas;
- ttGas = 0;
- ttMinerals = 0;
- //label 37
- bw::set_tooltip_resources(ttMinerals, ttEnergyP, ttGas, ttEnergyT, ttEnergyZ, ttSupplyP, ttSupplyT, ttSupplyZ);
- //label 38
- ttUpgRep = 0;
- bw::draw_cmdbtn_tooltip_text(string);
- }
- }
- else {
- energyCost = bw::tech_dat_energy_cost[local];
- }
- ttGas = 0;
- if race == 2 {
- ttSupplyZ = 0;
- ttSupplyT = 0;
- ttSupplyP = 0;
- ttEnergyP = bw::tech_dat_energy_cost[local];
- ttEnergyZ = energyCost;
- ttEnergyT = 0;
- ttMinerals = 0;
- //label 37
- bw::set_tooltip_resources(ttMinerals, ttEnergyP, ttGas, ttEnergyT, ttEnergyZ, ttSupplyP, ttSupplyT, ttSupplyZ);
- //label 38
- ttUpgRep = 0;
- bw::draw_cmdbtn_tooltip_text(string);
- }
- //label 32
- ttEnergyP = 0;
- ttSupplyZ = 0;
- ttSupplyT = 0;
- ttSupplyP = 0;
- ttEnergyZ = energyCost;
- ttEnergyT = ttGas;
- ttGas = 0;
- ttMinerals = 0;
- //label 37
- bw::set_tooltip_resources(ttMinerals, ttEnergyP, ttGas, ttEnergyT, ttEnergyZ, ttSupplyP, ttSupplyT, ttSupplyZ);
- //label 38
- ttUpgRep = 0;
- bw::draw_cmdbtn_tooltip_text(string);
- }
- 4 => {
- let mut local = val[7];
- ttGas = bw::tech_dat_gas_cost[local];
- ttMinerals = bw::tech_dat_ore_cost[local];
- //label 35
- ttSupplyP = 0;
- ttSupplyT = 0;
- ttSupplyZ = 0;
- //label 36
- ttEnergyP = 0;
- ttEnergyT = 0;
- ttEnergyZ = 0;
- //label 37
- bw::set_tooltip_resources(ttMinerals, ttEnergyP, ttGas, ttEnergyT, ttEnergyZ, ttSupplyP, ttSupplyT, ttSupplyZ);
- //label 38
- ttUpgRep = 0;
- bw::draw_cmdbtn_tooltip_text(string);
- }
- 5 => {
- let mut local = val[7];
- ttGas = bw::units_dat_gas_cost[local];
- ttMinerals = bw::units_dat_ore_cost[local];
- //label 35
- ttSupplyP = 0;
- ttSupplyT = 0;
- ttSupplyZ = 0;
- //label 36
- ttEnergyP = 0;
- ttEnergyT = 0;
- ttEnergyZ = 0;
- //label 37
- bw::set_tooltip_resources(ttMinerals, ttEnergyP, ttGas, ttEnergyT, ttEnergyZ, ttSupplyP, ttSupplyT, ttSupplyZ);
- //label 38
- ttUpgRep = 0;
- bw::draw_cmdbtn_tooltip_text(string);
- }
- _ => {
- ttMinerals = 0;
- ttGas = 0;
- //label 35
- ttSupplyP = 0;
- ttSupplyT = 0;
- ttSupplyZ = 0;
- //label 36
- ttEnergyP = 0;
- ttEnergyT = 0;
- ttEnergyZ = 0;
- //label 37
- bw::set_tooltip_resources(ttMinerals, ttEnergyP, ttGas, ttEnergyT, ttEnergyZ, ttSupplyP, ttSupplyT, ttSupplyZ);
- //label 38
- ttUpgRep = 0;
- bw::draw_cmdbtn_tooltip_text(string);
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement