More init/splash streamlining, now including the scenario editor
This commit is contained in:
@@ -12,7 +12,6 @@ void move_sound(ter_num_t ter,short step);
|
|||||||
void incidental_noises(bool on_surface);
|
void incidental_noises(bool on_surface);
|
||||||
void pause(short length);
|
void pause(short length);
|
||||||
bool handle_startup_press(location the_point);
|
bool handle_startup_press(location the_point);
|
||||||
void draw_splash(const sf::Texture& splash, rectangle dest_rect);
|
|
||||||
void handle_splash_events();
|
void handle_splash_events();
|
||||||
void show_logo();
|
void show_logo();
|
||||||
void plop_fancy_startup();
|
void plop_fancy_startup();
|
||||||
|
@@ -134,13 +134,6 @@ bool handle_startup_press(location the_point) {
|
|||||||
extern int display_mode;
|
extern int display_mode;
|
||||||
extern bool show_startup_splash;
|
extern bool show_startup_splash;
|
||||||
|
|
||||||
void draw_splash(const sf::Texture& splash, rectangle dest_rect) {
|
|
||||||
rectangle from_rect = rectangle(splash);
|
|
||||||
mainPtr.clear(sf::Color::Black);
|
|
||||||
rect_draw_some_item(splash, from_rect, mainPtr, dest_rect);
|
|
||||||
mainPtr.display();
|
|
||||||
}
|
|
||||||
|
|
||||||
void handle_splash_events() {
|
void handle_splash_events() {
|
||||||
extern sf::Event event;
|
extern sf::Event event;
|
||||||
if(!mainPtr.pollEvent(event)) return;
|
if(!mainPtr.pollEvent(event)) return;
|
||||||
@@ -165,13 +158,13 @@ void show_logo() {
|
|||||||
play_sound(-95);
|
play_sound(-95);
|
||||||
// TODO: Looping 10 times here is a bit of a hack; fix it
|
// TODO: Looping 10 times here is a bit of a hack; fix it
|
||||||
while(sound_going(95)) {
|
while(sound_going(95)) {
|
||||||
draw_splash(pict_to_draw, logo_from);
|
draw_splash(pict_to_draw, mainPtr, logo_from);
|
||||||
handle_splash_events();
|
handle_splash_events();
|
||||||
}
|
}
|
||||||
if(!show_startup_splash) {
|
if(!show_startup_splash) {
|
||||||
int delay = time_in_ticks(60).asMilliseconds();
|
sf::Time delay = time_in_ticks(60);
|
||||||
sf::Clock timer;
|
sf::Clock timer;
|
||||||
while(timer.getElapsedTime().asMilliseconds() < delay)
|
while(timer.getElapsedTime() < delay)
|
||||||
handle_splash_events();
|
handle_splash_events();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -181,15 +174,15 @@ void plop_fancy_startup() {
|
|||||||
rectangle whole_window,from_rect;
|
rectangle whole_window,from_rect;
|
||||||
rectangle intro_from = {0,0,480,640};
|
rectangle intro_from = {0,0,480,640};
|
||||||
whole_window = rectangle(mainPtr);
|
whole_window = rectangle(mainPtr);
|
||||||
int delay = time_in_ticks(220).asMilliseconds();
|
sf::Time delay = time_in_ticks(220);
|
||||||
intro_from.offset((whole_window.right - intro_from.right) / 2,(whole_window.bottom - intro_from.bottom) / 2);
|
intro_from.offset((whole_window.right - intro_from.right) / 2,(whole_window.bottom - intro_from.bottom) / 2);
|
||||||
pict_to_draw.loadFromImage(*ResMgr::get<ImageRsrc>("startsplash"));
|
pict_to_draw.loadFromImage(*ResMgr::get<ImageRsrc>("startsplash"));
|
||||||
|
|
||||||
play_sound(-22);
|
play_sound(-22);
|
||||||
sf::Clock timer;
|
sf::Clock timer;
|
||||||
|
|
||||||
while(timer.getElapsedTime().asMilliseconds() < delay) {
|
while(timer.getElapsedTime() < delay) {
|
||||||
draw_splash(pict_to_draw, intro_from);
|
draw_splash(pict_to_draw, mainPtr, intro_from);
|
||||||
handle_splash_events();
|
handle_splash_events();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -2391,7 +2391,6 @@ static std::string version() {
|
|||||||
// is slot >= 0, force that slot
|
// is slot >= 0, force that slot
|
||||||
// if -1, use 1st free slot
|
// if -1, use 1st free slot
|
||||||
void set_up_start_screen() {
|
void set_up_start_screen() {
|
||||||
reset_lb();
|
|
||||||
reset_rb();
|
reset_rb();
|
||||||
set_lb(0,LB_TITLE,LB_NO_ACTION,"Blades of Exile");
|
set_lb(0,LB_TITLE,LB_NO_ACTION,"Blades of Exile");
|
||||||
set_lb(1,LB_TITLE,LB_NO_ACTION,"Scenario Editor");
|
set_lb(1,LB_TITLE,LB_NO_ACTION,"Scenario Editor");
|
||||||
@@ -2412,7 +2411,6 @@ void set_up_start_screen() {
|
|||||||
void set_up_main_screen() {
|
void set_up_main_screen() {
|
||||||
std::ostringstream strb;
|
std::ostringstream strb;
|
||||||
|
|
||||||
reset_lb();
|
|
||||||
reset_rb();
|
reset_rb();
|
||||||
set_lb(-1,LB_TITLE,LB_NO_ACTION,"Blades of Exile");
|
set_lb(-1,LB_TITLE,LB_NO_ACTION,"Blades of Exile");
|
||||||
set_lb(-1,LB_TEXT,LB_NO_ACTION,"Scenario Options");
|
set_lb(-1,LB_TEXT,LB_NO_ACTION,"Scenario Options");
|
||||||
|
@@ -375,26 +375,18 @@ void Set_up_win () {
|
|||||||
|
|
||||||
void run_startup_g() {
|
void run_startup_g() {
|
||||||
sf::Event event;
|
sf::Event event;
|
||||||
rectangle pict_rect = {0,0,480,640}, dest_rect;
|
|
||||||
sf::Texture pict_to_draw;
|
sf::Texture pict_to_draw;
|
||||||
dest_rect = pict_rect;
|
|
||||||
|
|
||||||
set_cursor(watch_curs);
|
|
||||||
dest_rect.offset(-25,-25);
|
|
||||||
pict_to_draw.loadFromImage(*ResMgr::get<ImageRsrc>("edsplash"));
|
pict_to_draw.loadFromImage(*ResMgr::get<ImageRsrc>("edsplash"));
|
||||||
for(int i = 0; i < 10; i++) {
|
rectangle dest_rect = rectangle(pict_to_draw);
|
||||||
mainPtr.clear(sf::Color::Black);
|
|
||||||
rect_draw_some_item(pict_to_draw, pict_rect, mainPtr, dest_rect, sf::BlendAlpha);
|
play_sound(-95);
|
||||||
mainPtr.display();
|
sf::Time delay = time_in_ticks(120);
|
||||||
mainPtr.pollEvent(event);
|
sf::Clock timer;
|
||||||
|
while(sound_going(95) || timer.getElapsedTime() < delay) {
|
||||||
|
draw_splash(pict_to_draw, mainPtr, dest_rect);
|
||||||
|
if(!mainPtr.pollEvent(event)) continue;
|
||||||
if(event.type == sf::Event::GainedFocus || event.type == sf::Event::MouseMoved)
|
if(event.type == sf::Event::GainedFocus || event.type == sf::Event::MouseMoved)
|
||||||
set_cursor(watch_curs);
|
set_cursor(watch_curs);
|
||||||
}
|
|
||||||
play_sound(-95);
|
|
||||||
sf::Clock timer;
|
|
||||||
set_cursor(wand_curs);
|
|
||||||
while(timer.getElapsedTime() < time_in_ticks(120)) {
|
|
||||||
mainPtr.pollEvent(event);
|
|
||||||
if(event.type == sf::Event::KeyPressed || event.type == sf::Event::MouseButtonPressed)
|
if(event.type == sf::Event::KeyPressed || event.type == sf::Event::MouseButtonPressed)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@@ -46,7 +46,7 @@ short cur_town;
|
|||||||
location cur_out;
|
location cur_out;
|
||||||
|
|
||||||
/* Prototypes */
|
/* Prototypes */
|
||||||
void Initialize(void);
|
static void init_scened(int, char*[]);
|
||||||
void Handle_One_Event();
|
void Handle_One_Event();
|
||||||
void Handle_Activate();
|
void Handle_Activate();
|
||||||
void Handle_Update();
|
void Handle_Update();
|
||||||
@@ -64,34 +64,7 @@ extern void set_up_apple_events(int argc, char* argv[]);
|
|||||||
int main(int argc, char* argv[]) {
|
int main(int argc, char* argv[]) {
|
||||||
try {
|
try {
|
||||||
|
|
||||||
init_directories(argv[0]);
|
init_scened(argc, argv);
|
||||||
init_menubar();
|
|
||||||
|
|
||||||
init_current_terrain();
|
|
||||||
Initialize();
|
|
||||||
init_fileio();
|
|
||||||
init_snd_tool();
|
|
||||||
load_graphics();
|
|
||||||
|
|
||||||
cDialog::init();
|
|
||||||
cDialog::defaultBackground = cDialog::BG_LIGHT;
|
|
||||||
cDialog::doAnimations = true;
|
|
||||||
init_graph_tool();
|
|
||||||
|
|
||||||
check_for_intel();
|
|
||||||
set_up_apple_events(argc, argv);
|
|
||||||
|
|
||||||
cen_x = 18;
|
|
||||||
cen_y = 18;
|
|
||||||
|
|
||||||
run_startup_g();
|
|
||||||
init_lb();
|
|
||||||
init_rb();
|
|
||||||
|
|
||||||
make_cursor_sword();
|
|
||||||
|
|
||||||
Set_up_win();
|
|
||||||
init_screen_locs();
|
|
||||||
|
|
||||||
if(ae_loading)
|
if(ae_loading)
|
||||||
set_up_main_screen();
|
set_up_main_screen();
|
||||||
@@ -100,8 +73,6 @@ int main(int argc, char* argv[]) {
|
|||||||
set_up_start_screen();
|
set_up_start_screen();
|
||||||
}
|
}
|
||||||
|
|
||||||
redraw_screen();
|
|
||||||
|
|
||||||
while(!All_Done)
|
while(!All_Done)
|
||||||
Handle_One_Event();
|
Handle_One_Event();
|
||||||
|
|
||||||
@@ -119,16 +90,20 @@ int main(int argc, char* argv[]) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Initialize(void) {
|
static void init_sbar(std::shared_ptr<cScrollbar>& sbar, rectangle rect, int pgSz) {
|
||||||
// To make the Random sequences truly random, we need to make the seed start
|
sbar.reset(new cScrollbar(mainPtr));
|
||||||
// at a different number. An easy way to do this is to put the current time
|
sbar->setBounds(rect);
|
||||||
// and date into the seed. Since it is always incrementing the starting seed
|
sbar->setPageSize(pgSz);
|
||||||
// will always be different. Don’t for each call of Random, or the sequence
|
sbar->hide();
|
||||||
// will no longer be random. Only needed once, here in the init.
|
}
|
||||||
srand(time(nullptr));
|
|
||||||
|
void init_scened(int argc, char* argv[]) {
|
||||||
|
init_directories(argv[0]);
|
||||||
|
init_menubar();
|
||||||
|
// TODO: Sync and load prefs
|
||||||
|
init_graph_tool();
|
||||||
|
init_snd_tool();
|
||||||
|
|
||||||
// Make a new window for drawing in, and it must be a color window.
|
|
||||||
// The window is full screen size, made smaller to make it more visible.
|
|
||||||
sf::VideoMode mode = sf::VideoMode::getDesktopMode();
|
sf::VideoMode mode = sf::VideoMode::getDesktopMode();
|
||||||
rectangle windRect;
|
rectangle windRect;
|
||||||
windRect.width() = mode.width;
|
windRect.width() = mode.width;
|
||||||
@@ -143,23 +118,45 @@ void Initialize(void) {
|
|||||||
ImageRsrc& icon = *ResMgr::get<ImageRsrc>("icon");
|
ImageRsrc& icon = *ResMgr::get<ImageRsrc>("icon");
|
||||||
mainPtr.setIcon(icon.getSize().x, icon.getSize().y, icon.getPixelsPtr());
|
mainPtr.setIcon(icon.getSize().x, icon.getSize().y, icon.getPixelsPtr());
|
||||||
#endif
|
#endif
|
||||||
init_menubar();
|
mainPtr.clear(sf::Color::Black);
|
||||||
right_sbar_rect.top = RIGHT_AREA_UL_Y - 1;
|
mainPtr.display();
|
||||||
right_sbar_rect.left = RIGHT_AREA_UL_X + RIGHT_AREA_WIDTH - 1 - 16;
|
|
||||||
right_sbar_rect.bottom = RIGHT_AREA_UL_Y + RIGHT_AREA_HEIGHT + 1;
|
set_cursor(watch_curs);
|
||||||
right_sbar_rect.right = RIGHT_AREA_UL_X + RIGHT_AREA_WIDTH - 1;
|
boost::thread init_thread([]() {
|
||||||
right_sbar.reset(new cScrollbar(mainPtr));
|
init_current_terrain();
|
||||||
right_sbar->setBounds(right_sbar_rect);
|
check_for_intel();
|
||||||
right_sbar->setPageSize(NRSONPAGE - 1);
|
srand(time(nullptr));
|
||||||
right_sbar->hide();
|
|
||||||
rectangle pal_sbar_rect = terrain_buttons_rect;
|
cen_x = 18;
|
||||||
pal_sbar_rect.offset(RIGHT_AREA_UL_X,RIGHT_AREA_UL_Y);
|
cen_y = 18;
|
||||||
pal_sbar_rect.left = pal_sbar_rect.right - 16;
|
|
||||||
pal_sbar_rect.height() = 17 * 16;
|
right_sbar_rect.top = RIGHT_AREA_UL_Y - 1;
|
||||||
pal_sbar.reset(new cScrollbar(mainPtr));
|
right_sbar_rect.left = RIGHT_AREA_UL_X + RIGHT_AREA_WIDTH - 1 - 16;
|
||||||
pal_sbar->setBounds(pal_sbar_rect);
|
right_sbar_rect.bottom = RIGHT_AREA_UL_Y + RIGHT_AREA_HEIGHT + 1;
|
||||||
pal_sbar->setPageSize(16);
|
right_sbar_rect.right = RIGHT_AREA_UL_X + RIGHT_AREA_WIDTH - 1;
|
||||||
pal_sbar->hide();
|
rectangle pal_sbar_rect = terrain_buttons_rect;
|
||||||
|
pal_sbar_rect.offset(RIGHT_AREA_UL_X,RIGHT_AREA_UL_Y);
|
||||||
|
pal_sbar_rect.left = pal_sbar_rect.right - 16;
|
||||||
|
pal_sbar_rect.height() = 17 * 16;
|
||||||
|
|
||||||
|
init_sbar(right_sbar, right_sbar_rect, NRSONPAGE - 1);
|
||||||
|
init_sbar(pal_sbar, pal_sbar_rect, 16);
|
||||||
|
init_lb();
|
||||||
|
init_rb();
|
||||||
|
|
||||||
|
Set_up_win();
|
||||||
|
init_screen_locs();
|
||||||
|
load_graphics();
|
||||||
|
cDialog::init();
|
||||||
|
});
|
||||||
|
run_startup_g();
|
||||||
|
init_thread.join();
|
||||||
|
|
||||||
|
cDialog::defaultBackground = cDialog::BG_LIGHT;
|
||||||
|
cDialog::doAnimations = true;
|
||||||
|
set_up_apple_events(argc, argv);
|
||||||
|
init_fileio();
|
||||||
|
redraw_screen();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Handle_One_Event() {
|
void Handle_One_Event() {
|
||||||
|
@@ -113,6 +113,13 @@ void init_graph_tool(){
|
|||||||
register_main_patterns();
|
register_main_patterns();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void draw_splash(const sf::Texture& splash, sf::RenderWindow& targ, rectangle dest_rect) {
|
||||||
|
rectangle from_rect = rectangle(splash);
|
||||||
|
targ.clear(sf::Color::Black);
|
||||||
|
rect_draw_some_item(splash, from_rect, targ, dest_rect);
|
||||||
|
targ.display();
|
||||||
|
}
|
||||||
|
|
||||||
static void rect_draw_some_item(const sf::Texture& src_gworld,rectangle src_rect,sf::RenderTarget& targ_gworld,rectangle targ_rect,sf::RenderStates mode);
|
static void rect_draw_some_item(const sf::Texture& src_gworld,rectangle src_rect,sf::RenderTarget& targ_gworld,rectangle targ_rect,sf::RenderStates mode);
|
||||||
|
|
||||||
void rect_draw_some_item(sf::RenderTarget& targ_gworld,rectangle targ_rect) {
|
void rect_draw_some_item(sf::RenderTarget& targ_gworld,rectangle targ_rect) {
|
||||||
|
@@ -110,6 +110,7 @@ void rect_draw_some_item(sf::RenderTarget& targ_gworld,rectangle targ_rect);
|
|||||||
void rect_draw_some_item(const sf::Texture& src_gworld,rectangle src_rect,sf::RenderTarget& targ_gworld,rectangle targ_rect,sf::BlendMode mode = sf::BlendNone);
|
void rect_draw_some_item(const sf::Texture& src_gworld,rectangle src_rect,sf::RenderTarget& targ_gworld,rectangle targ_rect,sf::BlendMode mode = sf::BlendNone);
|
||||||
void rect_draw_some_item(const sf::Texture& src_gworld,rectangle src_rect,rectangle targ_rect,location offset,sf::BlendMode mode = sf::BlendNone);
|
void rect_draw_some_item(const sf::Texture& src_gworld,rectangle src_rect,rectangle targ_rect,location offset,sf::BlendMode mode = sf::BlendNone);
|
||||||
void rect_draw_some_item(const sf::Texture& src_gworld,rectangle src_rect,const sf::Texture& mask_gworld,sf::RenderTarget& targ_gworld,rectangle targ_rect);
|
void rect_draw_some_item(const sf::Texture& src_gworld,rectangle src_rect,const sf::Texture& mask_gworld,sf::RenderTarget& targ_gworld,rectangle targ_rect);
|
||||||
|
void draw_splash(const sf::Texture& splash, sf::RenderWindow& targ, rectangle dest_rect);
|
||||||
|
|
||||||
std::vector<rectangle> draw_string_hilite(sf::RenderTarget& dest_window,rectangle dest_rect,std::string str,TextStyle style,std::vector<hilite_t> hilites,sf::Color hiliteClr);
|
std::vector<rectangle> draw_string_hilite(sf::RenderTarget& dest_window,rectangle dest_rect,std::string str,TextStyle style,std::vector<hilite_t> hilites,sf::Color hiliteClr);
|
||||||
std::vector<snippet_t> draw_string_sel(sf::RenderTarget& dest_window,rectangle dest_rect,std::string str,TextStyle style,std::vector<hilite_t> hilites,sf::Color hiliteClr);
|
std::vector<snippet_t> draw_string_sel(sf::RenderTarget& dest_window,rectangle dest_rect,std::string str,TextStyle style,std::vector<hilite_t> hilites,sf::Color hiliteClr);
|
||||||
|
Reference in New Issue
Block a user