diff options
-rw-r--r-- | data/help/Makefile.am | 14 | ||||
-rw-r--r-- | data/help/accounts.txt | 17 | ||||
-rw-r--r-- | data/help/changes.txt | 28 | ||||
-rw-r--r-- | data/help/commands.txt | 34 | ||||
-rw-r--r-- | data/help/index.txt | 24 | ||||
-rw-r--r-- | data/help/skills.txt | 21 | ||||
-rw-r--r-- | data/help/support.txt | 25 | ||||
-rw-r--r-- | data/help/team.txt | 55 | ||||
-rw-r--r-- | src/Makefile.am | 2 | ||||
-rw-r--r-- | src/game.cpp | 9 | ||||
-rw-r--r-- | src/gui/help.cpp | 131 | ||||
-rw-r--r-- | src/gui/help.h | 76 |
12 files changed, 435 insertions, 1 deletions
diff --git a/data/help/Makefile.am b/data/help/Makefile.am new file mode 100644 index 00000000..1ddd7d11 --- /dev/null +++ b/data/help/Makefile.am @@ -0,0 +1,14 @@ + +helpdir = $(pkgdatadir)/data/help + +help_DATA = \ + accounts.txt \ + changes.txt \ + commands.txt \ + index.txt \ + skills.txt \ + support.txt \ + team.txt + +EXTRA_DIST = \ + $(help_DATA) diff --git a/data/help/accounts.txt b/data/help/accounts.txt new file mode 100644 index 00000000..d6308fe8 --- /dev/null +++ b/data/help/accounts.txt @@ -0,0 +1,17 @@ + T H E M A N A W O R L D + ========================================== + + Version: 0.0.13 Date: 5 June 2005 + + Website: http://themanaworld.org + + +@index-> Back to Index + + + === ACCOUNTS === + + To create an account, add "_M" after your username when you login for + the first time and enter a password of your choice. + + Remember that the server is only for demo and development purposes. diff --git a/data/help/changes.txt b/data/help/changes.txt new file mode 100644 index 00000000..c1f03d8d --- /dev/null +++ b/data/help/changes.txt @@ -0,0 +1,28 @@ + T H E M A N A W O R L D + ========================================== + + Version: 0.0.13 Date: 5 June 2005 + + Website: http://themanaworld.org + + +@index-> Back to Index + + + === RECENT CHANGES === + + - Added ability to trade items and money + - Added server field to login dialog + - Added item descriptions to inventory and buy/sell dialogs + - Added confirmation dialog before quitting + - Added button to show/hide equipment window + - Added framerate limiter to config options + - Added ability to auto attack + - Upgraded to Guichan 0.4.0 + - Dialogs are now modal when appropriate + - Fixed a crash in OpenGL mode + - Fixed rendering of minimap, progress bars and player sprite in + OpenGL mode + - Fixed 100% CPU usage when minimized + - Fixed players not always appearing to sit when they are in fact + sitting diff --git a/data/help/commands.txt b/data/help/commands.txt new file mode 100644 index 00000000..994cb77c --- /dev/null +++ b/data/help/commands.txt @@ -0,0 +1,34 @@ + T H E M A N A W O R L D + ========================================== + + Version: 0.0.13 Date: 5 June 2005 + + Website: http://themanaworld.org + + +@index-> Back to Index + + + === COMMANDS === + + Use arrow keys (or left mouse button) to move around and the right + mouse button over NPC's feet to talk to them or over a monster to + attack it. + + Other keys: + + Left Ctrl attack + Alt + 0-9 show emotions + F1 show the online help + F5 sit down / stand up + F6 toggle debug pathfinding feature + F7 play test sound + G or Z pick up item + Enter focus chat window / send message + Alt + K show skills + Alt + S show stats + Alt + I show inventory + Alt + E show equipment + Alt + C show setup window + Left Shift hold it when attacking to lock target for auto + attack diff --git a/data/help/index.txt b/data/help/index.txt new file mode 100644 index 00000000..5f29e76b --- /dev/null +++ b/data/help/index.txt @@ -0,0 +1,24 @@ + T H E M A N A W O R L D + ========================================== + + Version: 0.0.13 Date: 5 June 2005 + + Website: http://themanaworld.org + + + === INDEX === + +@team-> Development team +@changes-> Recent Changes +@accounts-> Accounts +@commands-> Commands +@skills-> Skills +@support-> Support + + + === Powered By === + + SDL, SDL_image, SDL_mixer (Media framework) + Guichan (GUI framework) + libxml2 (XML parsing and writing) + PhysFS (Data files) diff --git a/data/help/skills.txt b/data/help/skills.txt new file mode 100644 index 00000000..eba4082c --- /dev/null +++ b/data/help/skills.txt @@ -0,0 +1,21 @@ + T H E M A N A W O R L D + ========================================== + + Version: 0.0.13 Date: 5 June 2005 + + Website: http://themanaworld.org + + +@index-> Back to Index + + + === SKILLS === + + You can improve your skills by increasing job level. Each job level + gives you 1 point to spend on basic skills. + + Level 1: enables the ability to trade with others + Level 2: enables the ability to express emotions + Level 3: enables character to sit + + Other levels are still not implemented. diff --git a/data/help/support.txt b/data/help/support.txt new file mode 100644 index 00000000..195a6ea4 --- /dev/null +++ b/data/help/support.txt @@ -0,0 +1,25 @@ + T H E M A N A W O R L D + ========================================== + + Version: 0.0.13 Date: 5 June 2005 + + Website: http://themanaworld.org + + +@index-> Back to Index + + + === SUPPORT === + + If you're having troubles, plase first of all read the FAQ. If you + can't find a solution to your problem, feel free to check our + Bugs/Support section of the forum: + + http://themanaworld.org/phpBB2/viewforum.php?f=3 + + or come visit us on our IRC channel: + + #manaworld @ irc.freenode.net + + Otherwise check the 'Development Team' section to have a list of + developers and how to contact them. diff --git a/data/help/team.txt b/data/help/team.txt new file mode 100644 index 00000000..5a387ac6 --- /dev/null +++ b/data/help/team.txt @@ -0,0 +1,55 @@ + T H E M A N A W O R L D + ========================================== + + Version: 0.0.13 Date: 5 June 2005 + + Website: http://themanaworld.org + + +@index-> Back to Index + + + === DEVELOPMENT TEAM === + + Project Leader: + + ElvenProgrammer aka Eugenio Favalli (elvenprogrammer@gmail.com) + + + Programmers: + + Bertram (SDL input, progress bar drawing, Debian + package) + Bjorn lindeijer (various parts, GUI, graphics, A* and map + rewrites) + Javila (various parts, GUI) + nym (several GUI parts) + Shura (configuration, sound, misc. ports) + zenogais (resource manager) + Usiu (several GUI parts) + Mra (some GUI parts) + + + Artists: + + Clef (tiles, concepts) + Gnulia (conceptual art) + Magick (music and sound effects) + Neko-mon (player sprites, various things) + Neorice (monster sprites, tiles) + Rotonen (backstory, art director, music, sound) + Talaroc (sprites) + Ti Sing Hao (music) + + + Misc. thanks: + + Ultramichy (hosting test server) + + + Inactive/retired: + + Chetic (maps) + SimEdw (network code) + Sull (hosting CVS and related services) + Vlady (several items) diff --git a/src/Makefile.am b/src/Makefile.am index aa345414..5b80a7d2 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -27,6 +27,8 @@ tmw_SOURCES = graphic/spriteset.cpp \ gui/equipment.h \ gui/gui.cpp \ gui/gui.h \ + gui/help.cpp \ + gui/help.h \ gui/inventory.cpp \ gui/inventory.h \ gui/itemcontainer.cpp \ diff --git a/src/game.cpp b/src/game.cpp index 96a2ea85..3b4a4420 100644 --- a/src/game.cpp +++ b/src/game.cpp @@ -37,8 +37,10 @@ #include "gui/ok_dialog.h" #include "gui/confirm_dialog.h" #include "gui/requesttrade.h" +#include "gui/help.h" #include "net/protocol.h" #include "resources/mapreader.h" + #include <SDL.h> #include <sstream> @@ -226,7 +228,12 @@ void do_input() if (event.type == SDL_KEYDOWN) { SDL_keysym keysym = event.key.keysym; - + + if (keysym.sym == SDLK_F1) + { + new HelpWindow(); + } + if (keysym.sym == SDLK_RETURN) { if (!chatWindow->isFocused()) diff --git a/src/gui/help.cpp b/src/gui/help.cpp new file mode 100644 index 00000000..5b652f99 --- /dev/null +++ b/src/gui/help.cpp @@ -0,0 +1,131 @@ +/* + * The Mana World + * Copyright 2004 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$ + */ + +#include "help.h" +#include "../main.h" +#include <fstream> + +HelpWindow::HelpWindow(): + Window("Help") +{ + setContentSize(455, 350); + setResizeable(true); + + textBox = new TextBox(); + textBox->setEditable(false); + scrollArea = new ScrollArea(textBox); + okButton = new Button("Close"); + + scrollArea->setDimension(gcn::Rectangle( + 5, 5, 445, 335 - okButton->getHeight())); + okButton->setPosition( + 450 - okButton->getWidth(), + 345 - okButton->getHeight()); + + okButton->setEventId("close"); + okButton->addActionListener(this); + + add(scrollArea); + add(okButton); + + //setLocationRelativeTo(getParent()); + textBox->requestFocus(); + + std::string defHelp = "index"; + loadHelp(defHelp); +} + +HelpWindow::~HelpWindow() +{ + delete okButton; + delete textBox; + delete scrollArea; + links.clear(); + +} + +void HelpWindow::action(const std::string& eventId) +{ + scheduleDelete(); +} + +void HelpWindow::mousePress(int mx, int my, int button) +{ + int x1 = scrollArea->getX() + 10; + int y1 = scrollArea->getY() + 15; + int x2 = x1 + scrollArea->getWidth() - 25; + int y2 = y1 + scrollArea->getHeight(); + if (button == gcn::MouseInput::LEFT) { + if ((mx >= x1) && (my >= y1) && (mx <= x2) && (my <= y2)) + { + for (unsigned int i = 0; i < links.size(); i++) + { + int y1 = links[i].yPos * textBox->getFont()->getHeight() + 5 - + scrollArea->getVerticalScrollAmount(); + int y2 = y1 + textBox->getFont()->getHeight(); + if ((my > y1) && (my < y2)) { + std::string tmp = links[i].file; + loadHelp(tmp); + } + } + } + } +} + +void HelpWindow::loadHelp(std::string& helpFile) { + helpFile = TMW_DATADIR "data/help/" + helpFile + ".txt"; + + std::ifstream fin; + fin.open(helpFile.c_str()); + if (fin.fail()) + { + logger->log("Couldn't load help file: %s", helpFile.c_str()); + return; + } + + links.clear(); + textBox->setText(""); + + while (!fin.eof()) + { + std::string line = ""; + getline(fin, line); + + // Check for links + if (line.substr(0, 1) == "@") + { + int idx = line.find("->"); + HELP_LINK hlink; + hlink.yPos = textBox->getNumberOfRows() + 1; + hlink.file = line.substr(1, idx - 1); + links.push_back(hlink); + + line = " " + line.erase(0, idx); + } + + textBox->addRow(line); + } + scrollArea->setVerticalScrollAmount(0); + + fin.close(); +} diff --git a/src/gui/help.h b/src/gui/help.h new file mode 100644 index 00000000..17821765 --- /dev/null +++ b/src/gui/help.h @@ -0,0 +1,76 @@ +/* + * The Mana World + * Copyright 2004 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_HELP_H +#define _TMW_HELP_H + +#include <guichan.hpp> +#include "window.h" +#include "scrollarea.h" +#include "button.h" +#include "textbox.h" + +struct HELP_LINK { + int yPos; + std::string file; +}; + +/** + * The help dialog. + */ +class HelpWindow : public Window, public gcn::ActionListener +{ + public: + /** + * Constructor. + */ + HelpWindow(); + + /** + * Destructor. + */ + ~HelpWindow(); + + /** + * Called when receiving actions from the widgets. + */ + void action(const std::string& eventId); + + /** + * Handles mouse click. + */ + void mousePress(int mx, int my, int button); + + /** + * Load help in the dialog. + */ + void loadHelp(std::string& helpFile); + + private: + std::vector<HELP_LINK> links; + gcn::Button *okButton; + gcn::TextBox *textBox; + gcn::ScrollArea *scrollArea; +}; + +#endif |