void cScreenGetInput::check_events() { if (g_InterfaceEvents.GetNumEvents() != 0 || g_EnterKey) { switch (m_profile) { case (MODE_CONFIRM_EXIT) : CheckEvents_ConfirmExit(); break; default: if (g_InterfaceEvents.CheckEvent(EVENT_BUTTONCLICKED, id_btn_ok)) { g_EnterKey = false; g_ReturnText = GetEditBoxText(id_textfield); g_IntReturn = atol(g_ReturnText.c_str()); g_InitWin = true; g_WinManager.Pop(); return; } else if (g_InterfaceEvents.CheckEvent(EVENT_BUTTONCLICKED, id_btn_cancel)) g_WinManager.Pop(); } } }
static int game_over(lua_State *L) { cScriptManager sm; g_MessageQue.AddToQue("GAME OVER", COLOR_RED); g_WinManager.PopToWindow(&g_BrothelManagement); g_WinManager.Pop(); g_InitWin = true; sm.Release(); return 0; }
void cArenaTry::process() { if (!ids_set) set_ids(); // we need to make sure the ID variables are set init(); if (g_InterfaceEvents.GetNumEvents() == 0) return; // no events means we can go home /* * otherwise, compare event IDs * * 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; } else if (g_InterfaceEvents.CheckButton(walk_id)) { do_walk(); if (!g_Cheats) g_TryOuts = true; g_InitWin = true; } }
void cScreenMovieMaker::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 it's the back button, pop the window off the stack and we're done if(g_InterfaceEvents.CheckButton(releasemovie_id)) { g_InitWin = true; g_WinManager.Pop(); g_Studios.ReleaseCurrentMovie(); return; } }
void cScreenMayor::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(bribe_id)) { SetBribe = true; g_GetInput.ModeGetInt(); g_WinManager.push("GetInput"); g_InitWin = true; return; } }
void cScreenHouse::check_events() { if (g_InterfaceEvents.GetNumEvents() == 0) return; // no events means we can go home // 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; } }
void cScreenGetInput::CheckEvents_ConfirmExit() { if (g_InitWin) { Focused(); g_InitWin = false; } if (g_InterfaceEvents.GetNumEvents() == 0 && !g_EnterKey) { return; } if (g_InterfaceEvents.CheckButton(id_btn_cancel)) { g_ReturnText = ""; g_InitWin = true; g_WinManager.Pop(); return; } if (g_InterfaceEvents.CheckButton(id_btn_ok) || g_EnterKey) { g_EnterKey = false; g_ReturnText = ""; g_InitWin = true; g_WinManager.Pop(); g_WinManager.Pop(); ResetInterface(); // Schedule Quit Event -- To quit //SDL_Event ev; //ev->type = SDL_QUIT; //if (!SDL_PushEvent(ev)) // g_LogFile.write("SDL Quit Re-Scheduled!"); } }
void cScreenCentreManagement::ViewSelectedGirl() { if (selected_girl) { if (GirlDead(selected_girl)) return; //load up the cycle_girls vector with the ordered list of girl IDs FillSortedIDList(girllist_id, &cycle_girls, &cycle_pos); for (int i = cycle_girls.size(); i-- > 0;) { // no viewing dead girls if (g_Centre.GetGirl(g_CurrCentre, cycle_girls[i])->health() <= 0) cycle_girls.erase(cycle_girls.begin() + i); } g_InitWin = true; g_WinManager.push("Girl Details"); return; } }
void cScreenTown::check_farm(int FarmNum) { // player clicked on one of the brothels if (g_Farm.GetNumBrothels() == FarmNum) { // player doesn't own this Studio... can he buy it? static_brothel_data *bck = farm_data + FarmNum; locale syslocale(""); stringstream ss; ss.imbue(syslocale); if (!g_Gold.afford(bck->price) || g_Gangs.GetNumBusinessExtorted() < bck->business) { // can't buy it ss << gettext("This building costs ") << bck->price << gettext(" gold and you need to control at least ") << bck->business << gettext(" businesses."); if (!g_Gold.afford(bck->price)) ss << "\n" << gettext("You need ") << (bck->price - g_Gold.ival()) << gettext(" more gold to afford it."); if (g_Gangs.GetNumBusinessExtorted() < bck->business) ss << "\n" << gettext("You need to control ") << (bck->business - g_Gangs.GetNumBusinessExtorted()) << gettext(" more businesses."); g_MessageQue.AddToQue(ss.str(), 0); } else { // can buy it ss << gettext("Do you wish to purchase this building for ") << bck->price << gettext(" gold? It has ") << bck->rooms << gettext(" rooms."); g_MessageQue.AddToQue(ss.str(), 2); g_ChoiceManager.CreateChoiceBox(224, 112, 352, 384, 0, 2, 32, 8); g_ChoiceManager.AddChoice(0, gettext("Buy It"), 0); g_ChoiceManager.AddChoice(0, gettext("Don't Buy It"), 1); g_ChoiceManager.SetActive(0); BuyFarm = FarmNum; } } else { // player owns this brothel... go to it g_Building = BUILDING_FARM; g_CurrFarm = FarmNum; g_WinManager.push("Farm Screen"); } }
void cScreenTown::process() { if (!ids_set)set_ids(); // we need to make sure the ID variables are set init(); if (g_InterfaceEvents.GetNumEvents() == 0) return; // no events means we can go home if (girlimage_id != -1 && !eventrunning) HideImage(girlimage_id, true); /* * otherwise, compare event IDs * * 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; } else if (g_InterfaceEvents.CheckButton(slavemarket_id)) { g_InitWin = true; g_WinManager.push("Slave Market"); return; } else if (g_InterfaceEvents.CheckButton(prison_id)) { g_InitWin = true; g_WinManager.push("Prison"); return; } else if (g_InterfaceEvents.CheckButton(house_id)) { g_Building = BUILDING_HOUSE; g_CurrHouse = 0; g_InitWin = true; g_WinManager.push("Player House"); return; } else if (g_InterfaceEvents.CheckButton(clinic_id)) { check_clinic(0); g_InitWin = true; return; } else if (g_InterfaceEvents.CheckButton(studio_id)) { check_studio(0); g_InitWin = true; return; } else if (g_InterfaceEvents.CheckButton(arena_id)) { check_arena(0); g_InitWin = true; return; } else if (g_InterfaceEvents.CheckButton(centre_id)) { check_centre(0); g_InitWin = true; return; } else if (g_InterfaceEvents.CheckButton(farm_id)) { check_farm(0); g_InitWin = true; return; } else if (g_InterfaceEvents.CheckButton(mayor_id)) { g_InitWin = true; g_WinManager.push("Mayor"); return; } else if (g_InterfaceEvents.CheckButton(bank_id)) { g_InitWin = true; g_WinManager.push("Bank"); return; } else if (g_InterfaceEvents.CheckButton(shop_id)) { g_InitWin = true; g_AllTogle = false; g_WinManager.push("Item Management"); return; } else if (g_InterfaceEvents.CheckButton(brothel0_id)) { check_brothel(0); g_InitWin = true; return; } else if (g_InterfaceEvents.CheckButton(brothel1_id)) { check_brothel(1); g_InitWin = true; return; } else if (g_InterfaceEvents.CheckButton(brothel2_id)) { check_brothel(2); g_InitWin = true; return; } else if (g_InterfaceEvents.CheckButton(brothel3_id)) { check_brothel(3); g_InitWin = true; return; } else if (g_InterfaceEvents.CheckButton(brothel4_id)) { check_brothel(4); g_InitWin = true; return; } else if (g_InterfaceEvents.CheckButton(brothel5_id)) { check_brothel(5); g_InitWin = true; return; } else if (g_InterfaceEvents.CheckButton(brothel6_id)) { check_brothel(6); g_InitWin = true; return; } else if (g_InterfaceEvents.CheckButton(walk_id)) { do_walk(); if (!g_Cheats) g_WalkAround = true; g_InitWin = true; } else if (g_InterfaceEvents.CheckButton(setup_id)) { g_InitWin = true; g_WinManager.push("Property Management"); return; } // `J` added }
void cClinicScreen::process() { /* * we need to make sure the ID variables are set */ if (!ids_set) set_ids(); init(); if (g_InitWin) { EditTextItem(g_Clinic.GetBrothelString(0), clinicdetails_id); g_InitWin = false; } /* * no events means we can go home */ if (g_InterfaceEvents.GetNumEvents() == 0) return; /* * otherwise, compare event IDs * * 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; } else if (g_InterfaceEvents.CheckButton(walk_id)) { g_InitWin = true; g_WinManager.push("Clinic Try"); return; } else if (g_InterfaceEvents.CheckButton(girls_id)) { g_InitWin = true; g_WinManager.push("Clinic"); return; } else if (g_InterfaceEvents.CheckButton(staff_id)) { g_InitWin = true; g_WinManager.push("Gangs"); return; } else if (g_InterfaceEvents.CheckButton(turns_id)) { g_InitWin = true; g_WinManager.push("TurnSummary"); return; } else if (g_InterfaceEvents.CheckButton(setup_id)) { g_Building = BUILDING_CLINIC; g_InitWin = true; g_WinManager.push("Building Setup"); return; } else if (g_InterfaceEvents.CheckButton(dungeon_id)) { g_InitWin = true; g_WinManager.push("Dungeon"); return; } else if (g_InterfaceEvents.CheckButton(weeks_id)) { g_InitWin = true; if (!g_CTRLDown) { g_CTRLDown = false; AutoSaveGame(); } NextWeek(); g_WinManager.push("TurnSummary"); 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(); } }
bool cScreenGirlDetails::check_keys() { if (g_LeftArrow) { g_LeftArrow = false; PrevGirl(); return true; } if (g_RightArrow) { g_RightArrow = false; NextGirl(); return true; } if (g_AltKeys) { if (g_A_Key) { g_A_Key = false; PrevGirl(); return true; } if (g_D_Key) { g_D_Key = false; NextGirl(); return true; } if (g_H_Key || g_J_Key) { int mod = 1; if (g_H_Key) mod = -1; g_Girls.UpdateStat(selected_girl, STAT_HOUSE, mod); g_H_Key = g_J_Key = false; SliderValue(houseperc_id, g_Girls.GetStat(selected_girl, STAT_HOUSE)); ss.str(""); ss << gettext("House Percentage: ") << g_Girls.GetStat(selected_girl, STAT_HOUSE) << 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 true; } if (g_S_Key) { g_S_Key = false; if (g_ShiftDown) { DetailLevel = 2; EditTextItem(g_Girls.GetThirdDetailsString(selected_girl), girldesc_id); } else { if (DetailLevel == 0) { DetailLevel = 1; EditTextItem(g_Girls.GetMoreDetailsString(selected_girl), girldesc_id); } else { DetailLevel = 0; EditTextItem(g_Girls.GetDetailsString(selected_girl), girldesc_id); } } return true; } if (g_SpaceKey) { g_SpaceKey = false; g_WinManager.push("Gallery"); g_InitWin = true; return true; } } return false; }
void cScreenGirlDetails::init() { if (selected_girl == 0) { g_WinManager.Pop(); g_InitWin = true; g_LogFile.write("ERROR - girl details screen, selected_girl is null"); /* * adding this because the game will crash if we * go past this point with a null girl * * Now as to why it was null in the first place ... * -- doc */ return; } g_CurrentScreen = SCREEN_GIRLDETAILS; if (!g_InitWin) return; Focused(); g_InitWin = false; //////////////////// if (selected_girl->health() <= 0) { // `J` instead of removing dead girls from the list which breaks the game, just skip past her in the list. NextGirl(); // `J` currently this prevents scrolling backwards past her - need to fix that. // selected_girl = remove_selected_girl(); if (selected_girl == 0) { g_WinManager.Pop(); g_InitWin = true; return; } } u_int job = (Day0Night1 ? selected_girl->m_NightJob : selected_girl->m_DayJob); SetJob = true; EditTextItem(selected_girl->m_Realname, girlname_id); string detail; if (DetailLevel == 0) detail = g_Girls.GetDetailsString(selected_girl); else if (DetailLevel == 1) detail = g_Girls.GetMoreDetailsString(selected_girl); else detail = g_Girls.GetThirdDetailsString(selected_girl); EditTextItem(detail, girldesc_id); if (selected_girl) { if (lastsexact != -1) { PrepareImage(girlimage_id, selected_girl, lastsexact, true, ImageNum); lastsexact = -1; } else { if (selected_girl->m_newRandomFixed >= 0) { PrepareImage(girlimage_id, selected_girl, IMGTYPE_PROFILE, false, selected_girl->m_newRandomFixed); } else { PrepareImage(girlimage_id, selected_girl, IMGTYPE_PROFILE, true, ImageNum); } } } SliderRange(houseperc_id, 0, 100, g_Girls.GetStat(selected_girl, STAT_HOUSE), 10); ss.str(""); ss << gettext("House Percentage: ") << SliderValue(houseperc_id) << gettext("%"); EditTextItem(ss.str(), housepercval_id); ClearListBox(jobtypelist_id); // `J` Replacing accom buttons with slider if (accomdown_id != -1) DisableButton(accomdown_id, selected_girl->m_AccLevel < 1); if (accomup_id != -1) DisableButton(accomup_id, selected_girl->m_AccLevel > 9); if (accom_id != -1) { SliderRange(accom_id, 0, 9, selected_girl->m_AccLevel, 1); SliderMarker(accom_id, g_Girls.PreferredAccom(selected_girl)); } 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); } DisableButton(interact_id, (g_TalkCount <= 0)); DisableButton(takegold_id, (selected_girl->m_Money <= 0)); SetCheckBox(antipreg_id, (selected_girl->m_UseAntiPreg)); bool InMovieStudio = (selected_girl->m_InStudio); bool InArena = (selected_girl->m_InArena); bool InCentre = (selected_girl->m_InCentre); bool InClinic = (selected_girl->m_InClinic); bool InHouse = (selected_girl->m_InHouse); bool InFarm = (selected_girl->m_InFarm); bool InDungeon = (selected_girl->m_DayJob == JOB_INDUNGEON); DisableButton(reldungeon_id, !InDungeon); DisableButton(senddungeon_id, InDungeon); // Disable dungeon if selected girl is in a non-brothel building // if (InMovieStudio || InArena || InCentre || InClinic || InFarm || InHouse) // { // DisableButton(senddungeon_id, true); // } if (InArena) { ClearListBox(joblist_id); AddToListBox(jobtypelist_id, JOBFILTER_ARENASTAFF, g_Arena.m_JobManager.JobFilterName[JOBFILTER_ARENASTAFF]); AddToListBox(jobtypelist_id, JOBFILTER_ARENA, g_Arena.m_JobManager.JobFilterName[JOBFILTER_ARENA]); RefreshJobList(); if (job >= g_Arena.m_JobManager.JobFilterIndex[JOBFILTER_ARENA] && job < g_Arena.m_JobManager.JobFilterIndex[JOBFILTER_ARENA + 1]) SetSelectedItemInList(jobtypelist_id, JOBFILTER_ARENA); else // if (job >= g_Arena.m_JobManager.JobFilterIndex[JOBFILTER_ARENASTAFF] && job < g_Arena.m_JobManager.JobFilterIndex[JOBFILTER_ARENASTAFF + 1]) SetSelectedItemInList(jobtypelist_id, JOBFILTER_ARENASTAFF); HideButton(day_id, false); HideButton(night_id, false); DisableButton(day_id, (Day0Night1 == SHIFT_DAY)); DisableButton(night_id, (Day0Night1 == SHIFT_NIGHT)); } else if (InClinic) { ClearListBox(joblist_id); AddToListBox(jobtypelist_id, JOBFILTER_CLINIC, g_Clinic.m_JobManager.JobFilterName[JOBFILTER_CLINIC]); AddToListBox(jobtypelist_id, JOBFILTER_CLINICSTAFF, g_Clinic.m_JobManager.JobFilterName[JOBFILTER_CLINICSTAFF]); RefreshJobList(); if (job >= g_Clinic.m_JobManager.JobFilterIndex[JOBFILTER_CLINIC] && job < g_Clinic.m_JobManager.JobFilterIndex[JOBFILTER_CLINIC + 1]) SetSelectedItemInList(jobtypelist_id, JOBFILTER_CLINIC); else SetSelectedItemInList(jobtypelist_id, JOBFILTER_CLINICSTAFF); HideButton(day_id, false); HideButton(night_id, false); DisableButton(day_id, (Day0Night1 == SHIFT_DAY)); DisableButton(night_id, (Day0Night1 == SHIFT_NIGHT)); } else if (InCentre) { ClearListBox(joblist_id); AddToListBox(jobtypelist_id, JOBFILTER_COMMUNITYCENTRE, g_Centre.m_JobManager.JobFilterName[JOBFILTER_COMMUNITYCENTRE]); AddToListBox(jobtypelist_id, JOBFILTER_COUNSELINGCENTRE, g_Centre.m_JobManager.JobFilterName[JOBFILTER_COUNSELINGCENTRE]); RefreshJobList(); if (job >= g_Centre.m_JobManager.JobFilterIndex[JOBFILTER_COUNSELINGCENTRE] && job < g_Centre.m_JobManager.JobFilterIndex[JOBFILTER_COUNSELINGCENTRE + 1]) SetSelectedItemInList(jobtypelist_id, JOBFILTER_COUNSELINGCENTRE); else SetSelectedItemInList(jobtypelist_id, JOBFILTER_COMMUNITYCENTRE); HideButton(day_id, false); HideButton(night_id, false); DisableButton(day_id, (Day0Night1 == SHIFT_DAY)); DisableButton(night_id, (Day0Night1 == SHIFT_NIGHT)); } else if (InHouse) { ClearListBox(joblist_id); AddToListBox(jobtypelist_id, JOBFILTER_HOUSE, g_House.m_JobManager.JobFilterName[JOBFILTER_HOUSE]); SetSelectedItemInList(jobtypelist_id, JOBFILTER_HOUSE); RefreshJobList(); HideButton(day_id, false); HideButton(night_id, false); DisableButton(day_id, (Day0Night1 == SHIFT_DAY)); DisableButton(night_id, (Day0Night1 == SHIFT_NIGHT)); } else if (InMovieStudio) { Day0Night1 = SHIFT_NIGHT; ClearListBox(joblist_id); AddToListBox(jobtypelist_id, JOBFILTER_STUDIOCREW, g_Studios.m_JobManager.JobFilterName[JOBFILTER_STUDIOCREW]); AddToListBox(jobtypelist_id, JOBFILTER_MOVIESTUDIO, g_Studios.m_JobManager.JobFilterName[JOBFILTER_MOVIESTUDIO]); RefreshJobList(); if (job >= g_Studios.m_JobManager.JobFilterIndex[JOBFILTER_MOVIESTUDIO] && job < g_Studios.m_JobManager.JobFilterIndex[JOBFILTER_MOVIESTUDIO + 1]) SetSelectedItemInList(jobtypelist_id, JOBFILTER_MOVIESTUDIO); else SetSelectedItemInList(jobtypelist_id, JOBFILTER_STUDIOCREW); HideButton(day_id, true); HideButton(night_id, true); } else if (InFarm) { ClearListBox(joblist_id); AddToListBox(jobtypelist_id, JOBFILTER_FARMSTAFF, g_Farm.m_JobManager.JobFilterName[JOBFILTER_FARMSTAFF]); AddToListBox(jobtypelist_id, JOBFILTER_LABORERS, g_Farm.m_JobManager.JobFilterName[JOBFILTER_LABORERS]); AddToListBox(jobtypelist_id, JOBFILTER_PRODUCERS, g_Farm.m_JobManager.JobFilterName[JOBFILTER_PRODUCERS]); RefreshJobList(); if (job >= g_Farm.m_JobManager.JobFilterIndex[JOBFILTER_LABORERS] && job < g_Farm.m_JobManager.JobFilterIndex[JOBFILTER_LABORERS + 1]) SetSelectedItemInList(jobtypelist_id, JOBFILTER_LABORERS); else if (job >= g_Farm.m_JobManager.JobFilterIndex[JOBFILTER_PRODUCERS] && job < g_Farm.m_JobManager.JobFilterIndex[JOBFILTER_PRODUCERS + 1]) SetSelectedItemInList(jobtypelist_id, JOBFILTER_PRODUCERS); else SetSelectedItemInList(jobtypelist_id, JOBFILTER_FARMSTAFF); HideButton(day_id, false); HideButton(night_id, false); DisableButton(day_id, (Day0Night1 == SHIFT_DAY)); DisableButton(night_id, (Day0Night1 == SHIFT_NIGHT)); } else if (!InDungeon) { // if not in dungeon, set up job lists // add the job filters // for(int i=0; i<NUMJOBTYPES; i++) // loop through all job types for (unsigned int i = 0; i <= JOBFILTER_BROTHEL; i++) // temporary limit to job types shown { AddToListBox(jobtypelist_id, i, g_Brothels.m_JobManager.JobFilterName[i]); } // set the job filter int jobtype = 0; for (unsigned int i = 0; i < NUMJOBTYPES; i++) { if (job >= g_Brothels.m_JobManager.JobFilterIndex[i] && job < g_Brothels.m_JobManager.JobFilterIndex[i + 1]) { jobtype = i; break; } } SetSelectedItemInList(jobtypelist_id, jobtype); RefreshJobList(); HideButton(day_id, false); HideButton(night_id, false); DisableButton(day_id, (Day0Night1 == SHIFT_DAY)); DisableButton(night_id, (Day0Night1 == SHIFT_NIGHT)); } else { // if in dungeon, effectively disable job lists ClearListBox(joblist_id); AddToListBox(jobtypelist_id, -1, gettext("Languish in dungeon")); HideButton(day_id, true); HideButton(night_id, true); } ClearListBox(traitlist_id); for (int i = 0; i < MAXNUM_TRAITS; i++) { if (selected_girl->m_Traits[i]) { stringstream st; st << selected_girl->m_Traits[i]->m_Name; if (selected_girl->m_TempTrait[i] > 0) st << " (" << selected_girl->m_TempTrait[i] << ")"; AddToListBox(traitlist_id, i, g_Traits.GetTranslateName(st.str())); } } EditTextItem("", traitdesc_id); }
/* * returns TRUE if the girl won */ bool cScreenGirlDetails::do_take_gold(sGirl *girl, string &message) { const int GIRL_LOSES = false; const int GIRL_WINS = true; bool girl_win_flag = GIRL_WINS; /* * we're taking the girl's gold. Life gets complicated if she * makes a fight of it - so lets do the case where she meekly complies * first */ if (!g_Brothels.FightsBack(girl)) { message += gettext("She quietly allows you to take her gold."); return GIRL_LOSES; // no fight -> girl lose } /* * OK - she's going to fight - */ sGang* gang; /* * ok: to win she needs to defeat all the gangs on * guard duty. I've made a change here so that she doesn't * need to wipe one gang out before moving on to the next one * which means that she can cause some damage on the way out * without necessarily slaying all who stand before her * * it also means that if you have 5 gangs guarding, she needs * to get past 5 gangs, but you don't have to have them all die * in the process */ while ((gang = g_Gangs.GetGangOnMission(MISS_GUARDING))) { /* * this returns true if the girl wins, false if she loses * * Suggestion on the forums that we allow clever girls to * outwit stupid gang memebers here, which sounds cool. * Also nice would be if a strongly magical girl could * use sorcery to evade a none-too-crafty goon squad. * (possibly make her fight the first one). * * But none of this makes much difference if the user * never sees it happen. We can make combat as textured as * we like, but unless the details are reported to the player * we might as well roll a single die and be done with it. */ girl_win_flag = g_Gangs.GangCombat(girl, gang); /* * if she didn't win, exit the loop */ if (girl_win_flag == GIRL_LOSES) break; } /* * the "girl lost" case is easier */ if (girl_win_flag == GIRL_LOSES) { // put her in the dungeon message += gettext("She puts up a fight "); if (gang && gang->m_Num == 0) { message += gettext("and the gang is wiped out, "); } message += gettext(" but you take her gold anyway."); return girl_win_flag; } /* * from here on down, the girl won against the goons */ message += gettext("She puts up a fight "); if (gang && gang->m_Num == 0) message += gettext(" and the gang is wiped out "); /* * can the player tame this particular shrew? */ if (!g_Brothels.PlayerCombat(girl)) // fight with the player { message += gettext("but you defeat her yourself and take her gold."); return false; // girl did not win, after all } /* * Looks like she won: put her out of the brothel * and post her as a runaway */ message += gettext("after defeating you as well she escapes to the outside.\n"); sGirl* nextGirl = remove_selected_girl(); sGirl* temp = girl; /* * what we have to do depends on whether she was in brothel * or dungeon */ if (girl->m_DayJob != JOB_INDUNGEON) g_Brothels.RemoveGirl(g_CurrBrothel, girl, false); else temp = g_Brothels.GetDungeon()->RemoveGirl(girl); /* * set her job */ temp->m_RunAway = 6; // player has 6 weeks to retreive temp->m_NightJob = girl->m_DayJob = JOB_RUNAWAY; /* * add her to the runaway list */ g_Brothels.AddGirlToRunaways(temp); stringstream smess; smess << temp->m_Realname << gettext(" has run away"); g_MessageQue.AddToQue(smess.str(), 1); selected_girl = nextGirl; g_InitWin = true; if (selected_girl == 0) g_WinManager.Pop(); return true; // the girl still won }
void cScreenTown::init() { if (BuyClinic != -1) { (g_ChoiceManager.GetChoice(0) == 0 ? GetClinic = true : BuyClinic = -1); g_ChoiceManager.Free(); } if (GetClinic) { static_brothel_data *bpt = clinic_data + BuyClinic; g_Gold.brothel_cost(bpt->price); g_Clinic.NewBrothel(bpt->rooms, bpt->maxrooms); g_Clinic.SetName(0, gettext("Clinic")); GetClinic = false; BuyClinic = -1; } if (BuyCentre != -1) { (g_ChoiceManager.GetChoice(0) == 0 ? GetCentre = true : BuyCentre = -1); g_ChoiceManager.Free(); } if (GetCentre) { static_brothel_data *bpt = centre_data + BuyCentre; g_Gold.brothel_cost(bpt->price); g_Centre.NewBrothel(bpt->rooms, bpt->maxrooms); g_Centre.SetName(0, gettext("Centre")); GetCentre = false; BuyCentre = -1; } if (BuyArena != -1) { (g_ChoiceManager.GetChoice(0) == 0 ? GetArena = true : BuyArena = -1); g_ChoiceManager.Free(); } if (GetArena) { static_brothel_data *bpt = arena_data + BuyArena; g_Gold.brothel_cost(bpt->price); g_Arena.NewBrothel(bpt->rooms, bpt->maxrooms); g_Arena.SetName(0, gettext("Arena")); GetArena = false; BuyArena = -1; } if (BuyStudio != -1) { (g_ChoiceManager.GetChoice(0) == 0 ? GetStudio = true : BuyStudio = -1); g_ChoiceManager.Free(); } if (GetStudio) { static_brothel_data *bpt = studio_data + BuyStudio; g_Gold.brothel_cost(bpt->price); g_Studios.NewBrothel(bpt->rooms, bpt->maxrooms); g_Studios.SetName(0, gettext("Studio")); GetStudio = false; BuyStudio = -1; } if (BuyFarm != -1) { (g_ChoiceManager.GetChoice(0) == 0 ? GetFarm = true : BuyFarm = -1); g_ChoiceManager.Free(); } if (GetFarm) { static_brothel_data *bpt = farm_data + BuyFarm; g_Gold.brothel_cost(bpt->price); g_Farm.NewBrothel(bpt->rooms, bpt->maxrooms); g_Farm.SetName(0, gettext("Farm")); GetFarm = false; BuyFarm = -1; } if (GetName) { if (g_ReturnText != "") { if (g_Brothels.GetObjective() && g_Brothels.GetObjective()->m_Objective == OBJECTIVE_GETNEXTBROTHEL) g_Brothels.PassObjective(); static_brothel_data *bpt = brothel_data + BuyBrothel; g_Gold.brothel_cost(bpt->price); g_Brothels.NewBrothel(bpt->rooms, bpt->maxrooms); g_Brothels.SetName(g_Brothels.GetNumBrothels() - 1, g_ReturnText); g_InitWin = true; } GetName = false; BuyBrothel = -1; } if (BuyBrothel != -1) { if (g_ChoiceManager.GetChoice(0) == 0) { g_MessageQue.AddToQue("Enter a name for your new brothel.", 0); GetName = true; g_InitWin = true; g_WinManager.Push(GetString, &g_GetString); } else BuyBrothel = -1; g_ChoiceManager.Free(); if (!GetName) BuyBrothel = -1; return; } g_CurrentScreen = SCREEN_TOWN; if (!g_InitWin) return; Focused(); g_InitWin = false; // buttons enable/disable DisableButton(walk_id, g_WalkAround); HideButton(brothel2_id, (g_Brothels.GetBrothel(1) == 0)); HideButton(brothel3_id, (g_Brothels.GetBrothel(2) == 0)); HideButton(brothel4_id, (g_Brothels.GetBrothel(3) == 0)); HideButton(brothel5_id, (g_Brothels.GetBrothel(4) == 0)); HideButton(brothel6_id, (g_Brothels.GetBrothel(5) == 0)); string brothel = "Current Brothel: "; brothel += g_Brothels.GetName(g_CurrBrothel); EditTextItem(brothel, curbrothel_id); }
void cScreenCentreManagement::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(viewdetails_id)) { ViewSelectedGirl(); } if (g_InterfaceEvents.CheckButton(day_id)) { DisableButton(day_id, true); DisableButton(night_id, false); Day0Night1 = SHIFT_DAY; RefreshSelectedJobType(); } if (g_InterfaceEvents.CheckButton(night_id)) { DisableButton(day_id, false); DisableButton(night_id, true); Day0Night1 = SHIFT_NIGHT; RefreshSelectedJobType(); } if (g_InterfaceEvents.CheckListbox(jobtypelist_id)) { selection = GetSelectedItemFromList(jobtypelist_id); if (selection == -1) EditTextItem("Nothing Selected", jobtypedesc_id); else { // populate Jobs listbox with jobs in the selected category RefreshJobList(); string jdmessage = g_Centre.m_JobManager.JobFilterDesc[selection]; if ((g_Centre.GetNumGirlsOnJob(g_CurrCentre, JOB_COUNSELOR, 0) < 1 && g_Centre.GetNumberPatients(0) > 0) || (g_Centre.GetNumGirlsOnJob(g_CurrCentre, JOB_COUNSELOR, 1) < 1 && g_Centre.GetNumberPatients(1) > 0)) { jdmessage += gettext("\n*** A Counselor is required to guide Rehab and Therapy patients. "); } EditTextItem(jdmessage, jobtypedesc_id); } } if (g_InterfaceEvents.CheckListbox(joblist_id)) { bool fulltime = g_CTRLDown; selection = GetSelectedItemFromList(joblist_id); if (selection != -1) { // first handle the descriptions EditTextItem(g_Centre.m_JobManager.JobDesc[selection], jobdesc_id); // Now assign the job to all the selected girls int pos = 0; int GSelection = GetNextSelectedItemFromList(girllist_id, 0, pos); while (GSelection != -1) { u_int new_job = selection; selected_girl = g_Centre.GetGirl(g_CurrCentre, GSelection); if (selected_girl) { 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_Centre.m_JobManager.HandleSpecialJobs(g_CurrCentre, selected_girl, new_job, old_job, Day0Night1, fulltime)) { new_job = (Day0Night1 ? selected_girl->m_NightJob : selected_girl->m_DayJob); SetSelectedItemInList(joblist_id, new_job, false); } // update the girl's listing to reflect the job change ss.str(""); ss << g_Centre.m_JobManager.JobName[selected_girl->m_DayJob]; SetSelectedItemColumnText(girllist_id, GSelection, ss.str(), m_ListBoxes[girllist_id]->DayJobColumn()); ss.str(""); ss << g_Centre.m_JobManager.JobName[selected_girl->m_NightJob]; SetSelectedItemColumnText(girllist_id, GSelection, ss.str(), m_ListBoxes[girllist_id]->NightJobColumn()); // refresh job worker counts for former job and current job SetSelectedItemText(joblist_id, old_job, g_Centre.m_JobManager.JobDescriptionCount(old_job, 0, Day0Night1, false, false, false, true)); SetSelectedItemText(joblist_id, new_job, g_Centre.m_JobManager.JobDescriptionCount(new_job, 0, Day0Night1, false, false, false, true)); } if (selected_girl->m_DayJob == JOB_REHAB) // `J` added { ss.str(""); ss << g_Centre.m_JobManager.JobName[selected_girl->m_DayJob] << " (" << 3 - selected_girl->m_WorkingDay << ")"; SetSelectedItemColumnText(girllist_id, GSelection, ss.str(), m_ListBoxes[girllist_id]->DayJobColumn()); } else if (selected_girl->m_YesterDayJob == JOB_REHAB && selected_girl->m_DayJob != JOB_REHAB && ((selected_girl->m_WorkingDay > 0) || selected_girl->m_PrevWorkingDay > 0)) { ss.str(""); ss << g_Centre.m_JobManager.JobName[selected_girl->m_DayJob] << " **"; SetSelectedItemColumnText(girllist_id, GSelection, ss.str(), m_ListBoxes[girllist_id]->DayJobColumn()); } if (selected_girl->m_NightJob == JOB_REHAB) // `J` added { ss.str(""); ss << g_Centre.m_JobManager.JobName[selected_girl->m_NightJob] << " (" << 3 - selected_girl->m_WorkingDay << ")"; SetSelectedItemColumnText(girllist_id, GSelection, ss.str(), m_ListBoxes[girllist_id]->NightJobColumn()); } else if (selected_girl->m_YesterNightJob == JOB_REHAB && selected_girl->m_NightJob != JOB_REHAB && ((selected_girl->m_WorkingDay > 0) || selected_girl->m_PrevWorkingDay > 0)) { ss.str(""); ss << g_Centre.m_JobManager.JobName[selected_girl->m_NightJob] << " **"; SetSelectedItemColumnText(girllist_id, GSelection, ss.str(), m_ListBoxes[girllist_id]->NightJobColumn()); } if (selected_girl && selected_girl->m_YesterDayJob == JOB_REHAB && new_job != JOB_REHAB && (selected_girl->m_WorkingDay > 0 || selected_girl->m_PrevWorkingDay > 0)) { // `J` added EditTextItem(g_Centre.m_JobManager.JobDesc[new_job] + "\n** This girl was in Rehab, if you send her somewhere else, she will have to start her Rehab over." , jobdesc_id); } GSelection = GetNextSelectedItemFromList(girllist_id, pos + 1, pos); } } else EditTextItem("Nothing Selected", jobdesc_id); } if (g_InterfaceEvents.CheckListbox(girllist_id)) { selection = GetSelectedItemFromList(girllist_id); if (selection != -1) { selected_girl = g_Centre.GetGirl(g_CurrCentre, selection); if (ListDoubleClicked(girllist_id)) ViewSelectedGirl(); // If double-clicked, try to bring up girl details DisableButton(freeslave_id, selected_girl->is_free()); DisableButton(viewdetails_id, false); RefreshSelectedJobType(); } else { DisableButton(freeslave_id, true); DisableButton(viewdetails_id, true); selected_girl = 0; selection = -1; } lastNum = -2; update_image(); return; } if (g_InterfaceEvents.CheckButton(freeslave_id)) { if (selected_girl) { if (IsMultiSelected(girllist_id)) { // multiple girls selected g_MessageQue.AddToQue("Are you sure you wish to give these girls their freedom?", 0); g_ChoiceManager.CreateChoiceBox(224, 112, 352, 384, 0, 2, 32, strlen("Keep as a slaves")); g_ChoiceManager.AddChoice(0, "Grant Freedom", 0); g_ChoiceManager.AddChoice(0, "Keep as a slaves", 1); g_ChoiceManager.SetActive(0); FreeGirl = true; } else // only one girl selected { if (GirlDead(selected_girl)) return; g_MessageQue.AddToQue("Are you sure you wish to give " + selected_girl->m_Realname + " her freedom?", 0); g_ChoiceManager.CreateChoiceBox(224, 112, 352, 384, 0, 2, 32, strlen("Keep as a slave")); g_ChoiceManager.AddChoice(0, "Grant Freedom", 0); g_ChoiceManager.AddChoice(0, "Keep as a slave", 1); g_ChoiceManager.SetActive(0); FreeGirl = true; } } return; } if (g_InterfaceEvents.CheckButton(transfer_id)) { g_InitWin = true; g_WinManager.Push(TransferGirls, &g_TransferGirls); return; } }
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 cScreenBrothelManagement::check_events() { if (g_InterfaceEvents.GetNumEvents() != 0) { if (g_InterfaceEvents.CheckEvent(EVENT_BUTTONCLICKED, id_girls)) { g_InitWin = true; g_WinManager.push("Girl Management"); return; } else if (g_InterfaceEvents.CheckEvent(EVENT_BUTTONCLICKED, id_staff)) { g_InitWin = true; g_WinManager.push("Gangs"); return; } else if (g_InterfaceEvents.CheckEvent(EVENT_BUTTONCLICKED, id_setup)) { g_InitWin = true; g_WinManager.push("Building Setup"); return; } else if (g_InterfaceEvents.CheckEvent(EVENT_BUTTONCLICKED, id_dungeon)) { g_InitWin = true; g_WinManager.push("Dungeon"); return; } else if (g_InterfaceEvents.CheckEvent(EVENT_BUTTONCLICKED, id_town)) { g_InitWin = true; g_WinManager.push("Town"); return; } else if (g_InterfaceEvents.CheckEvent(EVENT_BUTTONCLICKED, id_save)) { SaveGame(g_CTRLDown); g_MessageQue.AddToQue("Game Saved", COLOR_GREEN); return; } else if (g_InterfaceEvents.CheckEvent(EVENT_BUTTONCLICKED, id_week)) { g_InitWin = true; if (!g_CTRLDown) { g_CTRLDown = false; AutoSaveGame(); } NextWeek(); g_WinManager.push("TurnSummary"); return; } else if (g_InterfaceEvents.CheckEvent(EVENT_BUTTONCLICKED, id_turn)) { g_InitWin = true; g_CurrentScreen = SCREEN_TURNSUMMARY; g_WinManager.push("TurnSummary"); return; } else if (g_InterfaceEvents.CheckEvent(EVENT_BUTTONCLICKED, id_quit)) { g_InitWin = true; g_GetInput.ModeConfirmExit(); g_WinManager.push("GetInput"); return; } else if (g_InterfaceEvents.CheckEvent(EVENT_BUTTONCLICKED, id_next)) { g_CurrBrothel++; if (g_CurrBrothel >= g_Brothels.GetNumBrothels()) g_CurrBrothel = 0; g_InitWin = true; return; } else if (g_InterfaceEvents.CheckEvent(EVENT_BUTTONCLICKED, id_prev)) { g_CurrBrothel--; if (g_CurrBrothel < 0) g_CurrBrothel = g_Brothels.GetNumBrothels() - 1; g_InitWin = true; return; } } }