Refactor out some dialog globals
This commit is contained in:
@@ -33,7 +33,7 @@
|
|||||||
#include <boost/lexical_cast.hpp>
|
#include <boost/lexical_cast.hpp>
|
||||||
#include "prefs.hpp"
|
#include "prefs.hpp"
|
||||||
#include "shop.hpp"
|
#include "shop.hpp"
|
||||||
#define NUM_HINTS 30
|
#include "restypes.hpp"
|
||||||
|
|
||||||
extern short stat_window;
|
extern short stat_window;
|
||||||
extern eGameMode overall_mode;
|
extern eGameMode overall_mode;
|
||||||
@@ -59,7 +59,6 @@ extern std::vector<scen_header_type> scen_headers;
|
|||||||
short sign_mode,person_graphic,store_person_graphic,store_sign_mode;
|
short sign_mode,person_graphic,store_person_graphic,store_sign_mode;
|
||||||
long num_talk_entries;
|
long num_talk_entries;
|
||||||
char null_string[256] = "";
|
char null_string[256] = "";
|
||||||
short store_tip_page_on = 0;
|
|
||||||
extern bool party_in_memory;
|
extern bool party_in_memory;
|
||||||
|
|
||||||
// Talking vars
|
// Talking vars
|
||||||
@@ -96,8 +95,6 @@ rectangle shop_frame = {62,10,352,269};
|
|||||||
rectangle shop_done_rect = {388,212,411,275};
|
rectangle shop_done_rect = {388,212,411,275};
|
||||||
short shop_array[30];
|
short shop_array[30];
|
||||||
|
|
||||||
short store_scen_page_on,store_num_scen;
|
|
||||||
|
|
||||||
cShop active_shop;
|
cShop active_shop;
|
||||||
short active_shop_num;
|
short active_shop_num;
|
||||||
|
|
||||||
@@ -1317,33 +1314,32 @@ void edit_party() {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool tip_of_day_event_filter(cDialog& me, std::string item_hit, eKeyMod) {
|
static bool tip_of_day_event_filter(cDialog& me, std::string item_hit, short& page) {
|
||||||
std::string place_str;
|
std::string place_str;
|
||||||
|
|
||||||
if(item_hit == "done") {
|
if(item_hit == "done") {
|
||||||
me.toast(true);
|
me.toast(true);
|
||||||
} else if(item_hit == "next") {
|
} else if(item_hit == "next") {
|
||||||
store_tip_page_on++;
|
page++;
|
||||||
if(store_tip_page_on == NUM_HINTS)
|
if(page == ResMgr::get<StringRsrc>("tips")->size() - 50)
|
||||||
store_tip_page_on = 0;
|
page = 0;
|
||||||
place_str = get_str("tips",50 + store_tip_page_on);
|
place_str = get_str("tips",50 + page);
|
||||||
me["tip"].setText(place_str);
|
me["tip"].setText(place_str);
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void tip_of_day() {
|
void tip_of_day() {
|
||||||
std::string place_str;
|
using namespace std::placeholders;
|
||||||
|
|
||||||
store_tip_page_on = get_ran(1,0,NUM_HINTS - 1);
|
short page = get_ran(1,0,ResMgr::get<StringRsrc>("tips")->size() - 51);
|
||||||
|
|
||||||
make_cursor_sword();
|
make_cursor_sword();
|
||||||
|
|
||||||
cDialog tips("tip-of-day");
|
cDialog tips("tip-of-day");
|
||||||
tips.attachClickHandlers(&tip_of_day_event_filter,{"done","next"});
|
tips.attachClickHandlers(std::bind(tip_of_day_event_filter, _1, _2, std::ref(page)),{"done","next"});
|
||||||
|
|
||||||
place_str = get_str("tips",50 + store_tip_page_on);
|
tips["tip"].setText(get_str("tips",50 + page));
|
||||||
tips["tip"].setText(place_str);
|
|
||||||
|
|
||||||
cLed& showAtStart = dynamic_cast<cLed&>(tips["onstart"]);
|
cLed& showAtStart = dynamic_cast<cLed&>(tips["onstart"]);
|
||||||
showAtStart.setState(get_bool_pref("GiveIntroHint", true) ? led_red : led_off);
|
showAtStart.setState(get_bool_pref("GiveIntroHint", true) ? led_red : led_off);
|
||||||
@@ -1354,7 +1350,7 @@ void tip_of_day() {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void put_scen_info(cDialog& me) {
|
static void put_scen_info(cDialog& me, short page) {
|
||||||
std::ostringstream sout;
|
std::ostringstream sout;
|
||||||
static const char *difficulty[] = {"Low","Medium","High","Very High"};
|
static const char *difficulty[] = {"Low","Medium","High","Very High"};
|
||||||
|
|
||||||
@@ -1363,18 +1359,18 @@ static void put_scen_info(cDialog& me) {
|
|||||||
sout.str("");
|
sout.str("");
|
||||||
sout << i + 1;
|
sout << i + 1;
|
||||||
std::string n = sout.str();
|
std::string n = sout.str();
|
||||||
if(scen_headers.size() > (store_scen_page_on * 3 + i)) {
|
if(scen_headers.size() > (page * 3 + i)) {
|
||||||
me["pic" + n].show();
|
me["pic" + n].show();
|
||||||
dynamic_cast<cPict&>(me["pic" + n]).setPict(scen_headers[store_scen_page_on * 3 + i].intro_pic);
|
dynamic_cast<cPict&>(me["pic" + n]).setPict(scen_headers[page * 3 + i].intro_pic);
|
||||||
sout.str("");
|
sout.str("");
|
||||||
sout << scen_headers[store_scen_page_on * 3 + i].name;
|
sout << scen_headers[page * 3 + i].name;
|
||||||
sout << " v" << int(scen_headers[store_scen_page_on * 3 + i].ver[0]);
|
sout << " v" << int(scen_headers[page * 3 + i].ver[0]);
|
||||||
sout << '.' << int(scen_headers[store_scen_page_on * 3 + i].ver[1]);
|
sout << '.' << int(scen_headers[page * 3 + i].ver[1]);
|
||||||
sout << '.' << int(scen_headers[store_scen_page_on * 3 + i].ver[2]);
|
sout << '.' << int(scen_headers[page * 3 + i].ver[2]);
|
||||||
sout << " - | Difficulty: " << difficulty[scen_headers[store_scen_page_on * 3 + i].difficulty];
|
sout << " - | Difficulty: " << difficulty[scen_headers[page * 3 + i].difficulty];
|
||||||
sout << ", Rating: " << scen_headers[store_scen_page_on * 3 + i].rating;
|
sout << ", Rating: " << scen_headers[page * 3 + i].rating;
|
||||||
sout << " |" << scen_headers[store_scen_page_on * 3 + i].who1;
|
sout << " |" << scen_headers[page * 3 + i].who1;
|
||||||
sout << " |" << scen_headers[store_scen_page_on * 3 + i].who2;
|
sout << " |" << scen_headers[page * 3 + i].who2;
|
||||||
me["desc" + n].setText(sout.str());
|
me["desc" + n].setText(sout.str());
|
||||||
me["start" + n].show();
|
me["start" + n].show();
|
||||||
}
|
}
|
||||||
@@ -1386,50 +1382,46 @@ static void put_scen_info(cDialog& me) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool pick_a_scen_event_filter(cDialog& me, std::string item_hit, eKeyMod) {
|
static bool pick_a_scen_event_filter(cDialog& me, std::string item_hit, short& page) {
|
||||||
if(item_hit == "cancel") {
|
if(item_hit == "cancel") {
|
||||||
me.setResult<short>(-1);
|
me.setResult<short>(-1);
|
||||||
me.toast(false);
|
me.toast(false);
|
||||||
} else if(item_hit == "next") {
|
} else if(item_hit == "next") {
|
||||||
if(store_scen_page_on == 0)
|
if(page == 0)
|
||||||
store_scen_page_on = (store_num_scen - 1) / 3;
|
page = (scen_headers.size() - 1) / 3;
|
||||||
else store_scen_page_on--;
|
else page--;
|
||||||
put_scen_info(me);
|
put_scen_info(me, page);
|
||||||
} else if(item_hit == "prev") {
|
} else if(item_hit == "prev") {
|
||||||
if(store_scen_page_on == (store_num_scen - 1) / 3)
|
if(page == (scen_headers.size() - 1) / 3)
|
||||||
store_scen_page_on = 0;
|
page = 0;
|
||||||
else store_scen_page_on++;
|
else page++;
|
||||||
put_scen_info(me);
|
put_scen_info(me, page);
|
||||||
} else if(item_hit.substr(0,item_hit.length()-1) == "start") {
|
} else if(item_hit.substr(0,item_hit.length()-1) == "start") {
|
||||||
int scen_hit = item_hit[item_hit.length()-1] - '1';
|
int scen_hit = item_hit[item_hit.length()-1] - '1';
|
||||||
me.setResult<short>(scen_hit + store_scen_page_on * 3);
|
me.setResult<short>(scen_hit + page * 3);
|
||||||
me.toast(true);
|
me.toast(true);
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
short pick_a_scen() {
|
short pick_a_scen() {
|
||||||
|
using namespace std::placeholders;
|
||||||
|
// TODO: Add a button to jump to the scenarios folder
|
||||||
build_scen_headers();
|
build_scen_headers();
|
||||||
|
|
||||||
store_num_scen = scen_headers.size();
|
if(scen_headers.empty()) {
|
||||||
// for(short i = 0; i < 25; i++)
|
|
||||||
// if(scen_headers[i].flag1 != 0)
|
|
||||||
// store_num_scen++;
|
|
||||||
store_scen_page_on = 0;
|
|
||||||
|
|
||||||
if(store_num_scen == 0) {
|
|
||||||
cChoiceDlog("no-scenarios").show();
|
cChoiceDlog("no-scenarios").show();
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
make_cursor_sword();
|
make_cursor_sword();
|
||||||
|
|
||||||
cDialog pickScen("pick-scenario");
|
cDialog pickScen("pick-scenario");
|
||||||
pickScen.attachClickHandlers(pick_a_scen_event_filter, {"cancel", "next", "prev", "start1", "start2", "start3"});
|
short page = 0;
|
||||||
|
pickScen.attachClickHandlers(std::bind(pick_a_scen_event_filter, _1, _2, std::ref(page)), {"cancel", "next", "prev", "start1", "start2", "start3"});
|
||||||
|
|
||||||
put_scen_info(pickScen);
|
put_scen_info(pickScen, 0);
|
||||||
|
|
||||||
if(store_num_scen <= 3) {
|
if(scen_headers.size() <= 3) {
|
||||||
pickScen["next"].hide();
|
pickScen["next"].hide();
|
||||||
pickScen["prev"].hide();
|
pickScen["prev"].hide();
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user