void cScreenGangs::check_events() { if (g_InterfaceEvents.GetNumEvents() == 0) return; // no events means we can go home if (g_InterfaceEvents.CheckButton(back_id)) // if it's the back button, pop the window off the stack and we're done { g_InitWin = true; g_WinManager.Pop(); return; } if (g_InterfaceEvents.CheckButton(ganghire_id)) { hire_recruitable(); return; } if (g_InterfaceEvents.CheckButton(weaponup_id)) { int cost = 0; int *wlev = g_Gangs.GetWeaponLevel(); cost = tariff.goon_weapon_upgrade(*wlev); if (g_Gold.item_cost(cost) == true) { *wlev += 1; g_InitWin = true; } wlev = 0; return; } int buynets = 0; if (g_InterfaceEvents.CheckButton(netbuy_id)) buynets = 1; if (g_InterfaceEvents.CheckButton(netbuy10_id)) buynets = 10; if (g_InterfaceEvents.CheckButton(netbuy20_id)) buynets = 20; if (buynets > 0) { int cost = 0; int amount = buynets; int *nets = g_Gangs.GetNets(); if (((*nets) + buynets) > 60) amount = 60 - (*nets); cost = tariff.nets_price(amount); if (g_Gold.item_cost(cost) == true) { *nets += amount; if (IsCheckboxOn(netautobuy_id)) g_Gangs.KeepNetStocked(*nets); g_InitWin = true; } nets = 0; buynets = 0; return; } int buypots = 0; if (g_InterfaceEvents.CheckButton(healbuy_id)) buypots = 1; if (g_InterfaceEvents.CheckButton(healbuy10_id)) buypots = 10; if (g_InterfaceEvents.CheckButton(healbuy20_id)) buypots = 20; if (buypots > 0) { int cost = 0; int amount = buypots; int *potions = g_Gangs.GetHealingPotions(); if (((*potions) + buypots) > 200) amount = 200 - (*potions); cost = tariff.healing_price(amount); if (g_Gold.item_cost(cost) == true) { *potions += amount; if (IsCheckboxOn(healautobuy_id)) g_Gangs.KeepHealStocked(*potions); g_InitWin = true; } potions = 0; buypots = 0; return; } if (g_InterfaceEvents.CheckCheckbox(netautobuy_id)) { int *nets = g_Gangs.GetNets(); g_Gangs.KeepNetStocked(IsCheckboxOn(netautobuy_id) ? *nets : 0); } if (g_InterfaceEvents.CheckCheckbox(healautobuy_id)) { int *potions = g_Gangs.GetHealingPotions(); g_Gangs.KeepHealStocked(IsCheckboxOn(healautobuy_id) ? *potions : 0); } if (g_InterfaceEvents.CheckButton(gangfire_id)) { selection = GetLastSelectedItemFromList(ganglist_id); if (selection != -1) { g_Gangs.FireGang(selection); g_InitWin = true; } return; } if (g_InterfaceEvents.CheckListbox(recruitlist_id)) { string ClickedHeader = HeaderClicked(recruitlist_id); if (ClickedHeader != "") { g_LogFile.ss() << "User clicked \"" << ClickedHeader << "\" column header on Recruit listbox" << endl; g_LogFile.ssend(); return; } g_LogFile.ss() << "selected recruitable gang changed" << endl; g_LogFile.ssend(); sel_recruit = GetLastSelectedItemFromList(recruitlist_id); if (ListDoubleClicked(recruitlist_id)) { g_LogFile.ss() << "User double-clicked recruitable gang! Hiring if possible." << endl; g_LogFile.ssend(); hire_recruitable(); return; } // g_InitWin = true; } // this is what gets called it you change the selected gang if (g_InterfaceEvents.CheckListbox(ganglist_id)) { string ClickedHeader = HeaderClicked(ganglist_id); if (ClickedHeader != "") { g_LogFile.ss() << "User clicked \"" << ClickedHeader << "\" column header on Gangs listbox" << endl; g_LogFile.ssend(); return; } g_LogFile.write("selected gang changed"); selection = GetLastSelectedItemFromList(ganglist_id); if (selection != -1) { sGang* gang = g_Gangs.GetGang(selection); ss.str(""); ss << "Name: " << gang->m_Name << "\n" << "Number: " << gang->m_Num << "\n" << "Combat: " << gang->m_Skills[SKILL_COMBAT] << "%\n" << "Magic: " << gang->m_Skills[SKILL_MAGIC] << "%\n" << "Intelligence: " << gang->m_Stats[STAT_INTELLIGENCE] << "%\n"; EditTextItem(ss.str(), gangdesc_id); SetSelectedItemInList(missionlist_id, gang->m_MissionID, false); set_mission_desc(gang->m_MissionID); // set the long description for the mission } } if (g_InterfaceEvents.CheckListbox(missionlist_id)) { // get the index into the missions list int mission_id = GetLastSelectedItemFromList(missionlist_id); g_LogFile.ss() << "selchange: mid = " << mission_id << endl; g_LogFile.ssend(); set_mission_desc(mission_id); // set the textfield with the long description and price for this mission g_LogFile.ss() << "selection change: rebuilding gang list box" << endl; g_LogFile.ssend(); for (int selection = multi_first(); selection != -1; selection = multi_next()) { sGang* gang = g_Gangs.GetGang(selection); /* * make sure we found the gang - pretty catastrophic * if not, so log it if we do */ if (gang == 0) { g_LogFile.ss() << "Error: No gang for index " << selection; g_LogFile.ssend(); continue; } /* * if the mission id is -1, nothing else to do * (moving this to before the recruitment check * since -1 most likely means nothing selected in * the missions list) */ if (mission_id == -1) { continue; } /* * if the gang is already doing <whatever> * then let them get on with it */ if (gang->m_MissionID == u_int(mission_id)) { continue; } /* * if they were recruiting, turn off the * auto-recruit flag */ if (gang->m_MissionID == MISS_RECRUIT && gang->m_AutoRecruit) { gang->m_AutoRecruit = false; gang->m_LastMissID = -1; } gang->m_MissionID = mission_id; /* * format the display line */ g_InitWin = true; } int cost = 0; if (g_Gangs.GetNumGangs() > 0) { for (int i = 0; i < g_Gangs.GetNumGangs(); i++) { sGang* g = g_Gangs.GetGang(i); cost += tariff.goon_mission_cost(g->m_MissionID); } } ss.str(""); ss << "Weekly Cost: " << cost; EditTextItem(ss.str(), totalcost_id); if (gold_id >= 0) { ss.str(""); ss << "Gold: " << g_Gold.ival(); EditTextItem(ss.str(), gold_id); } } if (g_InterfaceEvents.CheckCheckbox(controlcatacombs_id)) { g_Gangs.Control_Gangs(IsCheckboxOn(controlcatacombs_id)); } bool dosliders = false; if (g_InterfaceEvents.CheckSlider(girlspercslider_id)) { int s1 = SliderValue(girlspercslider_id); int s2 = SliderValue(itemspercslider_id); if (s2 < s1) { s2 = s1; SliderRange(itemspercslider_id, 0, 100, s2, 1); } dosliders = true; } if (g_InterfaceEvents.CheckSlider(itemspercslider_id)) { int s1 = SliderValue(itemspercslider_id); int s2 = SliderValue(girlspercslider_id); if (s1 < s2) { s2 = s1; SliderRange(girlspercslider_id, 0, 100, s2, 1); } dosliders = true; } if (dosliders) { int s1 = SliderValue(girlspercslider_id); int s2 = SliderValue(itemspercslider_id); g_Gangs.Gang_Gets_Girls(s1); g_Gangs.Gang_Gets_Items(s2 - s1); g_Gangs.Gang_Gets_Beast(100 - s2); ss.str(""); ss << "Girls : " << g_Gangs.Gang_Gets_Girls() << "%"; EditTextItem(ss.str(), ganggetsgirls_id); ss.str(""); ss << "Items : " << g_Gangs.Gang_Gets_Items() << "%"; EditTextItem(ss.str(), ganggetsitems_id); ss.str(""); ss << "Beasts : " << g_Gangs.Gang_Gets_Beast() << "%"; EditTextItem(ss.str(), ganggetsbeast_id); return; } }
void cScreenGirlDetails::check_events() { // no events means we can go home if (g_InterfaceEvents.GetNumEvents() == 0) return; // if it's the back button, pop the window off the stack and we're done if (g_InterfaceEvents.CheckButton(back_id)) { g_InitWin = true; g_WinManager.Pop(); return; } if (g_InterfaceEvents.CheckSlider(houseperc_id)) { g_Girls.SetStat(selected_girl, STAT_HOUSE, SliderValue(houseperc_id)); ss.str(""); ss << gettext("House Percentage: ") << SliderValue(houseperc_id) << gettext("%"); EditTextItem(ss.str(), housepercval_id); // Rebelliousness might have changed, so update details if (DetailLevel == 0) { string detail = g_Girls.GetDetailsString(selected_girl); EditTextItem(detail, girldesc_id); } return; } if (g_InterfaceEvents.CheckButton(more_id)) { if (DetailLevel == 0) { DetailLevel = 1; EditTextItem(g_Girls.GetMoreDetailsString(selected_girl), girldesc_id); } else if (DetailLevel == 1) { DetailLevel = 2; EditTextItem(g_Girls.GetThirdDetailsString(selected_girl), girldesc_id); } else { DetailLevel = 0; EditTextItem(g_Girls.GetDetailsString(selected_girl), girldesc_id); } } if (g_InterfaceEvents.CheckButton(day_id)) { DisableButton(day_id, true); DisableButton(night_id, false); g_InitWin = true; Day0Night1 = SHIFT_DAY; } if (g_InterfaceEvents.CheckButton(night_id)) { DisableButton(day_id, false); DisableButton(night_id, true); g_InitWin = true; Day0Night1 = SHIFT_NIGHT; } if (g_InterfaceEvents.CheckCheckbox(antipreg_id)) { selected_girl->m_UseAntiPreg = (IsCheckboxOn(antipreg_id)); } if (g_InterfaceEvents.CheckListbox(traitlist_id)) { int selection = GetLastSelectedItemFromList(traitlist_id); if (selection != -1) EditTextItem(selected_girl->m_Traits[selection]->m_Desc, traitdesc_id); else EditTextItem("", traitdesc_id); } if (g_InterfaceEvents.CheckListbox(jobtypelist_id)) { SetJob = true; RefreshJobList(); } if (g_InterfaceEvents.CheckListbox(joblist_id)) { bool fulltime = g_CTRLDown; int selection = GetSelectedItemFromList(joblist_id); if (selection != -1) { int old_job = (Day0Night1 ? selected_girl->m_NightJob : selected_girl->m_DayJob); // handle special job requirements and assign - if HandleSpecialJobs returns true, the job assignment was modified or cancelled if (g_Brothels.m_JobManager.HandleSpecialJobs(g_CurrBrothel, selected_girl, selection, old_job, Day0Night1, fulltime)) { selection = (Day0Night1 ? selected_girl->m_NightJob : selected_girl->m_DayJob); SetSelectedItemInList(joblist_id, selection, false); } // refresh job worker counts for former job and current job if (old_job != selection) { SetSelectedItemText(joblist_id, old_job, g_Brothels.m_JobManager.JobDescriptionCount(old_job, g_CurrBrothel, Day0Night1)); SetSelectedItemText(joblist_id, selection, g_Brothels.m_JobManager.JobDescriptionCount(selection, g_CurrBrothel, Day0Night1)); } RefreshJobList(); } } if (g_InterfaceEvents.CheckButton(inventory_id)) { if (selected_girl) { if (GirlDead(selected_girl)) return; g_InitWin = true; g_AllTogle = true; g_WinManager.push("Item Management"); return; } } if (g_InterfaceEvents.CheckButton(gallery_id)) { g_WinManager.push("Gallery"); g_InitWin = true; return; } if (g_InterfaceEvents.CheckSlider(accom_id)) { selected_girl->m_AccLevel = SliderValue(accom_id); SliderRange(accom_id, 0, 9, selected_girl->m_AccLevel, 1); if (accomval_id != -1) { stringstream acc; acc << "Accommodation: " << g_Girls.Accommodation(SliderValue(accom_id)); if (cfg.debug.log_extradetails()) { int val = SliderValue(accom_id) - g_Girls.PreferredAccom(selected_girl); if (val != 0) acc << " ( " << (val > 0 ? "+" : "") << val << " )"; } EditTextItem(acc.str(), accomval_id); } g_InitWin = true; return; } if (g_InterfaceEvents.CheckButton(accomup_id)) { if (selected_girl->m_AccLevel + 1 > 9) selected_girl->m_AccLevel = 9; else selected_girl->m_AccLevel++; if (accomval_id != -1) EditTextItem("Accommodation: " + g_Girls.Accommodation(selected_girl->m_AccLevel), accomval_id); g_InitWin = true; return; } if (g_InterfaceEvents.CheckButton(accomdown_id)) { if (selected_girl->m_AccLevel - 1 < 0) selected_girl->m_AccLevel = 0; else selected_girl->m_AccLevel--; if (accomval_id != -1) EditTextItem("Accommodation: " + g_Girls.Accommodation(selected_girl->m_AccLevel), accomval_id); g_InitWin = true; return; } if (g_InterfaceEvents.CheckButton(takegold_id)) { take_gold(selected_girl); } if (g_InterfaceEvents.CheckButton(reldungeon_id)) { g_Brothels.GetDungeon()->GetDungeonPos(selected_girl); if ((g_Brothels.GetBrothel(g_CurrBrothel)->m_NumRooms - g_Brothels.GetBrothel(g_CurrBrothel)->m_NumGirls) == 0) { g_MessageQue.AddToQue(gettext("The current brothel has no more room.\nBuy a new one, get rid of some girls, or change the brothel you are currently managing."), 0); } else { sGirl* nextGirl = remove_selected_girl(); sGirl* tempGirl = g_Brothels.GetDungeon()->RemoveGirl(g_Brothels.GetDungeon()->GetGirl(g_Brothels.GetDungeon()->GetGirlPos(selected_girl))); g_Brothels.AddGirl(g_CurrBrothel, tempGirl); if (g_Brothels.GetDungeon()->GetNumGirls() == 0) { selected_girl = 0; g_WinManager.Pop(); } else selected_girl = nextGirl; } g_InitWin = true; return; } if (g_InterfaceEvents.CheckButton(senddungeon_id)) { ss.str(""); g_Brothels.GetGirlPos(g_CurrBrothel, selected_girl); // does she decide to fight back if (g_Brothels.FightsBack(selected_girl)) { bool win = true; sGang* gang = g_Gangs.GetGangOnMission(MISS_GUARDING); int count = 8; while (gang && win && count >= 0) { win = (g_Gangs.GangCombat(selected_girl, gang)); if (gang->m_Num == 0) gang = g_Gangs.GetGangOnMission(MISS_GUARDING); count--; if (count<0) win = true; } // Calculate combat between goons and girl if she decides to fight back if (win) { ss << gettext("She puts up a fight"); if (gang && gang->m_Num == 0) ss << gettext(", and the gang is completely wiped out"); ss << ". "; if (g_Brothels.PlayerCombat(selected_girl)) // fight with the player { // If girl wins she escapes and leaves the brothel ss << gettext("After defeating you as well, she escapes to the outside.\n"); ss << gettext("She will escape for good in 6 weeks if you don't send someone after her."); sGirl* nextGirl = remove_selected_girl(); sGirl* temp = selected_girl; if (selected_girl->m_DayJob == JOB_INDUNGEON) temp = g_Brothels.GetDungeon()->RemoveGirl(selected_girl); else if (selected_girl->m_InHouse) g_House.RemoveGirl(0, selected_girl, false); else if (selected_girl->m_InFarm) g_Farm.RemoveGirl(0, selected_girl, false); else if (selected_girl->m_InClinic) g_Clinic.RemoveGirl(0, selected_girl, false); else if (selected_girl->m_InCentre) g_Centre.RemoveGirl(0, selected_girl, false); else if (selected_girl->m_InArena) g_Arena.RemoveGirl(0, selected_girl, false); else if (selected_girl->m_InStudio) g_Studios.RemoveGirl(0, selected_girl, false); else g_Brothels.RemoveGirl(selected_girl->where_is_she, selected_girl, false); temp->m_RunAway = 6; temp->m_NightJob = temp->m_DayJob = JOB_RUNAWAY; g_Brothels.AddGirlToRunaways(temp); stringstream smess; smess << temp->m_Realname << gettext(" has run away"); g_MessageQue.AddToQue(smess.str(), 1); selected_girl = nextGirl; if (selected_girl == 0) g_WinManager.Pop(); } else // otherwise put her in the dungeon { int reason = (selected_girl->m_Spotted ? DUNGEON_GIRLSTEAL : DUNGEON_GIRLWHIM); sGirl* nextGirl = remove_selected_girl(); selected_girl->m_DayJob = selected_girl->m_NightJob = JOB_INDUNGEON; /* */if (selected_girl->m_InHouse) g_House.RemoveGirl(0, selected_girl, false); else if (selected_girl->m_InFarm) g_Farm.RemoveGirl(0, selected_girl, false); else if (selected_girl->m_InClinic) g_Clinic.RemoveGirl(0, selected_girl, false); else if (selected_girl->m_InCentre) g_Centre.RemoveGirl(0, selected_girl, false); else if (selected_girl->m_InArena) g_Arena.RemoveGirl(0, selected_girl, false); else if (selected_girl->m_InStudio) g_Studios.RemoveGirl(0, selected_girl, false); else g_Brothels.RemoveGirl(selected_girl->where_is_she, selected_girl, false); g_Brothels.GetDungeon()->AddGirl(selected_girl, reason); ss << gettext("However, you manage to defeat her yourself and place her unconscious body in the dungeon."); bool pop = false; /* */if (selected_girl->m_InHouse) if (g_House.GetNumGirls(0) == 0) pop = true; else if (selected_girl->m_InFarm) if (g_Farm.GetNumGirls(0) == 0) pop = true; else if (selected_girl->m_InClinic) if (g_Clinic.GetNumGirls(0) == 0) pop = true; else if (selected_girl->m_InCentre) if (g_Centre.GetNumGirls(0) == 0) pop = true; else if (selected_girl->m_InArena) if (g_Arena.GetNumGirls(0) == 0) pop = true; else if (selected_girl->m_InStudio) if (g_Studios.GetNumGirls(0) == 0) pop = true; else if (g_Brothels.GetNumGirls(selected_girl->where_is_she) == 0) pop = true; if (pop) { selected_girl = 0; g_WinManager.Pop(); } else selected_girl = nextGirl; } } else // otherwise put her in the dungeon { ss << gettext("She puts up a fight "); if (gang && gang->m_Num == 0) ss << gettext("and the gang is wiped out, "); ss << gettext("but your goons manage to drag her unconscious to the dungeon."); int reason = (selected_girl->m_Spotted ? DUNGEON_GIRLSTEAL : DUNGEON_GIRLWHIM); sGirl* nextGirl = remove_selected_girl(); /* */if (selected_girl->m_InHouse) g_House.RemoveGirl(0, selected_girl, false); else if (selected_girl->m_InFarm) g_Farm.RemoveGirl(0, selected_girl, false); else if (selected_girl->m_InClinic) g_Clinic.RemoveGirl(0, selected_girl, false); else if (selected_girl->m_InCentre) g_Centre.RemoveGirl(0, selected_girl, false); else if (selected_girl->m_InArena) g_Arena.RemoveGirl(0, selected_girl, false); else if (selected_girl->m_InStudio) g_Studios.RemoveGirl(0, selected_girl, false); else g_Brothels.RemoveGirl(selected_girl->where_is_she, selected_girl, false); g_Brothels.GetDungeon()->AddGirl(selected_girl, reason); bool pop = false; /* */if (selected_girl->m_InHouse) if (g_House.GetNumGirls(0) == 0) pop = true; else if (selected_girl->m_InFarm) if (g_Farm.GetNumGirls(0) == 0) pop = true; else if (selected_girl->m_InClinic) if (g_Clinic.GetNumGirls(0) == 0) pop = true; else if (selected_girl->m_InCentre) if (g_Centre.GetNumGirls(0) == 0) pop = true; else if (selected_girl->m_InArena) if (g_Arena.GetNumGirls(0) == 0) pop = true; else if (selected_girl->m_InStudio) if (g_Studios.GetNumGirls(0) == 0) pop = true; else if (g_Brothels.GetNumGirls(selected_girl->where_is_she) == 0) pop = true; if (pop) { selected_girl = 0; g_WinManager.Pop(); } else selected_girl = nextGirl; } } else { int reason = (selected_girl->m_Spotted ? DUNGEON_GIRLSTEAL : DUNGEON_GIRLWHIM); sGirl* nextGirl = remove_selected_girl(); /* */if (selected_girl->m_InHouse) g_House.RemoveGirl(0, selected_girl, false); else if (selected_girl->m_InFarm) g_Farm.RemoveGirl(0, selected_girl, false); else if (selected_girl->m_InClinic) g_Clinic.RemoveGirl(0, selected_girl, false); else if (selected_girl->m_InCentre) g_Centre.RemoveGirl(0, selected_girl, false); else if (selected_girl->m_InArena) g_Arena.RemoveGirl(0, selected_girl, false); else if (selected_girl->m_InStudio) g_Studios.RemoveGirl(0, selected_girl, false); else g_Brothels.RemoveGirl(selected_girl->where_is_she, selected_girl, false); g_Brothels.GetDungeon()->AddGirl(selected_girl, reason); ss << gettext("She goes quietly with a sullen look on her face."); bool pop = false; /* */if (selected_girl->m_InHouse) if (g_House.GetNumGirls(0) == 0) pop = true; else if (selected_girl->m_InFarm) if (g_Farm.GetNumGirls(0) == 0) pop = true; else if (selected_girl->m_InClinic) if (g_Clinic.GetNumGirls(0) == 0) pop = true; else if (selected_girl->m_InCentre) if (g_Centre.GetNumGirls(0) == 0) pop = true; else if (selected_girl->m_InArena) if (g_Arena.GetNumGirls(0) == 0) pop = true; else if (selected_girl->m_InStudio) if (g_Studios.GetNumGirls(0) == 0) pop = true; else if (g_Brothels.GetNumGirls(g_CurrBrothel) == 0) /* */ pop = true; if (pop) { selected_girl = 0; g_WinManager.Pop(); } else selected_girl = nextGirl; } g_InitWin = true; g_MessageQue.AddToQue(ss.str(), 0); return; } if (g_InterfaceEvents.CheckButton(interact_id)) { if (g_TalkCount > 0) { DirPath dp; eventrunning = true; if (selected_girl->m_DayJob != JOB_INDUNGEON) { int v[2] = { 1, -1 }; cTrigger* trig = 0; if (!(trig = selected_girl->m_Triggers.CheckForScript(TRIGGER_TALK, false, v))) // trigger any girl specific talk script { // no, so trigger the default one dp = dp << "Resources" << "Scripts" << "DefaultInteractDetails.script"; } else { // yes, so use that instead dp = DirPath(cfg.folders.characters().c_str()) << selected_girl->m_Name << trig->m_Script; } } else { int v[2] = { 0, -1 }; cTrigger* trig = 0; if (!(trig = selected_girl->m_Triggers.CheckForScript(TRIGGER_TALK, false, v))) // trigger any girl specific talk script { // no, so trigger the default one dp = dp << "Resources" << "Scripts" << "DefaultInteractDungeon.script"; } else { dp = DirPath(cfg.folders.characters().c_str()) << selected_girl->m_Name << trig->m_Script; } } cScriptManager script_manager; script_manager.Load(dp, selected_girl); if (!g_Cheats) g_TalkCount--; } g_InitWin = true; return; } if (g_InterfaceEvents.CheckButton(next_id)) { NextGirl(); } if (g_InterfaceEvents.CheckButton(prev_id)) { PrevGirl(); } }
void cScreenGangs::check_events() { // no events means we can go home if(g_InterfaceEvents.GetNumEvents() == 0) return; // if it's the back button, pop the window off the stack and we're done if(g_InterfaceEvents.CheckButton(back_id)) { g_InitWin = true; g_WinManager.Pop(); return; } if(g_InterfaceEvents.CheckButton(ganghire_id)) { hire_recruitable(); return; } if(g_InterfaceEvents.CheckButton(weaponup_id)) { int cost = 0; int *wlev = g_Gangs.GetWeaponLevel(); cost = tariff.goon_weapon_upgrade(*wlev); if(g_Gold.item_cost(cost) == true) { *wlev += 1; g_InitWin = true; } wlev = nullptr; return; } if(g_InterfaceEvents.CheckButton(netbuy_id)) { int cost = 0; int amount = 20; int *nets = g_Gangs.GetNets(); if(((*nets) + 20) > 60) amount = 60 - (*nets); cost = tariff.nets_price(amount); if(g_Gold.item_cost(cost) == true) { *nets += amount; if(IsCheckboxOn(netautobuy_id)) g_Gangs.KeepNetStocked(*nets); g_InitWin = true; } nets = nullptr; return; } if(g_InterfaceEvents.CheckButton(healbuy_id)) { int cost = 0; int amount = 20; int *potions = g_Gangs.GetHealingPotions(); if(((*potions) + 20) > 200) amount = 200 - (*potions); cost = tariff.healing_price(amount); if(g_Gold.item_cost(cost) == true) { *potions += amount; g_InitWin = true; } potions = nullptr; return; } if(g_InterfaceEvents.CheckCheckbox(netautobuy_id)) { int *nets = g_Gangs.GetNets(); if(IsCheckboxOn(netautobuy_id)) g_Gangs.KeepNetStocked(*nets); else g_Gangs.KeepNetStocked(0); } if(g_InterfaceEvents.CheckCheckbox(healautobuy_id)) { int *potions = g_Gangs.GetHealingPotions(); if(IsCheckboxOn(healautobuy_id)) g_Gangs.KeepHealStocked(*potions); else g_Gangs.KeepHealStocked(0); } if(g_InterfaceEvents.CheckButton(gangfire_id)) { selection = GetLastSelectedItemFromList(ganglist_id); if(selection != -1) { g_Gangs.FireGang(selection); g_InitWin = true; } return; } if(g_InterfaceEvents.CheckListbox(recruitlist_id)) { std::string ClickedHeader = HeaderClicked(recruitlist_id); if(ClickedHeader != "") { g_LogFile.ss() << "User clicked \"" << ClickedHeader << "\" column header on Recruit listbox" << std::endl; g_LogFile.ssend(); return; } g_LogFile.ss() << "selected recruitable gang changed" << std::endl; g_LogFile.ssend(); sel_recruit = GetLastSelectedItemFromList(recruitlist_id); if(ListDoubleClicked(recruitlist_id)) { g_LogFile.ss() << "User double-clicked recruitable gang! Hiring if possible." << std::endl; g_LogFile.ssend(); hire_recruitable(); return; } // g_InitWin = true; } /* * this is what gets called it you change the selected gang */ if(g_InterfaceEvents.CheckListbox(ganglist_id)) { std::string ClickedHeader = HeaderClicked(ganglist_id); if(ClickedHeader != "") { g_LogFile.ss() << "User clicked \"" << ClickedHeader << "\" column header on Gangs listbox" << std::endl; g_LogFile.ssend(); return; } g_LogFile.ss() << "selected gang changed" << std::endl; g_LogFile.ssend(); selection = GetLastSelectedItemFromList(ganglist_id); if(selection != -1) { sGang* gang = g_Gangs.GetGang(selection); std::string text = "Name: "; text += gang->m_Name; text += "\n"; text += "Number: "; text += toString((int)gang->m_Num); text += "\n"; text += "Combat: "; text += toString(gang->m_Skills[SKILL_COMBAT]); text += "%\n"; text += "Magic: "; text += toString(gang->m_Skills[SKILL_MAGIC]); text += "%\n"; text += "Intelligence: "; text += toString(gang->m_Stats[STAT_INTELLIGENCE]); text += "%\n"; EditTextItem(text, gangdesc_id); SetSelectedItemInList(missionlist_id, gang->m_MissionID, false); /* * set the long description for the mission */ set_mission_desc(gang->m_MissionID); } } if(g_InterfaceEvents.CheckListbox(missionlist_id)) { /* * get the index into the missions list */ int mission_id = GetLastSelectedItemFromList(missionlist_id); g_LogFile.ss() << "selchange: mid = " << mission_id << std::endl; g_LogFile.ssend(); /* * set the textfield with the long description and price * for this mission */ set_mission_desc(mission_id); g_LogFile.ss() << "selection change: rebuilding gang list box" << std::endl; g_LogFile.ssend(); for(int selection = multi_first(); selection != -1; selection = multi_next() ) { sGang* gang = g_Gangs.GetGang(selection); /* * make sure we found the gang - pretty catastrophic * if not, so log it if we do */ if(gang == nullptr) { g_LogFile.ss() << "Error: No gang for index " << selection ; g_LogFile.ssend(); continue; } /* * if the mission id is -1, nothing else to do * (moving this to before the recruitment check * since -1 most likely means nothing selected in * the missions list) */ if(mission_id == -1) { continue; } /* * if the gang is already doing <whatever> * then let them get on with it */ if(gang->m_MissionID == u_int(mission_id)) { continue; } /* * if they were recruiting, turn off the * auto-recruit flag */ if(gang->m_MissionID == MISS_RECRUIT && gang->m_AutoRecruit) { gang->m_AutoRecruit = false; gang->m_LastMissID = -1; } gang->m_MissionID = mission_id; /* * format the display line */ std::string Data[6]; ss.str(""); ss << gang->m_Name; Data[0] = ss.str(); ss.str(""); ss << gang->m_Num; Data[1] = ss.str(); ss.str(""); ss << short_mission_desc(mission_id); Data[2] = ss.str(); ss.str(""); ss << (int)gang->m_Skills[SKILL_COMBAT] << "%"; Data[3] = ss.str(); ss.str(""); ss << (int)gang->m_Skills[SKILL_MAGIC] << "%"; Data[4] = ss.str(); ss.str(""); ss << (int)gang->m_Stats[STAT_INTELLIGENCE] << "%"; Data[5] = ss.str(); // g_LogFile.ss() << "Gang:\t" << Data[0] << "\t" << Data[1] << "\t" << Data[2] // << "\t" << Data[3] << "\t" << Data[4] << "\t" << Data[5] << "\t" << Data[6] << std::endl // << " index " << mission_id << ": " << ss.str() << std::endl; // g_LogFile.ssend(); /* * and add it to the list */ SetSelectedItemText( ganglist_id, selection, Data, 6 ); } std::string message = ""; if(g_Gangs.GetNumGangs() > 0) { int cost = 0; for(int i=0; i < g_Gangs.GetNumGangs(); i++) { sGang* g = g_Gangs.GetGang(i); cost += tariff.goon_mission_cost( g->m_MissionID ); } message = "Daily Cost: "; message += toString(cost); } else message = "Daily Cost: 0"; EditTextItem(message, totalcost_id); } }