Beispiel #1
0
void render(){

    if(ga_changed){
        ga_changed = FALSE;

        set_ga_mul(0, 0, 10, 18, 0);
        render_game_area();
        write_ga();
    }
    if(intf_changed){
        intf_changed = FALSE;

        if(intf_full_clear_needed){
            intf_full_clear_needed = FALSE;
            set_intf_mul(0, 0, 10, 18, TILE_WHITE);
        }
        else{
            set_intf_mul(0, 10, 10, 8, TILE_WHITE);
        }

        render_interface();
        write_intf();
    }

}
Beispiel #2
0
void GUI::OnRender() {
    if(current_screen == MENU_SCREEN) {
        render_menu(menu);
    } else if(current_screen == MAP_SCREEN) {
        std::vector<std::vector<MapTile> > map_canvas = world_map_gui.get_canvas();
        for(size_t i = 0; i < map_canvas.size(); i++) {
            for(size_t j = 0; j < map_canvas[i].size(); j++) {
                drawChr(j, i, map_canvas[i][j].char_count, ascii, screen, map_canvas[i][j].color);
            }
        }
        drawStr(0, GAME_HEIGHT - 2, std::string("Use the arrow keys to move the cursor.").c_str(),
                ascii, screen, WHITE);
        drawStr(0, GAME_HEIGHT - 1, std::string("Press ENTER to spawn on the selected map tile.").c_str(),
                ascii, screen, WHITE);
    } else if (current_screen == GAME_SCREEN) {
        render_canvas();
        render_target();
        render_characters();
        render_main_char();
        render_animations();
        clear_area(IntPoint(0, UI_START), IntPoint(UI_HEIGHT, UI_WIDTH));
        render_interface();
        render_message();

    } else if(current_screen == DIRECTION_SCREEN)
    {
        drawStr(0, 0, std::string("Pick a direction to perform the action.").c_str(), ascii, screen, WHITE);
    } else if (current_screen == DEATH_SCREEN) {
        clear_screen();
        drawStr(GAME_WIDTH/2 - 12, GAME_HEIGHT/2, std::string("You suck, uninstall bro.").c_str(), ascii, screen, WHITE);
    } else if (current_screen == DEBUG_CONSOLE) {
        render_canvas();
        render_target();
        render_characters();
        render_main_char();
        render_debug();
    }
    if(game.is_paused()) {
        drawStr(GAME_WIDTH-20, 0, std::string("Paused").c_str(), ascii, screen, WHITE);
    }

    SDL_Flip(screen);
}
Beispiel #3
0
STORY_RESULT controller::show(START_POSITION startpos)
{

	if(parts_.empty()) {
		LOG_NG << "no storyscreen parts to show\n";
		return NEXT;
	}

	gui::button back_button (video_, "", gui::button::TYPE_PRESS, "button_normal/button_small_H22"
		, gui::button::DEFAULT_SPACE, true, "icons/arrows/long_arrow_ornate_left");
	gui::button next_button (video_, "", gui::button::TYPE_PRESS, "button_normal/button_small_H22"
		, gui::button::DEFAULT_SPACE, true, "icons/arrows/long_arrow_ornate_right");
	gui::button play_button (video_, _("Skip"));

	// Build renderer cache unless built for a low-memory environment;
	// caching the scaled backgrounds can take over a decent amount of memory.
#ifndef LOW_MEM
	std::vector< render_pointer_type > uis_;
	for(part_pointer_type p : parts_) {
		ASSERT_LOG( p != nullptr, "Ouch: hit nullptr storyscreen part in collection" );
		render_pointer_type const rpt(new part_ui(*p, video_, next_button, back_button, play_button));
		uis_.push_back(rpt);
	}
#endif

	size_t k = 0;
	switch(startpos) {
	case START_BEGINNING:
		break;
	case START_END:
		k = parts_.size() -1;
		break;
	default:
		assert(false);
		break;
	}

	while(k < parts_.size()) {
#ifndef LOW_MEM
		part_ui &render_interface = *uis_[k];
#else
		part_ui render_interface(*parts_[k], video_, next_button, back_button, play_button);
#endif

		LOG_NG << "displaying storyscreen part " << k+1 << " of " << parts_.size() << '\n';

		back_button.enable(segment_index_ != 0 || k != 0);

		switch(render_interface.show()) {
		case part_ui::NEXT:
			++k;
			break;
		case part_ui::BACK:
			if(k > 0) {
				--k;
			}
			else if(segment_index_ > 0) {
				return BACK;
			}
			break;
		case part_ui::QUIT:
			return QUIT;
		}
	}
	return NEXT;
}