diff options
author | Eugenio Favalli <elvenprogrammer@gmail.com> | 2005-02-06 18:17:09 +0000 |
---|---|---|
committer | Eugenio Favalli <elvenprogrammer@gmail.com> | 2005-02-06 18:17:09 +0000 |
commit | 5ec4143bde0fd67c7aca841804a5d165c794bdf0 (patch) | |
tree | 4ecfaf02a2f1831d545d21de3385b34b6c8c4388 /src | |
parent | 49ea67bae1d2969c21005c06bb764f3c6b479e9c (diff) | |
download | mana-5ec4143bde0fd67c7aca841804a5d165c794bdf0.tar.gz mana-5ec4143bde0fd67c7aca841804a5d165c794bdf0.tar.bz2 mana-5ec4143bde0fd67c7aca841804a5d165c794bdf0.tar.xz mana-5ec4143bde0fd67c7aca841804a5d165c794bdf0.zip |
Added minimal minimap
Diffstat (limited to 'src')
-rw-r--r-- | src/graphic/graphic.cpp | 6 | ||||
-rw-r--r-- | src/gui/minimap.cpp | 84 | ||||
-rw-r--r-- | src/gui/minimap.h | 51 |
3 files changed, 141 insertions, 0 deletions
diff --git a/src/graphic/graphic.cpp b/src/graphic/graphic.cpp index 591c7443..99a7c319 100644 --- a/src/graphic/graphic.cpp +++ b/src/graphic/graphic.cpp @@ -25,6 +25,7 @@ #include "../gui/gui.h" #include "../gui/textfield.h" #include "../gui/status.h" +#include "../gui/minimap.h" #include "../main.h" #include "../being.h" @@ -53,6 +54,7 @@ NpcTextDialog *npcTextDialog; SkillDialog *skillDialog; StatsWindow *statsWindow; Setup* setupWindow; +Minimap *minimap; void ChatListener::action(const std::string& eventId) { @@ -266,6 +268,10 @@ Engine::Engine() setupWindow = new Setup(); setupWindow->setVisible(false); + + // Create minimap + + minimap = new Minimap(); // Give focus to the chat input chatInput->requestFocus(); diff --git a/src/gui/minimap.cpp b/src/gui/minimap.cpp new file mode 100644 index 00000000..a1104b8a --- /dev/null +++ b/src/gui/minimap.cpp @@ -0,0 +1,84 @@ +/* + * The Mana World + * Copyright 2004-2005 The Mana World Development Team + * + * This file is part of The Mana World. + * + * The Mana World is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * The Mana World is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with The Mana World; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * $IdS + */ + +#define MINIMAP_W 100 +#define MINIMAP_H 100 + +#include "minimap.h" +#include "../being.h" + +Minimap::Minimap() +{ + setSize(MINIMAP_W, MINIMAP_H); + setPosition(20, 20); + + mapBackground = SDL_AllocSurface(SDL_SWSURFACE, MINIMAP_W, MINIMAP_H, + (screen->format->BytesPerPixel*8), 0, 0, 0, 0); + Uint32 mapColor = SDL_MapRGB(screen->format, 255, 255, 255); + SDL_Rect sourceRect; + sourceRect.x = sourceRect.y = 0; + sourceRect.w = MINIMAP_W; + sourceRect.h = MINIMAP_H; + if ( mapBackground ) + { + SDL_FillRect(mapBackground, &sourceRect, mapColor); + SDL_SetAlpha(mapBackground, SDL_SRCALPHA, 120); + } +} + +void Minimap::draw(gcn::Graphics *graphics) +{ + int x, y; + + getAbsolutePosition(x, y); + + if ( (mapBackground->w != getWidth()) || (mapBackground->h != getHeight()) ) + { + SDL_FreeSurface(mapBackground); + mapBackground = SDL_AllocSurface(SDL_SWSURFACE, getWidth(), getHeight(), + (screen->format->BytesPerPixel*8), 0, 0, 0, 0); + Uint32 mapColor = SDL_MapRGB(screen->format, 52, 149, 210); + SDL_Rect sourceRect; + sourceRect.x = sourceRect.y = 0; + sourceRect.w = getWidth(); + sourceRect.h = getHeight(); + if ( mapBackground ) + { + SDL_FillRect(mapBackground, &sourceRect, mapColor); + SDL_SetAlpha(mapBackground, SDL_SRCALPHA, 120); + } + + } + + SDL_Rect screenRect; + screenRect.w = getWidth(); + screenRect.h = getHeight(); + screenRect.x = x; + screenRect.y = y; + if ( mapBackground ) SDL_BlitSurface(mapBackground, NULL, screen, &screenRect); + + graphics->drawRectangle(gcn::Rectangle(0, 0, getWidth(), getHeight())); + graphics->setColor(gcn::Color(209, 52, 61)); + graphics->fillRectangle(gcn::Rectangle(player_node->x /2, + player_node->y / 2, 3, 3)); +}
\ No newline at end of file diff --git a/src/gui/minimap.h b/src/gui/minimap.h new file mode 100644 index 00000000..08a39fb6 --- /dev/null +++ b/src/gui/minimap.h @@ -0,0 +1,51 @@ +/* + * The Mana World + * Copyright 2004-2005 The Mana World Development Team + * + * This file is part of The Mana World. + * + * The Mana World is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * any later version. + * + * The Mana World is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with The Mana World; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + * $Id$ + */ + +#ifndef _TMW_MINIMAP_H +#define _TMW_MINIMAP_H + +#include "gui.h" +#include "window.h" + +/** + * Minimap dialog. + * + * \ingroup GUI + */ +class Minimap : public Window { + public: + /** + * Constructor. + */ + Minimap(); + + /** + * Draws the minimap. + */ + void draw(gcn::Graphics *graphics); + + // The Alpha-Blended Surface for the background transluency effect. + SDL_Surface *mapBackground; +}; + +#endif |