[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Pingus-CVS] r3351 - trunk/pingus/src
From: |
grumbel at BerliOS |
Subject: |
[Pingus-CVS] r3351 - trunk/pingus/src |
Date: |
Sun, 28 Oct 2007 08:51:14 +0100 |
Author: grumbel
Date: 2007-10-28 08:51:14 +0100 (Sun, 28 Oct 2007)
New Revision: 3351
Modified:
trunk/pingus/src/level_menu.cpp
trunk/pingus/src/levelset.cpp
trunk/pingus/src/levelset.hpp
trunk/pingus/src/savegame_manager.cpp
trunk/pingus/src/start_screen.cpp
Log:
- added abort button and completion percentage
Modified: trunk/pingus/src/level_menu.cpp
===================================================================
--- trunk/pingus/src/level_menu.cpp 2007-10-28 07:43:06 UTC (rev 3350)
+++ trunk/pingus/src/level_menu.cpp 2007-10-28 07:51:14 UTC (rev 3351)
@@ -31,7 +31,42 @@
#include "gui/gui_manager.hpp"
#include "game_session.hpp"
#include "start_screen.hpp"
+#include "gui/surface_button.hpp"
+#include "sound/sound.hpp"
+class LevelMenuAbortButton
+ : public GUI::SurfaceButton
+{
+private:
+ LevelMenu* parent;
+
+public:
+ LevelMenuAbortButton(LevelMenu* p)
+ : GUI::SurfaceButton(Display::get_width()/2 - 300,
+ Display::get_height()/2 + 144,
+ ResDescriptor("core/start/back"),
+ ResDescriptor("core/start/back_clicked"),
+ ResDescriptor("core/start/back_hover")),
+ parent(p)
+ {
+ }
+
+ void draw(DrawingContext& gc) {
+ SurfaceButton::draw(gc);
+ gc.print_center(Fonts::chalk_normal, x_pos + 55, y_pos, _("Abort"));
+ }
+
+ void on_click() {
+ parent->on_escape_press();
+ }
+
+ void on_pointer_enter()
+ {
+ SurfaceButton::on_pointer_enter();
+ Sound::PingusSound::play_sound ("tick");
+ }
+};
+
class LevelsetSelector : public GUI::RectComponent
{
private:
@@ -216,7 +251,10 @@
: x_pos((Display::get_width() - 800)/2),
y_pos((Display::get_height() - 600)/2)
{
- background = Resource::load_sprite("core/menu/filedialog");
+ //background = Resource::load_sprite("core/menu/filedialog");
+ background = Resource::load_sprite("core/menu/startscreenbg");
+ background.scale(Display::get_width(), Display::get_height());
+
ok_button = Resource::load_sprite("core/start/ok");
levelset_selector = new LevelsetSelector(this, Rect(Vector2i(x_pos + 100,
y_pos + 140), Size(600, 300)));
@@ -224,6 +262,7 @@
gui_manager->add(levelset_selector, true);
gui_manager->add(level_selector, true);
+ gui_manager->add(new LevelMenuAbortButton(this), true);
level_selector->hide();
}
@@ -235,20 +274,22 @@
void
LevelMenu::draw_background(DrawingContext& gc)
{
- gc.push_modelview();
- gc.translate(static_cast<float>(x_pos), static_cast<float>(y_pos));
-
- // gc.draw_fillrect(Rect(100, 100, 400, 400), Color(255, 0, 0));
- gc.draw(background, Vector2i(400 - background.get_width()/2, 300 -
background.get_height()/2));
-
- gc.pop_modelview();
+ gc.draw(background, gc.get_width()/2, gc.get_height()/2);
}
void
LevelMenu::on_escape_press()
{
- std::cout << "OptionMenu: poping screen" << std::endl;
- ScreenManager::instance()->pop_screen();
+ if (level_selector->is_visible())
+ {
+ levelset_selector->show();
+ level_selector->hide();
+ }
+ else
+ {
+ //std::cout << "OptionMenu: poping screen" << std::endl;
+ ScreenManager::instance()->pop_screen();
+ }
}
void
Modified: trunk/pingus/src/levelset.cpp
===================================================================
--- trunk/pingus/src/levelset.cpp 2007-10-28 07:43:06 UTC (rev 3350)
+++ trunk/pingus/src/levelset.cpp 2007-10-28 07:51:14 UTC (rev 3351)
@@ -24,8 +24,10 @@
#include "plf_res_mgr.hpp"
#include "savegame_manager.hpp"
#include "resource.hpp"
+#include "math.hpp"
Levelset::Levelset(const Pathname& pathname)
+ : completion(0)
{
FileReader reader = FileReader::parse(pathname);
if (reader.get_name() != "pingus-levelset")
@@ -103,8 +105,7 @@
int
Levelset::get_completion() const
{
- // FIXME: insert savegame magic
- return 0;
+ return completion;
}
Sprite
@@ -140,6 +141,12 @@
levels[i+1]->accessible = true;
}
}
+
+ completion = 0;
+ for(std::vector<Level*>::iterator i = levels.begin(); i != levels.end(); ++i)
+ if ((*i)->finished)
+ completion += 1;
+ completion = Math::clamp(0, completion * 100 / int(levels.size()), 100);
}
/* EOF */
Modified: trunk/pingus/src/levelset.hpp
===================================================================
--- trunk/pingus/src/levelset.hpp 2007-10-28 07:43:06 UTC (rev 3350)
+++ trunk/pingus/src/levelset.hpp 2007-10-28 07:51:14 UTC (rev 3351)
@@ -41,7 +41,7 @@
std::string title;
std::string description;
Sprite image;
-
+ int completion;
std::vector<Level*> levels;
public:
Modified: trunk/pingus/src/savegame_manager.cpp
===================================================================
--- trunk/pingus/src/savegame_manager.cpp 2007-10-28 07:43:06 UTC (rev
3350)
+++ trunk/pingus/src/savegame_manager.cpp 2007-10-28 07:51:14 UTC (rev
3351)
@@ -137,7 +137,7 @@
SavegameManager::SavegameTable::iterator
SavegameManager::find(const std::string& filename)
{
- std::cout << "SavegameManager::find: \"" << filename << "\"" << std::endl;
+ //std::cout << "SavegameManager::find: \"" << filename << "\"" << std::endl;
for(SavegameTable::iterator i = savegames.begin();
i != savegames.end(); ++i)
Modified: trunk/pingus/src/start_screen.cpp
===================================================================
--- trunk/pingus/src/start_screen.cpp 2007-10-28 07:43:06 UTC (rev 3350)
+++ trunk/pingus/src/start_screen.cpp 2007-10-28 07:51:14 UTC (rev 3351)
@@ -93,7 +93,6 @@
}
};
-
class StartScreenAbortButton
: public GUI::SurfaceButton
{
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Pingus-CVS] r3351 - trunk/pingus/src,
grumbel at BerliOS <=