summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--NEWS2
-rw-r--r--README2
-rw-r--r--data/help/changes.txt17
-rw-r--r--data/help/header.txt2
-rw-r--r--src/gui/connection.cpp152
-rw-r--r--src/gui/connection.h (renamed from src/sprite.h)65
-rw-r--r--src/properties.h84
-rw-r--r--src/resources/iteminfo.cpp115
8 files changed, 327 insertions, 112 deletions
diff --git a/NEWS b/NEWS
index ce5de390..83817d99 100644
--- a/NEWS
+++ b/NEWS
@@ -1,4 +1,4 @@
-0.0.17 (WIP)
+0.0.17 (10 October 2005)
- Added remembering of window position and sizes
- Added taking screenshot with Alt+P
- Added notice about the player being overweight
diff --git a/README b/README
index adbbeba6..10c205e7 100644
--- a/README
+++ b/README
@@ -1,7 +1,7 @@
THE MANA WORLD
==============
- Version: 0.0.17 Date: 09/10/2005
+ Version: 0.0.17 Date: 10/10/2005
Development team:
diff --git a/data/help/changes.txt b/data/help/changes.txt
index 3c5c69e0..4fb23d87 100644
--- a/data/help/changes.txt
+++ b/data/help/changes.txt
@@ -3,6 +3,23 @@
##3 === RECENT CHANGES ===
+ 0.0.17 (10 October 2005)
+
+ - Added remembering of window position and sizes
+ - Added taking screenshot with Alt+P
+ - Added notice about the player being overweight
+ - Added time to chat messages
+ - Added messagebox on error for MacOS X
+ - Added new network layer based on SDL_net
+ - Added proper error message for when the map server goes offline
+ - Improved damage text font, shadow is now translucent
+ - Improved GUI layout, new profile window
+ - Improved support for building on FreeBSD and MacOS X
+ - Improved tile engine to fix graphics glitches and make mapping easier
+ - Fixed items on map to be removed on map switch
+ - Fixed OpenGL checkbox in the setup window to be usable
+ - Cleaned up a lot of code
+
0.0.16 (04 September 2005)
- Added inn and casino
diff --git a/data/help/header.txt b/data/help/header.txt
index 79117212..261a11ca 100644
--- a/data/help/header.txt
+++ b/data/help/header.txt
@@ -2,7 +2,7 @@
##1 T H E M A N A W O R L D
##1 ==========================================
- ##2Version:##6 0.0.16 ##2Date:##6 4 September 2005
+ ##2Version:##6 0.0.17 ##2Date:##6 10 October 2005
##2 Website: http://themanaworld.org
diff --git a/src/gui/connection.cpp b/src/gui/connection.cpp
new file mode 100644
index 00000000..0e885598
--- /dev/null
+++ b/src/gui/connection.cpp
@@ -0,0 +1,152 @@
+/*
+ * 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 "connection.h"
+
+#include <guichan/widgets/label.hpp>
+
+#include "button.h"
+#include "progressbar.h"
+
+#include "../game.h"
+#include "../graphics.h"
+#include "../log.h"
+#include "../main.h"
+
+#include "../net/messagein.h"
+#include "../net/messageout.h"
+#include "../net/network.h"
+#include "../net/protocol.h"
+
+ConnectionDialog::ConnectionDialog():
+ Window("Info"), mProgress(0), mStatus(NET_CONNECTING)
+{
+ setContentSize(200, 100);
+ mCancelButton = new Button("Cancel");
+ mCancelButton->setPosition(5, 100 - 5 - mCancelButton->getHeight());
+ mCancelButton->setEventId("cancel");
+ mCancelButton->addActionListener(this);
+ mProgressBar = new ProgressBar(0.0, 5, mCancelButton->getY() - 25,
+ 200 - 10, 20, 128, 128, 128);
+ mLabel = new gcn::Label("Connecting...");
+ mLabel->setPosition(5, mProgressBar->getY() - 25);
+
+ add(mLabel);
+ add(mCancelButton);
+ add(mProgressBar);
+ setLocationRelativeTo(getParent());
+
+ const char *host = iptostring(map_address);
+ openConnection(host, map_port);
+}
+
+ConnectionDialog::~ConnectionDialog()
+{
+}
+
+void ConnectionDialog::logic()
+{
+ mProgress += 0.005f;
+ if (mProgress > 1.0f)
+ {
+ mProgress = 0.0f;
+ }
+ mProgressBar->setProgress(mProgress);
+ Window::logic();
+
+ switch (mStatus)
+ {
+ case NET_CONNECTING:
+ mStatus = pollConnection();
+ break;
+ case NET_ERROR:
+ logger->log("Connection::Unable to connect");
+ errorMessage = "Unable to connect to map server";
+ state = ERROR_STATE;
+ closeConnection();
+ break;
+ case NET_CONNECTED:
+ mapLogin();
+ state = GAME_STATE;
+ break;
+ }
+}
+
+void ConnectionDialog::action(const std::string& eventId)
+{
+ if (eventId == "cancel")
+ {
+ state = EXIT_STATE;
+ }
+}
+
+void ConnectionDialog::mapLogin()
+{
+ // Send login infos
+ MessageOut outMsg;
+ outMsg.writeShort(0x0072);
+ outMsg.writeLong(account_ID);
+ outMsg.writeLong(char_ID);
+ outMsg.writeLong(session_ID1);
+ outMsg.writeLong(session_ID2);
+ outMsg.writeByte(sex);
+
+ // Skip a mysterious 4 bytes
+ while ((in_size < 4)|| (out_size > 0)) flush();
+ skip(4);
+
+ MessageIn msg = get_next_message();
+
+ if (msg.getId() == SMSG_LOGIN_SUCCESS)
+ {
+ unsigned char direction;
+ msg.readLong(); // server tick
+ msg.readCoordinates(startX, startY, direction);
+ msg.skip(2); // unknown
+ logger->log("Protocol: Player start position: (%d, %d), Direction: %d",
+ startX, startY, direction);
+ }
+ else if (msg.getId() == 0x0081)
+ {
+ logger->log("Warning: Map server D/C");
+ }
+ else
+ {
+ logger->error("Unknown packet: map_start");
+ }
+
+ skip(msg.getLength());
+
+ // Send "map loaded"
+ // TODO: be able to reuse the same msg
+ MessageOut newMsg;
+ newMsg.writeShort(0x007d);
+}
+
+void connectionInputHandler(SDL_KeyboardEvent *keyEvent)
+{
+ if (keyEvent->keysym.sym == SDLK_ESCAPE)
+ {
+ state = EXIT_STATE;
+ }
+}
diff --git a/src/sprite.h b/src/gui/connection.h
index 2950f4e8..f26c1344 100644
--- a/src/sprite.h
+++ b/src/gui/connection.h
@@ -21,45 +21,60 @@
* $Id$
*/
-#ifndef _TMW_SPRITE_H_
-#define _TMW_SPRITE_H_
+#ifndef _TMW_CONNECTION_H
+#define _TMW_CONNECTION_H
-class Graphics;
+#include <iosfwd>
+#include <guichan/actionlistener.hpp>
+#include <SDL_events.h>
+
+#include "window.h"
+
+#include "../guichanfwd.h"
+
+class Button;
+class Label;
+class ProgressBar;
/**
- * A sprite is some visible object on a map. This abstract class defines the
- * interface used by the map to sort and display the sprite.
+ * The connection dialog.
+ *
+ * \ingroup Interface
*/
-class Sprite
-{
+class ConnectionDialog : public Window, public gcn::ActionListener {
public:
/**
- * Destructor.
- */
- virtual
- ~Sprite() {}
-
- /**
- * Draws the sprite to the given graphics context.
+ * Constructor
*
- * Note: this function could be simplified if the graphics context
- * would support setting a translation offset. It already does this
- * partly with the clipping rectangle support.
+ * @see Window::Window
*/
- virtual void
- draw(Graphics *graphics, int offsetX, int offsetY) = 0;
+ ConnectionDialog();
/**
- * Returns the pixel Y coordinate of the sprite.
+ * Destructor
*/
- virtual int
- getPixelY() const = 0;
+ ~ConnectionDialog();
- protected:
/**
- * Constructor.
+ * Called when receiving actions from the widgets.
*/
- Sprite() {}
+ void action(const std::string& eventId);
+
+ void logic();
+
+ private:
+ gcn::Label *mLabel;
+ Button *mCancelButton;
+ ProgressBar *mProgressBar;
+ float mProgress;
+ int mStatus;
+
+ void mapLogin();
};
+/**
+ * Handle input
+ */
+void connectionInputHandler(SDL_KeyboardEvent *keyEvent);
+
#endif
diff --git a/src/properties.h b/src/properties.h
deleted file mode 100644
index ccf8cd00..00000000
--- a/src/properties.h
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- * 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_PROPERTIES_H_
-#define _TMW_PROPERTIES_H_
-
-#include <map>
-#include <string>
-
-/**
- * A class holding a set of properties.
- */
-class Properties
-{
- public:
- virtual
- ~Properties() {}
-
- /**
- * Get a map property.
- *
- * @return the value of the given property or an empty string when it
- * doesn't exist.
- */
- const std::string&
- getProperty(const std::string &name)
- {
- const static std::string undefined = "";
- std::map<std::string, std::string>::const_iterator i =
- properties.find(name);
-
- if (i != properties.end())
- {
- return (*i).second;
- }
- else
- {
- return undefined;
- }
- }
-
- /**
- * Returns whether a certain property is available.
- */
- bool
- hasProperty(const std::string &name)
- {
- return (properties.find(name) != properties.end());
- }
-
- /**
- * Set a map property.
- */
- void
- setProperty(const std::string &name, const std::string &value)
- {
- properties[name] = value;
- }
-
- private:
- std::map<std::string, std::string> properties;
-};
-
-#endif
diff --git a/src/resources/iteminfo.cpp b/src/resources/iteminfo.cpp
new file mode 100644
index 00000000..69090dcb
--- /dev/null
+++ b/src/resources/iteminfo.cpp
@@ -0,0 +1,115 @@
+/*
+ * 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 "iteminfo.h"
+
+ItemInfo::ItemInfo() :
+ image(0), name(""),
+ description(""), type(0),
+ weight(0), slot(0)
+{
+}
+
+ItemInfo::~ItemInfo()
+{
+}
+
+void ItemInfo::setImage(short image)
+{
+ this->image = image;
+}
+
+short ItemInfo::getImage()
+{
+ return image;
+}
+
+void ItemInfo::setArt(short art)
+{
+ this->art = art;
+}
+
+short ItemInfo::getArt()
+{
+ return art;
+}
+
+void ItemInfo::setName(const std::string &name)
+{
+ this->name = name;
+}
+
+std::string ItemInfo::getName()
+{
+ return name;
+}
+
+void ItemInfo::setDescription(const std::string &description)
+{
+ this->description = description;
+}
+
+std::string ItemInfo::getDescription()
+{
+ return description;
+}
+
+void ItemInfo::setEffect(const std::string &effect)
+{
+ this->effect = effect;
+}
+
+std::string ItemInfo::getEffect()
+{
+ return effect;
+}
+
+void ItemInfo::setType(short type)
+{
+ this->type = type;
+}
+
+short ItemInfo::getType()
+{
+ return type;
+}
+
+void ItemInfo::setWeight(short weight)
+{
+ this->weight = weight;
+}
+
+short ItemInfo::getWeight()
+{
+ return weight;
+}
+
+void ItemInfo::setSlot(char slot)
+{
+ this->slot = slot;
+}
+
+char ItemInfo::getSlot()
+{
+ return slot;
+}