From cf5cfbcb8ff63005b1e08f9718ce3f80f919271e Mon Sep 17 00:00:00 2001 From: Bjørn Lindeijer Date: Mon, 30 Jun 2008 09:12:16 +0000 Subject: Updated CMake file to fix compilation. Patch by darkKnight. --- src/CMakeLists.txt | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'src') diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 0c2ef4cd..20f2f761 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -148,6 +148,8 @@ SET(SRCS gui/setup_joystick.h gui/setup_keyboard.cpp gui/setup_keyboard.h + gui/setup_players.cpp + gui/setup_players.h gui/setuptab.h gui/setup_video.cpp gui/setup_video.h @@ -163,6 +165,10 @@ SET(SRCS gui/status.h gui/tabbedcontainer.cpp gui/tabbedcontainer.h + gui/table.cpp + gui/table.h + gui/table_model.cpp + gui/table_model.h gui/textbox.cpp gui/textbox.h gui/textfield.cpp @@ -324,6 +330,8 @@ SET(SRCS particleemitter.h player.cpp player.h + player_relations.cpp + player_relations.h properties.h serverinfo.h shopitem.cpp -- cgit v1.2.3-60-g2f50 From 4ca8675700dfae625376c4afdd30b8590d68087e Mon Sep 17 00:00:00 2001 From: Bjørn Lindeijer Date: Tue, 1 Jul 2008 17:41:30 +0000 Subject: Merged revisions 4044-4067 via svnmerge from https://themanaworld.svn.sourceforge.net/svnroot/themanaworld/tmw/trunk ........ r4044 | b_lindeijer | 2008-04-07 11:02:38 +0200 (Mon, 07 Apr 2008) | 2 lines Added support for basing one sprite definition on another by including it. ........ r4057 | b_lindeijer | 2008-04-08 20:43:44 +0200 (Tue, 08 Apr 2008) | 4 lines Implemented support for an arbitrary number of map layers. The only layer requirement for map layers are now that the fringe layer is called "Fringe" and that the collision layer is called "Collision". ........ r4067 | b_lindeijer | 2008-04-11 00:03:57 +0200 (Fri, 11 Apr 2008) | 3 lines Fixed some compiler warnings and don't try to load particle effects when no file is set. ........ --- ChangeLog | 24 +++++- src/gui/viewport.cpp | 12 ++- src/log.h | 4 +- src/map.cpp | 206 +++++++++++++++++++++++--------------------- src/map.h | 110 +++++++++++++++-------- src/resources/imageset.cpp | 2 +- src/resources/imageset.h | 14 ++- src/resources/mapreader.cpp | 164 +++++++++++++++++++++-------------- src/resources/mapreader.h | 4 +- src/resources/spritedef.cpp | 98 +++++++++++++-------- src/resources/spritedef.h | 6 ++ src/tileset.h | 3 +- 12 files changed, 388 insertions(+), 259 deletions(-) (limited to 'src') diff --git a/ChangeLog b/ChangeLog index 759af38a..37c6ed4a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -284,6 +284,23 @@ src/Makefile.am: Re-enabled non-functional item shortcut window, planned to be fixed for 0.0.25. +2008-04-12 Bjørn Lindeijer + + * src/gui/widgets/layout.h, src/gui/skill.cpp, src/gui/trade.h, + src/log.h, src/resources/mapreader.cpp, src/resources/spritedef.cpp: + Fixed some compiler warnings and don't try to load particle effects + when no file is set. + +2008-04-08 Bjørn Lindeijer + + * src/map.cpp, src/gui/viewport.cpp, src/tileset.h, src/map.h, + src/resources/imageset.cpp, src/resources/mapreader.cpp, + src/resources/imageset.h, src/resources/mapreader.h, + data/maps/new_3-1.tmx, data/maps/new_1-1.tmx: Implemented support for + an arbitrary number of map layers. The only layer requirement for map + layers are now that the fringe layer is called "Fringe" and that the + collision layer is called "Collision". + 2008-04-07 Bjørn Lindeijer * src/particle.cpp, src/utils/xml.cpp, src/utils/xml.h, @@ -292,11 +309,14 @@ src/resources/itemdb.cpp, src/resources/npcdb.cpp, src/resources/spritedef.h: Added XML::Document class which simplifies parsing an XML document and automatically cleans it up again. + * src/resources/spritedef.cpp, src/resources/spritedef.h, + data/graphics/sprites/item008.xml: Added support for basing one sprite + definition on another by including it. * src/being.cpp: Fixed crash on trying to show out of range emoticon. * src/winver.h, README, configure.ac, data/help/changes.txt, data/help/header.txt, NEWS, CMakeLists.txt: Updated version, release date and changes. - + 2008-04-03 David Athay * src/game.cpp: Tweaked disconnect dialog, hoping to fix a crash bug. @@ -307,7 +327,7 @@ src/resources/npcdb.cpp, data/npcs.xml, src/Makefile.am, tmc.cbp: Implemented NPC XML database which maps NPC IDs to one or more animation files and thus enables animated NPCs. - + 2008-03-30 Dennis Friis * configure.ac: Updated for tmwdata split. diff --git a/src/gui/viewport.cpp b/src/gui/viewport.cpp index 01324a47..9d1e5a1d 100644 --- a/src/gui/viewport.cpp +++ b/src/gui/viewport.cpp @@ -48,6 +48,8 @@ #include +extern volatile int tick_time; + Viewport::Viewport(): mMap(0), mPixelViewX(0.0f), @@ -222,12 +224,8 @@ Viewport::draw(gcn::Graphics *gcnGraphics) // Draw tiles and sprites if (mMap) { - mMap->draw(graphics, (int) mPixelViewX, (int) mPixelViewY, 0); - drawTargetCursor(graphics); - mMap->draw(graphics, (int) mPixelViewX, (int) mPixelViewY, 1); - mMap->draw(graphics, (int) mPixelViewX, (int) mPixelViewY, 2); - mMap->drawOverlay(graphics, mPixelViewX, mPixelViewY, - (int) config.getValue("OverlayDetail", 2)); + mMap->draw(graphics, (int) mPixelViewX, (int) mPixelViewY); + drawTargetCursor(graphics); // TODO: Draw the cursor with the sprite drawTargetName(graphics); } @@ -259,7 +257,7 @@ Viewport::draw(gcn::Graphics *gcnGraphics) } } - // Draw player nickname, speech, and emotion sprite as needed + // Draw player names, speech, and emotion sprite as needed Beings &beings = beingManager->getAll(); for (BeingIterator i = beings.begin(); i != beings.end(); i++) { diff --git a/src/log.h b/src/log.h index 6fe9dccd..30078e35 100644 --- a/src/log.h +++ b/src/log.h @@ -68,8 +68,8 @@ class Logger ; /** - * Log an error and quit. The error will pop-up in Windows and will be - * printed to standard error everywhere else. + * Log an error and quit. The error will pop-up on Windows and Mac, and + * will be printed to standard error everywhere else. */ void error(const std::string &error_text); diff --git a/src/map.cpp b/src/map.cpp index c65b0cd6..23eff3b0 100644 --- a/src/map.cpp +++ b/src/map.cpp @@ -27,6 +27,7 @@ #include #include "beingmanager.h" +#include "configuration.h" #include "game.h" #include "graphics.h" #include "particle.h" @@ -40,6 +41,8 @@ #include "utils/dtor.h" #include "utils/tostring.h" +extern volatile int tick_time; + /** * A location on a tile map. Used for pathfinding, open list. */ @@ -62,6 +65,80 @@ struct Location MetaTile *tile; }; +MapLayer::MapLayer(int x, int y, int width, int height, bool isFringeLayer): + mX(x), mY(y), + mWidth(width), mHeight(height), + mIsFringeLayer(isFringeLayer) +{ + const int size = mWidth * mHeight; + mTiles = new Image*[size]; + std::fill_n(mTiles, size, (Image*) 0); +} + +MapLayer::~MapLayer() +{ + delete[] mTiles; +} + +void MapLayer::setTile(int x, int y, Image *img) +{ + mTiles[x + y * mWidth] = img; +} + +Image* MapLayer::getTile(int x, int y) const +{ + return mTiles[x + y * mWidth]; +} + +void MapLayer::draw(Graphics *graphics, + int startX, int startY, + int endX, int endY, + int scrollX, int scrollY, + const Sprites &sprites) const +{ + startX -= mX; + startY -= mY; + endX -= mX; + endY -= mY; + + if (startX < 0) startX = 0; + if (startY < 0) startY = 0; + if (endX > mWidth) endX = mWidth; + if (endY > mHeight) endY = mHeight; + + Sprites::const_iterator si = sprites.begin(); + + for (int y = startY; y < endY; y++) + { + // If drawing the fringe layer, make sure all sprites above this row of + // tiles have been drawn + if (mIsFringeLayer) { + while (si != sprites.end() && (*si)->getPixelY() <= y * 32 - 32) { + (*si)->draw(graphics, -scrollX, -scrollY); + si++; + } + } + + for (int x = startX; x < endX; x++) + { + Image *img = getTile(x, y); + if (img) { + const int px = (x + mX) * 32 - scrollX; + const int py = (y + mY) * 32 - scrollY + 32 - img->getHeight(); + graphics->drawImage(img, px, py); + } + } + } + + // Draw any remaining sprites + if (mIsFringeLayer) { + while (si != sprites.end()) { + (*si)->draw(graphics, -scrollX, -scrollY); + si++; + } + } +} + Map::Map(int width, int height, int tileWidth, int tileHeight): mWidth(width), mHeight(height), mTileWidth(tileWidth), mTileHeight(tileHeight), @@ -69,22 +146,17 @@ Map::Map(int width, int height, int tileWidth, int tileHeight): mOnClosedList(1), mOnOpenList(2), mLastScrollX(0.0f), mLastScrollY(0.0f) { - int size = mWidth * mHeight; + const int size = mWidth * mHeight; mMetaTiles = new MetaTile[size]; - mTiles = new Image*[size * 3]; - std::fill_n(mTiles, size * 3, (Image*)0); } Map::~Map() { - // clean up map data + // delete metadata, layers, tilesets and overlays delete[] mMetaTiles; - delete[] mTiles; - // clean up tilesets + for_each(mLayers.begin(), mLayers.end(), make_dtor(mLayers)); for_each(mTilesets.begin(), mTilesets.end(), make_dtor(mTilesets)); - mTilesets.clear(); - // clean up overlays for_each(mOverlays.begin(), mOverlays.end(), make_dtor(mOverlays)); } @@ -99,9 +171,9 @@ void Map::initializeOverlays() const std::string name = "overlay" + toString(i); Image *img = resman->getImage(getProperty(name + "image")); - float speedX = getFloatProperty(name + "scrollX"); - float speedY = getFloatProperty(name + "scrollY"); - float parallax = getFloatProperty(name + "parallax"); + const float speedX = getFloatProperty(name + "scrollX"); + const float speedY = getFloatProperty(name + "scrollY"); + const float parallax = getFloatProperty(name + "parallax"); if (img) { @@ -114,6 +186,11 @@ void Map::initializeOverlays() } } +void Map::addLayer(MapLayer *layer) +{ + mLayers.push_back(layer); +} + void Map::addTileset(Tileset *tileset) { mTilesets.push_back(tileset); @@ -127,63 +204,31 @@ bool spriteCompare(const Sprite *a, const Sprite *b) return a->getPixelY() < b->getPixelY(); } -void Map::draw(Graphics *graphics, int scrollX, int scrollY, int layer) +void Map::draw(Graphics *graphics, int scrollX, int scrollY) { int endPixelY = graphics->getHeight() + scrollY + mTileHeight - 1; - // If drawing the fringe layer, make sure sprites are sorted - SpriteIterator si; - if (layer == 1) - { - mSprites.sort(spriteCompare); - si = mSprites.begin(); - endPixelY += mMaxTileHeight - mTileHeight; - } + // TODO: Do this per-layer + endPixelY += mMaxTileHeight - mTileHeight; int startX = scrollX / mTileWidth; int startY = scrollY / mTileHeight; int endX = (graphics->getWidth() + scrollX + mTileWidth - 1) / mTileWidth; int endY = endPixelY / mTileHeight; - if (startX < 0) startX = 0; - if (startY < 0) startY = 0; - if (endX > mWidth) endX = mWidth; - if (endY > mHeight) endY = mHeight; + // Make sure sprites are sorted + mSprites.sort(spriteCompare); - for (int y = startY; y < endY; y++) - { - // If drawing the fringe layer, make sure all sprites above this row of - // tiles have been drawn - if (layer == 1) - { - while (si != mSprites.end() && (*si)->getPixelY() <= y * 32 - 32) - { - (*si)->draw(graphics, -scrollX, -scrollY); - si++; - } - } - - for (int x = startX; x < endX; x++) - { - Image *img = getTile(x, y, layer); - if (img) { - graphics->drawImage(img, - x * mTileWidth - scrollX, - y * mTileHeight - scrollY + - mTileHeight - img->getHeight()); - } - } + Layers::const_iterator layeri = mLayers.begin(); + for (; layeri != mLayers.end(); ++layeri) { + (*layeri)->draw(graphics, + startX, startY, endX, endY, + scrollX, scrollY, + mSprites); } - // Draw any remaining sprites - if (layer == 1) - { - while (si != mSprites.end()) - { - (*si)->draw(graphics, -scrollX, -scrollY); - si++; - } - } + drawOverlay(graphics, scrollX, scrollY, + (int) config.getValue("OverlayDetail", 2)); } void Map::drawOverlay(Graphics *graphics, @@ -226,23 +271,10 @@ void Map::drawOverlay(Graphics *graphics, }; } -void Map::setTileWithGid(int x, int y, int layer, int gid) -{ - if (layer == 3) - { - Tileset *set = getTilesetWithGid(gid); - setWalk(x, y, (!set || (gid - set->getFirstGid() == 0))); - } - else if (layer < 3) - { - setTile(x, y, layer, getTileWithGid(gid)); - } -} - class ContainsGidFunctor { public: - bool operator() (Tileset* set) + bool operator() (const Tileset* set) const { return (set->getFirstGid() <= gid && gid - set->getFirstGid() < (int)set->size()); @@ -260,17 +292,6 @@ Tileset* Map::getTilesetWithGid(int gid) const return (i == mTilesets.end()) ? NULL : *i; } -Image* Map::getTileWithGid(int gid) const -{ - Tileset *set = getTilesetWithGid(gid); - - if (set) { - return set->get(gid - set->getFirstGid()); - } - - return NULL; -} - void Map::setWalk(int x, int y, bool walkable) { mMetaTiles[x + y * mWidth].walkable = walkable; @@ -301,16 +322,6 @@ bool Map::contains(int x, int y) const return x >= 0 && y >= 0 && x < mWidth && y < mHeight; } -void Map::setTile(int x, int y, int layer, Image *img) -{ - mTiles[x + y * mWidth + layer * (mWidth * mHeight)] = img; -} - -Image* Map::getTile(int x, int y, int layer) -{ - return mTiles[x + y * mWidth + layer * (mWidth * mHeight)]; -} - MetaTile* Map::getMetaTile(int x, int y) { return &mMetaTiles[x + y * mWidth]; @@ -367,8 +378,8 @@ Path Map::findPath(int startX, int startY, int destX, int destY) for (int dx = -1; dx <= 1; dx++) { // Calculate location of tile to check - int x = curr.x + dx; - int y = curr.y + dy; + const int x = curr.x + dx; + const int y = curr.y + dy; // Skip if if we're checking the same tile we're leaving from, // or if the new location falls outside of the map boundaries @@ -379,7 +390,8 @@ Path Map::findPath(int startX, int startY, int destX, int destY) MetaTile *newTile = getMetaTile(x, y); - // Skip if the tile is on the closed list or collides unless its the destination tile + // Skip if the tile is on the closed list or collides unless + // its the destination tile if (newTile->whichList == mOnClosedList || (tileCollides(x, y) && !(x == destX && y == destY))) { @@ -430,7 +442,7 @@ Path Map::findPath(int startX, int startY, int destX, int destY) // Update Gcost and Fcost of new tile newTile->Gcost = Gcost; - newTile->Fcost = newTile->Gcost + newTile->Hcost; + newTile->Fcost = Gcost + newTile->Hcost; if (x != destX || y != destY) { // Add this tile to the open list @@ -447,7 +459,7 @@ Path Map::findPath(int startX, int startY, int destX, int destY) // Found a shorter route. // Update Gcost and Fcost of the new tile newTile->Gcost = Gcost; - newTile->Fcost = newTile->Gcost + newTile->Hcost; + newTile->Fcost = Gcost + newTile->Hcost; // Set the current tile as the parent of the new tile newTile->parentX = curr.x; @@ -488,7 +500,7 @@ Path Map::findPath(int startX, int startY, int destX, int destY) return path; } -void Map::addParticleEffect (std::string effectFile, int x, int y) +void Map::addParticleEffect(const std::string &effectFile, int x, int y) { ParticleEffectData newEffect; newEffect.file = effectFile; diff --git a/src/map.h b/src/map.h index fab7bfb7..95532eb3 100644 --- a/src/map.h +++ b/src/map.h @@ -32,6 +32,7 @@ class AmbientOverlay; class Graphics; class Image; +class MapLayer; class Particle; class Sprite; class Tileset; @@ -41,8 +42,7 @@ struct PATH_NODE; typedef std::vector Tilesets; typedef std::list Sprites; typedef Sprites::iterator SpriteIterator; - -extern volatile int tick_time; +typedef std::vector Layers; /** * A meta tile stores additional information about a location on a tile map. @@ -66,6 +66,56 @@ struct MetaTile bool walkable; /**< Can beings walk on this tile */ }; +/** + * A map layer. Stores a grid of tiles and their offset, and implements layer + * rendering. + */ +class MapLayer +{ + public: + /** + * Constructor, taking layer origin, size and whether this layer is the + * fringe layer. The fringe layer is the layer that draws the sprites. + * There can be only one fringe layer per map. + */ + MapLayer(int x, int y, int width, int height, bool isFringeLayer); + + /** + * Destructor. + */ + ~MapLayer(); + + /** + * Set tile image, with x and y in layer coordinates. + */ + void setTile(int x, int y, Image *img); + + /** + * Get tile image, with x and y in layer coordinates. + */ + Image *getTile(int x, int y) const; + + /** + * Draws this layer to the given graphics context. The coordinates are + * expected to be in map range and will be translated to local layer + * coordinates and clipped to the layer's dimensions. + * + * The given sprites are only drawn when this layer is the fringe + * layer. + */ + void draw(Graphics *graphics, + int startX, int startY, + int endX, int endY, + int scrollX, int scrollY, + const Sprites &sprites) const; + + private: + int mX, mY; + int mWidth, mHeight; + bool mIsFringeLayer; /**< Whether the sprites are drawn. */ + Image **mTiles; +}; + /** * A tile map. */ @@ -89,39 +139,30 @@ class Map : public Properties void initializeOverlays(); /** - * Draws a map layer to the given graphics output. - */ - void draw(Graphics *graphics, int scrollX, int scrollY, int layer); - - /** - * Draws the overlay graphic to the given graphics output. - */ - void - drawOverlay(Graphics *graphics, float scrollX, float scrollY, - int detail); - - /** - * Adds a tileset to this map. + * Draws the map to the given graphics output. This method draws all + * layers, sprites and overlay effects. + * + * TODO: For efficiency reasons, this method could take into account + * the clipping rectangle set on the Graphics object. However, + * currently the map is always drawn full-screen. */ - void - addTileset(Tileset *tileset); + void draw(Graphics *graphics, int scrollX, int scrollY); /** - * Sets a tile using a global tile id. Used by the layer loading - * routine. + * Adds a layer to this map. The map takes ownership of the layer. */ - void - setTileWithGid(int x, int y, int layer, int gid); + void addLayer(MapLayer *layer); /** - * Set tile ID. + * Adds a tileset to this map. The map takes ownership of the tileset. */ - void setTile(int x, int y, int layer, Image *img); + void addTileset(Tileset *tileset); /** - * Get tile ID. + * Finds the tile set that a tile with the given global id is part of. */ - Image *getTile(int x, int y, int layer); + Tileset* + getTilesetWithGid(int gid) const; /** * Get tile reference. @@ -183,7 +224,7 @@ class Map : public Properties /** * Adds a particle effect */ - void addParticleEffect (std::string effectFile, int x, int y); + void addParticleEffect(const std::string &effectFile, int x, int y); /** * Initializes all added particle effects @@ -193,15 +234,11 @@ class Map : public Properties private: /** - * Converts a global tile id to the Image* pointing to the associated - * tile image. - */ - Image* getTileWithGid(int gid) const; - - /** - * Finds the tile set that a tile with the given global id is part of. + * Draws the overlay graphic to the given graphics output. */ - Tileset* getTilesetWithGid(int gid) const; + void + drawOverlay(Graphics *graphics, float scrollX, float scrollY, + int detail); /** * Tells whether a tile is occupied by a being. @@ -217,15 +254,14 @@ class Map : public Properties int mTileWidth, mTileHeight; int mMaxTileHeight; MetaTile *mMetaTiles; - Image **mTiles; - + Layers mLayers; Tilesets mTilesets; Sprites mSprites; // Pathfinding members int mOnClosedList, mOnOpenList; - // Overlay Data + // Overlay data std::list mOverlays; float mLastScrollX; float mLastScrollY; diff --git a/src/resources/imageset.cpp b/src/resources/imageset.cpp index 4b6dd592..1a753648 100644 --- a/src/resources/imageset.cpp +++ b/src/resources/imageset.cpp @@ -50,7 +50,7 @@ ImageSet::~ImageSet() } Image* -ImageSet::get(size_type i) +ImageSet::get(size_type i) const { if (i >= mImages.size()) { diff --git a/src/resources/imageset.h b/src/resources/imageset.h index 15c21d90..fa1840ec 100644 --- a/src/resources/imageset.h +++ b/src/resources/imageset.h @@ -47,14 +47,20 @@ class ImageSet : public Resource */ ~ImageSet(); - int getWidth() { return mWidth; }; + /** + * Returns the width of the images in the image set. + */ + int getWidth() const { return mWidth; }; - int getHeight() { return mHeight; }; + /** + * Returns the height of the images in the image set. + */ + int getHeight() const { return mHeight; }; typedef std::vector::size_type size_type; - Image* get(size_type i); + Image* get(size_type i) const; - size_type size() { return mImages.size(); } + size_type size() const { return mImages.size(); } private: std::vector mImages; diff --git a/src/resources/mapreader.cpp b/src/resources/mapreader.cpp index 2a080fb0..328b66e0 100644 --- a/src/resources/mapreader.cpp +++ b/src/resources/mapreader.cpp @@ -206,20 +206,17 @@ MapReader::readMap(const std::string &filename) Map* MapReader::readMap(xmlNodePtr node, const std::string &path) { - xmlChar *prop; - // Take the filename off the path - std::string pathDir = path.substr(0, path.rfind("/") + 1); + const std::string pathDir = path.substr(0, path.rfind("/") + 1); - prop = xmlGetProp(node, BAD_CAST "version"); - xmlFree(prop); + //xmlChar *prop = xmlGetProp(node, BAD_CAST "version"); + //xmlFree(prop); - int w = XML::getProperty(node, "width", 0); - int h = XML::getProperty(node, "height", 0); - int tilew = XML::getProperty(node, "tilewidth", DEFAULT_TILE_WIDTH); - int tileh = XML::getProperty(node, "tileheight", DEFAULT_TILE_HEIGHT); - int layerNr = 0; - Map *map = new Map(w, h, tilew, tileh); + const int w = XML::getProperty(node, "width", 0); + const int h = XML::getProperty(node, "height", 0); + const int tw = XML::getProperty(node, "tilewidth", DEFAULT_TILE_WIDTH); + const int th = XML::getProperty(node, "tileheight", DEFAULT_TILE_HEIGHT); + Map *map = new Map(w, h, tw, th); for_each_xml_child_node(childNode, node) { @@ -232,9 +229,7 @@ MapReader::readMap(xmlNodePtr node, const std::string &path) } else if (xmlStrEqual(childNode->name, BAD_CAST "layer")) { - logger->log("- Loading layer %d", layerNr); - readLayer(childNode, map, layerNr); - layerNr++; + readLayer(childNode, map); } else if (xmlStrEqual(childNode->name, BAD_CAST "properties")) { @@ -246,15 +241,31 @@ MapReader::readMap(xmlNodePtr node, const std::string &path) { if (xmlStrEqual(objectNode->name, BAD_CAST "object")) { - std::string objName = XML::getProperty(objectNode, "name", ""); - std::string objType = XML::getProperty(objectNode, "type", ""); - int objX = XML::getProperty(objectNode, "x", 0); - int objY = XML::getProperty(objectNode, "y", 0); + const std::string objType = + XML::getProperty(objectNode, "type", ""); + + if (objType == "WARP" || objType == "NPC" || + objType == "SCRIPT" || objType == "SPAWN") + { + // Silently skip server-side objects. + continue; + } + + const std::string objName = + XML::getProperty(objectNode, "name", ""); + const int objX = XML::getProperty(objectNode, "x", 0); + const int objY = XML::getProperty(objectNode, "y", 0); logger->log("- Loading object name: %s type: %s at %d:%d", objName.c_str(), objType.c_str(), objX, objY); + if (objType == "PARTICLE_EFFECT") { + if (objName.empty()) { + logger->log(" Warning: No particle file given"); + continue; + } + map->addParticleEffect(objName, objX, objY); } else @@ -280,43 +291,66 @@ MapReader::readProperties(xmlNodePtr node, Properties* props) continue; // Example: - xmlChar *name = xmlGetProp(childNode, BAD_CAST "name"); - xmlChar *value = xmlGetProp(childNode, BAD_CAST "value"); + const std::string name = XML::getProperty(childNode, "name", ""); + const std::string value = XML::getProperty(childNode, "value", ""); - if (name && value) { - props->setProperty((const char*)name, (const char*)value); - } + if (!name.empty() && !value.empty()) + props->setProperty(name, value); + } +} - if (name) xmlFree(name); - if (value) xmlFree(value); +static void setTile(Map *map, MapLayer *layer, int x, int y, int gid) +{ + const Tileset * const set = map->getTilesetWithGid(gid); + if (layer) { + // Set regular tile on a layer + Image * const img = set ? set->get(gid - set->getFirstGid()) : 0; + layer->setTile(x, y, img); + } else { + // Set collision tile + map->setWalk(x, y, (!set || (gid - set->getFirstGid() == 0))); } } void -MapReader::readLayer(xmlNodePtr node, Map *map, int layer) +MapReader::readLayer(xmlNodePtr node, Map *map) { - int h = map->getHeight(); - int w = map->getWidth(); + // Layers are not necessarily the same size as the map + const int w = XML::getProperty(node, "width", map->getWidth()); + const int h = XML::getProperty(node, "height", map->getHeight()); + const int offsetX = XML::getProperty(node, "xoffset", 0); + const int offsetY = XML::getProperty(node, "yoffset", 0); + const std::string name = XML::getProperty(node, "name", ""); + + const bool isFringeLayer = (name == "Fringe"); + const bool isCollisionLayer = (name == "Collision"); + + MapLayer *layer = 0; + + if (!isCollisionLayer) { + layer = new MapLayer(offsetX, offsetY, w, h, isFringeLayer); + map->addLayer(layer); + } + + logger->log("- Loading layer \"%s\"", name.c_str()); int x = 0; int y = 0; - // Load the tile data. Layers are assumed to be map size, with (0,0) as - // origin. + // Load the tile data for_each_xml_child_node(childNode, node) { if (!xmlStrEqual(childNode->name, BAD_CAST "data")) continue; - xmlChar *encoding = xmlGetProp(childNode, BAD_CAST "encoding"); - xmlChar *compression = xmlGetProp(childNode, BAD_CAST "compression"); + const std::string encoding = + XML::getProperty(childNode, "encoding", ""); + const std::string compression = + XML::getProperty(childNode, "compression", ""); - if (encoding && xmlStrEqual(encoding, BAD_CAST "base64")) + if (encoding == "base64") { - xmlFree(encoding); - - if (compression && !xmlStrEqual(compression, BAD_CAST "gzip")) { + if (!compression.empty() && compression != "gzip") { logger->log("Warning: only gzip layer compression supported!"); - xmlFree(compression); return; } @@ -348,34 +382,29 @@ MapReader::readLayer(xmlNodePtr node, Map *map, int layer) delete[] charData; if (binData) { - if (compression) { - if (xmlStrEqual(compression, BAD_CAST "gzip")) { - // Inflate the gzipped layer data - unsigned char *inflated; - unsigned int inflatedSize = - inflateMemory(binData, binLen, inflated); - - free(binData); - binData = inflated; - binLen = inflatedSize; - - if (inflated == NULL) - { - logger->log("Error: Could not decompress layer!"); - xmlFree(compression); - return; - } + if (compression == "gzip") { + // Inflate the gzipped layer data + unsigned char *inflated; + unsigned int inflatedSize = + inflateMemory(binData, binLen, inflated); + + free(binData); + binData = inflated; + binLen = inflatedSize; + + if (!inflated) { + logger->log("Error: Could not decompress layer!"); + return; } - xmlFree(compression); } for (int i = 0; i < binLen - 3; i += 4) { - int gid = binData[i] | + const int gid = binData[i] | binData[i + 1] << 8 | binData[i + 2] << 16 | binData[i + 3] << 24; - map->setTileWithGid(x, y, layer, gid); + setTile(map, layer, x, y, gid); x++; if (x == w) {x = 0; y++;} @@ -390,8 +419,8 @@ MapReader::readLayer(xmlNodePtr node, Map *map, int layer) if (!xmlStrEqual(childNode2->name, BAD_CAST "tile")) continue; - int gid = XML::getProperty(childNode2, "gid", -1); - map->setTileWithGid(x, y, layer, gid); + const int gid = XML::getProperty(childNode2, "gid", -1); + setTile(map, layer, x, y, gid); x++; if (x == w) { @@ -423,20 +452,20 @@ MapReader::readTileset(xmlNodePtr node, return NULL; } - int firstGid = XML::getProperty(node, "firstgid", 0); - int tw = XML::getProperty(node, "tilewidth", map->getTileWidth()); - int th = XML::getProperty(node, "tileheight", map->getTileHeight()); + const int firstGid = XML::getProperty(node, "firstgid", 0); + const int tw = XML::getProperty(node, "tilewidth", map->getTileWidth()); + const int th = XML::getProperty(node, "tileheight", map->getTileHeight()); for_each_xml_child_node(childNode, node) { if (!xmlStrEqual(childNode->name, BAD_CAST "image")) continue; - xmlChar* source = xmlGetProp(childNode, BAD_CAST "source"); + const std::string source = XML::getProperty(childNode, "source", ""); - if (source) + if (!source.empty()) { - std::string sourceStr = std::string((const char*)source); + std::string sourceStr = source; sourceStr.erase(0, 3); // Remove "../" ResourceManager *resman = ResourceManager::getInstance(); @@ -446,14 +475,15 @@ MapReader::readTileset(xmlNodePtr node, { Tileset *set = new Tileset(tilebmp, tw, th, firstGid); tilebmp->decRef(); - xmlFree(source); return set; } else { - logger->log("Warning: Failed to load tileset (%s)", source); + logger->log("Warning: Failed to load tileset (%s)", + source.c_str()); } } + // Only one image element expected break; } diff --git a/src/resources/mapreader.h b/src/resources/mapreader.h index d16ff1d5..60056358 100644 --- a/src/resources/mapreader.h +++ b/src/resources/mapreader.h @@ -63,10 +63,10 @@ class MapReader readProperties(xmlNodePtr node, Properties* props); /** - * Reads a map layer. + * Reads a map layer and adds it to the given map. */ static void - readLayer(xmlNodePtr node, Map *map, int layer); + readLayer(xmlNodePtr node, Map *map); /** * Reads a tile set. diff --git a/src/resources/spritedef.cpp b/src/resources/spritedef.cpp index 334474d7..ebc60240 100644 --- a/src/resources/spritedef.cpp +++ b/src/resources/spritedef.cpp @@ -70,33 +70,8 @@ SpriteDef *SpriteDef::load(std::string const &animationFile, int variant) } } - // Get the variant - int variant_num = XML::getProperty(rootNode, "variants", 0); - int variant_offset = 0; - - if (variant_num > 0 && variant < variant_num) - { - variant_offset = variant * XML::getProperty(rootNode, "variant_offset", 0); - } - SpriteDef *def = new SpriteDef; - - for_each_xml_child_node(node, rootNode) - { - if (xmlStrEqual(node->name, BAD_CAST "imageset")) - { - def->loadImageSet(node, palettes); - } - else if (xmlStrEqual(node->name, BAD_CAST "action")) - { - def->loadAction(node, variant_offset); - } - else if (xmlStrEqual(node->name, BAD_CAST "include")) - { - def->includeSprite(node); - } - } - + def->loadSprite(rootNode, variant, palettes); def->substituteActions(); return def; } @@ -119,11 +94,47 @@ void SpriteDef::substituteActions() substituteAction(ACTION_DEAD, ACTION_HURT); } +void SpriteDef::loadSprite(xmlNodePtr spriteNode, int variant, + const std::string &palettes) +{ + // Get the variant + const int variantCount = XML::getProperty(spriteNode, "variants", 0); + int variant_offset = 0; + + if (variantCount > 0 && variant < variantCount) + { + variant_offset = + variant * XML::getProperty(spriteNode, "variant_offset", 0); + } + + for_each_xml_child_node(node, spriteNode) + { + if (xmlStrEqual(node->name, BAD_CAST "imageset")) + { + loadImageSet(node, palettes); + } + else if (xmlStrEqual(node->name, BAD_CAST "action")) + { + loadAction(node, variant_offset); + } + else if (xmlStrEqual(node->name, BAD_CAST "include")) + { + includeSprite(node); + } + } +} + void SpriteDef::loadImageSet(xmlNodePtr node, std::string const &palettes) { - int width = XML::getProperty(node, "width", 0); - int height = XML::getProperty(node, "height", 0); - std::string name = XML::getProperty(node, "name", ""); + const std::string name = XML::getProperty(node, "name", ""); + + // We don't allow redefining image sets. This way, an included sprite + // definition will use the already loaded image set with the same name. + if (mImageSets.find(name) != mImageSets.end()) + return; + + const int width = XML::getProperty(node, "width", 0); + const int height = XML::getProperty(node, "height", 0); std::string imageSrc = XML::getProperty(node, "src", ""); Dye::instantiate(imageSrc, palettes); @@ -184,9 +195,9 @@ SpriteDef::loadAnimation(xmlNodePtr animationNode, Action *action, ImageSet *imageSet, int variant_offset) { - std::string directionName = + const std::string directionName = XML::getProperty(animationNode, "direction", ""); - SpriteDirection directionType = makeSpriteDirection(directionName); + const SpriteDirection directionType = makeSpriteDirection(directionName); if (directionType == DIRECTION_INVALID) { @@ -201,7 +212,7 @@ SpriteDef::loadAnimation(xmlNodePtr animationNode, // Get animation frames for_each_xml_child_node(frameNode, animationNode) { - int delay = XML::getProperty(frameNode, "delay", 0); + const int delay = XML::getProperty(frameNode, "delay", 0); int offsetX = XML::getProperty(frameNode, "offsetX", 0); int offsetY = XML::getProperty(frameNode, "offsetY", 0); offsetY -= imageSet->getHeight() - 32; @@ -209,7 +220,7 @@ SpriteDef::loadAnimation(xmlNodePtr animationNode, if (xmlStrEqual(frameNode->name, BAD_CAST "frame")) { - int index = XML::getProperty(frameNode, "index", -1); + const int index = XML::getProperty(frameNode, "index", -1); if (index < 0) { @@ -230,7 +241,7 @@ SpriteDef::loadAnimation(xmlNodePtr animationNode, else if (xmlStrEqual(frameNode->name, BAD_CAST "sequence")) { int start = XML::getProperty(frameNode, "start", -1); - int end = XML::getProperty(frameNode, "end", -1); + const int end = XML::getProperty(frameNode, "end", -1); if (start < 0 || end < 0) { @@ -263,12 +274,23 @@ SpriteDef::loadAnimation(xmlNodePtr animationNode, void SpriteDef::includeSprite(xmlNodePtr includeNode) { + // TODO: Perform circular dependency check, since it's easy to crash the + // client this way. const std::string filename = XML::getProperty(includeNode, "file", ""); - ResourceManager *resman = ResourceManager::getInstance(); - SpriteDef *sprite = resman->getSprite("graphics/sprites/" + filename); - // TODO: Somehow implement actually including it - sprite->decRef(); + if (filename.empty()) + return; + + XML::Document doc("graphics/sprites/" + filename); + xmlNodePtr rootNode = doc.rootNode(); + + if (!rootNode || !xmlStrEqual(rootNode->name, BAD_CAST "sprite")) + { + logger->log("Error, no sprite root node in %s", filename.c_str()); + return; + } + + loadSprite(rootNode, 0); } void diff --git a/src/resources/spritedef.h b/src/resources/spritedef.h index 531dfb3d..72c2566f 100644 --- a/src/resources/spritedef.h +++ b/src/resources/spritedef.h @@ -91,6 +91,12 @@ class SpriteDef : public Resource */ ~SpriteDef(); + /** + * Loads a sprite element. + */ + void loadSprite(xmlNodePtr spriteNode, int variant, + const std::string &palettes = ""); + /** * Loads an imageset element. */ diff --git a/src/tileset.h b/src/tileset.h index 6af69235..625fac1b 100644 --- a/src/tileset.h +++ b/src/tileset.h @@ -44,8 +44,7 @@ class Tileset : public ImageSet /** * Returns the first gid. */ - int - getFirstGid() + int getFirstGid() const { return mFirstGid; } -- cgit v1.2.3-60-g2f50 From 3be4300f12d4e936a1beea0021b14cf6313ee3b9 Mon Sep 17 00:00:00 2001 From: David Athay Date: Tue, 8 Jul 2008 15:16:22 +0000 Subject: #359 patch by Scraggy --- ChangeLog | 4 +++ src/gui/chat.cpp | 90 +++++++++++++++++++++++++++++++++++++++++++++++++++----- src/gui/chat.h | 9 ++++++ tmw.cbp | 4 +++ 4 files changed, 100 insertions(+), 7 deletions(-) (limited to 'src') diff --git a/ChangeLog b/ChangeLog index 37c6ed4a..59956b69 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2008-07-08 David Athay + + * src/gui/chat.cpp, src/gui/chat.h: Mantis #359 patch by Scraggy. + 2008-06-30 Bjørn Lindeijer * src/CMakeLists.txt: Updated CMake file to fix compilation. Patch by diff --git a/src/gui/chat.cpp b/src/gui/chat.cpp index 5e3aaf60..2894bb70 100644 --- a/src/gui/chat.cpp +++ b/src/gui/chat.cpp @@ -275,13 +275,25 @@ ChatWindow::chatSend(const std::string &nick, std::string msg) } else if (msg.substr(0, IS_HELP_LENGTH) == IS_HELP) { - chatLog("-- Help --", BY_SERVER); - chatLog("/help: Display this help.", BY_SERVER); - chatLog("/announce: Global announcement (GM only)", BY_SERVER); - chatLog("/where: Display map name", BY_SERVER); - chatLog("/who: Display number of online users", BY_SERVER); - chatLog("/clear: Clears this window", BY_SERVER); - chatLog("/whisper : Sends a private to ", BY_SERVER); + msg.erase(0, IS_HELP_LENGTH + 1); + trim(msg); + std::size_t space = msg.find(" "); + std::string msg1; + if (space == std::string::npos) + { + msg1 = ""; + } + else + { + msg1 = msg.substr(space + 1, msg.length()); + msg = msg.substr(0, space); + } + if (msg != "" && msg.at(0) == '/') + { + msg.erase(0, 1); + } + trim(msg1); + help(msg, msg1); } else if (msg.substr(0, IS_WHERE_LENGTH) == IS_WHERE) { @@ -469,3 +481,67 @@ ChatWindow::setVisible(bool isVisible) mTmpVisible = false; } +void ChatWindow::help(const std::string &msg1, const std::string &msg2) +{ + chatLog("-- Help --", BY_SERVER); + if (msg1 == "") + { + chatLog("/announce: Global announcement (GM only)", BY_SERVER); + chatLog("/clear: Clears this window", BY_SERVER); + chatLog("/help: Display this help.", BY_SERVER); + chatLog("/where: Display map name", BY_SERVER); + chatLog("/whisper : Sends a private " + " to ", BY_SERVER); + chatLog("/who: Display number of online users", BY_SERVER); + chatLog("For more information, type /help ", BY_SERVER); + return; + } + if (msg1 == "announce") + { + chatLog("Command: /announce ", BY_SERVER); + chatLog("*** only available to a GM ***", BY_SERVER); + chatLog("This command sends the message to " + "all players currently online.", BY_SERVER); + return; + } + if (msg1 == "clear") + { + chatLog("Command: /clear", BY_SERVER); + chatLog("This command clears the chat log of previous chat.", + BY_SERVER); + return; + } + if (msg1 == "help") + { + chatLog("Command: /help", BY_SERVER); + chatLog("This command displays a list of all commands available.", + BY_SERVER); + chatLog("Command: /help ", BY_SERVER); + chatLog("This command displays help on .", BY_SERVER); + return; + } + if (msg1 == "where") + { + chatLog("Command: /where", BY_SERVER); + chatLog("This command displays the name of the current map.", + BY_SERVER); + return; + } + if (msg1 == "whisper") + { + chatLog("Command: /whisper ", BY_SERVER); + chatLog("This command sends the message to has spaces in it, enclose it in " + "double quotes (\").", BY_SERVER); + return; + } + if (msg1 == "who") + { + chatLog("Command: /who", BY_SERVER); + chatLog("This command displays the number of players currently " + "online.", BY_SERVER); + return; + } + chatLog("Unknown command.", BY_SERVER); + chatLog("Type /help for a list of commands.", BY_SERVER); +} diff --git a/src/gui/chat.h b/src/gui/chat.h index 0bdc76f1..a1d659a0 100644 --- a/src/gui/chat.h +++ b/src/gui/chat.h @@ -208,6 +208,15 @@ class ChatWindow : public Window, public gcn::ActionListener, void scroll(int amount); + /** + * help implements the /help command + * + * @param msg1 is the command that the player needs help on + * @param msg2 is the sub-command relating to the command + */ + void + help(const std::string &msg1, const std::string &msg2); + private: Network *mNetwork; bool mTmpVisible; diff --git a/tmw.cbp b/tmw.cbp index 5943f74e..32f2e977 100644 --- a/tmw.cbp +++ b/tmw.cbp @@ -325,6 +325,8 @@ + + @@ -334,6 +336,8 @@ + + -- cgit v1.2.3-60-g2f50 From ea37ffc6d73bb0de686c29f8e8c6769f2a704ec5 Mon Sep 17 00:00:00 2001 From: Bjørn Lindeijer Date: Thu, 17 Jul 2008 22:52:53 +0000 Subject: Added support for handling the custom eAthena packet that sends the update host (patch by Sanga). --- ChangeLog | 7 +++ src/gui/char_server.cpp | 12 +++-- src/gui/char_server.h | 3 +- src/logindata.h | 1 + src/main.cpp | 114 +++++++++++++++++++++++++++-------------------- src/net/loginhandler.cpp | 14 +++++- src/net/loginhandler.h | 4 +- src/net/network.cpp | 2 +- src/net/protocol.h | 1 + src/serverinfo.h | 1 + 10 files changed, 102 insertions(+), 57 deletions(-) (limited to 'src') diff --git a/ChangeLog b/ChangeLog index 5cd053b2..d7d47e54 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2008-07-16 Lloyd Bryant + + * src/logindata.h, src/gui/char_server.cpp, src/gui/char_server.h, + src/serverinfo.h, src/main.cpp, src/net/loginhandler.cpp, + src/net/loginhandler.h, src/net/network.cpp: Added support for + handling the custom eAthena packet that sends the update host. + 2008-07-10 Eugenio Favalli * tmw.cbp: Restored executable icon. diff --git a/src/gui/char_server.cpp b/src/gui/char_server.cpp index 638c05a6..b5ce9021 100644 --- a/src/gui/char_server.cpp +++ b/src/gui/char_server.cpp @@ -48,8 +48,10 @@ class ServerListModel : public gcn::ListModel { std::string getElementAt(int i); }; -ServerSelectDialog::ServerSelectDialog(LoginData *loginData): - Window("Select Server"), mLoginData(loginData) +ServerSelectDialog::ServerSelectDialog(LoginData *loginData, int nextState): + Window("Select Server"), + mLoginData(loginData), + mNextState(nextState) { mServerListModel = new ServerListModel(); mServerList = new ListBox(mServerListModel); @@ -105,10 +107,12 @@ ServerSelectDialog::action(const gcn::ActionEvent &event) const SERVER_INFO *si = server_info[mServerList->getSelected()]; mLoginData->hostname = iptostring(si->address); mLoginData->port = si->port; - state = CHAR_CONNECT_STATE; + mLoginData->updateHost = si->updateHost; + + state = mNextState; } else if (event.getId() == "cancel") { - state = LOADDATA_STATE; + state = LOGIN_STATE; } } diff --git a/src/gui/char_server.h b/src/gui/char_server.h index 26e723f9..3e43dd55 100644 --- a/src/gui/char_server.h +++ b/src/gui/char_server.h @@ -46,7 +46,7 @@ class ServerSelectDialog : public Window, public gcn::ActionListener { * * @see Window::Window */ - ServerSelectDialog(LoginData *loginData); + ServerSelectDialog(LoginData *loginData, int nextState); /** * Destructor. @@ -63,6 +63,7 @@ class ServerSelectDialog : public Window, public gcn::ActionListener { ServerListModel *mServerListModel; gcn::ListBox *mServerList; gcn::Button *mOkButton; + int mNextState; }; #endif diff --git a/src/logindata.h b/src/logindata.h index 8513428f..a2e3f9f1 100644 --- a/src/logindata.h +++ b/src/logindata.h @@ -31,6 +31,7 @@ struct LoginData std::string username; std::string password; std::string hostname; + std::string updateHost; short port; int account_ID; diff --git a/src/main.cpp b/src/main.cpp index 7a854123..e13ee390 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -150,6 +150,48 @@ struct Options std::string updateHost; }; +/** + * Parse the update host and determine the updates directory + * Then verify that the directory exists (creating if needed). + */ +void setUpdatesDir() +{ + // If updatesHost is currently empty, fill it from config file + if (updateHost.empty()) { + updateHost = + config.getValue("updatehost", "http://updates.thanaworld.org"); + } + + // Parse out any "http://" or "ftp://", and set the updates directory + size_t pos; + pos = updateHost.find("://"); + if (pos != updateHost.npos) { + if (pos + 3 < updateHost.length()) { + updatesDir = + "updates/" + updateHost.substr(pos + 3); + } else { + logger->log("Error: Invalid update host: %s", updateHost.c_str()); + errorMessage = "Invalid update host: " + updateHost; + state = ERROR_STATE; + } + } else { + logger->log("Warning: no protocol was specified for the update host"); + updatesDir = "updates/" + updateHost; + } + + ResourceManager *resman = ResourceManager::getInstance(); + + // Verify that the updates directory exists. Create if necessary. + if (!resman->isDirectory("/" + updatesDir)) { + if (!resman->mkdir("/" + updatesDir)) { + logger->log("Error: %s/%s can't be made, but doesn't exist!", + homeDir.c_str(), updatesDir.c_str()); + errorMessage = "Error creating updates directory!"; + state = ERROR_STATE; + } + } +} + /** * Do all initialization stuff */ @@ -272,44 +314,6 @@ void init_engine(const Options &options) config.init(configPath); } - - // Take host for updates from config if it wasn't set on the command line - if (options.updateHost.empty()) { - updateHost = - config.getValue("updatehost", "http://updates.thanaworld.org"); - } else { - updateHost = options.updateHost; - } - - // Parse out any "http://" or "ftp://", and set the updates directory - size_t pos; - pos = updateHost.find("//"); - if (pos != updateHost.npos) { - if (pos + 2 < updateHost.length()) { - updatesDir = - "updates/" + updateHost.substr(pos + 2); - } else { - std::cout << "The updates host - " << updateHost - << " does not appear to be valid!" << std::endl - << "Please fix the \"updatehost\" in your configuration" - << " file. Exiting." << std::endl; - exit(1); - } - } else { - logger->log("Warning: no protocol was specified for the update host"); - updatesDir = "updates/" + updateHost; - } - - // Verify that the updates directory exists. Create if necessary. - if (!resman->isDirectory("/" + updatesDir)) { - if (!resman->mkdir("/" + updatesDir)) { - std::cout << homeDir << "/" << updatesDir - << " can't be made, but it doesn't exist! Exiting." - << std::endl; - exit(1); - } - } - SDL_WM_SetCaption("The Mana World", NULL); #ifdef WIN32 static SDL_SysWMinfo pInfo; @@ -363,7 +367,7 @@ void init_engine(const Options &options) itemShortcut = new ItemShortcut(); gui = new Gui(graphics); - state = UPDATE_STATE; /**< Initial game state */ + state = LOGIN_STATE; /**< Initial game state */ // Initialize sound engine try { @@ -541,7 +545,14 @@ void accountLogin(Network *network, LoginData *loginData) outMsg.writeInt32(0); // client version outMsg.writeString(loginData->username, 24); outMsg.writeString(loginData->password, 24); - outMsg.writeInt8(0); // unknown + + /* + * eAthena calls the last byte "client version 2", but it isn't used at + * at all. We're retasking it, with bit 0 to indicate whether the client + * can handle the 0x63 "update host" packet. Clients prior to 0.0.25 send + * 0 here. + */ + outMsg.writeInt8(0x01); // Clear the password, avoids auto login when returning to login loginData->password = ""; @@ -648,13 +659,6 @@ int main(int argc, char *argv[]) SDL_Event event; - if (options.skipUpdate && state != ERROR_STATE) { - state = LOADDATA_STATE; - } - else { - state = UPDATE_STATE; - } - unsigned int oldstate = !state; // We start with a status change. Game *game = NULL; @@ -797,7 +801,7 @@ int main(int argc, char *argv[]) ItemDB::load(); MonsterDB::load(); NPCDB::load(); - state = LOGIN_STATE; + state = CHAR_CONNECT_STATE; break; case LOGIN_STATE: @@ -818,7 +822,12 @@ int main(int argc, char *argv[]) case CHAR_SERVER_STATE: logger->log("State: CHAR_SERVER"); - currentDialog = new ServerSelectDialog(&loginData); + { + int nextState = (options.skipUpdate) ? + LOADDATA_STATE : UPDATE_STATE; + currentDialog = new ServerSelectDialog(&loginData, + nextState); + } if (options.chooseDefault || options.playername != "") { ((ServerSelectDialog*) currentDialog)->action( gcn::ActionEvent(NULL, "ok")); @@ -865,6 +874,13 @@ int main(int argc, char *argv[]) break; case UPDATE_STATE: + // Determine which source to use for the update host + if (!options.updateHost.empty()) + updateHost = options.updateHost; + else + updateHost = loginData.updateHost; + + setUpdatesDir(); logger->log("State: UPDATE"); currentDialog = new UpdaterWindow(updateHost, homeDir + "/" + updatesDir); diff --git a/src/net/loginhandler.cpp b/src/net/loginhandler.cpp index ab788e41..8b057afd 100644 --- a/src/net/loginhandler.cpp +++ b/src/net/loginhandler.cpp @@ -37,6 +37,7 @@ extern SERVER_INFO **server_info; LoginHandler::LoginHandler() { static const Uint16 _messages[] = { + SMSG_UPDATE_HOST, 0x0069, 0x006a, 0 @@ -48,6 +49,16 @@ void LoginHandler::handleMessage(MessageIn *msg) { switch (msg->getId()) { + case 0x0063: + int len; + + len = msg->readInt16() - 4; + mUpdateHost = msg->readString(len); + + logger->log("Received update host \"%s\" from login server", + mUpdateHost.c_str()); + break; + case 0x0069: // Skip the length word msg->skip(2); @@ -70,6 +81,7 @@ void LoginHandler::handleMessage(MessageIn *msg) server_info[i]->port = msg->readInt16(); server_info[i]->name = msg->readString(20); server_info[i]->online_users = msg->readInt32(); + server_info[i]->updateHost = mUpdateHost; msg->skip(2); // unknown logger->log("Network: Server: %s (%s:%d)", @@ -77,7 +89,7 @@ void LoginHandler::handleMessage(MessageIn *msg) iptostring(server_info[i]->address), server_info[i]->port); } - state = CHAR_SERVER_STATE; + state = CHAR_SERVER_STATE; break; case 0x006a: diff --git a/src/net/loginhandler.h b/src/net/loginhandler.h index 52014559..86c1b609 100644 --- a/src/net/loginhandler.h +++ b/src/net/loginhandler.h @@ -25,6 +25,7 @@ #define _TMW_NET_LOGINHANDLER_H #include "messagehandler.h" +#include struct LoginData; @@ -37,8 +38,9 @@ class LoginHandler : public MessageHandler void setLoginData(LoginData *loginData) { mLoginData = loginData; }; - protected: + private: LoginData *mLoginData; + std::string mUpdateHost; }; #endif diff --git a/src/net/network.cpp b/src/net/network.cpp index fa5964d6..375d93e0 100644 --- a/src/net/network.cpp +++ b/src/net/network.cpp @@ -41,7 +41,7 @@ short packet_lengths[] = { // #0x0040 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 55, 17, 3, 37, 46, -1, 23, -1, 3,108, 3, 2, + 0, 0, 0, -1, 55, 17, 3, 37, 46, -1, 23, -1, 3,108, 3, 2, 3, 28, 19, 11, 3, -1, 9, 5, 54, 53, 58, 60, 41, 2, 6, 6, // #0x0080 7, 3, 2, 2, 2, 5, 16, 12, 10, 7, 29, 23, -1, -1, -1, 0, diff --git a/src/net/protocol.h b/src/net/protocol.h index 811d5481..eb41a9ac 100644 --- a/src/net/protocol.h +++ b/src/net/protocol.h @@ -26,6 +26,7 @@ // Packets from server to client #define SMSG_LOGIN_SUCCESS 0x0073 /**< Contains starting location */ +#define SMSG_UPDATE_HOST 0x0063 /**< Custom update host packet */ #define SMSG_PLAYER_UPDATE_1 0x01d8 #define SMSG_PLAYER_UPDATE_2 0x01d9 #define SMSG_PLAYER_MOVE 0x01da /**< A nearby player moves */ diff --git a/src/serverinfo.h b/src/serverinfo.h index b317b87b..4f527128 100644 --- a/src/serverinfo.h +++ b/src/serverinfo.h @@ -32,6 +32,7 @@ struct SERVER_INFO short port; std::string name; short online_users; + std::string updateHost; }; #endif -- cgit v1.2.3-60-g2f50 From c8db8fbd71727b601172225f81c6198dc96d57db Mon Sep 17 00:00:00 2001 From: Bjørn Lindeijer Date: Thu, 17 Jul 2008 23:08:17 +0000 Subject: Remove possible trailing slash at the end of the update host, since otherwise there'll be two of them. --- ChangeLog | 5 +++++ src/main.cpp | 4 ++++ 2 files changed, 9 insertions(+) (limited to 'src') diff --git a/ChangeLog b/ChangeLog index d7d47e54..30665053 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2008-07-18 Bjørn Lindeijer + + * src/main.cpp: Remove possible trailing slash at the end of the + update host, since otherwise there'll be two of them. + 2008-07-16 Lloyd Bryant * src/logindata.h, src/gui/char_server.cpp, src/gui/char_server.h, diff --git a/src/main.cpp b/src/main.cpp index e13ee390..bc3d5449 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -162,6 +162,10 @@ void setUpdatesDir() config.getValue("updatehost", "http://updates.thanaworld.org"); } + // Remove any trailing slash at the end of the update host + if (updateHost.at(updateHost.size() - 1) == '/') + updateHost.resize(updateHost.size() - 1); + // Parse out any "http://" or "ftp://", and set the updates directory size_t pos; pos = updateHost.find("://"); -- cgit v1.2.3-60-g2f50 From 157fbba039dc8ee0f7ed414791c72277aaf80831 Mon Sep 17 00:00:00 2001 From: David Athay Date: Mon, 21 Jul 2008 16:49:22 +0000 Subject: Commit of Alt-Gr fix for Rotonen --- ChangeLog | 5 +++++ src/game.cpp | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/ChangeLog b/ChangeLog index 30665053..e2a3abfa 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2008-07-21 David Athay + + * src/game.cpp: Initial attempt at fixing Alt-Gr issue for Rotonen, + this commit is just for him! + 2008-07-18 Bjørn Lindeijer * src/main.cpp: Remove possible trailing slash at the end of the diff --git a/src/game.cpp b/src/game.cpp index 58c28640..0c855669 100644 --- a/src/game.cpp +++ b/src/game.cpp @@ -465,7 +465,7 @@ void Game::handleInput() // Keys pressed together with Alt/Meta // Emotions and some internal gui windows #ifndef __APPLE__ - if (event.key.keysym.mod & KMOD_ALT) + if (event.key.keysym.mod & KMOD_ALT && event.key.keysym.mod ^ KMOD_CTRL) #else if (event.key.keysym.mod & KMOD_LMETA) #endif -- cgit v1.2.3-60-g2f50 From 93459202b58b6199e588b5c6768ef8889aa2aa9f Mon Sep 17 00:00:00 2001 From: David Athay Date: Tue, 22 Jul 2008 14:50:19 +0000 Subject: Reverted the Alt-Gr fix as it did not work. --- ChangeLog | 4 ++++ src/game.cpp | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/ChangeLog b/ChangeLog index e2a3abfa..2fddc422 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2008-07-22 David Athay + + * src/game.cpp: Revert the Alt-Gr fix as it did not work. + 2008-07-21 David Athay * src/game.cpp: Initial attempt at fixing Alt-Gr issue for Rotonen, diff --git a/src/game.cpp b/src/game.cpp index 0c855669..8961c859 100644 --- a/src/game.cpp +++ b/src/game.cpp @@ -465,7 +465,7 @@ void Game::handleInput() // Keys pressed together with Alt/Meta // Emotions and some internal gui windows #ifndef __APPLE__ - if (event.key.keysym.mod & KMOD_ALT && event.key.keysym.mod ^ KMOD_CTRL) + if (event.key.keysym.mod & KMOD_LALT) #else if (event.key.keysym.mod & KMOD_LMETA) #endif -- cgit v1.2.3-60-g2f50 From c17120c9838665fd546c6ae7a1d81de79659d429 Mon Sep 17 00:00:00 2001 From: David Athay Date: Tue, 22 Jul 2008 15:26:00 +0000 Subject: User can now configure which modifier key is used for smilies. --- ChangeLog | 2 ++ src/game.cpp | 5 +++++ src/keyboardconfig.cpp | 1 + src/keyboardconfig.h | 1 + 4 files changed, 9 insertions(+) (limited to 'src') diff --git a/ChangeLog b/ChangeLog index 2fddc422..d7ca07cd 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,6 +1,8 @@ 2008-07-22 David Athay * src/game.cpp: Revert the Alt-Gr fix as it did not work. + * src/game.cpp, src/keyboardconfig.cpp, src/keyboardconfig.h: User can + now configure which modifier key is used for smilies. 2008-07-21 David Athay diff --git a/src/game.cpp b/src/game.cpp index 8961c859..cc37fc5a 100644 --- a/src/game.cpp +++ b/src/game.cpp @@ -511,7 +511,11 @@ void Game::handleInput() used = true; break; } + } + // Smilie + if (keyboard.isKeyActive(keyboard.KEY_SMILIE)) + { // Emotions Uint8 emotion; switch (event.key.keysym.sym) @@ -535,6 +539,7 @@ void Game::handleInput() { player_node->emote(emotion); used = true; + return; } } switch (event.key.keysym.sym) diff --git a/src/keyboardconfig.cpp b/src/keyboardconfig.cpp index a959e244..9f558883 100644 --- a/src/keyboardconfig.cpp +++ b/src/keyboardconfig.cpp @@ -43,6 +43,7 @@ static KeyData const keyData[KeyboardConfig::KEY_TOTAL] = { {"keyMoveLeft", SDLK_LEFT, "Move Left"}, {"keyMoveRight", SDLK_RIGHT, "Move Right"}, {"keyAttack", SDLK_LCTRL, "Attack"}, + {"keySmilie", SDLK_LALT, "Smilie"}, {"keyTarget", SDLK_LSHIFT, "Target"}, {"keyTargetClosest", SDLK_a, "Target Closest"}, {"keyTargetPlayer", SDLK_q, "Target Player"}, diff --git a/src/keyboardconfig.h b/src/keyboardconfig.h index 53a5c96d..b57136dc 100644 --- a/src/keyboardconfig.h +++ b/src/keyboardconfig.h @@ -151,6 +151,7 @@ class KeyboardConfig KEY_MOVE_LEFT, KEY_MOVE_RIGHT, KEY_ATTACK, + KEY_SMILIE, KEY_TARGET, KEY_TARGET_CLOSEST, KEY_TARGET_PLAYER, -- cgit v1.2.3-60-g2f50 From 88af5cb15a02a26f4a5990ba3ef4df46e572bff4 Mon Sep 17 00:00:00 2001 From: Eugenio Favalli Date: Wed, 23 Jul 2008 17:23:30 +0000 Subject: Remember windows visibility. --- src/game.cpp | 13 +++++++++---- src/gui/buy.cpp | 1 + src/gui/itemshortcutwindow.cpp | 2 +- src/gui/sell.cpp | 1 + src/gui/window.cpp | 2 ++ 5 files changed, 14 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/game.cpp b/src/game.cpp index cc37fc5a..3489257a 100644 --- a/src/game.cpp +++ b/src/game.cpp @@ -212,10 +212,15 @@ void createGuiWindows(Network *network) //buddyWindow->setPosition(10, minimap->getHeight() + 30); // Set initial window visibility - chatWindow->setVisible(true); - miniStatusWindow->setVisible(true); - menuWindow->setVisible(true); - itemShortcutWindow->setVisible(true); + chatWindow->setVisible((bool) config.getValue( + chatWindow->getWindowName() + "Visible", true)); + miniStatusWindow->setVisible((bool) config.getValue( + miniStatusWindow->getWindowName() + "Visible", + true)); + menuWindow->setVisible((bool) config.getValue( + menuWindow->getWindowName() + "Visible", true)); + itemShortcutWindow->setVisible((bool) config.getValue( + itemShortcutWindow->getWindowName() + "Visible", true)); if (config.getValue("logToChat", 0)) { diff --git a/src/gui/buy.cpp b/src/gui/buy.cpp index 259fcfd9..4dee6813 100644 --- a/src/gui/buy.cpp +++ b/src/gui/buy.cpp @@ -42,6 +42,7 @@ BuyDialog::BuyDialog(Network *network): Window("Buy"), mNetwork(network), mMoney(0), mAmountItems(0), mMaxItems(0) { + setWindowName("Buy"); setResizable(true); setMinWidth(260); setMinHeight(230); diff --git a/src/gui/itemshortcutwindow.cpp b/src/gui/itemshortcutwindow.cpp index 3724516a..de1a23a1 100644 --- a/src/gui/itemshortcutwindow.cpp +++ b/src/gui/itemshortcutwindow.cpp @@ -30,7 +30,7 @@ static const int SCROLL_PADDING = 0; ItemShortcutWindow::ItemShortcutWindow() { - setWindowName("itemShortcut"); + setWindowName("ItemShortcut"); // no title presented, title bar is padding so window can be moved. gcn::Window::setTitleBarHeight(gcn::Window::getPadding()); setShowTitle(false); diff --git a/src/gui/sell.cpp b/src/gui/sell.cpp index 82d340fb..d13be2db 100644 --- a/src/gui/sell.cpp +++ b/src/gui/sell.cpp @@ -48,6 +48,7 @@ SellDialog::SellDialog(Network *network): mNetwork(network), mMaxItems(0), mAmountItems(0) { + setWindowName("Sell"); setResizable(true); setMinWidth(260); setMinHeight(230); diff --git a/src/gui/window.cpp b/src/gui/window.cpp index 4ce167cd..1c5072f5 100644 --- a/src/gui/window.cpp +++ b/src/gui/window.cpp @@ -137,6 +137,7 @@ Window::~Window() // Saving X, Y and Width and Height for resizables in the config config.setValue(name + "WinX", getX()); config.setValue(name + "WinY", getY()); + config.setValue(name + "Visible", isVisible()); if (mGrip) { @@ -476,6 +477,7 @@ Window::loadWindowState() setPosition((int) config.getValue(name + "WinX", mDefaultX), (int) config.getValue(name + "WinY", mDefaultY)); + setVisible((bool) config.getValue(name + "Visible", false)); if (mGrip) { -- cgit v1.2.3-60-g2f50 From 19ee623c0a1fdd333ef5b945ea887c983c829b1e Mon Sep 17 00:00:00 2001 From: Eugenio Favalli Date: Thu, 24 Jul 2008 16:34:06 +0000 Subject: Fixed visibility of buy and sell dialogs. --- ChangeLog | 4 ++++ src/game.cpp | 2 ++ 2 files changed, 6 insertions(+) (limited to 'src') diff --git a/ChangeLog b/ChangeLog index 806ef62d..612624a0 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2008-07-24 Eugenio Favalli + + * src/game.cpp: Fixed visibility of buy and sell dialogs. + 2008-07-23 Eugenio Favalli * src/game.cpp, src/gui/buy.cpp, src/gui/itemshortcutwindow.cpp, diff --git a/src/game.cpp b/src/game.cpp index 3489257a..0773b8e7 100644 --- a/src/game.cpp +++ b/src/game.cpp @@ -217,6 +217,8 @@ void createGuiWindows(Network *network) miniStatusWindow->setVisible((bool) config.getValue( miniStatusWindow->getWindowName() + "Visible", true)); + buyDialog->setVisible(false); + sellDialog->setVisible(false); menuWindow->setVisible((bool) config.getValue( menuWindow->getWindowName() + "Visible", true)); itemShortcutWindow->setVisible((bool) config.getValue( -- cgit v1.2.3-60-g2f50 From d6f2cdf4da05482df874fedc24832735eb80c8fc Mon Sep 17 00:00:00 2001 From: Eugenio Favalli Date: Thu, 24 Jul 2008 17:04:42 +0000 Subject: Properly update price after buying. --- ChangeLog | 1 + src/gui/buy.cpp | 10 +++++----- 2 files changed, 6 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/ChangeLog b/ChangeLog index 612624a0..d5fd476a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,6 +1,7 @@ 2008-07-24 Eugenio Favalli * src/game.cpp: Fixed visibility of buy and sell dialogs. + * src/gui/buy.cpp: Properly update price after buying. 2008-07-23 Eugenio Favalli diff --git a/src/gui/buy.cpp b/src/gui/buy.cpp index 4dee6813..c12e18b6 100644 --- a/src/gui/buy.cpp +++ b/src/gui/buy.cpp @@ -171,15 +171,15 @@ void BuyDialog::action(const gcn::ActionEvent &event) outMsg.writeInt16(mAmountItems); outMsg.writeInt16(mShopItems->at(selectedItem)->getId()); - // Reset selection - mAmountItems = 1; - mSlider->setValue(1); - mSlider->gcn::Slider::setScale(1, mMaxItems); - // Update money and adjust the max number of items that can be bought mMaxItems -= mAmountItems; setMoney(mMoney - mAmountItems * mShopItems->at(selectedItem)->getPrice()); + + // Reset selection + mAmountItems = 1; + mSlider->setValue(1); + mSlider->gcn::Slider::setScale(1, mMaxItems); } } -- cgit v1.2.3-60-g2f50 From e2d5312c793c3667213acd794dd4c5c5c49d9c75 Mon Sep 17 00:00:00 2001 From: Bjørn Lindeijer Date: Fri, 25 Jul 2008 17:27:39 +0000 Subject: Updated the version to 0.0.25, release planned this Sunday. --- CMakeLists.txt | 2 +- ChangeLog | 6 ++++++ NEWS | 4 +++- README | 2 +- configure.ac | 2 +- data/help/changes.txt | 32 ++++++++++++++++++++------------ data/help/header.txt | 2 +- src/winver.h | 6 +++--- 8 files changed, 36 insertions(+), 20 deletions(-) (limited to 'src') diff --git a/CMakeLists.txt b/CMakeLists.txt index 32bffc37..fd71e1b0 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,6 +1,6 @@ PROJECT(TMW) -SET(VERSION 0.0.24.1) +SET(VERSION 0.0.25) # where to look for cmake modules SET(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/CMake/Modules) diff --git a/ChangeLog b/ChangeLog index d5fd476a..aba67b37 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2008-07-25 Bjørn Lindeijer + + * src/winver.h, README, configure.ac, data/help/changes.txt, + data/help/header.txt, NEWS, CMakeLists.txt: Updated the version to + 0.0.25, release planned this Sunday. + 2008-07-24 Eugenio Favalli * src/game.cpp: Fixed visibility of buy and sell dialogs. diff --git a/NEWS b/NEWS index a13b9174..ca1286f1 100644 --- a/NEWS +++ b/NEWS @@ -1,4 +1,4 @@ -0.0.25 (...) +0.0.25 (27 July 2008) - Added support for whispering to other players - Added ability to ignore other players - Added command line argument for specifying the update host (-H) @@ -9,12 +9,14 @@ - Added support for an arbitrary number of map layers - Added support for basing one sprite definition on another - Added the possibility to assign particle effects to NPCs +- Added remembering whether windows are visible or not - Updated to work with Guichan 0.8.x - Improved accuracy of monster targeting with the mouse - Page up and page down will now scroll the chat window - Item icons are now loaded on demand and unloaded when no longer used - Fixed display of critical hits - Fixed multi-channel image dyeing +- Fixed updating of money display after buying 0.0.24.1 (7 April 2008) - Added /clear command to clear chat window diff --git a/README b/README index 4d9fe6af..3e2cca1d 100644 --- a/README +++ b/README @@ -1,7 +1,7 @@ THE MANA WORLD ============== - Version: 0.0.24.1 Date: 7/4/2007 + Version: 0.0.25 Date: 27/7/2008 Development team: - See AUTHORS file for a list diff --git a/configure.ac b/configure.ac index 6816c743..ddd47e40 100755 --- a/configure.ac +++ b/configure.ac @@ -1,5 +1,5 @@ AC_PREREQ(2.59) -AC_INIT([The Mana World], [0.0.24.1], [elvenprogrammer@gmail.com], [tmw]) +AC_INIT([The Mana World], [0.0.25], [elvenprogrammer@gmail.com], [tmw]) AC_CONFIG_HEADERS([config.h:config.h.in]) AC_LANG_CPLUSPLUS diff --git a/data/help/changes.txt b/data/help/changes.txt index 8b47cc9c..fefa8bcb 100644 --- a/data/help/changes.txt +++ b/data/help/changes.txt @@ -3,6 +3,26 @@ ##3 === RECENT CHANGES === + 0.0.25 (27 July 2008) + - Added support for whispering to other players + - Added ability to ignore other players + - Added command line argument for specifying the update host (-H) + - Added support for receiving the update host from the server + - Added support for displaying a shield sprite + - Added shortcut window, allowing you to quickly access inventory items + - Added message when gaining money from trade or quest + - Added support for an arbitrary number of map layers + - Added support for basing one sprite definition on another + - Added the possibility to assign particle effects to NPCs + - Added remembering whether windows are visible or not + - Updated to work with Guichan 0.8.x + - Improved accuracy of monster targeting with the mouse + - Page up and page down will now scroll the chat window + - Item icons are now loaded on demand and unloaded when no longer used + - Fixed display of critical hits + - Fixed multi-channel image dyeing + - Fixed updating of money display after buying + 0.0.24.1 (7 April 2008) - Added /clear command to clear chat window - Added ability to close quit dialog by pressing ESC @@ -58,15 +78,3 @@ - Fixed error message when creating a new character fails - Fixed updating problem when using scrollwheel to change shop selection - 0.0.22.2 (17 February 2007) - - Updated to work with Guichan 0.6.1 - - Changed to new default server (server.themanaworld.org) - - Changed custom mouse cursor - - Fixed the issue where _M or _F is appended to the username - - Fixed problem with Cancel button in update dialog - - 0.0.22.1 (15 January 2007) - - Updated to work with Guichan 0.6.0 (older versions no longer supported) - - Fixed mouse coordinates in debug window - - Fixed clicking on GUI to cause the player to start walking sometimes - diff --git a/data/help/header.txt b/data/help/header.txt index 57e9f141..d41c5ff7 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.24.1 ##2Date:##37 April 2008 + ##2Version:##6 0.0.25 ##2Date:##327 July 2008 ##2 Website: http://themanaworld.org diff --git a/src/winver.h b/src/winver.h index 52d90315..a276fde5 100644 --- a/src/winver.h +++ b/src/winver.h @@ -1,6 +1,6 @@ /* VERSION DEFINITIONS */ #define VER_MAJOR 0 #define VER_MINOR 0 -#define VER_RELEASE 24 -#define VER_BUILD 1 -#define PACKAGE_VERSION "0.0.24.1" +#define VER_RELEASE 25 +#define VER_BUILD 0 +#define PACKAGE_VERSION "0.0.25" -- cgit v1.2.3-60-g2f50 From ab74313ac96b5259f17555085f1fdb9780cd387c Mon Sep 17 00:00:00 2001 From: Bjørn Lindeijer Date: Sun, 27 Jul 2008 16:28:37 +0000 Subject: Target the nearest monster on joystick button 3 Should be made configurable later (Mantis 151) --- ChangeLog | 4 ++++ src/game.cpp | 15 +++++++-------- 2 files changed, 11 insertions(+), 8 deletions(-) (limited to 'src') diff --git a/ChangeLog b/ChangeLog index f00986cc..99c8d044 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2008-07-27 Bjørn Lindeijer + + * src/game.cpp: Target the nearest monster on joystick button 3. + 2008-07-25 Bjørn Lindeijer * src/winver.h, README, configure.ac, data/help/changes.txt, diff --git a/src/game.cpp b/src/game.cpp index 0773b8e7..37375ca2 100644 --- a/src/game.cpp +++ b/src/game.cpp @@ -810,12 +810,11 @@ void Game::handleInput() player_node->attack(target, newTarget); } - // Target the nearest player if 'q' is pressed - if ( keyboard.isKeyActive(keyboard.KEY_TARGET_PLAYER) ) - //if (keys[SDLK_q]) + // Target the nearest player + if (keyboard.isKeyActive(keyboard.KEY_TARGET_PLAYER)) { - Being *target = - beingManager->findNearestLivingBeing(player_node, 20, Being::PLAYER); + Being *target = beingManager->findNearestLivingBeing( + player_node, 20, Being::PLAYER); if (target) { @@ -823,9 +822,9 @@ void Game::handleInput() } } - // Target the nearest monster if 'a' pressed - if ( keyboard.isKeyActive(keyboard.KEY_TARGET_CLOSEST) ) - //if (keys[SDLK_a]) + // Target the nearest monster + if (keyboard.isKeyActive(keyboard.KEY_TARGET_CLOSEST) + || (joystick && joystick->buttonPressed(3))) { Being *target = beingManager->findNearestLivingBeing(x, y, 20, Being::MONSTER); -- cgit v1.2.3-60-g2f50 From d828b8c752fc285b26a4521c0718df5cfdc06f9d Mon Sep 17 00:00:00 2001 From: Dennis Friis Date: Mon, 4 Aug 2008 07:17:06 +0000 Subject: Fix typo in updatehost reported by Jaxad. --- ChangeLog | 4 ++++ src/main.cpp | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/ChangeLog b/ChangeLog index 99c8d044..c20a7190 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2008-08-04 Dennis Friis + + * src/main.cpp: Fix typo in updatehost reported by Jaxad. + 2008-07-27 Bjørn Lindeijer * src/game.cpp: Target the nearest monster on joystick button 3. diff --git a/src/main.cpp b/src/main.cpp index bc3d5449..25dbe127 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -159,7 +159,7 @@ void setUpdatesDir() // If updatesHost is currently empty, fill it from config file if (updateHost.empty()) { updateHost = - config.getValue("updatehost", "http://updates.thanaworld.org"); + config.getValue("updatehost", "http://updates.themanaworld.org"); } // Remove any trailing slash at the end of the update host -- cgit v1.2.3-60-g2f50 From d5bb76a134de27fd704cf2a76ad46df3026a8d0d Mon Sep 17 00:00:00 2001 From: David Athay Date: Tue, 5 Aug 2008 12:06:40 +0000 Subject: Fixed alignment (patch by Scraggy - Mantis #384) and spelling error. --- ChangeLog | 6 ++++++ src/gui/setup_video.cpp | 4 ++-- src/net/charserverhandler.cpp | 4 ++-- 3 files changed, 10 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/ChangeLog b/ChangeLog index c20a7190..16267ef6 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2008-08-05 David Athay + + * src/gui/setup_video.cpp, src/net/charserverhandler.cpp: Fixed + alignment issue with fps limit field (patch by Scraggy #384. Also + fixed small spelling error. + 2008-08-04 Dennis Friis * src/main.cpp: Fix typo in updatehost reported by Jaxad. diff --git a/src/gui/setup_video.cpp b/src/gui/setup_video.cpp index 97e4cdd6..5044bbb6 100644 --- a/src/gui/setup_video.cpp +++ b/src/gui/setup_video.cpp @@ -192,7 +192,7 @@ Setup_Video::Setup_Video(): mScrollRadiusSlider->setDimension(gcn::Rectangle(10, 120, 75, 10)); gcn::Label *scrollRadiusLabel = new gcn::Label("Scroll radius"); scrollRadiusLabel->setPosition(90, 120); - mScrollRadiusField->setPosition(180, 120); + mScrollRadiusField->setPosition(mFpsField->getX(), 120); mScrollRadiusField->setWidth(30); mScrollRadiusField->setText(toString(mOriginalScrollRadius)); mScrollRadiusSlider->setValue(mOriginalScrollRadius); @@ -200,7 +200,7 @@ Setup_Video::Setup_Video(): mScrollLazinessSlider->setDimension(gcn::Rectangle(10, 140, 75, 10)); gcn::Label *scrollLazinessLabel = new gcn::Label("Scroll laziness"); scrollLazinessLabel->setPosition(90, 140); - mScrollLazinessField->setPosition(180, 140); + mScrollLazinessField->setPosition(mFpsField->getX(), 140); mScrollLazinessField->setWidth(30); mScrollLazinessField->setText(toString(mOriginalScrollLaziness)); mScrollLazinessSlider->setValue(mOriginalScrollLaziness); diff --git a/src/net/charserverhandler.cpp b/src/net/charserverhandler.cpp index 5cc53f7d..c49c7640 100644 --- a/src/net/charserverhandler.cpp +++ b/src/net/charserverhandler.cpp @@ -169,7 +169,7 @@ void CharServerHandler::handleMessage(MessageIn *msg) errorMessage = "Duplicated login"; break; default: - errorMessage = "Unkown error with 0x0081"; + errorMessage = "Unknown error with 0x0081"; break; } mCharInfo->unlock(); @@ -208,7 +208,7 @@ LocalPlayer* CharServerHandler::readPlayerData(MessageIn &msg, int &slot) tempPlayer->mLevel = msg.readInt16(); msg.readInt16(); // skill point tempPlayer->setSprite(Being::BOTTOMCLOTHES_SPRITE, msg.readInt16()); // head bottom - tempPlayer->setSprite(Being::SHIELD_SPRITE, msg.readInt16()); + tempPlayer->setSprite(Being::SHIELD_SPRITE, msg.readInt16()); tempPlayer->setSprite(Being::HAT_SPRITE, msg.readInt16()); // head option top tempPlayer->setSprite(Being::TOPCLOTHES_SPRITE, msg.readInt16()); // head option mid int hairColor = msg.readInt16(); -- cgit v1.2.3-60-g2f50 From 1df0f995cbcafa24a9312c25aa7c24fe910ed54c Mon Sep 17 00:00:00 2001 From: Bjørn Lindeijer Date: Wed, 6 Aug 2008 19:43:58 +0000 Subject: Make sure only to save the window state when a window name is set, and fail when loadWindowState() is called without setting a window name. --- ChangeLog | 6 ++++++ src/gui/window.cpp | 19 +++++++++++-------- 2 files changed, 17 insertions(+), 8 deletions(-) (limited to 'src') diff --git a/ChangeLog b/ChangeLog index 16267ef6..21d6ddd4 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2008-08-06 Bjørn Lindeijer + + * src/gui/window.cpp: Make sure only to save the window state when a + window name is set, and fail when loadWindowState() is called without + setting a window name. + 2008-08-05 David Athay * src/gui/setup_video.cpp, src/net/charserverhandler.cpp: Fixed diff --git a/src/gui/window.cpp b/src/gui/window.cpp index 1c5072f5..ee8aca64 100644 --- a/src/gui/window.cpp +++ b/src/gui/window.cpp @@ -23,6 +23,7 @@ #include #include +#include #include #include @@ -135,14 +136,15 @@ Window::~Window() const std::string &name = mWindowName; // Saving X, Y and Width and Height for resizables in the config - config.setValue(name + "WinX", getX()); - config.setValue(name + "WinY", getY()); - config.setValue(name + "Visible", isVisible()); - - if (mGrip) - { - config.setValue(name + "WinWidth", getWidth()); - config.setValue(name + "WinHeight", getHeight()); + if (!name.empty()) { + config.setValue(name + "WinX", getX()); + config.setValue(name + "WinY", getY()); + config.setValue(name + "Visible", isVisible()); + + if (mGrip) { + config.setValue(name + "WinWidth", getWidth()); + config.setValue(name + "WinHeight", getHeight()); + } } instances--; @@ -474,6 +476,7 @@ void Window::loadWindowState() { const std::string &name = mWindowName; + assert(!name.empty()); setPosition((int) config.getValue(name + "WinX", mDefaultX), (int) config.getValue(name + "WinY", mDefaultY)); -- cgit v1.2.3-60-g2f50 From 73d4611c036b57549fa33aabfadb8ec528ad2d45 Mon Sep 17 00:00:00 2001 From: Philipp Sehmisch Date: Sun, 24 Aug 2008 18:52:00 +0000 Subject: Added new particle emitter property "output-pause" which allows to define a fixed (or random) interval between two outputs. --- ChangeLog | 6 ++++++ src/particleemitter.cpp | 16 +++++++++++++++- src/particleemitter.h | 2 ++ 3 files changed, 23 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/ChangeLog b/ChangeLog index 21d6ddd4..ba35af26 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2008-08-24 Philipp Sehmisch + + * src/particleemitter.cpp, src/particleemitter.h: Added new particle + emitter property "output-pause" which allows to define a fixed (or random) + interval between two outputs. + 2008-08-06 Bjørn Lindeijer * src/gui/window.cpp: Make sure only to save the window state when a diff --git a/src/particleemitter.cpp b/src/particleemitter.cpp index 631ca228..1696a134 100644 --- a/src/particleemitter.cpp +++ b/src/particleemitter.cpp @@ -39,7 +39,8 @@ #define DEG_RAD_FACTOR 0.017453293f ParticleEmitter::ParticleEmitter(xmlNodePtr emitterNode, Particle *target, Map *map): - mParticleImage(0) + mParticleImage(0), + mOutputPauseLeft(0) { mMap = map; mParticleTarget = target; @@ -62,6 +63,7 @@ ParticleEmitter::ParticleEmitter(xmlNodePtr emitterNode, Particle *target, Map * mParticleFadeOut.set(0); mParticleFadeIn.set(0); mOutput.set(1); + mOutputPause.set(0); mParticleAlpha.set(1.0f); for_each_xml_child_node(propertyNode, emitterNode) @@ -135,6 +137,11 @@ ParticleEmitter::ParticleEmitter(xmlNodePtr emitterNode, Particle *target, Map * mOutput = readMinMax(propertyNode, 0); mOutput.maxVal +=1; } + else if (name == "output-pause") + { + mOutputPause = readMinMax(propertyNode, 0); + mOutputPauseLeft = mOutputSkip.value(); + } else if (name == "acceleration") { mParticleAcceleration = readMinMax(propertyNode, 0.0f); @@ -308,6 +315,13 @@ ParticleEmitter::createParticles() { std::list newParticles; + if (mOutputPauseLeft > 0) + { + mOutputPauseLeft--; + return newParticles; + } + mOutputPauseLeft = mOutputPause.value(); + for (int i = mOutput.value(); i > 0; i--) { // Limit maximum particles diff --git a/src/particleemitter.h b/src/particleemitter.h index 2f45608d..c1365163 100644 --- a/src/particleemitter.h +++ b/src/particleemitter.h @@ -119,6 +119,8 @@ class ParticleEmitter Map *mMap; /**< Map the particles are spawned on */ MinMax mOutput; /**< Number of particles spawned per update */ + MinMax mOutputSkip; /**< Pause in frames between two spawns */ + int mOutputSkipPause; /* * Graphical representation of the particle -- cgit v1.2.3-60-g2f50 From 2cdb3c70b062014d9e96ff778c3bdee8796ecf5e Mon Sep 17 00:00:00 2001 From: Philipp Sehmisch Date: Sun, 24 Aug 2008 18:58:39 +0000 Subject: fix for an error in the last commit --- src/particleemitter.cpp | 2 +- src/particleemitter.h | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/particleemitter.cpp b/src/particleemitter.cpp index 1696a134..b2cc16c7 100644 --- a/src/particleemitter.cpp +++ b/src/particleemitter.cpp @@ -140,7 +140,7 @@ ParticleEmitter::ParticleEmitter(xmlNodePtr emitterNode, Particle *target, Map * else if (name == "output-pause") { mOutputPause = readMinMax(propertyNode, 0); - mOutputPauseLeft = mOutputSkip.value(); + mOutputPauseLeft = mOutputPause.value(); } else if (name == "acceleration") { diff --git a/src/particleemitter.h b/src/particleemitter.h index c1365163..54341018 100644 --- a/src/particleemitter.h +++ b/src/particleemitter.h @@ -119,8 +119,8 @@ class ParticleEmitter Map *mMap; /**< Map the particles are spawned on */ MinMax mOutput; /**< Number of particles spawned per update */ - MinMax mOutputSkip; /**< Pause in frames between two spawns */ - int mOutputSkipPause; + MinMax mOutputPause; /**< Pause in frames between two spawns */ + int mOutputPauseLeft; /* * Graphical representation of the particle -- cgit v1.2.3-60-g2f50 From a5d45f2fa5b0042e2d08a2bfed060dfb0417e75e Mon Sep 17 00:00:00 2001 From: Bjørn Lindeijer Date: Wed, 27 Aug 2008 18:48:13 +0000 Subject: Renamed "randomnes" to "randomness", so that it won't show up as part of Fate's patch. --- ChangeLog | 10 ++++++++-- src/particle.cpp | 10 +++++----- src/particle.h | 6 +++--- src/particleemitter.cpp | 14 +++++++------- src/particleemitter.h | 2 +- 5 files changed, 24 insertions(+), 18 deletions(-) (limited to 'src') diff --git a/ChangeLog b/ChangeLog index ba35af26..a3ed1f12 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,8 +1,14 @@ +2008-08-27 Bjørn Lindeijer + + * src/particleemitter.h, src/particle.h, src/particleemitter.cpp, + src/particle.cpp: Renamed "randomnes" to "randomness", so that it + won't show up as part of Fate's patch. + 2008-08-24 Philipp Sehmisch * src/particleemitter.cpp, src/particleemitter.h: Added new particle - emitter property "output-pause" which allows to define a fixed (or random) - interval between two outputs. + emitter property "output-pause" which allows to define a fixed (or + random) interval between two outputs. 2008-08-06 Bjørn Lindeijer diff --git a/src/particle.cpp b/src/particle.cpp index 3b3f5116..8591838f 100644 --- a/src/particle.cpp +++ b/src/particle.cpp @@ -61,7 +61,7 @@ Particle::Particle(Map *map): mAutoDelete(true), mMap(map), mGravity(0.0f), - mRandomnes(0), + mRandomness(0), mBounce(0.0f), mFollow(false), mTarget(NULL), @@ -139,11 +139,11 @@ Particle::update() } } - if (mRandomnes > 0) + if (mRandomness > 0) { - mVelocity.x += (rand()%mRandomnes - rand()%mRandomnes) / 1000.0f; - mVelocity.y += (rand()%mRandomnes - rand()%mRandomnes) / 1000.0f; - mVelocity.z += (rand()%mRandomnes - rand()%mRandomnes) / 1000.0f; + mVelocity.x += (rand()%mRandomness - rand()%mRandomness) / 1000.0f; + mVelocity.y += (rand()%mRandomness - rand()%mRandomness) / 1000.0f; + mVelocity.z += (rand()%mRandomness - rand()%mRandomness) / 1000.0f; } mVelocity.z -= mGravity; diff --git a/src/particle.h b/src/particle.h index 88a38417..d9b8c6b7 100644 --- a/src/particle.h +++ b/src/particle.h @@ -227,8 +227,8 @@ class Particle : public Sprite * Sets the ammount of random vector changes */ void - setRandomnes(int r) - { mRandomnes = r; } + setRandomness(int r) + { mRandomness = r; } /** * Sets the ammount of velocity particles retain after @@ -303,7 +303,7 @@ class Particle : public Sprite // dynamic particle Vector mVelocity; /**< Speed in pixels per game-tick. */ float mGravity; /**< Downward acceleration in pixels per game-tick. */ - int mRandomnes; /**< Ammount of random vector change */ + int mRandomness; /**< Ammount of random vector change */ float mBounce; /**< How much the particle bounces off when hitting the ground */ bool mFollow; /**< is this particle moved when its parent particle moves? */ diff --git a/src/particleemitter.cpp b/src/particleemitter.cpp index b2cc16c7..545936f0 100644 --- a/src/particleemitter.cpp +++ b/src/particleemitter.cpp @@ -39,8 +39,8 @@ #define DEG_RAD_FACTOR 0.017453293f ParticleEmitter::ParticleEmitter(xmlNodePtr emitterNode, Particle *target, Map *map): - mParticleImage(0), - mOutputPauseLeft(0) + mOutputPauseLeft(0), + mParticleImage(0) { mMap = map; mParticleTarget = target; @@ -53,7 +53,7 @@ ParticleEmitter::ParticleEmitter(xmlNodePtr emitterNode, Particle *target, Map * mParticleAngleVertical.set(0.0f); mParticlePower.set(0.0f); mParticleGravity.set(0.0f); - mParticleRandomnes.set(0); + mParticleRandomness.set(0); mParticleBounce.set(0.0f); mParticleFollow = false; mParticleAcceleration.set(0.0f); @@ -119,9 +119,9 @@ ParticleEmitter::ParticleEmitter(xmlNodePtr emitterNode, Particle *target, Map * { mParticleGravity = readMinMax(propertyNode, 0.0f); } - else if (name == "randomnes") + else if (name == "randomnes" || name == "randomness") // legacy bug { - mParticleRandomnes = readMinMax(propertyNode, 0); + mParticleRandomness = readMinMax(propertyNode, 0); } else if (name == "bounce") { @@ -268,7 +268,7 @@ ParticleEmitter & ParticleEmitter::operator=(const ParticleEmitter &o) mParticleAngleVertical = o.mParticleAngleVertical; mParticlePower = o.mParticlePower; mParticleGravity = o.mParticleGravity; - mParticleRandomnes = o.mParticleRandomnes; + mParticleRandomness = o.mParticleRandomness; mParticleBounce = o.mParticleBounce; mParticleFollow = o.mParticleFollow; mParticleTarget = o.mParticleTarget; @@ -356,7 +356,7 @@ ParticleEmitter::createParticles() sin(angleH) * cos(angleV) * power, sin(angleV) * power); - newParticle->setRandomnes(mParticleRandomnes.value()); + newParticle->setRandomness(mParticleRandomness.value()); newParticle->setGravity(mParticleGravity.value()); newParticle->setBounce(mParticleBounce.value()); newParticle->setFollow(mParticleFollow); diff --git a/src/particleemitter.h b/src/particleemitter.h index 54341018..5cf3fd46 100644 --- a/src/particleemitter.h +++ b/src/particleemitter.h @@ -97,7 +97,7 @@ class ParticleEmitter * Vector changing of particles: */ MinMax mParticleGravity; - MinMax mParticleRandomnes; + MinMax mParticleRandomness; MinMax mParticleBounce; bool mParticleFollow; -- cgit v1.2.3-60-g2f50 From b98b6256262da9aafd9e8e1f93744db321d4d1ad Mon Sep 17 00:00:00 2001 From: Philipp Sehmisch Date: Thu, 28 Aug 2008 13:36:33 +0000 Subject: Removed the usually incorrect "for 5 minutes" clause from the message displayed to banned users. --- ChangeLog | 5 +++++ src/net/loginhandler.cpp | 6 +++--- 2 files changed, 8 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/ChangeLog b/ChangeLog index a3ed1f12..66ed8d6d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2008-08-28 Philipp Sehmisch + + * src/net/loginhandler.cpp: Removed the usually incorrect "for 5 minutes" + clause from the message displayed to banned users. + 2008-08-27 Bjørn Lindeijer * src/particleemitter.h, src/particle.h, src/particleemitter.cpp, diff --git a/src/net/loginhandler.cpp b/src/net/loginhandler.cpp index 8b057afd..fa74f489 100644 --- a/src/net/loginhandler.cpp +++ b/src/net/loginhandler.cpp @@ -89,7 +89,7 @@ void LoginHandler::handleMessage(MessageIn *msg) iptostring(server_info[i]->address), server_info[i]->port); } - state = CHAR_SERVER_STATE; + state = CHAR_SERVER_STATE; break; case 0x006a: @@ -110,10 +110,10 @@ void LoginHandler::handleMessage(MessageIn *msg) errorMessage = "Rejected from server"; break; case 4: - errorMessage = "You have been blocked by the GM Team"; + errorMessage = "You have been banned from the game. Please contact the GM Team"; break; case 6: - errorMessage = "You have been banned for 5 minutes"; + errorMessage = "You have been temporarily banned from the game. Please contact the GM team"; break; case 9: errorMessage = "This user name is already taken"; -- cgit v1.2.3-60-g2f50 From b506fe0ff8a2039167aa7c349087af4dd03e1921 Mon Sep 17 00:00:00 2001 From: Bjørn Lindeijer Date: Thu, 28 Aug 2008 18:01:15 +0000 Subject: Applied patch put together by Jaxad0127 with changes from the Aethyra project. Improves compatibility with the newer version of eAthena and works around an initialization bug. --- ChangeLog | 13 +++- src/being.h | 4 ++ src/game.cpp | 24 ++++++- src/net/beinghandler.cpp | 145 +++++++++++++++++++++++++++++++++++------- src/net/beinghandler.h | 6 +- src/net/charserverhandler.cpp | 7 +- src/net/playerhandler.cpp | 7 +- src/net/protocol.h | 5 ++ 8 files changed, 180 insertions(+), 31 deletions(-) (limited to 'src') diff --git a/ChangeLog b/ChangeLog index 66ed8d6d..ec86e312 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,7 +1,16 @@ +2008-08-28 Bjørn Lindeijer + + * src/game.cpp, src/net/beinghandler.cpp, + src/net/charserverhandler.cpp, src/net/protocol.h, + src/net/beinghandler.h, src/net/playerhandler.cpp, src/being.h: + Applied patch put together by Jaxad0127 with changes from the Aethyra + project. Improves compatibility with the newer version of eAthena and + works around an initialization bug. + 2008-08-28 Philipp Sehmisch - * src/net/loginhandler.cpp: Removed the usually incorrect "for 5 minutes" - clause from the message displayed to banned users. + * src/net/loginhandler.cpp: Removed the usually incorrect "for 5 + minutes" clause from the message displayed to banned users. 2008-08-27 Bjørn Lindeijer diff --git a/src/being.h b/src/being.h index 5ea8c0be..046f7b9a 100644 --- a/src/being.h +++ b/src/being.h @@ -93,8 +93,12 @@ class Being : public Sprite SHOE_SPRITE, BOTTOMCLOTHES_SPRITE, TOPCLOTHES_SPRITE, + MISC1_SPRITE, + MISC2_SPRITE, HAIR_SPRITE, HAT_SPRITE, + CAPE_SPRITE, + GLOVES_SPRITE, WEAPON_SPRITE, SHIELD_SPRITE, VECTOREND_SPRITE diff --git a/src/game.cpp b/src/game.cpp index 37375ca2..aaf5242c 100644 --- a/src/game.cpp +++ b/src/game.cpp @@ -69,6 +69,7 @@ #include "gui/trade.h" #include "gui/viewport.h" +#include "net/protocol.h" #include "net/beinghandler.h" #include "net/buysellhandler.h" #include "net/chathandler.h" @@ -80,6 +81,7 @@ #include "net/playerhandler.h" #include "net/skillhandler.h" #include "net/tradehandler.h" +#include "net/messageout.h" #include "resources/imagewriter.h" @@ -260,7 +262,7 @@ void destroyGuiWindows() Game::Game(Network *network): mNetwork(network), - mBeingHandler(new BeingHandler()), + mBeingHandler(new BeingHandler(config.getValue("EnableSync", 0) == 1)), mBuySellHandler(new BuySellHandler()), mChatHandler(new ChatHandler()), mEquipmentHandler(new EquipmentHandler()), @@ -291,7 +293,6 @@ Game::Game(Network *network): // Initialize beings beingManager->setPlayer(player_node); player_node->setNetwork(network); - engine->changeMap(map_path); Joystick::init(); // TODO: The user should be able to choose which one to use @@ -311,6 +312,25 @@ Game::Game(Network *network): network->registerHandler(mPlayerHandler.get()); network->registerHandler(mSkillHandler.get()); network->registerHandler(mTradeHandler.get()); + + /* + * THIS IS A TEMPORARY WORKAROUND! + * + * To prevent the server from sending data before the client has + * initialized, it's been modified to wait for a "ping" from the client to + * complete its initialization. + * + * The real fix is to make sure we are not throwing away messages in the + * network buffer due to not having registered the handlers above straight + * after receiving a login success from the map server. + * + * The response from eAthena on this packet is ignored by the client. + */ + MessageOut msg(mNetwork); + msg.writeInt16(CMSG_CLIENT_PING); + msg.writeInt32(tick_time); + + engine->changeMap(map_path); } Game::~Game() diff --git a/src/net/beinghandler.cpp b/src/net/beinghandler.cpp index be8412d9..c43c674f 100644 --- a/src/net/beinghandler.cpp +++ b/src/net/beinghandler.cpp @@ -40,11 +40,13 @@ const int EMOTION_TIME = 150; /**< Duration of emotion icon */ -BeingHandler::BeingHandler() +BeingHandler::BeingHandler(bool enableSync): + mSync(enableSync) { static const Uint16 _messages[] = { SMSG_BEING_VISIBLE, SMSG_BEING_MOVE, + SMSG_BEING_MOVE2, SMSG_BEING_REMOVE, SMSG_BEING_ACTION, SMSG_BEING_LEVELUP, @@ -55,6 +57,8 @@ BeingHandler::BeingHandler() SMSG_PLAYER_UPDATE_1, SMSG_PLAYER_UPDATE_2, SMSG_PLAYER_MOVE, + SMSG_PLAYER_STOP, + SMSG_PLAYER_MOVE_TO_ATTACK, 0x0119, 0 }; @@ -66,6 +70,8 @@ void BeingHandler::handleMessage(MessageIn *msg) Uint32 id; Uint16 job, speed; Uint16 headTop, headMid, headBottom; + Uint16 shoes, gloves, cape, misc1, misc2; + Uint16 weapon, shield; Sint16 param1; Sint8 type; Being *srcBeing, *dstBeing; @@ -78,8 +84,8 @@ void BeingHandler::handleMessage(MessageIn *msg) // Information about a being in range id = msg->readInt32(); speed = msg->readInt16(); - msg->readInt16(); // unknown - msg->readInt16(); // unknown + msg->readInt16(); // opt1 + msg->readInt16(); // opt2 msg->readInt16(); // option job = msg->readInt16(); // class @@ -122,8 +128,10 @@ void BeingHandler::handleMessage(MessageIn *msg) headTop = msg->readInt16(); headMid = msg->readInt16(); hairColor = msg->readInt16(); - msg->readInt16(); // clothes color -not used + msg->readInt16(); // clothes color - not used msg->readInt16(); // head dir + shoes = 0; + gloves = 0; msg->readInt16(); // guild msg->readInt16(); // unknown msg->readInt16(); // unknown @@ -133,9 +141,11 @@ void BeingHandler::handleMessage(MessageIn *msg) dstBeing->setGender(1 - msg->readInt8()); // gender // Set these after the gender, as the sprites may be gender-specific - dstBeing->setSprite(Being::BOTTOMCLOTHES_SPRITE, headBottom); - dstBeing->setSprite(Being::TOPCLOTHES_SPRITE, headMid); - dstBeing->setSprite(Being::HAT_SPRITE, headTop); + dstBeing->setSprite(Being::BOTTOMCLOTHES_SPRITE, headBottom); + dstBeing->setSprite(Being::TOPCLOTHES_SPRITE, headMid); + dstBeing->setSprite(Being::HAT_SPRITE, headTop); + dstBeing->setSprite(Being::SHOE_SPRITE, shoes); + dstBeing->setSprite(Being::GLOVES_SPRITE, gloves); dstBeing->setHairStyle(hairStyle, hairColor); if (msg->getId() == SMSG_BEING_MOVE) @@ -159,6 +169,33 @@ void BeingHandler::handleMessage(MessageIn *msg) msg->readInt8(); // unknown / sit break; + case SMSG_BEING_MOVE2: + /* + * A simplified movement packet, used by the + * later versions of eAthena for both mobs and + * players + */ + dstBeing = beingManager->findBeing(msg->readInt32()); + + Uint16 srcX, srcY, dstX, dstY; + msg->readCoordinatePair(srcX, srcY, dstX, dstY); + msg->readInt32(); // Server tick + + /* + * This packet doesn't have enough info to actually + * create a new being, so if the being isn't found, + * we'll just pretend the packet didn't happen + */ + + if (dstBeing) { + dstBeing->setAction(Being::STAND); + dstBeing->mX = srcX; + dstBeing->mY = srcY; + dstBeing->setDestination(dstX, dstY); + } + + break; + case SMSG_BEING_REMOVE: // A being should be removed or has died dstBeing = beingManager->findBeing(msg->readInt32()); @@ -166,6 +203,11 @@ void BeingHandler::handleMessage(MessageIn *msg) if (!dstBeing) break; + if (dstBeing == player_node->getTarget()) + { + player_node->stopAttack(); + } + if (msg->readInt8() == 1) { dstBeing->setAction(Being::DEAD); @@ -175,10 +217,6 @@ void BeingHandler::handleMessage(MessageIn *msg) beingManager->destroyBeing(dstBeing); } - if (dstBeing == player_node->getTarget()) - { - player_node->stopAttack(); - } break; case SMSG_BEING_ACTION: @@ -257,7 +295,7 @@ void BeingHandler::handleMessage(MessageIn *msg) case SMSG_BEING_CHANGE_LOOKS2: { /* - * SMSG_BEING_CHANGE_LOOKS (0x00c3) and + * SMSG_BEING_CHANGE_LOOKS (0x00c3) and * SMSG_BEING_CHANGE_LOOKS2 (0x01d7) do basically the same * thing. The difference is that ...LOOKS carries a single * 8 bit value, where ...LOOKS2 carries two 16 bit values. @@ -288,7 +326,7 @@ void BeingHandler::handleMessage(MessageIn *msg) case 1: // eAthena LOOK_HAIR dstBeing->setHairStyle(id, -1); break; - case 2: // Weapon ID in id, Shield ID in id2 + case 2: // Weapon ID in id, Shield ID in id2 dstBeing->setSprite(Being::WEAPON_SPRITE, id); dstBeing->setSprite(Being::SHIELD_SPRITE, id2); break; @@ -304,9 +342,24 @@ void BeingHandler::handleMessage(MessageIn *msg) case 6: // eAthena LOOK_HAIR_COLOR dstBeing->setHairStyle(-1, id); break; + case 8: // eAthena LOOK_SHIELD + dstBeing->setSprite(Being::SHIELD_SPRITE, id); + break; case 9: // eAthena LOOK_SHOES dstBeing->setSprite(Being::SHOE_SPRITE, id); break; + case 10: // LOOK_GLOVES + dstBeing->setSprite(Being::GLOVES_SPRITE, id); + break; + case 11: // LOOK_CAPE + dstBeing->setSprite(Being::CAPE_SPRITE, id); + break; + case 12: + dstBeing->setSprite(Being::MISC1_SPRITE, id); + break; + case 13: + dstBeing->setSprite(Being::MISC2_SPRITE, id); + break; default: logger->log("SMSG_BEING_CHANGE_LOOKS: unsupported type: " "%d, id: %d", type, id); @@ -328,9 +381,9 @@ void BeingHandler::handleMessage(MessageIn *msg) // An update about a player, potentially including movement. id = msg->readInt32(); speed = msg->readInt16(); - msg->readInt16(); // option 1 - msg->readInt16(); // option 2 - msg->readInt16(); // option + cape = msg->readInt16(); + misc1 = msg->readInt16(); + misc2 = msg->readInt16(); job = msg->readInt16(); dstBeing = beingManager->findBeing(id); @@ -343,9 +396,9 @@ void BeingHandler::handleMessage(MessageIn *msg) dstBeing->setWalkSpeed(speed); dstBeing->mJob = job; hairStyle = msg->readInt16(); - dstBeing->setSprite(Being::WEAPON_SPRITE, msg->readInt16()); - dstBeing->setSprite(Being::SHIELD_SPRITE, msg->readInt16()); - headBottom = msg->readInt16(); + weapon = msg->readInt16(); + shield = msg->readInt16(); + headBottom = msg->readInt16(); if (msg->getId() == SMSG_PLAYER_MOVE) { @@ -355,7 +408,9 @@ void BeingHandler::handleMessage(MessageIn *msg) headTop = msg->readInt16(); headMid = msg->readInt16(); hairColor = msg->readInt16(); - msg->readInt16(); // clothes color - not used + shoes = 0; + gloves = 0; + msg->readInt16(); // clothes color - not used msg->readInt16(); // head dir msg->readInt32(); // guild msg->readInt32(); // emblem @@ -364,9 +419,18 @@ void BeingHandler::handleMessage(MessageIn *msg) dstBeing->setGender(1 - msg->readInt8()); // gender // Set these after the gender, as the sprites may be gender-specific - dstBeing->setSprite(Being::BOTTOMCLOTHES_SPRITE, headBottom); + dstBeing->setSprite(Being::WEAPON_SPRITE, weapon); + dstBeing->setSprite(Being::SHIELD_SPRITE, shield); + dstBeing->setSprite(Being::BOTTOMCLOTHES_SPRITE, headBottom); dstBeing->setSprite(Being::TOPCLOTHES_SPRITE, headMid); dstBeing->setSprite(Being::HAT_SPRITE, headTop); + dstBeing->setSprite(Being::SHOE_SPRITE, shoes); + // Compensation for the unpatched TMW server + if (gloves > 10) + dstBeing->setSprite(Being::GLOVES_SPRITE, gloves); + dstBeing->setSprite(Being::CAPE_SPRITE, cape); + dstBeing->setSprite(Being::MISC1_SPRITE, misc1); + dstBeing->setSprite(Being::MISC2_SPRITE, misc2); dstBeing->setHairStyle(hairStyle, hairColor); if (msg->getId() == SMSG_PLAYER_MOVE) @@ -384,8 +448,7 @@ void BeingHandler::handleMessage(MessageIn *msg) dstBeing->setDirection(dir); } - msg->readInt8(); // unknown - msg->readInt8(); // unknown + msg->readInt16(); // GM status if (msg->getId() == SMSG_PLAYER_UPDATE_1) { @@ -406,6 +469,42 @@ void BeingHandler::handleMessage(MessageIn *msg) dstBeing->mFrame = 0; break; + case SMSG_PLAYER_STOP: + /* + * Instruction from server to stop walking at x, y. + * + * Some people like having this enabled. Others absolutely + * despise it. So I'm setting to so that it only affects the + * local player if the person has set a key "EnableSync" to "1" + * in their config.xml file. + * + * This packet will be honored for all other beings, regardless + * of the config setting. + */ + + id = msg->readInt32(); + if (mSync || id != player_node->getId()) { + dstBeing = beingManager->findBeing(id); + if (dstBeing) { + dstBeing->mX = msg->readInt16(); + dstBeing->mY = msg->readInt16(); + if (dstBeing->mAction == Being::WALK) { + dstBeing->mFrame = 0; + dstBeing->setAction(Being::STAND); + } + } + } + break; + + case SMSG_PLAYER_MOVE_TO_ATTACK: + /* + * This is an *advisory* message, telling the client that + * it needs to move the character before attacking + * a target (out of range, obstruction in line of fire). + * We can safely ignore this... + */ + break; + case 0x0119: // Change in players look logger->log("0x0119 %i %i %i %x %i", msg->readInt32(), diff --git a/src/net/beinghandler.h b/src/net/beinghandler.h index 03012f39..5d6d91a4 100644 --- a/src/net/beinghandler.h +++ b/src/net/beinghandler.h @@ -29,9 +29,13 @@ class BeingHandler : public MessageHandler { public: - BeingHandler(); + BeingHandler(bool); void handleMessage(MessageIn *msg); + + private: + // Should we honor server "Stop Walking" packets + bool mSync; }; #endif diff --git a/src/net/charserverhandler.cpp b/src/net/charserverhandler.cpp index c49c7640..baa841f4 100644 --- a/src/net/charserverhandler.cpp +++ b/src/net/charserverhandler.cpp @@ -191,7 +191,10 @@ LocalPlayer* CharServerHandler::readPlayerData(MessageIn &msg, int &slot) tempPlayer->mGp = msg.readInt32(); tempPlayer->mJobXp = msg.readInt32(); tempPlayer->mJobLevel = msg.readInt32(); - msg.skip(8); // unknown + tempPlayer->setSprite(Being::SHOE_SPRITE, msg.readInt16()); + tempPlayer->setSprite(Being::GLOVES_SPRITE, msg.readInt16()); + tempPlayer->setSprite(Being::CAPE_SPRITE, msg.readInt16()); + tempPlayer->setSprite(Being::MISC1_SPRITE, msg.readInt16()); msg.readInt32(); // option msg.readInt32(); // karma msg.readInt32(); // manner @@ -213,7 +216,7 @@ LocalPlayer* CharServerHandler::readPlayerData(MessageIn &msg, int &slot) tempPlayer->setSprite(Being::TOPCLOTHES_SPRITE, msg.readInt16()); // head option mid int hairColor = msg.readInt16(); tempPlayer->setHairStyle(hairStyle, hairColor); - msg.readInt16(); // unknown + tempPlayer->setSprite(Being::MISC2_SPRITE, msg.readInt16()); tempPlayer->setName(msg.readString(24)); for (int i = 0; i < 6; i++) { tempPlayer->mAttr[i] = msg.readInt8(); diff --git a/src/net/playerhandler.cpp b/src/net/playerhandler.cpp index 2502c144..463868db 100644 --- a/src/net/playerhandler.cpp +++ b/src/net/playerhandler.cpp @@ -123,6 +123,12 @@ void PlayerHandler::handleMessage(MessageIn *msg) logger->log("Warping to %s (%d, %d)", mapPath.c_str(), x, y); + /* + * We must clear the local player's target *before* the call + * to changeMap, as it deletes all beings. + */ + player_node->stopAttack(); + // Switch the actual map, deleting the previous one engine->changeMap(mapPath); @@ -132,7 +138,6 @@ void PlayerHandler::handleMessage(MessageIn *msg) float scrollOffsetY = (y - player_node->mY) * 32; player_node->setAction(Being::STAND); - player_node->stopAttack(); player_node->mFrame = 0; player_node->mX = x; player_node->mY = y; diff --git a/src/net/protocol.h b/src/net/protocol.h index eb41a9ac..a2aa50c3 100644 --- a/src/net/protocol.h +++ b/src/net/protocol.h @@ -30,6 +30,8 @@ #define SMSG_PLAYER_UPDATE_1 0x01d8 #define SMSG_PLAYER_UPDATE_2 0x01d9 #define SMSG_PLAYER_MOVE 0x01da /**< A nearby player moves */ +#define SMSG_PLAYER_STOP 0x0088 /**< Stop walking, set position */ +#define SMSG_PLAYER_MOVE_TO_ATTACK 0x0139 /**< Move to within attack range */ #define SMSG_PLAYER_STAT_UPDATE_1 0x00b0 #define SMSG_PLAYER_STAT_UPDATE_2 0x00b1 #define SMSG_PLAYER_STAT_UPDATE_3 0x0141 @@ -56,6 +58,8 @@ #define SMSG_ITEM_REMOVE 0x00a1 /**< An item disappers */ #define SMSG_BEING_VISIBLE 0x0078 #define SMSG_BEING_MOVE 0x007b /**< A nearby monster moves */ +#define SMSG_BEING_SPAWN 0x007c /**< A being spawns nearby */ +#define SMSG_BEING_MOVE2 0x0086 /**< New eAthena being moves */ #define SMSG_BEING_REMOVE 0x0080 #define SMSG_BEING_CHANGE_LOOKS 0x00c3 #define SMSG_BEING_CHANGE_LOOKS2 0x01d7 /**< Same as 0x00c3, but 16 bit ID */ @@ -87,6 +91,7 @@ #define SMSG_TRADE_COMPLETE 0x00f0 // Packets from client to server +#define CMSG_CLIENT_PING 0x007e /**< Send to server with tick */ #define CMSG_TRADE_RESPONSE 0x00e6 #define CMSG_ITEM_PICKUP 0x009f #define CMSG_MAP_LOADED 0x007d -- cgit v1.2.3-60-g2f50 From 566a6fb8d0fc35267b43721f7e1802ba3475af3d Mon Sep 17 00:00:00 2001 From: Bjørn Lindeijer Date: Thu, 28 Aug 2008 18:32:11 +0000 Subject: Added support for being effects through the eAthena levelup message, and check whether the being exists before referencing it. Re-enabled proper MP bar display. Improved handling of a warp to the same map. --- ChangeLog | 9 ++++ src/being.cpp | 103 +++++++++++++++++++++++++++++++++++++++++++++- src/being.h | 20 +++++++++ src/engine.cpp | 1 + src/engine.h | 5 +++ src/gui/ministatus.cpp | 2 +- src/net/beinghandler.cpp | 34 +++++++-------- src/net/playerhandler.cpp | 19 +++++++-- src/net/protocol.h | 2 +- src/particle.h | 9 ++++ src/player.h | 8 ++++ 11 files changed, 187 insertions(+), 25 deletions(-) (limited to 'src') diff --git a/ChangeLog b/ChangeLog index ec86e312..a5a11cf0 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2008-08-28 Fate + + * src/engine.h, src/gui/ministatus.cpp, src/engine.cpp, + src/particle.h, src/being.cpp, src/player.h, src/net/beinghandler.cpp, + src/net/protocol.h, src/net/playerhandler.cpp, src/being.h: Added + support for being effects through the eAthena levelup message, and + check whether the being exists before referencing it. Re-enabled + proper MP bar display. Improved handling of a warp to the same map. + 2008-08-28 Bjørn Lindeijer * src/game.cpp, src/net/beinghandler.cpp, diff --git a/src/being.cpp b/src/being.cpp index 625b0eef..1880e7c0 100644 --- a/src/being.cpp +++ b/src/being.cpp @@ -32,6 +32,8 @@ #include "log.h" #include "map.h" #include "particle.h" +#include "sound.h" +#include "localplayer.h" #include "resources/resourcemanager.h" #include "resources/imageset.h" @@ -42,6 +44,10 @@ #include "utils/dtor.h" #include "utils/tostring.h" +#include "utils/xml.h" + +#define BEING_EFFECTS_FILE "effects.xml" + int Being::instances = 0; ImageSet *Being::emotionSet = NULL; @@ -386,7 +392,7 @@ Being::logic() ) { (*i)->setPosition((float)mPx + 16.0f, (float)mPy + 32.0f); - if (!(*i)->isAlive()) + if ((*i)->isExtinct()) { (*i)->kill(); i = mChildParticleEffects.erase(i); @@ -496,3 +502,98 @@ Being::getHeight() const return 0; } } + + + +struct EffectDescription { + std::string mGFXEffect; + std::string mSFXEffect; +}; + +static EffectDescription *default_effect = NULL; +static std::map effects; +static bool effects_initialized = false; + +static EffectDescription * +getEffectDescription(xmlNodePtr node, int *id) +{ + EffectDescription *ed = new EffectDescription; + + *id = atoi(XML::getProperty(node, "id", "-1").c_str()); + ed->mSFXEffect = XML::getProperty(node, "audio", ""); + ed->mGFXEffect = XML::getProperty(node, "particle", ""); + + return ed; +} + +static EffectDescription * +getEffectDescription(int effectId) +{ + if (!effects_initialized) + { + XML::Document doc(BEING_EFFECTS_FILE); + xmlNodePtr root = doc.rootNode(); + + if (!root || !xmlStrEqual(root->name, BAD_CAST "being-effects")) + { + logger->log("Error loading being effects file: " + BEING_EFFECTS_FILE); + return NULL; + } + + for_each_xml_child_node(node, root) + { + int id; + + if (xmlStrEqual(node->name, BAD_CAST "effect")) + { + EffectDescription *EffectDescription = + getEffectDescription(node, &id); + effects[id] = EffectDescription; + } else if (xmlStrEqual(node->name, BAD_CAST "default")) + { + EffectDescription *EffectDescription = + getEffectDescription(node, &id); + + if (default_effect) + delete default_effect; + + default_effect = EffectDescription; + } + } + + effects_initialized = true; + } // done initializing + + EffectDescription *ed = effects[effectId]; + + if (!ed) + return default_effect; + else + return ed; +} + +void +Being::internalTriggerEffect(int effectId, bool sfx, bool gfx) +{ + logger->log("Special effect #%d on %s", effectId, + getId() == player_node->getId() ? "self" : "other"); + + EffectDescription *ed = getEffectDescription(effectId); + + if (!ed) { + logger->log("Unknown special effect and no default recorded"); + return; + } + + if (gfx && ed->mGFXEffect != "") { + Particle *selfFX; + + selfFX = particleEngine->addEffect(ed->mGFXEffect, 0, 0); + controlParticle(selfFX); + } + + if (sfx && ed->mSFXEffect != "") { + sound.playSfx(ed->mSFXEffect); + } +} diff --git a/src/being.h b/src/being.h index 046f7b9a..c4f34503 100644 --- a/src/being.h +++ b/src/being.h @@ -365,6 +365,16 @@ class Being : public Sprite void setEmote(Uint8 emotion, Uint8 emote_time) { mEmotion = emotion; mEmotionTime = emote_time; } + /** + * Triggers a visual effect, such as `level up' + * + * Only draws the visual effect, does not play sound effects + * + * \param effectId ID of the effect to trigger + */ + virtual void + triggerEffect(int effectId) { internalTriggerEffect(effectId, false, true); } + const std::auto_ptr mEquipment; protected: @@ -378,6 +388,16 @@ class Being : public Sprite */ SpriteDirection getSpriteDirection() const; + /** + * Trigger visual effect, with components + * + * \param effectId ID of the effect to trigger + * \param sfx Whether to trigger sound effects + * \param gfx Whether to trigger graphical effects + */ + void + internalTriggerEffect(int effectId, bool sfx, bool gfx); + Uint32 mId; /**< Unique sprite id */ Uint16 mWalkSpeed; /**< Walking speed */ Uint8 mDirection; /**< Facing direction */ diff --git a/src/engine.cpp b/src/engine.cpp index d4033193..b53608be 100644 --- a/src/engine.cpp +++ b/src/engine.cpp @@ -120,6 +120,7 @@ void Engine::changeMap(const std::string &mapPath) } mCurrentMap = newMap; + mMapName = mapPath; // Send "map loaded" MessageOut outMsg(mNetwork); diff --git a/src/engine.h b/src/engine.h index 4575051e..52f1e63a 100644 --- a/src/engine.h +++ b/src/engine.h @@ -25,6 +25,7 @@ #define _ENGINE_H #include +#include class Map; class Network; @@ -51,6 +52,9 @@ class Engine */ Map *getCurrentMap() { return mCurrentMap; } + const std::string &getCurrentMapName() { return mMapName; } + + /** * Sets the currently active map. */ @@ -64,6 +68,7 @@ class Engine private: Map *mCurrentMap; Network *mNetwork; + std::string mMapName; }; extern Engine *engine; diff --git a/src/gui/ministatus.cpp b/src/gui/ministatus.cpp index 8f121368..077e2331 100644 --- a/src/gui/ministatus.cpp +++ b/src/gui/ministatus.cpp @@ -98,7 +98,7 @@ void MiniStatusWindow::update() } mHpBar->setProgress((float) player_node->mHp / player_node->mMaxHp); - // mMpBar->setProgress((float) player_node->mMp / player_node->mMaxMp); + mMpBar->setProgress((float) player_node->mMp / player_node->mMaxMp); mXpBar->setProgress( (float) player_node->getXp() / player_node->mXpForNextLevel); diff --git a/src/net/beinghandler.cpp b/src/net/beinghandler.cpp index c43c674f..7a0be952 100644 --- a/src/net/beinghandler.cpp +++ b/src/net/beinghandler.cpp @@ -36,7 +36,9 @@ #include "../main.h" #include "../particle.h" #include "../sound.h" +#include #include "../player_relations.h" +#include "../npc.h" const int EMOTION_TIME = 150; /**< Duration of emotion icon */ @@ -49,7 +51,7 @@ BeingHandler::BeingHandler(bool enableSync): SMSG_BEING_MOVE2, SMSG_BEING_REMOVE, SMSG_BEING_ACTION, - SMSG_BEING_LEVELUP, + SMSG_BEING_SELFEFFECT, SMSG_BEING_EMOTION, SMSG_BEING_CHANGE_LOOKS, SMSG_BEING_CHANGE_LOOKS2, @@ -208,6 +210,9 @@ void BeingHandler::handleMessage(MessageIn *msg) player_node->stopAttack(); } + if (dstBeing == current_npc) + current_npc = NULL; + if (msg->readInt8() == 1) { dstBeing->setAction(Being::DEAD); @@ -258,27 +263,17 @@ void BeingHandler::handleMessage(MessageIn *msg) } break; - case SMSG_BEING_LEVELUP: + case SMSG_BEING_SELFEFFECT: { id = (Uint32)msg->readInt32(); + if (!beingManager->findBeing(id)) + break; + + int effectType = msg->readInt32(); + + beingManager->findBeing(id)->triggerEffect(effectType); - if (id == player_node->getId()) { - logger->log("Level up"); - sound.playSfx("sfx/levelup.ogg"); - } - else { - logger->log("Someone else went level up"); - } - Particle *levelupFX; - if (msg->readInt32() == 0) { // type - levelupFX = particleEngine->addEffect( - "graphics/particles/levelup.particle.xml", 0, 0); - } - else { - levelupFX = particleEngine->addEffect( - "graphics/particles/skillup.particle.xml", 0, 0); - } - beingManager->findBeing(id)->controlParticle(levelupFX); break; + } case SMSG_BEING_EMOTION: if (!(dstBeing = beingManager->findBeing(msg->readInt32()))) @@ -513,3 +508,4 @@ void BeingHandler::handleMessage(MessageIn *msg) break; } } + diff --git a/src/net/playerhandler.cpp b/src/net/playerhandler.cpp index 463868db..27d4e601 100644 --- a/src/net/playerhandler.cpp +++ b/src/net/playerhandler.cpp @@ -52,6 +52,9 @@ extern BuyDialog *buyDialog; extern SellDialog *sellDialog; extern Window *buySellDialog; +static const int MAP_TELEPORT_SCROLL_DISTANCE = 8; /* Max. distance we are willing to scroll after a teleport; + ** everything beyond will reset the port hard. */ + /** * Listener used for handling the overweigth message. */ @@ -118,6 +121,7 @@ void PlayerHandler::handleMessage(MessageIn *msg) case SMSG_PLAYER_WARP: { std::string mapPath = msg->readString(16); + bool nearby; Uint16 x = msg->readInt16(); Uint16 y = msg->readInt16(); @@ -129,13 +133,22 @@ void PlayerHandler::handleMessage(MessageIn *msg) */ player_node->stopAttack(); - // Switch the actual map, deleting the previous one + nearby = (engine->getCurrentMapName() == mapPath); + // Switch the actual map, deleting the previous one if necessary engine->changeMap(mapPath); current_npc = 0; - float scrollOffsetX = (x - player_node->mX) * 32; - float scrollOffsetY = (y - player_node->mY) * 32; + float scrollOffsetX = 0.0f; + float scrollOffsetY = 0.0f; + + /* Scroll if neccessary */ + if (!nearby + || (abs(x - player_node->mX) > MAP_TELEPORT_SCROLL_DISTANCE) + || (abs(y - player_node->mY) > MAP_TELEPORT_SCROLL_DISTANCE)) { + scrollOffsetX = (x - player_node->mX) * 32; + scrollOffsetY = (y - player_node->mY) * 32; + } player_node->setAction(Being::STAND); player_node->mFrame = 0; diff --git a/src/net/protocol.h b/src/net/protocol.h index a2aa50c3..49c177a2 100644 --- a/src/net/protocol.h +++ b/src/net/protocol.h @@ -63,7 +63,7 @@ #define SMSG_BEING_REMOVE 0x0080 #define SMSG_BEING_CHANGE_LOOKS 0x00c3 #define SMSG_BEING_CHANGE_LOOKS2 0x01d7 /**< Same as 0x00c3, but 16 bit ID */ -#define SMSG_BEING_LEVELUP 0x019b +#define SMSG_BEING_SELFEFFECT 0x019b #define SMSG_BEING_EMOTION 0x00c0 #define SMSG_BEING_ACTION 0x008a /**< Attack, sit, stand up, ... */ #define SMSG_BEING_CHAT 0x008d /**< A being talks */ diff --git a/src/particle.h b/src/particle.h index d9b8c6b7..f281864d 100644 --- a/src/particle.h +++ b/src/particle.h @@ -160,6 +160,9 @@ class Particle : public Sprite moveBy(float x, float y, float z) { mPos.x += x; mPos.y += y; mPos.z += z; } + void + moveChildren(Vector change); + void moveBy (Vector change) { mPos += change; } @@ -270,6 +273,12 @@ class Particle : public Sprite bool isAlive() { return mAlive; } + /** + * Determines whether the particle and its children are all dead + */ + bool isExtinct() + { return !isAlive() && mChildParticles.empty(); } + /** * Manually marks the particle for deletion. */ diff --git a/src/player.h b/src/player.h index f43a6039..fe24ceed 100644 --- a/src/player.h +++ b/src/player.h @@ -94,6 +94,14 @@ class Player : public Being virtual PlayerNameDrawStrategy * getNameDrawStrategy(void) const { return mDrawStrategy; } + /** + * Triggers a visual/audio effect, such as `level up' + * + * \param effect_id ID of the effect to trigger + */ + virtual void + triggerEffect(int effectId) { internalTriggerEffect(effectId, true, true); } + private: PlayerNameDrawStrategy *mDrawStrategy; }; -- cgit v1.2.3-60-g2f50 From 9a8456c6c95f5d95c568664ba5adaeb466cfbb0d Mon Sep 17 00:00:00 2001 From: Bjørn Lindeijer Date: Thu, 28 Aug 2008 19:31:17 +0000 Subject: Fixed crash when map layer has too many tiles. --- ChangeLog | 2 ++ src/resources/mapreader.cpp | 8 +++++++- 2 files changed, 9 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/ChangeLog b/ChangeLog index 580fbca7..70ae300b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -17,6 +17,8 @@ works around an initialization bug. * data/help/index.txt, data/help/windows.txt: Included some documentation for the shortcut window by Vq. + * src/resources/mapreader.cpp: Fixed crash when map layer has too many + tiles. 2008-08-28 Philipp Sehmisch diff --git a/src/resources/mapreader.cpp b/src/resources/mapreader.cpp index 328b66e0..af3fc0ef 100644 --- a/src/resources/mapreader.cpp +++ b/src/resources/mapreader.cpp @@ -407,7 +407,13 @@ MapReader::readLayer(xmlNodePtr node, Map *map) setTile(map, layer, x, y, gid); x++; - if (x == w) {x = 0; y++;} + if (x == w) { + x = 0; y++; + + // When we're done, don't crash on too much data + if (y == h) + break; + } } free(binData); } -- cgit v1.2.3-60-g2f50 From bdb09d26fc6c489228cb2c28be75024f9a49eb75 Mon Sep 17 00:00:00 2001 From: Bjørn Lindeijer Date: Thu, 28 Aug 2008 20:29:06 +0000 Subject: Accepted Patch by Scraggy that moves text in such a way that no text overlaps --- ChangeLog | 11 +++ src/Makefile.am | 4 ++ src/being.cpp | 50 ++++++++----- src/being.h | 28 ++++---- src/gui/viewport.cpp | 28 ++------ src/localplayer.cpp | 28 +++++++- src/localplayer.h | 11 +-- src/monster.cpp | 45 +++++++++++- src/monster.h | 20 ++++++ src/npc.cpp | 39 +++++++---- src/npc.h | 11 ++- src/player.cpp | 65 +++++++++-------- src/player.h | 47 ++++--------- src/player_relations.cpp | 32 ++------- src/text.cpp | 104 +++++++++++++++++++++++++++ src/text.h | 96 +++++++++++++++++++++++++ src/textmanager.cpp | 179 +++++++++++++++++++++++++++++++++++++++++++++++ src/textmanager.h | 78 +++++++++++++++++++++ 18 files changed, 703 insertions(+), 173 deletions(-) create mode 100644 src/text.cpp create mode 100644 src/text.h create mode 100644 src/textmanager.cpp create mode 100644 src/textmanager.h (limited to 'src') diff --git a/ChangeLog b/ChangeLog index 70ae300b..a89dc660 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,14 @@ +2008-08-28 Douglas Boffey + + * src/localplayer.cpp, src/text.h, src/gui/viewport.cpp, src/npc.cpp, + src/textmanager.h, src/player.cpp, src/monster.h, src/textmanager.cpp, + src/being.cpp, src/npc.h, src/monster.cpp, src/player.h, + src/localplayer.h, src/player_relations.cpp, src/text.cpp, + src/Makefile.am, src/being.h: Move any chat, character names, NPC + names or targetted mob names so that no text will obscure any other + text. If there is no decent place for the text, it will default to + overlapping. + 2008-08-28 Fate * src/engine.h, src/gui/ministatus.cpp, src/engine.cpp, diff --git a/src/Makefile.am b/src/Makefile.am index 3156a800..340f1947 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -291,6 +291,10 @@ tmw_SOURCES = gui/widgets/resizegrip.cpp \ sound.cpp \ sound.h \ sprite.h \ + text.cpp \ + text.h \ + textmanager.cpp \ + textmanager.h \ textparticle.cpp \ textparticle.h \ tileset.h \ diff --git a/src/being.cpp b/src/being.cpp index 1880e7c0..dca87677 100644 --- a/src/being.cpp +++ b/src/being.cpp @@ -34,6 +34,7 @@ #include "particle.h" #include "sound.h" #include "localplayer.h" +#include "text.h" #include "resources/resourcemanager.h" #include "resources/imageset.h" @@ -51,6 +52,9 @@ int Being::instances = 0; ImageSet *Being::emotionSet = NULL; +static const int X_SPEECH_OFFSET = 18; +static const int Y_SPEECH_OFFSET = 60; + Being::Being(int id, int job, Map *map): mJob(job), mX(0), mY(0), @@ -83,6 +87,7 @@ Being::Being(int id, int job, Map *map): } instances++; + mSpeech = 0; } Being::~Being() @@ -106,6 +111,8 @@ Being::~Being() emotionSet->decRef(); emotionSet = NULL; } + + delete mSpeech; } void @@ -153,7 +160,12 @@ Being::setSprite(int slot, int id, std::string color) void Being::setSpeech(const std::string &text, Uint32 time) { - mSpeech = text; + // don't introduce a memory leak + delete mSpeech; + + mSpeech = new Text(text, mPx + X_SPEECH_OFFSET, mPy - Y_SPEECH_OFFSET, + gcn::Graphics::CENTER, speechFont, + gcn::Color(255, 255, 255)); mSpeechTime = 500; } @@ -361,13 +373,28 @@ void Being::logic() { // Reduce the time that speech is still displayed - if (mSpeechTime > 0) - mSpeechTime--; + if (mSpeechTime > 0 && mSpeech) + { + if (--mSpeechTime == 0) + { + delete mSpeech; + mSpeech = 0; + } + } + int oldPx = mPx; + int oldPy = mPy; // Update pixel coordinates mPx = mX * 32 + getXOffset(); mPy = mY * 32 + getYOffset(); - + if (mPx != oldPx || mPy != oldPy) + { + if (mSpeech) + { + mSpeech->adviseXY(mPx + X_SPEECH_OFFSET, mPy - Y_SPEECH_OFFSET); + } + updateCoords(); + } if (mEmotion != 0) { mEmotionTime--; @@ -432,21 +459,6 @@ Being::drawEmotion(Graphics *graphics, int offsetX, int offsetY) graphics->drawImage(emotionSet->get(emotionIndex), px, py); } -void -Being::drawSpeech(Graphics *graphics, int offsetX, int offsetY) -{ - int px = mPx + offsetX; - int py = mPy + offsetY; - - // Draw speech above this being - if (mSpeechTime > 0) - { - graphics->setFont(speechFont); - graphics->setColor(gcn::Color(255, 255, 255)); - graphics->drawText(mSpeech, px + 18, py - 60, gcn::Graphics::CENTER); - } -} - Being::Type Being::getType() const { diff --git a/src/being.h b/src/being.h index c4f34503..d5fe7790 100644 --- a/src/being.h +++ b/src/being.h @@ -47,6 +47,7 @@ class Map; class Graphics; class ImageSet; class Particle; +class Text; /** * A position along a being's path. @@ -187,7 +188,7 @@ class Being : public Sprite * * @param name The name that should appear. */ - void + virtual void setName(const std::string &name) { mName = name; } /** @@ -238,24 +239,12 @@ class Being : public Sprite virtual void logic(); - /** - * Draws the speech text above the being. - */ - void - drawSpeech(Graphics *graphics, int offsetX, int offsetY); - /** * Draws the emotion picture above the being. */ void drawEmotion(Graphics *graphics, int offsetX, int offsetY); - /** - * Draws the name text below the being. - */ - virtual void - drawName(Graphics *, int, int) {}; - /** * Returns the type of the being. */ @@ -363,7 +352,11 @@ class Being : public Sprite */ void controlParticle(Particle *particle); - void setEmote(Uint8 emotion, Uint8 emote_time) { mEmotion = emotion; mEmotionTime = emote_time; } + void setEmote(Uint8 emotion, Uint8 emote_time) + { + mEmotion = emotion; + mEmotionTime = emote_time; + } /** * Triggers a visual effect, such as `level up' @@ -383,6 +376,11 @@ class Being : public Sprite */ void setPath(const Path &path); + /** + * Let the sub-classes react to a replacement + */ + virtual void updateCoords() {} + /** * Returns the sprite direction of this being. */ @@ -409,7 +407,7 @@ class Being : public Sprite const ItemInfo* mEquippedWeapon; Path mPath; - std::string mSpeech; + Text *mSpeech; Uint16 mHairStyle, mHairColor; Uint8 mGender; Uint32 mSpeechTime; diff --git a/src/gui/viewport.cpp b/src/gui/viewport.cpp index 9d1e5a1d..e8293acf 100644 --- a/src/gui/viewport.cpp +++ b/src/gui/viewport.cpp @@ -37,6 +37,7 @@ #include "../map.h" #include "../monster.h" #include "../npc.h" +#include "../textmanager.h" #include "../resources/animation.h" #include "../resources/monsterinfo.h" @@ -226,7 +227,6 @@ Viewport::draw(gcn::Graphics *gcnGraphics) { mMap->draw(graphics, (int) mPixelViewX, (int) mPixelViewY); drawTargetCursor(graphics); // TODO: Draw the cursor with the sprite - drawTargetName(graphics); } // Find a path from the player to the mouse, and draw it. This is for debug @@ -257,12 +257,16 @@ Viewport::draw(gcn::Graphics *gcnGraphics) } } + // Draw text + if (textManager) + { + textManager->draw(graphics, mPixelViewX, mPixelViewY); + } + // Draw player names, speech, and emotion sprite as needed Beings &beings = beingManager->getAll(); for (BeingIterator i = beings.begin(); i != beings.end(); i++) { - (*i)->drawSpeech(graphics, -(int) mPixelViewX, -(int) mPixelViewY); - (*i)->drawName(graphics, -(int) mPixelViewX, -(int) mPixelViewY); (*i)->drawEmotion(graphics, -(int) mPixelViewX, -(int) mPixelViewY); } @@ -329,24 +333,6 @@ Viewport::drawTargetCursor(Graphics *graphics) } } -void -Viewport::drawTargetName(Graphics *graphics) -{ - // Draw target marker if needed - Being *target = player_node->getTarget(); - if (target && target->getType() == Being::MONSTER) - { - graphics->setFont(speechFont); - graphics->setColor(gcn::Color(255, 32, 32)); - - const MonsterInfo &mi = static_cast(target)->getInfo(); - int posX = target->getPixelX() + 16 - (int)mPixelViewX; - int posY = target->getPixelY() + 16 - target->getHeight() - (int)mPixelViewY; - - graphics->drawText(mi.getName(), posX, posY, gcn::Graphics::CENTER); - } -} - void Viewport::mousePressed(gcn::MouseEvent &event) { diff --git a/src/localplayer.cpp b/src/localplayer.cpp index 3929da8b..3caa5ead 100644 --- a/src/localplayer.cpp +++ b/src/localplayer.cpp @@ -31,6 +31,7 @@ #include "main.h" #include "particle.h" #include "sound.h" +#include "monster.h" #include "gui/gui.h" @@ -226,6 +227,23 @@ void LocalPlayer::walk(unsigned char dir) } } +void LocalPlayer::setTarget(Being *target) +{ + if (target == mTarget) + { + return; + } + if (mTarget && mTarget->getType() == Being::MONSTER) + { + static_cast(mTarget)->showName(false); + } + mTarget = target; + if (target && target->getType() == Being::MONSTER) + { + static_cast(target)->showName(true); + } +} + void LocalPlayer::setDestination(Uint16 x, Uint16 y) { // Only send a new message to the server when destination changes @@ -363,9 +381,13 @@ void LocalPlayer::attack(Being *target, bool keep) return; if (keep && target) - mTarget = target; + { + setTarget(target); + } else if (mTarget) + { target = mTarget; + } if (!target) return; @@ -411,7 +433,7 @@ void LocalPlayer::attack(Being *target, bool keep) void LocalPlayer::stopAttack() { - mTarget = NULL; + setTarget(NULL); } Being* LocalPlayer::getTarget() const @@ -454,7 +476,7 @@ bool LocalPlayer::withinAttackRange(Being *target) void LocalPlayer::setGotoTarget(Being *target) { - mTarget = target; + setTarget(target); mGoingToTarget = true; setDestination(target->mX, target->mY); } diff --git a/src/localplayer.h b/src/localplayer.h index 5ce94081..493e0846 100644 --- a/src/localplayer.h +++ b/src/localplayer.h @@ -54,8 +54,9 @@ class LocalPlayer : public Player */ ~LocalPlayer(); + void setName(const std::string &name) {Being::setName(name); } void setNetwork(Network *network) { mNetwork = network; } - + Network *getNetwork() {return mNetwork; } virtual void logic(); /** @@ -64,12 +65,6 @@ class LocalPlayer : public Player */ virtual void nextStep(); - /** - * Draws the name text below the being. - */ - virtual void - drawName(Graphics *graphics, Sint32 offsetX, Sint32 offsetY) {}; - /** * Returns the player's inventory. */ @@ -140,7 +135,7 @@ class LocalPlayer : public Player /** * Sets the target being of the player. */ - void setTarget(Being* target) { mTarget = target; } + void setTarget(Being* target); /** * Sets a new destination for this being to walk to. diff --git a/src/monster.cpp b/src/monster.cpp index e2a07e86..bea37b3f 100644 --- a/src/monster.cpp +++ b/src/monster.cpp @@ -27,14 +27,21 @@ #include "game.h" #include "sound.h" #include "particle.h" +#include "text.h" +#include "localplayer.h" + +#include "gui/gui.h" #include "resources/monsterdb.h" #include "utils/tostring.h" +static const int NAME_X_OFFSET = 16; +static const int NAME_Y_OFFSET = 16; Monster::Monster(Uint32 id, Uint16 job, Map *map): - Being(id, job, map) + Being(id, job, map), + mText(0) { const MonsterInfo& info = MonsterDB::get(job - 1002); @@ -59,6 +66,14 @@ Monster::Monster(Uint32 id, Uint16 job, Map *map): } } +Monster::~Monster() +{ + if (mText) + { + player_node->setTarget(0); + } +} + void Monster::logic() { @@ -120,7 +135,8 @@ Monster::handleAttack(Being *victim, int damage) Being::handleAttack(victim, damage); const MonsterInfo &mi = getInfo(); - sound.playSfx(mi.getSound((damage > 0) ? MONSTER_EVENT_HIT : MONSTER_EVENT_MISS)); + sound.playSfx(mi.getSound((damage > 0) ? + MONSTER_EVENT_HIT : MONSTER_EVENT_MISS)); } void @@ -141,3 +157,28 @@ Monster::getInfo() const { return MonsterDB::get(mJob - 1002); } + +void Monster::showName(bool show) +{ + delete mText; + if (show) + { + mText = new Text(getInfo().getName(), mPx + NAME_X_OFFSET, + mPy + NAME_Y_OFFSET - getHeight(), + gcn::Graphics::CENTER, + speechFont, gcn::Color(255, 32, 32)); + } + else + { + mText = 0; + } +} + +void Monster::updateCoords() +{ + if (mText) + { + mText->adviseXY(mPx + NAME_X_OFFSET, + mPy + NAME_Y_OFFSET - getHeight()); + } +} diff --git a/src/monster.h b/src/monster.h index 39556b44..cd34886b 100644 --- a/src/monster.h +++ b/src/monster.h @@ -27,12 +27,15 @@ #include "being.h" class MonsterInfo; +class Text; class Monster : public Being { public: Monster(Uint32 id, Uint16 job, Map *map); + ~Monster(); + virtual void logic(); virtual void setAction(Uint8 action); @@ -63,6 +66,23 @@ class Monster : public Being */ const MonsterInfo& getInfo() const; + + /** + * Determine whether the mob should show it's name + */ + void showName(bool show); + + protected: + /** + * Update the text when the monster moves + */ + void updateCoords(); + + private: + /** + * holds a text object when the mod displays it's name, 0 otherwise + */ + Text *mText; }; #endif diff --git a/src/npc.cpp b/src/npc.cpp index 2177aedc..ab3c6970 100644 --- a/src/npc.cpp +++ b/src/npc.cpp @@ -26,6 +26,7 @@ #include "animatedsprite.h" #include "graphics.h" #include "particle.h" +#include "text.h" #include "net/messageout.h" #include "net/protocol.h" @@ -35,12 +36,15 @@ NPC *current_npc = 0; +static const int NAME_X_OFFSET = 15; +static const int NAME_Y_OFFSET = 30; + NPC::NPC(Uint32 id, Uint16 job, Map *map, Network *network): Being(id, job, map), mNetwork(network) { NPCInfo info = NPCDB::get(job); - //setup NPC sprites + // Setup NPC sprites int c = BASE_SPRITE; for (std::list::const_iterator i = info.sprites.begin(); i != info.sprites.end(); @@ -54,7 +58,7 @@ NPC::NPC(Uint32 id, Uint16 job, Map *map, Network *network): c++; } - //setup particle effects + // Setup particle effects for (std::list::const_iterator i = info.particles.begin(); i != info.particles.end(); i++) @@ -62,23 +66,26 @@ NPC::NPC(Uint32 id, Uint16 job, Map *map, Network *network): Particle *p = particleEngine->addEffect(*i, 0, 0); this->controlParticle(p); } + mName = 0; } -Being::Type -NPC::getType() const +NPC::~NPC() { - return Being::NPC; + delete mName; } -void -NPC::drawName(Graphics *graphics, Sint32 offsetX, Sint32 offsetY) +void NPC::setName(const std::string &name) { - int px = mPx + offsetX; - int py = mPy + offsetY; + delete mName; + mName = new Text(name, mPx + NAME_X_OFFSET, mPy + NAME_Y_OFFSET, + gcn::Graphics::CENTER, speechFont, + gcn::Color(200, 200, 255)); +} - graphics->setFont(speechFont); - graphics->setColor(gcn::Color(200, 200, 255)); - graphics->drawText(mName, px + 15, py + 30, gcn::Graphics::CENTER); +Being::Type +NPC::getType() const +{ + return Being::NPC; } void @@ -129,3 +136,11 @@ NPC::sell() outMsg.writeInt32(mId); outMsg.writeInt8(1); } + +void NPC::updateCoords() +{ + if (mName) + { + mName->adviseXY(mPx + NAME_X_OFFSET, mPy + NAME_Y_OFFSET); + } +} diff --git a/src/npc.h b/src/npc.h index 0d9966bd..2f9bbef4 100644 --- a/src/npc.h +++ b/src/npc.h @@ -28,18 +28,20 @@ class Network; class Graphics; +class Text; class NPC : public Being { public: NPC(Uint32 id, Uint16 job, Map *map, Network *network); + ~NPC(); + + void setName(const std::string &name); + virtual Type getType() const; - virtual void - drawName(Graphics *graphics, Sint32 offsetX, Sint32 offsetY); - void talk(); void nextDialog(); void dialogChoice(char choice); @@ -49,6 +51,9 @@ class NPC : public Being protected: Network *mNetwork; + void updateCoords(); + private: + Text *mName; }; extern NPC *current_npc; diff --git a/src/player.cpp b/src/player.cpp index d0c6bdc6..f86e7179 100644 --- a/src/player.cpp +++ b/src/player.cpp @@ -34,11 +34,34 @@ #include "utils/strprintf.h" #include "gui/gui.h" +#include + +static const int NAME_X_OFFSET = 15; +static const int NAME_Y_OFFSET = 30; Player::Player(int id, int job, Map *map): - Being(id, job, map), - mDrawStrategy(NULL) + Being(id, job, map) { + mName = 0; +} + +Player::~Player() +{ + if (mName) + { + delete mName; + } +} + +void Player::setName(const std::string &name) +{ + if (mName == 0) + { + mName = new FlashText(name, mPx + NAME_X_OFFSET, mPy + NAME_Y_OFFSET, + gcn::Graphics::CENTER, + speechFont, gcn::Color(255, 255, 255)); + Being::setName(name); + } } void @@ -75,37 +98,13 @@ Player::getType() const return PLAYER; } - void -Player::setNameDrawStrategy(PlayerNameDrawStrategy *draw_strategy) +Player::flash(int time) { - if (mDrawStrategy) - delete mDrawStrategy; - mDrawStrategy = draw_strategy; -} - -class -DefaultPlayerNameDrawStrategy : public PlayerNameDrawStrategy -{ -public: - virtual void draw(Player *player, Graphics *graphics, int px, int py) + if (mName) { - graphics->setFont(speechFont); - graphics->setColor(gcn::Color(255, 255, 255)); - graphics->drawText(player->getName(), px + 15, py + 30, gcn::Graphics::CENTER); + mName->flash(time); } -}; - -void -Player::drawName(Graphics *graphics, int offsetX, int offsetY) -{ - int px = mPx + offsetX; - int py = mPy + offsetY; - - if (mDrawStrategy) - mDrawStrategy->draw(this, graphics, px, py); - else - DefaultPlayerNameDrawStrategy().draw(this, graphics, px, py); } void Player::setGender(int gender) @@ -202,3 +201,11 @@ void Player::setSprite(int slot, int id, std::string color) Being::setSprite(slot, id, color); } + +void Player::updateCoords() +{ + if (mName) + { + mName->adviseXY(mPx + NAME_X_OFFSET, mPy + NAME_Y_OFFSET); + } +} diff --git a/src/player.h b/src/player.h index fe24ceed..6347b0a6 100644 --- a/src/player.h +++ b/src/player.h @@ -25,23 +25,11 @@ #define _TMW_PLAYER_H #include "being.h" +#include "text.h" class Graphics; class Map; -class Player; - -class PlayerNameDrawStrategy -{ -public: - virtual ~PlayerNameDrawStrategy(void) {} - - /** - * Draw the player's name - */ - virtual void draw(Player *p, Graphics *graphics, int px, int py) = 0; -}; - /** * A player being. Players have their name drawn beneath them. This class also * implements player-specific loading of base sprite, hair sprite and equipment @@ -52,15 +40,20 @@ class Player : public Being public: Player(int id, int job, Map *map); + ~Player(); + + /** + * Set up mName to be the character's name + */ + virtual void + setName(const std::string &name); + virtual void logic(); virtual Type getType() const; - virtual void - drawName(Graphics *graphics, int offsetX, int offsetY); - virtual void setGender(int gender); @@ -83,27 +76,15 @@ class Player : public Being setSprite(int slot, int id, std::string color = ""); /** - * Sets the strategy responsible for drawing the player's name - * - * \param draw_strategy A strategy describing how the player's name - * should be drawn, or NULL for default + * Flash the player's name */ - virtual void - setNameDrawStrategy(PlayerNameDrawStrategy *draw_strategy); - - virtual PlayerNameDrawStrategy * - getNameDrawStrategy(void) const { return mDrawStrategy; } + void flash(int time); - /** - * Triggers a visual/audio effect, such as `level up' - * - * \param effect_id ID of the effect to trigger - */ - virtual void - triggerEffect(int effectId) { internalTriggerEffect(effectId, true, true); } + protected: + void updateCoords(); private: - PlayerNameDrawStrategy *mDrawStrategy; + FlashText *mName; }; #endif diff --git a/src/player_relations.cpp b/src/player_relations.cpp index 610f5d04..c494dc74 100644 --- a/src/player_relations.cpp +++ b/src/player_relations.cpp @@ -88,7 +88,7 @@ PlayerRelationsManager::PlayerRelationsManager() : mDefaultPermissions(PlayerRelation::DEFAULT), mIgnoreStrategy(NULL) { -} +} void PlayerRelationsManager::clear() @@ -325,29 +325,6 @@ public: }; -class -BlinkPlayerNameDrawStrategy : public PlayerNameDrawStrategy -{ -public: - BlinkPlayerNameDrawStrategy(int count) : - mCount(count) - { - } - - virtual void draw(Player *player, Graphics *graphics, int px, int py) - { - graphics->setFont(speechFont); - if (mCount & 4) - graphics->drawText(player->getName(), px + 15, py + 30, gcn::Graphics::CENTER); - - if (mCount-- <= 0) - player->setNameDrawStrategy(NULL); - } -private: - int mCount; // Number of steps to blink -}; - - class PIS_blinkname : public PlayerIgnoreStrategy { public: @@ -359,9 +336,9 @@ public: virtual void ignore(Player *player, unsigned int flags) - { - player->setNameDrawStrategy(new BlinkPlayerNameDrawStrategy(200)); - } + { + player->flash(200); + } }; class PIS_emote : public PlayerIgnoreStrategy @@ -407,4 +384,3 @@ PlayerRelationsManager::getPlayerIgnoreStrategies() PlayerRelationsManager player_relations; - diff --git a/src/text.cpp b/src/text.cpp new file mode 100644 index 00000000..4212c5c8 --- /dev/null +++ b/src/text.cpp @@ -0,0 +1,104 @@ +/* + * The Mana World + * Copyright 2008 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 "text.h" + +#include + +#include + +#include "textmanager.h" + +int Text::mInstances = 0; + + +Text::Text(const std::string &text, int x, int y, + gcn::Graphics::Alignment alignment, gcn::Font *font, + gcn::Color colour) : + mText(text), mColour(colour) +{ + if (textManager == 0) + { + textManager = new TextManager(); + } + ++mInstances; + mHeight = font->getHeight(); + mWidth = font->getWidth(text); + switch (alignment) + { + case gcn::Graphics::LEFT: + mXOffset = 0; + break; + case gcn::Graphics::CENTER: + mXOffset = mWidth / 2; + break; + case gcn::Graphics::RIGHT: + mXOffset = mWidth; + break; + } + mX = x - mXOffset; + mY = y; + textManager->addText(this); + mFont = font; +} + +void Text::adviseXY(int x, int y) +{ + textManager->moveText(this, x - mXOffset, y); +} + +Text::~Text() +{ + textManager->removeText(this); + if (--mInstances == 0) + { + delete textManager; + textManager = 0; + } +} + +void Text::draw(Graphics *graphics, int xOff, int yOff) +{ + graphics->setFont(mFont); + graphics->setColor(mColour); + graphics->drawText(mText, mX - xOff, mY - yOff, gcn::Graphics::LEFT); +} + +FlashText::FlashText(const std::string &text, int x, int y, + gcn::Graphics::Alignment alignment, gcn::Font *font, + gcn::Color colour) : + Text(text, x, y, alignment, font, colour), mTime(0) +{ +} + +void FlashText::draw(Graphics *graphics, int xOff, int yOff) +{ + if (mTime) + { + if ((--mTime & 4) == 0) + { + return; + } + } + Text::draw(graphics, xOff, yOff); +} diff --git a/src/text.h b/src/text.h new file mode 100644 index 00000000..7ea96dee --- /dev/null +++ b/src/text.h @@ -0,0 +1,96 @@ +/* + * The Mana World + * Copyright 2008 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_TEXT_H +#define _TMW_TEXT_H + +#include "graphics.h" + +#include + +class TextManager; + +class Text +{ + friend class TextManager; + public: + /** + * Constructor creates a text object to display on the screen + */ + Text(const std::string &text, int x, int y, + gcn::Graphics::Alignment alignment, gcn::Font *font, + gcn::Color colour); + + /** + * Allows the originator of the text to specify the ideal coordinates + */ + void + adviseXY(int x, int y); + + /** + * Remove the text from the screen + */ + ~Text(); + + /** + * Draws the text + */ + virtual void + draw(Graphics *graphics, int xOff, int yOff); + + private: + + int mX; /**< Actual x-value of left of text written */ + int mY; /**< Actual y-value of top of text written */ + int mWidth; /**< The width of the text */ + int mHeight; /**< The height of the text */ + int mXOffset; /**< The offset of mX from the desired x */ + static int mInstances; /**< Instances of text */ + gcn::Font *mFont; /**< The font used */ + std::string mText; /**< The text to display */ + gcn::Color mColour; /**< The colour of the text */ +}; + +class FlashText : public Text +{ + public: + FlashText(const std::string &text, int x, int y, + gcn::Graphics::Alignment alignment, gcn::Font *font, + gcn::Color colour); + + /** + * Flash the text for so many refreshes + */ + void flash(int time) {mTime = time; } + + /** + * Draws the text + */ + virtual void + draw(Graphics *graphics, int xOff, int yOff); + + private: + int mTime; /**< Time left for flashing */ +}; + +#endif // _TMW_TEXT_H diff --git a/src/textmanager.cpp b/src/textmanager.cpp new file mode 100644 index 00000000..b4135763 --- /dev/null +++ b/src/textmanager.cpp @@ -0,0 +1,179 @@ +/* + * The Mana World + * Copyright 2008 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 "textmanager.h" + +#include + +#include "text.h" + +TextManager *textManager = 0; + +TextManager::TextManager() +{ +} + +void TextManager::addText(Text *text) +{ + place(text, 0, text->mX, text->mY, text->mHeight); + mTextList.push_back(text); +} + +void TextManager::moveText(Text *text, int x, int y) +{ + text->mX = x; + text->mY = y; + place(text, text, text->mX, text->mY, text->mHeight); +} + +void TextManager::removeText(const Text *text) +{ + for (TextList::iterator ptr = mTextList.begin(), + pEnd = mTextList.end(); ptr != pEnd; ++ptr) + { + if (*ptr == text) + { + mTextList.erase(ptr); + return; + } + } +} + +TextManager::~TextManager() +{ +} + +void TextManager::draw(Graphics *graphics, int xOff, int yOff) +{ + for (TextList::iterator bPtr = mTextList.begin(), ePtr = mTextList.end(); + bPtr != ePtr; ++bPtr) + { + (*bPtr)->draw(graphics, xOff, yOff); + } +} + +void TextManager::place(const Text *textObj, const Text *omit, + int &x, int &y, int h) +{ + int xLeft = textObj->mX; + int xRight = xLeft + textObj->mWidth - 1; + const int TEST = 100; // Number of lines to test for text + bool occupied[TEST]; // is some other text obscuring this line? + std::memset(&occupied, 0, sizeof(occupied)); // set all to false + int wantedTop = (TEST - h) / 2; // Entry in occupied at top of text + int occupiedTop = y - wantedTop; // Line in map representing to of occupied + + for (TextList::const_iterator ptr = mTextList.begin(), + pEnd = mTextList.end(); ptr != pEnd; ++ptr) + { + if (*ptr != omit && + (*ptr)->mX <= xRight && + (*ptr)->mX + (*ptr)->mWidth > xLeft) + { + int from = (*ptr)->mY - occupiedTop; + int to = from + (*ptr)->mHeight - 1; + if (to < 0 || from >= TEST) // out of range considered + { + continue; + } + if (from < 0) + { + from = 0; + } + if (to >= TEST) + { + to = TEST - 1; + } + for (int i = from; i <= to; ++i) + { + occupied[i] = true; + } + } + } + bool ok = true; + for (int i = wantedTop; i < wantedTop + h; ++i) + { + ok = ok && !occupied[i]; + } + if (ok) + { + return; + } + // Have to move it up or down, so find nearest spaces either side + int consec = 0; + int upSlot = -1; // means not found + for (int seek = wantedTop + h - 2; seek >= 0; --seek) + { + if (occupied[seek]) + { + consec = 0; + } + else + { + if (++consec == h) + { + upSlot = seek; + break; + } + } + } + int downSlot = -1; + consec = 0; + for (int seek = wantedTop + 1; seek < TEST; ++seek) + { + if (occupied[seek]) + { + consec = 0; + } + else + { + if (++consec == h) + { + downSlot = seek - h + 1; + break; + } + } + } + if (upSlot == -1 && downSlot == -1) // no good solution, so leave as is + { + return; + } + if (upSlot == -1) // must go down + { + y += downSlot - wantedTop; + return; + } + if (downSlot == -1) // must go up + { + y -= wantedTop - upSlot; + return; + } + if (wantedTop - upSlot > downSlot - wantedTop) // down is better + { + y += downSlot - wantedTop; + } + else + { + y -= wantedTop - upSlot; + } +} diff --git a/src/textmanager.h b/src/textmanager.h new file mode 100644 index 00000000..f7f1247c --- /dev/null +++ b/src/textmanager.h @@ -0,0 +1,78 @@ +/* + * The Mana World + * Copyright 2008 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_TEXTMANAGER_H +#define _TMW_TEXTMANAGER_H + +#include + +class Text; +class Graphics; + +class TextManager +{ + public: + /** + * Constructor + */ + TextManager(); + + /** + * Add text to the manager + */ + void addText(Text *text); + + /** + * Move the text around the screen + */ + void moveText(Text *text, int x, int y); + + /** + * Remove the text from the manager + */ + void removeText(const Text *text); + + /** + * Destroy the manager + */ + ~TextManager(); + + /** + * Draw the text + */ + void draw(Graphics *graphics, int xOff, int yOff); + + private: + /** + * Position the text so as to avoid conflict + */ + void place(const Text *textObj, const Text *omit, + int &x, int &y, int h); + + typedef std::list TextList; /**< The container type */ + TextList mTextList; /**< The container */ +}; + +extern TextManager *textManager; + +#endif // _TMW_TEXTMANAGER_H -- cgit v1.2.3-60-g2f50 From 7334c8dd3a7125126e63cd8a483ec93f03bc690d Mon Sep 17 00:00:00 2001 From: Bjørn Lindeijer Date: Thu, 28 Aug 2008 21:11:18 +0000 Subject: Updated the version to 0.0.26 and updated the AUTHORS file. If you have contributed and I forgot you, please contact me as soon as possible! --- AUTHORS | 98 +++++++++++++++++++++++++++++---------------------- CMakeLists.txt | 2 +- ChangeLog | 4 +++ NEWS | 7 ++++ README | 2 +- configure.ac | 2 +- data/help/changes.txt | 23 ++++-------- data/help/header.txt | 2 +- src/winver.h | 4 +-- 9 files changed, 79 insertions(+), 65 deletions(-) (limited to 'src') diff --git a/AUTHORS b/AUTHORS index 19d28884..6ae0b9c4 100644 --- a/AUTHORS +++ b/AUTHORS @@ -1,43 +1,55 @@ ------------------------ -The Mana World Dev Team ------------------------ - - ElvenProgrammer aka Eugenio Favalli (elvenprogrammer@gmail.com) - Project leader, programmer - -== Programmers == - - Bertram (SDL input, progress bar drawing, Debian package) - Bjørn Lindeijer (various parts, GUI, graphics, A* and map rewrites) - Björn Steinbrink (various parts) - 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) - Irukard (item icons) - Magick (music and sound effects) - Neko-mon (player sprites, various things) - Neorice (monster sprites, tiles) - Modanung (pixel art, concept art) - Pajarico (concepts) - 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) +----------------------------- +-- The Mana World Dev Team -- +----------------------------- + +== Contributors to client/server development == + +Aaron Marks +Alexander Baldeck (Shura) +Andrej Sinicyn +Björn Steinbrink (Doener) +Bjørn Lindeijer +Cedric Borgese (moi1392) +David Athay +Dennis Friis +Douglas Boffey +Duane Bailey +Eugenio Favalli +Eric Scrivner +Fredrik Reveny +Guillaume Melquiond (Silene) +Jan-Fabian Humann (Mra) +José Ávila +Kiyoshi Kyokai +Lloyd Bryant +Marcel W. Wysocki +Mateusz Kaduk (Usiu) +Matthias Hartmann +Philipp Sehmisch (Crush) +Simon Edwardsson +Yohann Ferreira + +== Contributors to game content == + +Clef +Gnulia +Frode Lindeijer (Modanung) +Jared Adams +Joni Orponen (Rotonen) +Krzysztof Daszuta +Magick +Neko-mon +Neorice +Pajarico Guaje +Vlady +QOAL +Ryan Voss (Talaroc) +Tatjana +Ti Sing Hao + +== Other contributors == + +Jean-Francois Lampron +Rodney Dawes +Ultramichy +Zuzanna K. Filutowska diff --git a/CMakeLists.txt b/CMakeLists.txt index fd71e1b0..3c8aa509 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,6 +1,6 @@ PROJECT(TMW) -SET(VERSION 0.0.25) +SET(VERSION 0.0.26) # where to look for cmake modules SET(CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/CMake/Modules) diff --git a/ChangeLog b/ChangeLog index a89dc660..027dbb97 100644 --- a/ChangeLog +++ b/ChangeLog @@ -30,6 +30,10 @@ documentation for the shortcut window by Vq. * src/resources/mapreader.cpp: Fixed crash when map layer has too many tiles. + * AUTHORS, src/winver.h, README, configure.ac, data/help/changes.txt, + data/help/header.txt, NEWS, CMakeLists.txt: Updated the version to + 0.0.26 and updated the AUTHORS file. If you have contributed and I + forgot you, please contact me as soon as possible! 2008-08-28 Philipp Sehmisch diff --git a/NEWS b/NEWS index ca1286f1..15c2b713 100644 --- a/NEWS +++ b/NEWS @@ -1,3 +1,10 @@ +0.0.26 (29 August 2008) +- Added support for a newer version of eAthena server +- Added support for showing custom being effects +- Added new features to the particle engine +- Position names and chat such that there is no overlap, when possible +- Fixed a crash when loading a corrupt map that has too much layer data + 0.0.25 (27 July 2008) - Added support for whispering to other players - Added ability to ignore other players diff --git a/README b/README index ea293a9e..4f5fc02e 100644 --- a/README +++ b/README @@ -1,7 +1,7 @@ THE MANA WORLD ============== - Version: 0.0.25 Date: 27/7/2008 + Version: 0.0.26 Date: 29/8/2008 Development team: - See AUTHORS file for a list diff --git a/configure.ac b/configure.ac index ddd47e40..304ae6d7 100755 --- a/configure.ac +++ b/configure.ac @@ -1,5 +1,5 @@ AC_PREREQ(2.59) -AC_INIT([The Mana World], [0.0.25], [elvenprogrammer@gmail.com], [tmw]) +AC_INIT([The Mana World], [0.0.26], [elvenprogrammer@gmail.com], [tmw]) AC_CONFIG_HEADERS([config.h:config.h.in]) AC_LANG_CPLUSPLUS diff --git a/data/help/changes.txt b/data/help/changes.txt index fefa8bcb..d05dd5cb 100644 --- a/data/help/changes.txt +++ b/data/help/changes.txt @@ -3,6 +3,13 @@ ##3 === RECENT CHANGES === + 0.0.26 (29 August 2008) + - Added support for a newer version of eAthena server + - Added support for showing custom being effects + - Added new features to the particle engine + - Position names and chat such that there is no overlap, when possible + - Fixed a crash when loading a corrupt map that has too much layer data + 0.0.25 (27 July 2008) - Added support for whispering to other players - Added ability to ignore other players @@ -62,19 +69,3 @@ - Fixed a crash on filling up your inventory - Fixed item list in shops not to scroll back when selling - 0.0.23 (3 June 2007) - - Added a particle engine along with some particle effects - - Added a cursor to indicate targeted enemy - - Added new program icon - - Added a man page for UNIX like systems - - Added the --version command line parameter - - Improved MacOS X release - - Screenshots are now saved in the .tmw directory on UNIX like systems - - Magic pink is no longer used for transparency (fixes issues with that on Mac) - - Fixed difficulties with resizing windows - - Fixed misleading error message when connecting fails - - Fixed wrong error message when account name already exists - - Fixed crash when deleting a character - - Fixed error message when creating a new character fails - - Fixed updating problem when using scrollwheel to change shop selection - diff --git a/data/help/header.txt b/data/help/header.txt index d41c5ff7..462deaa2 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.25 ##2Date:##327 July 2008 + ##2Version:##6 0.0.26 ##2Date:##329 August 2008 ##2 Website: http://themanaworld.org diff --git a/src/winver.h b/src/winver.h index a276fde5..4de9bbe5 100644 --- a/src/winver.h +++ b/src/winver.h @@ -1,6 +1,6 @@ /* VERSION DEFINITIONS */ #define VER_MAJOR 0 #define VER_MINOR 0 -#define VER_RELEASE 25 +#define VER_RELEASE 26 #define VER_BUILD 0 -#define PACKAGE_VERSION "0.0.25" +#define PACKAGE_VERSION "0.0.26" -- cgit v1.2.3-60-g2f50 From 41bb6d9efe7884b2605d42584c5fda3327c87156 Mon Sep 17 00:00:00 2001 From: Philipp Sehmisch Date: Thu, 28 Aug 2008 22:44:43 +0000 Subject: Added output-pause to copy constructor of particle emitters. --- ChangeLog | 1 + src/particleemitter.cpp | 3 +++ 2 files changed, 4 insertions(+) (limited to 'src') diff --git a/ChangeLog b/ChangeLog index 027dbb97..559467e9 100644 --- a/ChangeLog +++ b/ChangeLog @@ -39,6 +39,7 @@ * src/net/loginhandler.cpp: Removed the usually incorrect "for 5 minutes" clause from the message displayed to banned users. + * src/particleemitter.cpp: Added output-pause to copy constructor. 2008-08-27 Bjørn Lindeijer diff --git a/src/particleemitter.cpp b/src/particleemitter.cpp index 545936f0..3e0a3d75 100644 --- a/src/particleemitter.cpp +++ b/src/particleemitter.cpp @@ -281,10 +281,13 @@ ParticleEmitter & ParticleEmitter::operator=(const ParticleEmitter &o) mParticleAlpha = o.mParticleAlpha; mMap = o.mMap; mOutput = o.mOutput; + mOutputPause = o.mOutputPause; mParticleImage = o.mParticleImage; mParticleAnimation = o.mParticleAnimation; mParticleChildEmitters = o.mParticleChildEmitters; + mOutputPauseLeft = 0; + if (mParticleImage) mParticleImage->incRef(); return *this; -- cgit v1.2.3-60-g2f50 From 970b31227bde94f92af392870fc91844f063f167 Mon Sep 17 00:00:00 2001 From: David Athay Date: Fri, 29 Aug 2008 09:32:39 +0000 Subject: #406 by jaxad0127 --- ChangeLog | 6 ++++++ src/monster.cpp | 29 ++++++++++++++++++++++------- src/resources/monsterdb.cpp | 4 ++-- src/resources/monsterinfo.cpp | 3 +-- src/resources/monsterinfo.h | 8 ++++---- 5 files changed, 35 insertions(+), 15 deletions(-) (limited to 'src') diff --git a/ChangeLog b/ChangeLog index 559467e9..ea50972a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2008-08-29 David Athay + + * src/monster.cpp, src/resources/monsterinfo.h, + src/resources/monsterdb.cpp, src/resources/monsterinfo.cpp: Mantis #406 + by jaxad0127 to implement layered sprites. + 2008-08-28 Douglas Boffey * src/localplayer.cpp, src/text.h, src/gui/viewport.cpp, src/npc.cpp, diff --git a/src/monster.cpp b/src/monster.cpp index bea37b3f..d7a2add1 100644 --- a/src/monster.cpp +++ b/src/monster.cpp @@ -45,15 +45,24 @@ Monster::Monster(Uint32 id, Uint16 job, Map *map): { const MonsterInfo& info = MonsterDB::get(job - 1002); - std::string filename = info.getSprite(); - if (filename != "") + // Setup Monster sprites + int c = BASE_SPRITE; + const std::list &sprites = info.getSprites(); + for (std::list::const_iterator i = sprites.begin(); + i != sprites.end(); + i++) { - mSprites[BASE_SPRITE] = AnimatedSprite::load( - "graphics/sprites/" + filename); + if (c == VECTOREND_SPRITE) break; + + std::string file = "graphics/sprites/" + *i; + mSprites[c] = AnimatedSprite::load(file); + c++; } - else + + // Ensure that something is shown + if (c == BASE_SPRITE) { - mSprites[BASE_SPRITE] = AnimatedSprite::load("graphics/sprites/error.xml"); + mSprites[c] = AnimatedSprite::load("graphics/sprites/error.xml"); } const std::list &particleEffects = info.getParticleEffects(); @@ -124,7 +133,13 @@ Monster::setAction(Uint8 action) if (currentAction != ACTION_INVALID) { - mSprites[BASE_SPRITE]->play(currentAction); + for (int i = 0; i < VECTOREND_SPRITE; i++) + { + if (mSprites[i]) + { + mSprites[i]->play(currentAction); + } + } mAction = action; } } diff --git a/src/resources/monsterdb.cpp b/src/resources/monsterdb.cpp index 0a98762f..bf2878bc 100644 --- a/src/resources/monsterdb.cpp +++ b/src/resources/monsterdb.cpp @@ -45,7 +45,7 @@ MonsterDB::load() if (mLoaded) return; - mUnknown.setSprite("error.xml"); + mUnknown.addSprite("error.xml"); mUnknown.setName("unnamed"); logger->log("Initializing monster database..."); @@ -96,7 +96,7 @@ MonsterDB::load() { if (xmlStrEqual(spriteNode->name, BAD_CAST "sprite")) { - currentInfo->setSprite((const char*) spriteNode->xmlChildrenNode->content); + currentInfo->addSprite((const char*) spriteNode->xmlChildrenNode->content); } if (xmlStrEqual(spriteNode->name, BAD_CAST "sound")) diff --git a/src/resources/monsterinfo.cpp b/src/resources/monsterinfo.cpp index 8238dc3e..e492ccd3 100644 --- a/src/resources/monsterinfo.cpp +++ b/src/resources/monsterinfo.cpp @@ -27,8 +27,7 @@ #include "../utils/dtor.h" -MonsterInfo::MonsterInfo(): - mSprite("error.xml") +MonsterInfo::MonsterInfo() { } diff --git a/src/resources/monsterinfo.h b/src/resources/monsterinfo.h index d9d17510..2f690756 100644 --- a/src/resources/monsterinfo.h +++ b/src/resources/monsterinfo.h @@ -63,7 +63,7 @@ class MonsterInfo setName(std::string name) { mName = name; } void - setSprite(std::string filename) { mSprite = filename; } + addSprite(std::string filename) { mSprites.push_back(filename); } void setTargetCursorSize(Being::TargetCursorSize targetCursorSize) @@ -78,8 +78,8 @@ class MonsterInfo const std::string& getName() const { return mName; } - const std::string& - getSprite() const { return mSprite; } + const std::list& + getSprites() const { return mSprites; } Being::TargetCursorSize getTargetCursorSize() const { return mTargetCursorSize; } @@ -92,7 +92,7 @@ class MonsterInfo private: std::string mName; - std::string mSprite; + std::list mSprites; Being::TargetCursorSize mTargetCursorSize; std::map* > mSounds; std::list mParticleEffects; -- cgit v1.2.3-60-g2f50 From c09905825a62274a210d618a6388b0601ac23657 Mon Sep 17 00:00:00 2001 From: Bjørn Lindeijer Date: Thu, 11 Sep 2008 07:07:37 +0000 Subject: Only require a restart to switch to full screen with OpenGL on Windows, since it works fine in Linux without having to reinitialize the OpenGL state. Adapted change by kraant from Aethyra. --- ChangeLog | 7 +++++++ src/gui/setup_video.cpp | 11 +++++++++++ 2 files changed, 18 insertions(+) (limited to 'src') diff --git a/ChangeLog b/ChangeLog index ea50972a..881463f0 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2008-09-11 Bjørn Lindeijer + + * src/gui/setup_video.cpp: Only require a restart to switch to full + screen with OpenGL on Windows, since it works fine in Linux without + having to reinitialize the OpenGL state. Adapted change by kraant from + Aethyra. + 2008-08-29 David Athay * src/monster.cpp, src/resources/monsterinfo.h, diff --git a/src/gui/setup_video.cpp b/src/gui/setup_video.cpp index 5044bbb6..ae15c7ef 100644 --- a/src/gui/setup_video.cpp +++ b/src/gui/setup_video.cpp @@ -280,9 +280,18 @@ void Setup_Video::apply() bool fullscreen = mFsCheckBox->isSelected(); if (fullscreen != (config.getValue("screen", 0) == 1)) { + /* The OpenGL test is only necessary on Windows, since switching + * to/from full screen works fine on Linux. On Windows we'd have to + * reinitialize the OpenGL state and reload all textures. + * + * See http://libsdl.org/cgi/docwiki.cgi/SDL_SetVideoMode + */ + +#ifdef WIN32 // checks for opengl usage if (!(config.getValue("opengl", 0) == 1)) { +#endif if (!graphics->setFullscreen(fullscreen)) { fullscreen = !fullscreen; @@ -296,10 +305,12 @@ void Setup_Video::apply() logger->error(error.str()); } } +#ifdef WIN32 } else { new OkDialog("Switching to full screen", "Restart needed for changes to take effect."); } +#endif config.setValue("screen", fullscreen ? 1 : 0); } -- cgit v1.2.3-60-g2f50 From 9bdb331a237170a8d17c6d2881561aa0a4bab810 Mon Sep 17 00:00:00 2001 From: Bjørn Lindeijer Date: Thu, 11 Sep 2008 07:32:45 +0000 Subject: Fixed the name of a variable (fix by Scraggy). --- ChangeLog | 1 + src/net/network.cpp | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/ChangeLog b/ChangeLog index 881463f0..b02c608d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -4,6 +4,7 @@ screen with OpenGL on Windows, since it works fine in Linux without having to reinitialize the OpenGL state. Adapted change by kraant from Aethyra. + * src/net/network.cpp: Fixed the name of a variable (fix by Scraggy). 2008-08-29 David Athay diff --git a/src/net/network.cpp b/src/net/network.cpp index 375d93e0..3e1b6571 100644 --- a/src/net/network.cpp +++ b/src/net/network.cpp @@ -296,7 +296,7 @@ MessageIn Network::getNextMessage() len = readWord(2); #ifdef DEBUG - logger->log("Received packet 0x%x of length %d", msgId, length); + logger->log("Received packet 0x%x of length %d", msgId, len); #endif MessageIn msg(mInBuffer, len); -- cgit v1.2.3-60-g2f50 From 72c678ca1fe7ca1401efaf59c321380b4bfc6ba2 Mon Sep 17 00:00:00 2001 From: Philipp Sehmisch Date: Thu, 2 Oct 2008 14:34:20 +0000 Subject: The "name" property of the map is now used as caption of the minimap window when it exists. --- ChangeLog | 29 +++++++++++++++++------------ src/engine.cpp | 6 ++++++ 2 files changed, 23 insertions(+), 12 deletions(-) (limited to 'src') diff --git a/ChangeLog b/ChangeLog index b02c608d..40619dd1 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2008-10-02 Philipp Sehmisch + + * src/engine.cpp: The "name" property of the map is now used as caption + of minimap window when it exists. + 2008-09-11 Bjørn Lindeijer * src/gui/setup_video.cpp: Only require a restart to switch to full @@ -8,7 +13,7 @@ 2008-08-29 David Athay - * src/monster.cpp, src/resources/monsterinfo.h, + * src/monster.cpp, src/resources/monsterinfo.h, src/resources/monsterdb.cpp, src/resources/monsterinfo.cpp: Mantis #406 by jaxad0127 to implement layered sprites. @@ -108,12 +113,12 @@ 2008-07-22 David Athay * src/game.cpp: Revert the Alt-Gr fix as it did not work. - * src/game.cpp, src/keyboardconfig.cpp, src/keyboardconfig.h: User can + * src/game.cpp, src/keyboardconfig.cpp, src/keyboardconfig.h: User can now configure which modifier key is used for smilies. 2008-07-21 David Athay - * src/game.cpp: Initial attempt at fixing Alt-Gr issue for Rotonen, + * src/game.cpp: Initial attempt at fixing Alt-Gr issue for Rotonen, this commit is just for him! 2008-07-18 Bjørn Lindeijer @@ -135,7 +140,7 @@ 2008-07-08 David Athay * src/gui/chat.cpp, src/gui/chat.h: Mantis #359 patch by Scraggy. - + 2008-06-30 Bjørn Lindeijer * src/CMakeLists.txt: Updated CMake file to fix compilation. Patch by @@ -160,7 +165,7 @@ 2008-06-17 Fate - * src/net/tradehandler.cpp: bug #333: Suppress `trade with X cancelled' + * src/net/tradehandler.cpp: bug #333: Suppress `trade with X cancelled' messages for ignored players. 2008-06-16 Fate @@ -699,7 +704,7 @@ 2007-12-28 Philipp Sehmisch * data/maps/new_3-1.tmx: Some mapping errors fixed by Zipon. - * src/being.cpp, src/monster.cpp, src/resources/monsterinfo.cpp, + * src/being.cpp, src/monster.cpp, src/resources/monsterinfo.cpp, src/resources/monsterinfo.h: Added the possibility to assign particle effects to monsters in the monster database. * data/monsters.xml: Added flame particle effect to fire goblin as a @@ -884,7 +889,7 @@ data/graphics/sprites/head-xmaself.png, data/graphics/sprites/head-xmaself.xml: New versions of funky hat and elf hat by QOAL. - + 2007-12-04 Philipp Sehmisch * data/graphics/items/generic-santacookie.png, @@ -1147,7 +1152,7 @@ * src/player.cpp, data/graphics/sprites/hairstyle*: Added support for different hairstyles for male and female characters - (current female hairstyles are copies of the male ones until the + (current female hairstyles are copies of the male ones until the real female ones are finished) 2007-09-30 Philipp Sehmisch @@ -1539,15 +1544,15 @@ * src/particle.cpp, src/particleemitter.cpp: Corrected some perspective issues of the particle engine and fixed a crash caused by particles with child emitters that have an image than isn't used elsewhere. - * data/maps/new-3-1.tmx.gz: Added a particle effect at the spawn point + * data/maps/new-3-1.tmx.gz: Added a particle effect at the spawn point in Tulimshar. 2007-06-21 Philipp Sehmisch - * data/monsters.xml, data/graphics/sprites/monster-logmonster.png, + * data/monsters.xml, data/graphics/sprites/monster-logmonster.png, data/graphics/sprites/monster-logmonster.xml: Added logmonster by Enigmatik (Monster ID is 23). - * data/items.xml, data/equipment.xml, + * data/items.xml, data/equipment.xml, data/graphics/items/armor-chest-lightplatemail.png, data/graphics/sprites/chest-lightplatemail-male.xml, data/graphics/sprites/chest-lightplatemail-male.png, @@ -6131,4 +6136,4 @@ restore some doxygen comments, improved size adaption and made the window a shorter. * data/graphics/images/login_wallpaper.png: New login wallpaper by - Momotaro. + Momotaro. \ No newline at end of file diff --git a/src/engine.cpp b/src/engine.cpp index b53608be..67479a27 100644 --- a/src/engine.cpp +++ b/src/engine.cpp @@ -97,6 +97,12 @@ void Engine::changeMap(const std::string &mapPath) { mapImage = resman->getImage(newMap->getProperty("minimap")); } + if (newMap->hasProperty("name")) + { + minimap->setCaption(newMap->getProperty("name")); + } else { + minimap->setCaption("Map"); + } minimap->setMapImage(mapImage); beingManager->setMap(newMap); particleEngine->setMap(newMap); -- cgit v1.2.3-60-g2f50 From 001c91ff66818a0f1a6839df2ba2a1c4d3220160 Mon Sep 17 00:00:00 2001 From: Bjørn Lindeijer Date: Sat, 4 Oct 2008 22:08:56 +0000 Subject: Added support for object groups that have an offset --- ChangeLog | 7 ++++++- src/resources/mapreader.cpp | 17 +++++++++++++---- 2 files changed, 19 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/ChangeLog b/ChangeLog index 40619dd1..5748811b 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2008-10-05 Bjørn Lindeijer + + * src/resources/mapreader.cpp: Added support for object groups that + have an offset. + 2008-10-02 Philipp Sehmisch * src/engine.cpp: The "name" property of the map is now used as caption @@ -6136,4 +6141,4 @@ restore some doxygen comments, improved size adaption and made the window a shorter. * data/graphics/images/login_wallpaper.png: New login wallpaper by - Momotaro. \ No newline at end of file + Momotaro. diff --git a/src/resources/mapreader.cpp b/src/resources/mapreader.cpp index af3fc0ef..eacbb0d8 100644 --- a/src/resources/mapreader.cpp +++ b/src/resources/mapreader.cpp @@ -237,6 +237,12 @@ MapReader::readMap(xmlNodePtr node, const std::string &path) } else if (xmlStrEqual(childNode->name, BAD_CAST "objectgroup")) { + // The object group offset is applied to each object individually + const int tileOffsetX = XML::getProperty(childNode, "x", 0); + const int tileOffsetY = XML::getProperty(childNode, "y", 0); + const int offsetX = tileOffsetX * tw; + const int offsetY = tileOffsetY * th; + for_each_xml_child_node(objectNode, childNode) { if (xmlStrEqual(objectNode->name, BAD_CAST "object")) @@ -257,7 +263,8 @@ MapReader::readMap(xmlNodePtr node, const std::string &path) const int objY = XML::getProperty(objectNode, "y", 0); logger->log("- Loading object name: %s type: %s at %d:%d", - objName.c_str(), objType.c_str(), objX, objY); + objName.c_str(), objType.c_str(), + objX, objY); if (objType == "PARTICLE_EFFECT") { @@ -266,7 +273,9 @@ MapReader::readMap(xmlNodePtr node, const std::string &path) continue; } - map->addParticleEffect(objName, objX, objY); + map->addParticleEffect(objName, + objX + offsetX, + objY + offsetY); } else { @@ -318,8 +327,8 @@ MapReader::readLayer(xmlNodePtr node, Map *map) // Layers are not necessarily the same size as the map const int w = XML::getProperty(node, "width", map->getWidth()); const int h = XML::getProperty(node, "height", map->getHeight()); - const int offsetX = XML::getProperty(node, "xoffset", 0); - const int offsetY = XML::getProperty(node, "yoffset", 0); + const int offsetX = XML::getProperty(node, "x", 0); + const int offsetY = XML::getProperty(node, "y", 0); const std::string name = XML::getProperty(node, "name", ""); const bool isFringeLayer = (name == "Fringe"); -- cgit v1.2.3-60-g2f50 From 93b9bfd3bde24a76bf7ef58b71f0d8757d3b38e5 Mon Sep 17 00:00:00 2001 From: Bjørn Lindeijer Date: Tue, 7 Oct 2008 21:32:43 +0000 Subject: Fixed some compiler warnings. This probably also fixed the logging of several error messages. --- ChangeLog | 7 +++++++ src/gui/updatewindow.cpp | 4 ++-- src/particleemitter.cpp | 5 ++--- src/resources/spritedef.cpp | 5 ++--- src/simpleanimation.cpp | 5 ++--- 5 files changed, 15 insertions(+), 11 deletions(-) (limited to 'src') diff --git a/ChangeLog b/ChangeLog index 5748811b..d1337e47 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2008-10-07 Bjørn Lindeijer + + * src/gui/updatewindow.cpp, src/particleemitter.cpp, + src/simpleanimation.cpp, src/resources/spritedef.cpp: Fixed some + compiler warnings. This probably also fixed the logging of several + error messages. + 2008-10-05 Bjørn Lindeijer * src/resources/mapreader.cpp: Added support for object groups that diff --git a/src/gui/updatewindow.cpp b/src/gui/updatewindow.cpp index 42b6e9bc..518abda2 100644 --- a/src/gui/updatewindow.cpp +++ b/src/gui/updatewindow.cpp @@ -58,9 +58,9 @@ unsigned long fadler32(FILE *file) // Calculate Adler-32 checksum char *buffer = (char*) malloc(fileSize); - fread(buffer, 1, fileSize, file); + const size_t read = fread(buffer, 1, fileSize, file); unsigned long adler = adler32(0L, Z_NULL, 0); - adler = adler32(adler, (Bytef*) buffer, fileSize); + adler = adler32(adler, (Bytef*) buffer, read); free(buffer); return adler; diff --git a/src/particleemitter.cpp b/src/particleemitter.cpp index 3e0a3d75..816a5d28 100644 --- a/src/particleemitter.cpp +++ b/src/particleemitter.cpp @@ -213,7 +213,7 @@ ParticleEmitter::ParticleEmitter(xmlNodePtr emitterNode, Particle *target, Map * if (!img) { - logger->log("No image at index " + (index)); + logger->log("No image at index %d", index); continue; } @@ -236,8 +236,7 @@ ParticleEmitter::ParticleEmitter(xmlNodePtr emitterNode, Particle *target, Map * if (!img) { - logger->log("No image at index " + - (start)); + logger->log("No image at index %d", start); continue; } diff --git a/src/resources/spritedef.cpp b/src/resources/spritedef.cpp index ebc60240..a6d8891e 100644 --- a/src/resources/spritedef.cpp +++ b/src/resources/spritedef.cpp @@ -232,7 +232,7 @@ SpriteDef::loadAnimation(xmlNodePtr animationNode, if (!img) { - logger->log("No image at index " + (index + variant_offset)); + logger->log("No image at index %d", index + variant_offset); continue; } @@ -255,8 +255,7 @@ SpriteDef::loadAnimation(xmlNodePtr animationNode, if (!img) { - logger->log("No image at index " + - (start + variant_offset)); + logger->log("No image at index %d", start + variant_offset); continue; } diff --git a/src/simpleanimation.cpp b/src/simpleanimation.cpp index 18e732ef..f425d3c1 100644 --- a/src/simpleanimation.cpp +++ b/src/simpleanimation.cpp @@ -68,7 +68,7 @@ SimpleAnimation::SimpleAnimation(xmlNodePtr animationNode): if (!img) { - logger->log("No image at index " + (index)); + logger->log("No image at index %d", index); continue; } @@ -91,8 +91,7 @@ SimpleAnimation::SimpleAnimation(xmlNodePtr animationNode): if (!img) { - logger->log("No image at index " + - (start)); + logger->log("No image at index %d", start); continue; } -- cgit v1.2.3-60-g2f50 From d242b7ebd7927e8eb447ee866777cf48db15ae0c Mon Sep 17 00:00:00 2001 From: David Athay Date: Wed, 22 Oct 2008 10:37:08 +0000 Subject: Now displays ban time, if banned --- ChangeLog | 4 ++++ src/gui/ok_dialog.cpp | 31 ++++++++++++++++--------------- src/net/loginhandler.cpp | 6 ++++-- 3 files changed, 24 insertions(+), 17 deletions(-) (limited to 'src') diff --git a/ChangeLog b/ChangeLog index d1337e47..490bd5b6 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2008-10-22 David Athay + + * src/gui/ok_dialog.cpp, src/net/loginhandler.cpp: Now shows ban time. + 2008-10-07 Bjørn Lindeijer * src/gui/updatewindow.cpp, src/particleemitter.cpp, diff --git a/src/gui/ok_dialog.cpp b/src/gui/ok_dialog.cpp index ca9d2a7b..90407d31 100644 --- a/src/gui/ok_dialog.cpp +++ b/src/gui/ok_dialog.cpp @@ -22,32 +22,33 @@ */ #include "ok_dialog.h" - -#include - +#include "textbox.h" #include "button.h" - +#include "scrollarea.h" OkDialog::OkDialog(const std::string &title, const std::string &msg, Window *parent): Window(title, true, parent) { - gcn::Label *textLabel = new gcn::Label(msg); + TextBox *textBox = new TextBox(); + textBox->setEditable(false); + + gcn::ScrollArea *scrollArea = new ScrollArea(textBox); gcn::Button *okButton = new Button("Ok", "ok", this); - int w = textLabel->getWidth() + 20; - int h = textLabel->getHeight() + 25 + okButton->getHeight(); + setContentSize(260, 175); + scrollArea->setHorizontalScrollPolicy(gcn::ScrollArea::SHOW_NEVER); + scrollArea->setVerticalScrollPolicy(gcn::ScrollArea::SHOW_ALWAYS); + scrollArea->setDimension(gcn::Rectangle( + 5, 5, 250, 160 - okButton->getHeight())); - if (okButton->getWidth() + 10 > w) { - w = okButton->getWidth() + 10; - } + textBox->setTextWrapped(msg); - setContentSize(w, h); - textLabel->setPosition(10, 10); - okButton->setPosition((w - okButton->getWidth()) / 2, - h - 5 - okButton->getHeight()); + okButton->setPosition( + 260 - 5 - okButton->getWidth(), + 175 - 5 - okButton->getHeight()); - add(textLabel); + add(scrollArea); add(okButton); setLocationRelativeTo(getParent()); diff --git a/src/net/loginhandler.cpp b/src/net/loginhandler.cpp index fa74f489..19893a8e 100644 --- a/src/net/loginhandler.cpp +++ b/src/net/loginhandler.cpp @@ -110,10 +110,12 @@ void LoginHandler::handleMessage(MessageIn *msg) errorMessage = "Rejected from server"; break; case 4: - errorMessage = "You have been banned from the game. Please contact the GM Team"; + + errorMessage = "You have been permanently banned from the game. Please contact the GM Team"; break; case 6: - errorMessage = "You have been temporarily banned from the game. Please contact the GM team"; + errorMessage = "You have been temporarily banned from the game until " + + msg->readString(20) + ".\n Please contact the GM team via the forums"; break; case 9: errorMessage = "This user name is already taken"; -- cgit v1.2.3-60-g2f50 From a18daa91c8aa12307c5d73fdb2a83a3cce92d20f Mon Sep 17 00:00:00 2001 From: Bjørn Lindeijer Date: Wed, 22 Oct 2008 19:52:01 +0000 Subject: Merged revisions 4145 via svnmerge from https://themanaworld.svn.sourceforge.net/svnroot/themanaworld/tmw/trunk With help from Kess (vargavind) ........ r4145 | b_lindeijer | 2008-04-20 19:29:11 +0200 (Sun, 20 Apr 2008) | 3 lines Added --data parameter to be used to specify where to get the data from when using --skipupdate. ........ --- ChangeLog | 5 +++++ src/main.cpp | 14 +++++++++++--- 2 files changed, 16 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/ChangeLog b/ChangeLog index 490bd5b6..a48ca311 100644 --- a/ChangeLog +++ b/ChangeLog @@ -365,6 +365,11 @@ * src/beingmanager.cpp: Fixed a bug, thanks GCC 4.3! +2008-04-20 Bjørn Lindeijer + + * src/main.cpp: Added --data parameter to be used to specify where to + get the data from when using --skipupdate. + 2008-04-18 David Athay * src/game.cpp, src/openglgraphics.cpp: Mac now uses Apple key for diff --git a/src/main.cpp b/src/main.cpp index 25dbe127..373dc100 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -148,6 +148,7 @@ struct Options std::string playername; std::string configPath; std::string updateHost; + std::string dataPath; }; /** @@ -257,6 +258,9 @@ void init_engine(const Options &options) resman->addToSearchPath(homeDir, false); // Add the main data directory to our PhysicsFS search path + if (!options.dataPath.empty()) { + resman->addToSearchPath(options.dataPath, true); + } resman->addToSearchPath("data", true); #if defined __APPLE__ CFBundleRef mainBundle = CFBundleGetMainBundle(); @@ -430,6 +434,7 @@ void printHelp() << " -h --help : Display this help" << std::endl << " -v --version : Display the version" << std::endl << " -u --skipupdate : Skip the update process" << std::endl + << " -d --data : Directory to load game data from" << std::endl << " -U --username : Login with this username" << std::endl << " -P --password : Login with this password" << std::endl << " -D --default : Bypass the login process with default settings" << std::endl @@ -450,12 +455,13 @@ void printVersion() void parseOptions(int argc, char *argv[], Options &options) { - const char *optstring = "hvuU:P:Dp:C:H:"; + const char *optstring = "hvud:U:P:Dp:C:H:"; const struct option long_options[] = { { "help", no_argument, 0, 'h' }, { "version", no_argument, 0, 'v' }, { "skipupdate", no_argument, 0, 'u' }, + { "data", required_argument, 0, 'd' }, { "username", required_argument, 0, 'U' }, { "password", required_argument, 0, 'P' }, { "default", no_argument, 0, 'D' }, @@ -469,9 +475,8 @@ void parseOptions(int argc, char *argv[], Options &options) int result = getopt_long(argc, argv, optstring, long_options, NULL); - if (result == -1) { + if (result == -1) break; - } switch (result) { default: // Unknown option @@ -484,6 +489,9 @@ void parseOptions(int argc, char *argv[], Options &options) case 'u': options.skipUpdate = true; break; + case 'd': + options.dataPath = optarg; + break; case 'U': options.username = optarg; break; -- cgit v1.2.3-60-g2f50 From c650e2b6338cf4b18b0968623d12ef95a7b820fc Mon Sep 17 00:00:00 2001 From: Dennis Friis Date: Thu, 23 Oct 2008 14:20:07 +0000 Subject: Add support for new athena trade-add failure condition; no free slot. --- ChangeLog | 5 +++++ src/net/tradehandler.cpp | 8 +++++++- 2 files changed, 12 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/ChangeLog b/ChangeLog index a48ca311..cad907ba 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2008-10-23 Dennis Friis + + * src/net/tradehandler.cpp: Add support for new athena trade-add + failure condition; no free slot. + 2008-10-22 David Athay * src/gui/ok_dialog.cpp, src/net/loginhandler.cpp: Now shows ban time. diff --git a/src/net/tradehandler.cpp b/src/net/tradehandler.cpp index 9599fa9d..e2f7b998 100644 --- a/src/net/tradehandler.cpp +++ b/src/net/tradehandler.cpp @@ -130,7 +130,7 @@ void TradeHandler::handleMessage(MessageIn *msg) chatWindow->chatLog("Trade with " + tradePartnerName + " cancelled", BY_SERVER); // otherwise ignore silently - + tradeWindow->setVisible(false); player_node->setTrading(false); break; @@ -189,6 +189,12 @@ void TradeHandler::handleMessage(MessageIn *msg) "partner is over weighted.", BY_SERVER); break; + case 2: + // Add item failed - player has no free slot + chatWindow->chatLog("Failed adding item. Trade " + "partner has no free slot.", + BY_SERVER); + break; default: chatWindow->chatLog("Failed adding item for " "unknown reason.", BY_SERVER); -- cgit v1.2.3-60-g2f50 From 56410d9ff28448a73be7a7d115d54c1ee578972c Mon Sep 17 00:00:00 2001 From: Philipp Sehmisch Date: Sun, 26 Oct 2008 01:46:40 +0000 Subject: Implemented particle emitters with properties which change over time according to wave functions. --- ChangeLog | 8 ++++ src/CMakeLists.txt | 2 +- src/Makefile.am | 2 +- src/particle.cpp | 2 +- src/particleemitter.cpp | 100 ++++++++++++++++++++++++----------------- src/particleemitter.h | 37 +++++++-------- src/particleemitterprop.h | 112 ++++++++++++++++++++++++++++++++++++++++++++++ src/utils/minmax.h | 50 --------------------- tmw.cbp | 29 +++++++++--- 9 files changed, 225 insertions(+), 117 deletions(-) create mode 100644 src/particleemitterprop.h delete mode 100644 src/utils/minmax.h (limited to 'src') diff --git a/ChangeLog b/ChangeLog index cad907ba..afdc97da 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2008-10-26 Philipp Sehmisch + + * src/particle.cpp, src/particleemitter.cpp, src/particleemitter.h, + src/particleemitterprop.h, src/utils/minmax.h: Implemented particle + emitters with properties which change over time according to wave + functions. + * src/Makefile.am, src/CMakeLists.txt, tmw.cbp: Updated project files. + 2008-10-23 Dennis Friis * src/net/tradehandler.cpp: Add support for new athena trade-add diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 20f2f761..94ee854a 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -265,7 +265,6 @@ SET(SRCS utils/base64.h utils/dtor.h utils/fastsqrt.h - utils/minmax.h utils/strprintf.cpp utils/strprintf.h utils/tostring.h @@ -328,6 +327,7 @@ SET(SRCS particle.h particleemitter.cpp particleemitter.h + particleemitterprop.h player.cpp player.h player_relations.cpp diff --git a/src/Makefile.am b/src/Makefile.am index 340f1947..867953ab 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -215,7 +215,6 @@ tmw_SOURCES = gui/widgets/resizegrip.cpp \ utils/base64.h \ utils/dtor.h \ utils/fastsqrt.h \ - utils/minmax.h \ utils/strprintf.cpp \ utils/strprintf.h \ utils/tostring.h \ @@ -278,6 +277,7 @@ tmw_SOURCES = gui/widgets/resizegrip.cpp \ particle.h \ particleemitter.cpp \ particleemitter.h \ + particleemitterprop.h \ player.cpp \ player.h \ player_relations.cpp \ diff --git a/src/particle.cpp b/src/particle.cpp index 8591838f..1521e75b 100644 --- a/src/particle.cpp +++ b/src/particle.cpp @@ -181,7 +181,7 @@ Particle::update() e++ ) { - Particles newParticles = (*e)->createParticles(); + Particles newParticles = (*e)->createParticles(mLifetimePast); for ( ParticleIterator p = newParticles.begin(); p != newParticles.end(); p++ diff --git a/src/particleemitter.cpp b/src/particleemitter.cpp index 816a5d28..bb4a7c6e 100644 --- a/src/particleemitter.cpp +++ b/src/particleemitter.cpp @@ -74,20 +74,22 @@ ParticleEmitter::ParticleEmitter(xmlNodePtr emitterNode, Particle *target, Map * if (name == "position-x") { - mParticlePosX = readMinMax(propertyNode, 0.0f); + mParticlePosX = readParticleEmitterProp(propertyNode, 0.0f); } else if (name == "position-y") { - mParticlePosY = readMinMax(propertyNode, 0.0f); + mParticlePosY = readParticleEmitterProp(propertyNode, 0.0f); mParticlePosY.minVal *= SIN45; mParticlePosY.maxVal *= SIN45; + mParticlePosY.changeAmplitude *= SIN45; } else if (name == "position-z") { - mParticlePosZ = readMinMax(propertyNode, 0.0f); + mParticlePosZ = readParticleEmitterProp(propertyNode, 0.0f); mParticlePosZ.minVal *= SIN45; mParticlePosZ.maxVal *= SIN45; + mParticlePosZ.changeAmplitude *= SIN45; } else if (name == "image") { @@ -101,70 +103,72 @@ ParticleEmitter::ParticleEmitter(xmlNodePtr emitterNode, Particle *target, Map * } else if (name == "horizontal-angle") { - mParticleAngleHorizontal = readMinMax(propertyNode, 0.0f); + mParticleAngleHorizontal = readParticleEmitterProp(propertyNode, 0.0f); mParticleAngleHorizontal.minVal *= DEG_RAD_FACTOR; mParticleAngleHorizontal.maxVal *= DEG_RAD_FACTOR; + mParticleAngleHorizontal.changeAmplitude *= DEG_RAD_FACTOR; } else if (name == "vertical-angle") { - mParticleAngleVertical = readMinMax(propertyNode, 0.0f); + mParticleAngleVertical = readParticleEmitterProp(propertyNode, 0.0f); mParticleAngleVertical.minVal *= DEG_RAD_FACTOR; mParticleAngleVertical.maxVal *= DEG_RAD_FACTOR; + mParticleAngleVertical.changeAmplitude *= DEG_RAD_FACTOR; } else if (name == "power") { - mParticlePower = readMinMax(propertyNode, 0.0f); + mParticlePower = readParticleEmitterProp(propertyNode, 0.0f); } else if (name == "gravity") { - mParticleGravity = readMinMax(propertyNode, 0.0f); + mParticleGravity = readParticleEmitterProp(propertyNode, 0.0f); } else if (name == "randomnes" || name == "randomness") // legacy bug { - mParticleRandomness = readMinMax(propertyNode, 0); + mParticleRandomness = readParticleEmitterProp(propertyNode, 0); } else if (name == "bounce") { - mParticleBounce = readMinMax(propertyNode, 0.0f); + mParticleBounce = readParticleEmitterProp(propertyNode, 0.0f); } else if (name == "lifetime") { - mParticleLifetime = readMinMax(propertyNode, 0); + mParticleLifetime = readParticleEmitterProp(propertyNode, 0); mParticleLifetime.minVal += 1; } else if (name == "output") { - mOutput = readMinMax(propertyNode, 0); + mOutput = readParticleEmitterProp(propertyNode, 0); mOutput.maxVal +=1; } else if (name == "output-pause") { - mOutputPause = readMinMax(propertyNode, 0); - mOutputPauseLeft = mOutputPause.value(); + mOutputPause = readParticleEmitterProp(propertyNode, 0); + mOutputPauseLeft = mOutputPause.value(0); } else if (name == "acceleration") { - mParticleAcceleration = readMinMax(propertyNode, 0.0f); + mParticleAcceleration = readParticleEmitterProp(propertyNode, 0.0f); } else if (name == "die-distance") { - mParticleDieDistance = readMinMax(propertyNode, 0.0f); + mParticleDieDistance = readParticleEmitterProp(propertyNode, 0.0f); } else if (name == "momentum") { - mParticleMomentum = readMinMax(propertyNode, 1.0f); + mParticleMomentum = readParticleEmitterProp(propertyNode, 1.0f); } else if (name == "fade-out") { - mParticleFadeOut = readMinMax(propertyNode, 0); + mParticleFadeOut = readParticleEmitterProp(propertyNode, 0); } else if (name == "fade-in") { - mParticleFadeIn = readMinMax(propertyNode, 0); + mParticleFadeIn = readParticleEmitterProp(propertyNode, 0); } else if (name == "alpha") { - mParticleAlpha = readMinMax(propertyNode, 1.0f); + mParticleAlpha = readParticleEmitterProp(propertyNode, 1.0f); } else if (name == "follow-parent") { @@ -299,21 +303,35 @@ ParticleEmitter::~ParticleEmitter() } -template MinMax -ParticleEmitter::readMinMax(xmlNodePtr propertyNode, T def) +template ParticleEmitterProp +ParticleEmitter::readParticleEmitterProp(xmlNodePtr propertyNode, T def) { - MinMax retval; + ParticleEmitterProp retval; def = (T) XML::getFloatProperty(propertyNode, "value", (double) def); retval.set((T) XML::getFloatProperty(propertyNode, "min", (double) def), (T) XML::getFloatProperty(propertyNode, "max", (double) def)); + std::string change = XML::getProperty(propertyNode, "change-func", "none"); + T amplitude = (T) XML::getFloatProperty(propertyNode, "change-amplitude", 0.0); + int period = XML::getProperty(propertyNode, "change-period", 0); + int phase = XML::getProperty(propertyNode, "change-phase", 0); + if (change == "saw" || change == "sawtooth") { + retval.setFunction(FUNC_SAW, amplitude, period, phase); + } else if (change == "sine" || change == "sinewave") { + retval.setFunction(FUNC_SINE, amplitude, period, phase); + } else if (change == "triangle") { + retval.setFunction(FUNC_TRIANGLE, amplitude, period, phase); + } else if (change == "square"){ + retval.setFunction(FUNC_SQUARE, amplitude, period, phase); + } + return retval; } std::list -ParticleEmitter::createParticles() +ParticleEmitter::createParticles(int tick) { std::list newParticles; @@ -322,9 +340,9 @@ ParticleEmitter::createParticles() mOutputPauseLeft--; return newParticles; } - mOutputPauseLeft = mOutputPause.value(); + mOutputPauseLeft = mOutputPause.value(tick); - for (int i = mOutput.value(); i > 0; i--) + for (int i = mOutput.value(tick); i > 0; i--) { // Limit maximum particles if (Particle::particleCount > Particle::maxCount) break; @@ -346,33 +364,33 @@ ParticleEmitter::createParticles() newParticle->setPosition( - mParticlePosX.value(), - mParticlePosY.value(), - mParticlePosZ.value()); + mParticlePosX.value(tick), + mParticlePosY.value(tick), + mParticlePosZ.value(tick)); - float angleH = mParticleAngleHorizontal.value(); - float angleV = mParticleAngleVertical.value(); - float power = mParticlePower.value(); + float angleH = mParticleAngleHorizontal.value(tick); + float angleV = mParticleAngleVertical.value(tick); + float power = mParticlePower.value(tick); newParticle->setVelocity( cos(angleH) * cos(angleV) * power, sin(angleH) * cos(angleV) * power, sin(angleV) * power); - newParticle->setRandomness(mParticleRandomness.value()); - newParticle->setGravity(mParticleGravity.value()); - newParticle->setBounce(mParticleBounce.value()); + newParticle->setRandomness(mParticleRandomness.value(tick)); + newParticle->setGravity(mParticleGravity.value(tick)); + newParticle->setBounce(mParticleBounce.value(tick)); newParticle->setFollow(mParticleFollow); newParticle->setDestination(mParticleTarget, - mParticleAcceleration.value(), - mParticleMomentum.value() + mParticleAcceleration.value(tick), + mParticleMomentum.value(tick) ); - newParticle->setDieDistance(mParticleDieDistance.value()); + newParticle->setDieDistance(mParticleDieDistance.value(tick)); - newParticle->setLifetime(mParticleLifetime.value()); - newParticle->setFadeOut(mParticleFadeOut.value()); - newParticle->setFadeIn(mParticleFadeIn.value()); - newParticle->setAlpha(mParticleAlpha.value()); + newParticle->setLifetime(mParticleLifetime.value(tick)); + newParticle->setFadeOut(mParticleFadeOut.value(tick)); + newParticle->setFadeIn(mParticleFadeIn.value(tick)); + newParticle->setAlpha(mParticleAlpha.value(tick)); for (std::list::iterator i = mParticleChildEmitters.begin(); i != mParticleChildEmitters.end(); diff --git a/src/particleemitter.h b/src/particleemitter.h index 5cf3fd46..4ef088f6 100644 --- a/src/particleemitter.h +++ b/src/particleemitter.h @@ -27,10 +27,11 @@ #include #include "utils/xml.h" -#include "utils/minmax.h" #include "resources/animation.h" +#include "particleemitterprop.h" + class Image; class Map; class Particle; @@ -66,7 +67,7 @@ class ParticleEmitter * Spawns new particles * @return: a list of created particles */ - std::list createParticles(); + std::list createParticles(int tick); /** * Sets the target of the particles that are created @@ -76,50 +77,50 @@ class ParticleEmitter { mParticleTarget = target; }; private: - template MinMax readMinMax(xmlNodePtr propertyNode, T def); + template ParticleEmitterProp readParticleEmitterProp(xmlNodePtr propertyNode, T def); /** * initial position of particles: */ - MinMax mParticlePosX, mParticlePosY, mParticlePosZ; + ParticleEmitterProp mParticlePosX, mParticlePosY, mParticlePosZ; /** * initial vector of particles: */ - MinMax mParticleAngleHorizontal, mParticleAngleVertical; + ParticleEmitterProp mParticleAngleHorizontal, mParticleAngleVertical; /** * Initial velocity of particles */ - MinMax mParticlePower; + ParticleEmitterProp mParticlePower; /* * Vector changing of particles: */ - MinMax mParticleGravity; - MinMax mParticleRandomness; - MinMax mParticleBounce; + ParticleEmitterProp mParticleGravity; + ParticleEmitterProp mParticleRandomness; + ParticleEmitterProp mParticleBounce; bool mParticleFollow; /* * Properties of targeting particles: */ Particle *mParticleTarget; - MinMax mParticleAcceleration; - MinMax mParticleDieDistance; - MinMax mParticleMomentum; + ParticleEmitterProp mParticleAcceleration; + ParticleEmitterProp mParticleDieDistance; + ParticleEmitterProp mParticleMomentum; /* * Behavior over time of the particles: */ - MinMax mParticleLifetime; - MinMax mParticleFadeOut; - MinMax mParticleFadeIn; + ParticleEmitterProp mParticleLifetime; + ParticleEmitterProp mParticleFadeOut; + ParticleEmitterProp mParticleFadeIn; Map *mMap; /**< Map the particles are spawned on */ - MinMax mOutput; /**< Number of particles spawned per update */ - MinMax mOutputPause; /**< Pause in frames between two spawns */ + ParticleEmitterProp mOutput; /**< Number of particles spawned per update */ + ParticleEmitterProp mOutputPause; /**< Pause in frames between two spawns */ int mOutputPauseLeft; /* @@ -127,7 +128,7 @@ class ParticleEmitter */ Image *mParticleImage; /**< Particle image, if used */ Animation mParticleAnimation; /**< Filename of particle animation file */ - MinMax mParticleAlpha; /**< Opacity of the graphical representation of the particles */ + ParticleEmitterProp mParticleAlpha; /**< Opacity of the graphical representation of the particles */ /** List of emitters the spawned particles are equipped with */ std::list mParticleChildEmitters; diff --git a/src/particleemitterprop.h b/src/particleemitterprop.h new file mode 100644 index 00000000..e645c169 --- /dev/null +++ b/src/particleemitterprop.h @@ -0,0 +1,112 @@ +/* + * The Mana World + * Copyright 2006 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 +#include + +/** + * Returns a random numeric value that is larger than or equal min and smaller + * than max + */ + +enum ChangeFunc +{ + FUNC_NONE, + FUNC_SINE, + FUNC_SAW, + FUNC_TRIANGLE, + FUNC_SQUARE +}; + +template struct ParticleEmitterProp +{ + ParticleEmitterProp(): + changeFunc(FUNC_NONE) + { + } + + void set(T min, T max) + { + minVal=min; maxVal=max; + } + + void set(T val) + { + set(val, val); + } + + void setFunction(ChangeFunc func, T amplitude, int period, int phase) + { + changeFunc = func; + changeAmplitude = amplitude; + changePeriod = period; + changePhase = phase; + } + + T value(int tick) + { + tick += changePhase; + T val = (T) (minVal + (maxVal - minVal) * (rand() / ((double) RAND_MAX + 1))); + + switch (changeFunc) + { + case FUNC_SINE: + val += (T) std::sin(M_PI * 2 * ((double)(tick%changePeriod) / (double)changePeriod)) * changeAmplitude; + break; + case FUNC_SAW: + val += (T) (changeAmplitude * ((double)(tick%changePeriod) / (double)changePeriod)) * 2 - changeAmplitude; + break; + case FUNC_TRIANGLE: + if ((tick%changePeriod) * 2 < changePeriod) + { + val += changeAmplitude - (T)((tick%changePeriod) / (double)changePeriod) * changeAmplitude * 4; + } else { + val += changeAmplitude * -3 + (T)((tick%changePeriod) / (double)changePeriod) * changeAmplitude * 4; + // I have no idea why this works but it does + } + break; + case FUNC_SQUARE: + if ((tick%changePeriod) * 2 < changePeriod) + { + val += changeAmplitude; + } else { + val -= changeAmplitude; + } + break; + case FUNC_NONE: + default: + //nothing + break; + } + + return val; + } + + T minVal; + T maxVal; + + ChangeFunc changeFunc; + T changeAmplitude; + int changePeriod; + int changePhase; +}; diff --git a/src/utils/minmax.h b/src/utils/minmax.h deleted file mode 100644 index 427c5da7..00000000 --- a/src/utils/minmax.h +++ /dev/null @@ -1,50 +0,0 @@ -/* - * The Mana World - * Copyright 2006 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 - -/** - * Returns a random numeric value that is larger than or equal min and smaller - * than max - */ - -template struct MinMax -{ - void set(T min, T max) - { - minVal=min; maxVal=max; - } - - void set(T val) - { - set(val, val); - } - - T value() - { - return (T)(minVal + (maxVal - minVal) * (rand() / ((double) RAND_MAX + 1))); - } - - T minVal; - T maxVal; -}; diff --git a/tmw.cbp b/tmw.cbp index 9c009766..f108d01d 100644 --- a/tmw.cbp +++ b/tmw.cbp @@ -95,6 +95,8 @@ + + @@ -105,6 +107,8 @@ + + @@ -152,6 +156,8 @@ + + @@ -172,6 +178,7 @@ + @@ -274,6 +281,7 @@ + @@ -290,6 +298,7 @@ + @@ -301,6 +310,8 @@ + + @@ -341,22 +352,30 @@ + + + + - + + + + + + - - + + -- cgit v1.2.3-60-g2f50 From 62a5f6b90c447a73bf0459443a909cbec71dcb25 Mon Sep 17 00:00:00 2001 From: Bjørn Lindeijer Date: Sun, 26 Oct 2008 09:45:25 +0000 Subject: Since we somehow did end up depending on a hacked eAthena instead of supporting existing features decently, assign the shoes and gloves IDs. --- ChangeLog | 6 ++++++ src/net/beinghandler.cpp | 12 ++++-------- 2 files changed, 10 insertions(+), 8 deletions(-) (limited to 'src') diff --git a/ChangeLog b/ChangeLog index afdc97da..34d27d69 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2008-10-26 Bjørn Lindeijer + + * src/net/beinghandler.cpp: Since we somehow did end up depending on a + hacked eAthena instead of supporting existing features decently, + assign the shoes and gloves IDs. + 2008-10-26 Philipp Sehmisch * src/particle.cpp, src/particleemitter.cpp, src/particleemitter.h, diff --git a/src/net/beinghandler.cpp b/src/net/beinghandler.cpp index 7a0be952..d0262ad9 100644 --- a/src/net/beinghandler.cpp +++ b/src/net/beinghandler.cpp @@ -130,10 +130,8 @@ void BeingHandler::handleMessage(MessageIn *msg) headTop = msg->readInt16(); headMid = msg->readInt16(); hairColor = msg->readInt16(); - msg->readInt16(); // clothes color - not used - msg->readInt16(); // head dir - shoes = 0; - gloves = 0; + shoes = msg->readInt16(); // clothes color - "abused" as shoes + gloves = msg->readInt16(); // head dir - "abused" as gloves msg->readInt16(); // guild msg->readInt16(); // unknown msg->readInt16(); // unknown @@ -403,10 +401,8 @@ void BeingHandler::handleMessage(MessageIn *msg) headTop = msg->readInt16(); headMid = msg->readInt16(); hairColor = msg->readInt16(); - shoes = 0; - gloves = 0; - msg->readInt16(); // clothes color - not used - msg->readInt16(); // head dir + shoes = msg->readInt16(); // clothes color - "abused" as shoes + gloves = msg->readInt16(); // head dir - "abused" as gloves msg->readInt32(); // guild msg->readInt32(); // emblem msg->readInt16(); // manner -- cgit v1.2.3-60-g2f50 From f924885ea0db5842b080610ec63e61a4bcc2a30c Mon Sep 17 00:00:00 2001 From: Bjørn Lindeijer Date: Tue, 28 Oct 2008 18:38:33 +0000 Subject: Fixed trade window being visible on client startup when it was visible on shutdown. Thanks to Trelos for looking into this problem. --- ChangeLog | 5 +++++ src/game.cpp | 1 + 2 files changed, 6 insertions(+) (limited to 'src') diff --git a/ChangeLog b/ChangeLog index 34d27d69..33a9fa50 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2008-10-28 Bjørn Lindeijer + + * src/game.cpp: Fixed trade window being visible on client startup + when it was visible on shutdown. + 2008-10-26 Bjørn Lindeijer * src/net/beinghandler.cpp: Since we somehow did end up depending on a diff --git a/src/game.cpp b/src/game.cpp index aaf5242c..3e3cb4b5 100644 --- a/src/game.cpp +++ b/src/game.cpp @@ -221,6 +221,7 @@ void createGuiWindows(Network *network) true)); buyDialog->setVisible(false); sellDialog->setVisible(false); + tradeWindow->setVisible(false); menuWindow->setVisible((bool) config.getValue( menuWindow->getWindowName() + "Visible", true)); itemShortcutWindow->setVisible((bool) config.getValue( -- cgit v1.2.3-60-g2f50 From d947a9ea994fa7bf4899b2460b1904557dfbc796 Mon Sep 17 00:00:00 2001 From: Dennis Friis Date: Tue, 28 Oct 2008 21:54:30 +0000 Subject: Handle NPC script close. Fixes client input freeze on no-dialog NPCs. --- ChangeLog | 5 +++++ src/net/npchandler.cpp | 10 ++++++++-- 2 files changed, 13 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/ChangeLog b/ChangeLog index 33a9fa50..380c4382 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2008-10-28 Dennis Friis + + * src/net/npchandler.cpp: Handle NPC script close. Fixes client input + freeze on no-dialog NPCs. + 2008-10-28 Bjørn Lindeijer * src/game.cpp: Fixed trade window being visible on client startup diff --git a/src/net/npchandler.cpp b/src/net/npchandler.cpp index da21b2a5..d41aaaad 100644 --- a/src/net/npchandler.cpp +++ b/src/net/npchandler.cpp @@ -70,9 +70,15 @@ void NPCHandler::handleMessage(MessageIn *msg) npcTextDialog->setVisible(true); break; - case SMSG_NPC_NEXT: case SMSG_NPC_CLOSE: - // Next/Close button in NPC dialog, currently unused + id = msg->readInt32(); + dynamic_cast(beingManager->findBeing(id)); + if (current_npc == dynamic_cast(beingManager->findBeing(id))) + current_npc = NULL; + break; + + case SMSG_NPC_NEXT: + // Next button in NPC dialog, currently unused break; } } -- cgit v1.2.3-60-g2f50 From 957da7a45ac7077b65f7ea00682d50345c3937f5 Mon Sep 17 00:00:00 2001 From: Dennis Friis Date: Thu, 30 Oct 2008 03:11:06 +0000 Subject: Do not set shoe sprite on player move packet unless supported by eAthena. --- ChangeLog | 4 ++++ src/net/beinghandler.cpp | 6 +++--- 2 files changed, 7 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/ChangeLog b/ChangeLog index 380c4382..2c29afae 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2008-10-30 Dennis Friis + * src/net/beinghandler.cpp: Do not set shoe sprite on player move + packet unless supported by eAthena. + 2008-10-28 Dennis Friis * src/net/npchandler.cpp: Handle NPC script close. Fixes client input diff --git a/src/net/beinghandler.cpp b/src/net/beinghandler.cpp index d0262ad9..101d1149 100644 --- a/src/net/beinghandler.cpp +++ b/src/net/beinghandler.cpp @@ -415,9 +415,9 @@ void BeingHandler::handleMessage(MessageIn *msg) dstBeing->setSprite(Being::BOTTOMCLOTHES_SPRITE, headBottom); dstBeing->setSprite(Being::TOPCLOTHES_SPRITE, headMid); dstBeing->setSprite(Being::HAT_SPRITE, headTop); - dstBeing->setSprite(Being::SHOE_SPRITE, shoes); - // Compensation for the unpatched TMW server - if (gloves > 10) + if (shoes > 10) // only if supported by eAthena + dstBeing->setSprite(Being::SHOE_SPRITE, shoes); + if (gloves > 10) // only if supported by eAthena dstBeing->setSprite(Being::GLOVES_SPRITE, gloves); dstBeing->setSprite(Being::CAPE_SPRITE, cape); dstBeing->setSprite(Being::MISC1_SPRITE, misc1); -- cgit v1.2.3-60-g2f50 From 779061286036dcee24c0dd65d01f71b8b1e234df Mon Sep 17 00:00:00 2001 From: Philipp Sehmisch Date: Thu, 30 Oct 2008 22:22:55 +0000 Subject: Added particle effect on critical hits. --- ChangeLog | 5 +++++ src/net/beinghandler.cpp | 12 ++++++++---- 2 files changed, 13 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/ChangeLog b/ChangeLog index 2c29afae..79a1567f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2008-10-30 Philipp Sehmisch + + * src/net/beinghandler.cpp: Added particle effect on critical + hits. + 2008-10-30 Dennis Friis * src/net/beinghandler.cpp: Do not set shoe sprite on player move packet unless supported by eAthena. diff --git a/src/net/beinghandler.cpp b/src/net/beinghandler.cpp index 101d1149..fa2b6728 100644 --- a/src/net/beinghandler.cpp +++ b/src/net/beinghandler.cpp @@ -235,8 +235,12 @@ void BeingHandler::handleMessage(MessageIn *msg) switch (type) { - case 0x00: // Damage case 0x0a: // Critical Damage + if (dstBeing) { + dstBeing->controlParticle(particleEngine->addEffect( + "graphics/particles/crit.particle.xml", 0, 0)); + } + case 0x00: // Damage if (dstBeing) { dstBeing->takeDamage(param1); } @@ -415,9 +419,9 @@ void BeingHandler::handleMessage(MessageIn *msg) dstBeing->setSprite(Being::BOTTOMCLOTHES_SPRITE, headBottom); dstBeing->setSprite(Being::TOPCLOTHES_SPRITE, headMid); dstBeing->setSprite(Being::HAT_SPRITE, headTop); - if (shoes > 10) // only if supported by eAthena - dstBeing->setSprite(Being::SHOE_SPRITE, shoes); - if (gloves > 10) // only if supported by eAthena + dstBeing->setSprite(Being::SHOE_SPRITE, shoes); + // Compensation for the unpatched TMW server + if (gloves > 10) dstBeing->setSprite(Being::GLOVES_SPRITE, gloves); dstBeing->setSprite(Being::CAPE_SPRITE, cape); dstBeing->setSprite(Being::MISC1_SPRITE, misc1); -- cgit v1.2.3-60-g2f50 From 885a9c145464a2b376edfd1c9677b84f6d4a8ce5 Mon Sep 17 00:00:00 2001 From: Bjørn Lindeijer Date: Fri, 31 Oct 2008 20:25:35 +0000 Subject: Applied patch by vargavind which adds more special characters to the font. Somehow they were already part of the font image, but not used. --- ChangeLog | 10 ++++++++-- src/gui/gui.cpp | 2 +- 2 files changed, 9 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/ChangeLog b/ChangeLog index 79a1567f..71b9986a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,9 +1,15 @@ +2008-10-31 Bjørn Lindeijer + + * src/gui/gui.cpp: Applied patch by vargavind which adds more special + characters to the font. Somehow they were already part of the font + image, but not used. + 2008-10-30 Philipp Sehmisch - * src/net/beinghandler.cpp: Added particle effect on critical - hits. + * src/net/beinghandler.cpp: Added particle effect on critical hits. 2008-10-30 Dennis Friis + * src/net/beinghandler.cpp: Do not set shoe sprite on player move packet unless supported by eAthena. diff --git a/src/gui/gui.cpp b/src/gui/gui.cpp index db0b9f80..b9997d3a 100644 --- a/src/gui/gui.cpp +++ b/src/gui/gui.cpp @@ -107,7 +107,7 @@ Gui::Gui(Graphics *graphics): try { mGuiFont = new gcn::ImageFont("graphics/gui/sansserif8.png", " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[" - "\\]^_`abcdefghijklmnopqrstuvwxyz{|}~|" + "\\]^_`abcdefghijklmnopqrstuvwxyz{|}~|áÁéÉßøèÈ" ); } catch (gcn::Exception e) -- cgit v1.2.3-60-g2f50 From 4cfdb3620ccbd0de6bd53c5f22e7b6d3801627bf Mon Sep 17 00:00:00 2001 From: Fate Date: Sat, 1 Nov 2008 22:39:26 +0000 Subject: * Updated GUI table and model to better handle NULL widgets during initialisation * On SMSG_MOVE et al., ignore boots and glove information-- that information is incorrect and we're guaranteed to already have the correct information anyway. * Properly decode `is dead' information for PCs, so that dead players, when encountered, will be lying on the ground, dead, rather than standing. * Use `skills.xml' file from client data to determine skill names * Report client version number (hereby bumped to 1) in unused charserver slot (ignored by vanilla eAthena) --- ChangeLog | 24 +++++++ src/gui/skill.cpp | 174 ++++++++++++++++++++++++++++++++++------------- src/gui/skill.h | 12 ++-- src/gui/table.cpp | 11 ++- src/gui/table_model.cpp | 10 ++- src/gui/table_model.h | 11 ++- src/main.cpp | 3 +- src/net/beinghandler.cpp | 19 +++--- src/net/network.h | 4 ++ src/net/skillhandler.cpp | 1 + 10 files changed, 202 insertions(+), 67 deletions(-) (limited to 'src') diff --git a/ChangeLog b/ChangeLog index 71b9986a..181a1de6 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,27 @@ +2008-11-01 Fate + + * src/gui/skill.cpp (SkillDialog): Display skills using a table + and using an external `skills.xml' file + (SkillDialog::update): No longer segfault when skills beyond 199 + are reported + + * src/gui/table_model.cpp: Several fixes to tables and table + models to better handle `NULL' widgets and `NULL' models during + initialisation. + + * src/main.cpp (charLogin): Send client protocol version to + character server (this is ignored in vanilla eAthena). + + * src/net/network.h (TMW_CLIENT_PROTOCOL_VERSION): Record client + protocol version + + * src/net/beinghandler.cpp (BeingHandler::handleMessage): Properly + decode whether character is dead + (BeingHandler::handleMessage): for SMSG_PLAYER_MOVE et al., ignore + shoe and glove updates-- they are incorrect and not needed (we get + them correctly when the PC is spawned for the client and they are + updated as needed by other packages.) + 2008-10-31 Bjørn Lindeijer * src/gui/gui.cpp: Applied patch by vargavind which adds more special diff --git a/src/gui/skill.cpp b/src/gui/skill.cpp index 3ab40c9a..c753ee1a 100644 --- a/src/gui/skill.cpp +++ b/src/gui/skill.cpp @@ -35,48 +35,103 @@ #include "../localplayer.h" #include "../utils/dtor.h" +#include "utils/xml.h" +#include "log.h" -const char *skill_db[] = { - // 0-99 - "", "Basic", "Sword", "Two hand", "HP regeneration", "Bash", "Provoke", "Magnum", "Endure", "MP regeneration", - "", "", "", "", "", "", "", "", "", "", - "", "", "", "", "", "", "", "", "", "", - "", "", "", "", "", "", "MAX weight", "Discount", "Overcharge", "", - "Identify", "", "", "", "", "", "", "", "Double", "Miss", - "", "", "", "", "", "", "", "", "", "", - "", "", "", "", "", "", "", "", "", "", - "", "", "", "", "", "", "", "", "", "", - "", "", "", "", "", "", "", "", "", "", - "", "", "", "", "", "", "", "", "", "", - // 100-199 - "", "", "", "", "", "", "", "", "", "", - "", "", "", "", "", "", "", "", "", "", - "", "", "", "", "", "", "", "", "", "", - "", "", "", "", "", "", "", "", "", "", - "", "", "First aid", "Play as dead", "Moving recovery", "Fatal blow", "Auto berserk", "", "", "", - "", "", "", "", "", "", "", "", "", "", - "", "", "", "", "", "", "", "", "", "", - "", "", "", "", "", "", "", "", "", "", - "", "", "", "", "", "", "", "", "", "", - "", "", "", "", "", "", "", "", "", "", +#define SKILLS_FILE "skills.xml" + +struct SkillInfo { + std::string name; + bool modifiable; +}; + +std::vector skill_db; + +static void initSkillinfo(void); + +class SkillGuiTableModel : public StaticTableModel +{ +public: + SkillGuiTableModel(SkillDialog *dialog) : + StaticTableModel(0, 3) + { + mEntriesNr = 0; + mDialog = dialog; + update(); + } + + virtual int + getRows(void) { return mEntriesNr; } + + virtual int + getColumnWidth(int index) + { + switch (index) { + case 0: return 160; + default: return 35; + } + } + + virtual int + getRowHeight(void) + { + return 12; + } + + virtual void + update(void) + { + mEntriesNr = mDialog->getSkills().size(); + resize(); + + for (int i = 0; i < mEntriesNr; i++) { + SKILL *skill = mDialog->getSkills()[i]; + SkillInfo *info = &skill_db[skill->id]; + char tmp[128]; + + sprintf(tmp, "%c%s", info->modifiable? ' ' : '*', info->name.c_str()); + gcn::Label *name_label = new gcn::Label(std::string(tmp)); + + sprintf(tmp, "Lv:%i", skill->lv); + gcn::Label *lv_label = new gcn::Label(std::string(tmp)); + + sprintf(tmp, "Sp:%i", skill->sp); + gcn::Label *sp_label = new gcn::Label(std::string(tmp)); + + set(i, 0, name_label); + set(i, 1, lv_label); + set(i, 2, sp_label); + } + } + + +private: + SkillDialog *mDialog; + int mEntriesNr; }; SkillDialog::SkillDialog(): Window("Skills") { + initSkillinfo(); + mTableModel = new SkillGuiTableModel(this); + mTable.setModel(mTableModel); + mTable.setLinewiseSelection(true); + setWindowName("Skills"); setCloseButton(true); setDefaultSize(windowContainer->getWidth() - 255, 25, 240, 240); - mSkillListBox = new ListBox(this); - ScrollArea *skillScrollArea = new ScrollArea(mSkillListBox); +// mSkillListBox = new ListBox(this); + ScrollArea *skillScrollArea = new ScrollArea(&mTable); mPointsLabel = new gcn::Label("Skill Points:"); mIncButton = new Button("Up", "inc", this); mUseButton = new Button("Use", "use", this); mUseButton->setEnabled(false); - mSkillListBox->setActionEventId("skill"); +// mSkillListBox->setActionEventId("skill"); + mTable.setActionEventId("skill"); skillScrollArea->setHorizontalScrollPolicy(gcn::ScrollArea::SHOW_NEVER); skillScrollArea->setDimension(gcn::Rectangle(5, 5, 230, 180)); @@ -90,7 +145,8 @@ SkillDialog::SkillDialog(): add(mIncButton); add(mUseButton); - mSkillListBox->addActionListener(this); +// mSkillListBox->addActionListener(this); + mTable.addActionListener(this); setLocationRelativeTo(getParent()); loadWindowState(); @@ -98,7 +154,6 @@ SkillDialog::SkillDialog(): SkillDialog::~SkillDialog() { - cleanList(); } void SkillDialog::action(const gcn::ActionEvent &event) @@ -106,7 +161,7 @@ void SkillDialog::action(const gcn::ActionEvent &event) if (event.getId() == "inc") { // Increment skill - int selectedSkill = mSkillListBox->getSelected(); + int selectedSkill = mTable.getSelectedRow();//mSkillListBox->getSelected(); if (selectedSkill >= 0) { player_node->raiseSkill(mSkillList[selectedSkill]->id); @@ -115,7 +170,7 @@ void SkillDialog::action(const gcn::ActionEvent &event) else if (event.getId() == "skill") { mIncButton->setEnabled( - mSkillListBox->getSelected() > -1 && + mTable.getSelectedRow() > -1 && player_node->mSkillPoint > 0); } else if (event.getId() == "close") @@ -132,8 +187,13 @@ void SkillDialog::update() mPointsLabel->setCaption(tmp); } - mIncButton->setEnabled(mSkillListBox->getSelected() > -1 && - player_node->mSkillPoint > 0); + int selectedSkill = mTable.getSelectedRow(); + + mIncButton->setEnabled(selectedSkill > -1 + && skill_db[mSkillList[selectedSkill]->id].modifiable + && player_node->mSkillPoint > 0); + + mTableModel->update(); } int SkillDialog::getNumberOfElements() @@ -141,20 +201,6 @@ int SkillDialog::getNumberOfElements() return mSkillList.size(); } -std::string SkillDialog::getElementAt(int i) -{ - if (i >= 0 && i < (int)mSkillList.size()) - { - char tmp[128]; - sprintf(tmp, "%s Lv: %i Sp: %i", - skill_db[mSkillList[i]->id], - mSkillList[i]->lv, - mSkillList[i]->sp); - return tmp; - } - return ""; -} - bool SkillDialog::hasSkill(int id) { for (unsigned int i = 0; i < mSkillList.size(); i++) { @@ -189,3 +235,39 @@ void SkillDialog::cleanList() for_each(mSkillList.begin(), mSkillList.end(), make_dtor(mSkillList)); mSkillList.clear(); } + +static void +initSkillinfo(void) +{ + SkillInfo emptySkillInfo = { "", false }; + + XML::Document doc(SKILLS_FILE); + xmlNodePtr root = doc.rootNode(); + + if (!root || !xmlStrEqual(root->name, BAD_CAST "skills")) + { + logger->log("Error loading skills file: " + SKILLS_FILE); + skill_db.resize(2, emptySkillInfo); + skill_db[1].name = "Basic"; + skill_db[1].modifiable = true; + return; + } + + for_each_xml_child_node(node, root) + { + if (xmlStrEqual(node->name, BAD_CAST "skill")) + { + int index = atoi(XML::getProperty(node, "id", "-1").c_str()); + std::string name = XML::getProperty(node, "name", ""); + bool modifiable = !atoi(XML::getProperty(node, "fixed", "0").c_str()); + + if (index >= 0) { + skill_db.resize(index + 1, emptySkillInfo); + skill_db[index].name = name; + skill_db[index].modifiable = modifiable; + } + } + } +} + diff --git a/src/gui/skill.h b/src/gui/skill.h index 6879640c..66ec35f3 100644 --- a/src/gui/skill.h +++ b/src/gui/skill.h @@ -30,6 +30,7 @@ #include #include "window.h" +#include "table.h" #include "../guichanfwd.h" @@ -38,13 +39,14 @@ struct SKILL { short lv, sp; }; +class SkillGuiTableModel; + /** * The skill dialog. * * \ingroup Interface */ -class SkillDialog : public Window, public gcn::ActionListener, - public gcn::ListModel +class SkillDialog : public Window, public gcn::ActionListener { public: /** @@ -62,15 +64,17 @@ class SkillDialog : public Window, public gcn::ActionListener, void update(); int getNumberOfElements(); - std::string getElementAt(int); bool hasSkill(int id); void addSkill(int id, int lv, int sp); void setSkill(int id, int lv, int sp); void cleanList(); + const std::vector& getSkills(void) const { return mSkillList; } + private: - gcn::ListBox *mSkillListBox; + GuiTable mTable;//gcn::ListBox *mSkillListBox; + SkillGuiTableModel *mTableModel; gcn::Label *mPointsLabel; gcn::Button *mIncButton; gcn::Button *mUseButton; diff --git a/src/gui/table.cpp b/src/gui/table.cpp index 89a93825..bddfbfed 100644 --- a/src/gui/table.cpp +++ b/src/gui/table.cpp @@ -105,8 +105,10 @@ GuiTable::setModel(TableModel *new_model) mModel = new_model; installActionListeners(); - new_model->installListener(this); - recomputeDimensions(); + if (new_model) { + new_model->installListener(this); + recomputeDimensions(); + } } @@ -187,6 +189,9 @@ GuiTable::uninstallActionListeners(void) void GuiTable::installActionListeners(void) { + if (!mModel) + return; + int rows = mModel->getRows(); int columns = mModel->getColumns(); @@ -367,7 +372,7 @@ GuiTable::getWidgetAt(int x, int y) if (row > -1 && column > -1) { gcn::Widget *w = mModel->getElementAt(row, column); - if (w->isFocusable()) + if (w && w->isFocusable()) return w; else return NULL; // Grab the event locally diff --git a/src/gui/table_model.cpp b/src/gui/table_model.cpp index 78df0636..57da29d9 100644 --- a/src/gui/table_model.cpp +++ b/src/gui/table_model.cpp @@ -70,11 +70,19 @@ StaticTableModel::~StaticTableModel(void) delete *it; } +void +StaticTableModel::resize(void) +{ + mRows = getRows(); + mColumns = getColumns(); + mTableModel.resize(mRows * mColumns, NULL); +} + void StaticTableModel::set(int row, int column, gcn::Widget *widget) { if (row >= mRows || row < 0 - || column >= mColumns || row > 0) + || column >= mColumns || column < 0) // raise exn? return; diff --git a/src/gui/table_model.h b/src/gui/table_model.h index 48ef1c0d..4be4e60e 100644 --- a/src/gui/table_model.h +++ b/src/gui/table_model.h @@ -120,9 +120,14 @@ public: */ virtual void fixRowHeight(int height); - virtual int getRows(); - virtual int getColumns(); - virtual int getRowHeight(); + /** + * Resizes the table model + */ + virtual void resize(void); + + virtual int getRows(void); + virtual int getColumns(void); + virtual int getRowHeight(void); virtual int getColumnWidth(int index); virtual gcn::Widget *getElementAt(int row, int column); diff --git a/src/main.cpp b/src/main.cpp index 373dc100..6c9fe45c 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -600,7 +600,8 @@ void charLogin(Network *network, LoginData *loginData) outMsg.writeInt32(loginData->account_ID); outMsg.writeInt32(loginData->session_ID1); outMsg.writeInt32(loginData->session_ID2); - outMsg.writeInt16(0); // unknown + // [Fate] The next word is unused by the old char server, so we squeeze in tmw client version information + outMsg.writeInt16(TMW_CLIENT_PROTOCOL_VERSION); outMsg.writeInt8(loginData->sex); // We get 4 useless bytes before the real answer comes in diff --git a/src/net/beinghandler.cpp b/src/net/beinghandler.cpp index fa2b6728..1f2463b3 100644 --- a/src/net/beinghandler.cpp +++ b/src/net/beinghandler.cpp @@ -405,8 +405,8 @@ void BeingHandler::handleMessage(MessageIn *msg) headTop = msg->readInt16(); headMid = msg->readInt16(); hairColor = msg->readInt16(); - shoes = msg->readInt16(); // clothes color - "abused" as shoes - gloves = msg->readInt16(); // head dir - "abused" as gloves + msg->readInt16(); // clothes color - Aethyra-"abused" as shoes, we ignore it + msg->readInt16(); // head dir - Aethyra-"abused" as gloves, we ignore it msg->readInt32(); // guild msg->readInt32(); // emblem msg->readInt16(); // manner @@ -419,10 +419,6 @@ void BeingHandler::handleMessage(MessageIn *msg) dstBeing->setSprite(Being::BOTTOMCLOTHES_SPRITE, headBottom); dstBeing->setSprite(Being::TOPCLOTHES_SPRITE, headMid); dstBeing->setSprite(Being::HAT_SPRITE, headTop); - dstBeing->setSprite(Being::SHOE_SPRITE, shoes); - // Compensation for the unpatched TMW server - if (gloves > 10) - dstBeing->setSprite(Being::GLOVES_SPRITE, gloves); dstBeing->setSprite(Being::CAPE_SPRITE, cape); dstBeing->setSprite(Being::MISC1_SPRITE, misc1); dstBeing->setSprite(Being::MISC2_SPRITE, misc2); @@ -447,9 +443,14 @@ void BeingHandler::handleMessage(MessageIn *msg) if (msg->getId() == SMSG_PLAYER_UPDATE_1) { - if (msg->readInt8() == 2) - { - dstBeing->setAction(Being::SIT); + switch (msg->readInt8()) { + + case 1: dstBeing->setAction(Being::DEAD); + break; + + case 2: dstBeing->setAction(Being::SIT); + break; + } } else if (msg->getId() == SMSG_PLAYER_MOVE) diff --git a/src/net/network.h b/src/net/network.h index d6fec761..0326b6ce 100644 --- a/src/net/network.h +++ b/src/net/network.h @@ -29,6 +29,10 @@ #include #include +#define TMW_CLIENT_PROTOCOL_VERSION 1 + /**< Protocol version, reported to the eAthena char and mapserver who + can adjust the protocol accordingly */ + class MessageHandler; class MessageIn; diff --git a/src/net/skillhandler.cpp b/src/net/skillhandler.cpp index 828c2378..53cfda1a 100644 --- a/src/net/skillhandler.cpp +++ b/src/net/skillhandler.cpp @@ -73,6 +73,7 @@ void SkillHandler::handleMessage(MessageIn *msg) } } } + skillDialog->update(); break; case SMSG_SKILL_FAILED: -- cgit v1.2.3-60-g2f50 From 8f1bf397990729c3a807bbbe0b643bc97446c923 Mon Sep 17 00:00:00 2001 From: Fate Date: Sat, 1 Nov 2008 23:45:48 +0000 Subject: * Use hair.xml to determine hair colours (#514) * Auto-detect number of hair styles available (#514) --- ChangeLog | 4 +++ src/being.cpp | 95 ++++++++++++++++++++++++++++++++++++++++++++++--- src/being.h | 10 ++++-- src/gui/char_select.cpp | 6 ++-- src/player.cpp | 22 +++--------- 5 files changed, 110 insertions(+), 27 deletions(-) (limited to 'src') diff --git a/ChangeLog b/ChangeLog index 181a1de6..91e7de25 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,9 @@ 2008-11-01 Fate + * src/being.cpp (initializeHair): Read hair colours from external + `hair.xml' file (clientdata) + (initializeHair): Auto-detect number of hair colours + * src/gui/skill.cpp (SkillDialog): Display skills using a table and using an external `skills.xml' file (SkillDialog::update): No longer segfault when skills beyond 199 diff --git a/src/being.cpp b/src/being.cpp index dca87677..1569fcc3 100644 --- a/src/being.cpp +++ b/src/being.cpp @@ -36,6 +36,7 @@ #include "localplayer.h" #include "text.h" +#include "resources/itemdb.h" #include "resources/resourcemanager.h" #include "resources/imageset.h" #include "resources/iteminfo.h" @@ -48,6 +49,7 @@ #include "utils/xml.h" #define BEING_EFFECTS_FILE "effects.xml" +#define HAIR_FILE "hair.xml" int Being::instances = 0; ImageSet *Being::emotionSet = NULL; @@ -145,8 +147,8 @@ Being::setPath(const Path &path) void Being::setHairStyle(int style, int color) { - mHairStyle = style < 0 ? mHairStyle : style % NR_HAIR_STYLES; - mHairColor = color < 0 ? mHairColor : color % NR_HAIR_COLORS; + mHairStyle = style < 0 ? mHairStyle : style % getHairStylesNr(); + mHairColor = color < 0 ? mHairColor : color % getHairColorsNr(); } void @@ -304,7 +306,7 @@ Being::setDirection(Uint8 direction) for (int i = 0; i < VECTOREND_SPRITE; i++) { - if (mSprites[i] != NULL) + if (mSprites[i] != NULL) mSprites[i]->setDirection(dir); } } @@ -516,7 +518,6 @@ Being::getHeight() const } - struct EffectDescription { std::string mGFXEffect; std::string mSFXEffect; @@ -609,3 +610,89 @@ Being::internalTriggerEffect(int effectId, bool sfx, bool gfx) sound.playSfx(ed->mSFXEffect); } } + + + + +static int hairStylesNr; +static int hairColorsNr; +static std::vector hairColors; + +static void +initializeHair(void); + +int +Being::getHairStylesNr(void) +{ + initializeHair(); + return hairStylesNr; +} + +int +Being::getHairColorsNr(void) +{ + initializeHair(); + return hairColorsNr; +} + +std::string +Being::getHairColor(int index) +{ + initializeHair(); + if (index < 0 || index >= hairColorsNr) + return "#000000"; + + return hairColors[index]; +} + +static bool hairInitialized = false; + +static void +initializeHair(void) +{ + if (hairInitialized) + return; + + // Hairstyles are encoded as negative numbers. Count how far negative we can go. + int hairstylesCtr = -1; + while (ItemDB::get(hairstylesCtr).getSprite(0) != "error.xml") + --hairstylesCtr; + + hairStylesNr = -hairstylesCtr; // done. + if (hairStylesNr == 0) + hairStylesNr = 1; // No hair style -> no hair + + hairColorsNr = 0; + + XML::Document doc(HAIR_FILE); + xmlNodePtr root = doc.rootNode(); + + if (!root || !xmlStrEqual(root->name, BAD_CAST "colors")) + { + logger->log("Error loading being hair configuration file"); + } else { + for_each_xml_child_node(node, root) + { + if (xmlStrEqual(node->name, BAD_CAST "color")) + { + int index = atoi(XML::getProperty(node, "id", "-1").c_str()); + std::string value = XML::getProperty(node, "value", ""); + + if (index >= 0 && value != "") { + if (index >= hairColorsNr) { + hairColorsNr = index + 1; + hairColors.resize(hairColorsNr, "#000000"); + } + hairColors[index] = value; + } + } + } + } // done initializing + + if (hairColorsNr == 0) { // No colours -> black only + hairColorsNr = 1; + hairColors.resize(hairColorsNr, "#000000"); + } + + hairInitialized = 1; +} diff --git a/src/being.h b/src/being.h index d5fe7790..76317797 100644 --- a/src/being.h +++ b/src/being.h @@ -34,9 +34,6 @@ #include "map.h" #include "animatedsprite.h" -#define NR_HAIR_STYLES 8 -#define NR_HAIR_COLORS 10 - #define FIRST_IGNORE_EMOTE 14 class AnimatedSprite; @@ -370,6 +367,13 @@ class Being : public Sprite const std::auto_ptr mEquipment; + + static int getHairColorsNr(void); + + static int getHairStylesNr(void); + + static std::string getHairColor(int index); + protected: /** * Sets the new path for this being. diff --git a/src/gui/char_select.cpp b/src/gui/char_select.cpp index 8ab3b879..661a9fa7 100644 --- a/src/gui/char_select.cpp +++ b/src/gui/char_select.cpp @@ -256,7 +256,7 @@ CharCreateDialog::CharCreateDialog(Window *parent, int slot, Network *network, { mPlayer = new Player(0, 0, NULL); mPlayer->setGender(gender); - mPlayer->setHairStyle(rand() % NR_HAIR_STYLES, rand() % NR_HAIR_COLORS); + mPlayer->setHairStyle(rand() % Being::getHairStylesNr(), rand() % Being::getHairColorsNr()); mNameField = new TextField(""); mNameLabel = new gcn::Label("Name:"); @@ -340,13 +340,13 @@ CharCreateDialog::action(const gcn::ActionEvent &event) mPlayer->setHairStyle(-1, mPlayer->getHairColor() + 1); } else if (event.getId() == "prevcolor") { - mPlayer->setHairStyle(-1, mPlayer->getHairColor() + NR_HAIR_COLORS - 1); + mPlayer->setHairStyle(-1, mPlayer->getHairColor() + Being::getHairColorsNr() - 1); } else if (event.getId() == "nextstyle") { mPlayer->setHairStyle(mPlayer->getHairStyle() + 1, -1); } else if (event.getId() == "prevstyle") { - mPlayer->setHairStyle(mPlayer->getHairStyle() + NR_HAIR_STYLES - 1, -1); + mPlayer->setHairStyle(mPlayer->getHairStyle() + Being::getHairStylesNr() - 1, -1); } } diff --git a/src/player.cpp b/src/player.cpp index f86e7179..0e88da0b 100644 --- a/src/player.cpp +++ b/src/player.cpp @@ -140,27 +140,13 @@ void Player::setGender(int gender) void Player::setHairStyle(int style, int color) { - style = style < 0 ? mHairStyle : style % NR_HAIR_STYLES; - color = color < 0 ? mHairColor : color % NR_HAIR_COLORS; + style = style < 0 ? mHairStyle : style % getHairStylesNr(); + color = color < 0 ? mHairColor : color % getHairColorsNr(); if (style == mHairStyle && color == mHairColor) return; Being::setHairStyle(style, color); - static char const *const colors[NR_HAIR_COLORS] = - { - "#8c4b41,da9041,ffffff", // light brown - "#06372b,489e25,fdedcc", // green - "#5f0b33,91191c,f9ad81", // red - "#602486,934cc3,fdc689", // purple - "#805e74,c6b09b,ffffff", // gray - "#8c6625,dab425,ffffff", // yellow - "#1d2d6d,1594a3,fdedcc", // blue - "#831f2d,be4f2d,f8cc8b", // brown - "#432482,584bbc,dae8e5", // light blue - "#460850,611967,e7b4ae", // dark purple - }; - - setSprite(HAIR_SPRITE, style * -1, colors[color]); + setSprite(HAIR_SPRITE, style * -1, getHairColor(color)); setAction(mAction); } @@ -209,3 +195,5 @@ void Player::updateCoords() mName->adviseXY(mPx + NAME_X_OFFSET, mPy + NAME_Y_OFFSET); } } + + -- cgit v1.2.3-60-g2f50 From 8c54f034a288168cc191410b366889f37255ab21 Mon Sep 17 00:00:00 2001 From: Fate Date: Sat, 1 Nov 2008 23:56:14 +0000 Subject: * Report unmapped skill names as `Mystery Skill' (rather than random characters) --- ChangeLog | 3 +++ src/gui/skill.cpp | 26 ++++++++++++++++++++++---- 2 files changed, 25 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/ChangeLog b/ChangeLog index 91e7de25..21ee74f2 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,8 @@ 2008-11-01 Fate + * src/gui/skill.cpp (class SkillGuiTableModel): Report unmapped + skill names as `Mystery Skill' (rather than random garbage) + * src/being.cpp (initializeHair): Read hair colours from external `hair.xml' file (clientdata) (initializeHair): Auto-detect number of hair colours diff --git a/src/gui/skill.cpp b/src/gui/skill.cpp index c753ee1a..116e1860 100644 --- a/src/gui/skill.cpp +++ b/src/gui/skill.cpp @@ -81,14 +81,22 @@ public: virtual void update(void) { + static const SkillInfo fakeSkillInfo = { "Mystery Skill", false }; + mEntriesNr = mDialog->getSkills().size(); resize(); for (int i = 0; i < mEntriesNr; i++) { SKILL *skill = mDialog->getSkills()[i]; - SkillInfo *info = &skill_db[skill->id]; + SkillInfo const *info; char tmp[128]; + if (skill->id >= 0 + && (unsigned int) skill->id < skill_db.size()) + info = &skill_db[skill->id]; + else + info = &fakeSkillInfo; + sprintf(tmp, "%c%s", info->modifiable? ' ' : '*', info->name.c_str()); gcn::Label *name_label = new gcn::Label(std::string(tmp)); @@ -189,9 +197,19 @@ void SkillDialog::update() int selectedSkill = mTable.getSelectedRow(); - mIncButton->setEnabled(selectedSkill > -1 - && skill_db[mSkillList[selectedSkill]->id].modifiable - && player_node->mSkillPoint > 0); + if (selectedSkill >= 0) { + int skillId = mSkillList[selectedSkill]->id; + bool modifiable; + + if (skillId >= 0 && (unsigned int) skillId < skill_db.size()) + modifiable = skill_db[skillId].modifiable; + else + modifiable = false; + + mIncButton->setEnabled(modifiable + && player_node->mSkillPoint > 0); + } else + mIncButton->setEnabled(false); mTableModel->update(); } -- cgit v1.2.3-60-g2f50 From 75699101c3710405fe4dedb420b3f3b63436cc28 Mon Sep 17 00:00:00 2001 From: Bjørn Lindeijer Date: Tue, 4 Nov 2008 19:51:05 +0000 Subject: Applied more changes by vargavind, adding the complete ISO-8859-15 character set to the sans-serif font. --- ChangeLog | 6 ++++++ data/graphics/gui/sansserif8.png | Bin 1261 -> 2134 bytes src/gui/gui.cpp | 16 +++++++++++++--- 3 files changed, 19 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/ChangeLog b/ChangeLog index 21ee74f2..0bc68213 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2008-11-04 Bjørn Lindeijer + + * src/gui/gui.cpp, data/graphics/gui/sansserif8.png: Applied more + changes by vargavind, adding the complete ISO-8859-15 character set to + the sans-serif font. + 2008-11-01 Fate * src/gui/skill.cpp (class SkillGuiTableModel): Report unmapped diff --git a/data/graphics/gui/sansserif8.png b/data/graphics/gui/sansserif8.png index 7eae7a1b..a4738548 100644 Binary files a/data/graphics/gui/sansserif8.png and b/data/graphics/gui/sansserif8.png differ diff --git a/src/gui/gui.cpp b/src/gui/gui.cpp index b9997d3a..12f19460 100644 --- a/src/gui/gui.cpp +++ b/src/gui/gui.cpp @@ -103,11 +103,21 @@ Gui::Gui(Graphics *graphics): Window::setWindowContainer(guiTop); setTop(guiTop); - // Set global font + // Set global font (based on ISO-8859-15) try { mGuiFont = new gcn::ImageFont("graphics/gui/sansserif8.png", - " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[" - "\\]^_`abcdefghijklmnopqrstuvwxyz{|}~|áÁéÉßøèÈ" + " !\"#$%&'()*+,-./" + "0123456789:;<=>?" + "@ABCDEFGHIJKLMNO" + "PQRSTUVWXYZ[\\]^_" + "`abcdefghijklmno" + "pqrstuvwxyz{|}~|" + " ¡¢£¤¥¦§¨©ª«¬­®¯" + "°±²³´µ¶·¸¹º»¼½¾¿" + "ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏ" + "ÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞß" + "àáâãäåæçèéêëìíîï" + "ðñòóôõö÷øùúûüýþÿ" ); } catch (gcn::Exception e) -- cgit v1.2.3-60-g2f50 From 1afaba7d73a6158abfbbbcc7d881170e5b3ddd50 Mon Sep 17 00:00:00 2001 From: Dennis Friis Date: Thu, 6 Nov 2008 01:53:49 +0000 Subject: Do not activate shortcuts if tradewindow is visible. --- ChangeLog | 4 ++++ src/game.cpp | 21 ++++++++++++--------- 2 files changed, 16 insertions(+), 9 deletions(-) (limited to 'src') diff --git a/ChangeLog b/ChangeLog index 0bc68213..59b78674 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2008-11-06 Dennis Friis + + * src/game.cpp: Do not activate shortcuts if tradewindow is visible. + 2008-11-04 Bjørn Lindeijer * src/gui/gui.cpp, data/graphics/gui/sansserif8.png: Applied more diff --git a/src/game.cpp b/src/game.cpp index 3e3cb4b5..fc9183d4 100644 --- a/src/game.cpp +++ b/src/game.cpp @@ -664,15 +664,18 @@ void Game::handleInput() if (keyboard.isEnabled() && !chatWindow->isInputFocused()) { const int tKey = keyboard.getKeyIndex(event.key.keysym.sym); - // Checks if any item shortcut is pressed. - for (int i = KeyboardConfig::KEY_SHORTCUT_0; - i <= KeyboardConfig::KEY_SHORTCUT_9; - i++) - { - if (tKey == i && !used) { - itemShortcut->useItem( - i - KeyboardConfig::KEY_SHORTCUT_0); - break; + // Do not activate shortcuts if tradewindow is visible + if (!tradeWindow->isVisible()) + // Checks if any item shortcut is pressed. + for (int i = KeyboardConfig::KEY_SHORTCUT_0; + i <= KeyboardConfig::KEY_SHORTCUT_9; + i++) + { + if (tKey == i && !used) { + itemShortcut->useItem( + i - KeyboardConfig::KEY_SHORTCUT_0); + break; + } } } switch (tKey) { -- cgit v1.2.3-60-g2f50 From 3927112cf6e35bc582fa6c4de73875e423b8f86a Mon Sep 17 00:00:00 2001 From: Dennis Friis Date: Thu, 6 Nov 2008 02:22:47 +0000 Subject: Fix a missing brace that got lost on last commit (r4927) --- src/game.cpp | 1 + 1 file changed, 1 insertion(+) (limited to 'src') diff --git a/src/game.cpp b/src/game.cpp index fc9183d4..e08f45e4 100644 --- a/src/game.cpp +++ b/src/game.cpp @@ -666,6 +666,7 @@ void Game::handleInput() const int tKey = keyboard.getKeyIndex(event.key.keysym.sym); // Do not activate shortcuts if tradewindow is visible if (!tradeWindow->isVisible()) + { // Checks if any item shortcut is pressed. for (int i = KeyboardConfig::KEY_SHORTCUT_0; i <= KeyboardConfig::KEY_SHORTCUT_9; -- cgit v1.2.3-60-g2f50 From 9475a009e95a3f379a0e97bc66d1aab93ca24b34 Mon Sep 17 00:00:00 2001 From: Dennis Friis Date: Thu, 6 Nov 2008 13:59:03 +0000 Subject: Remove an extra include and arrange headers like the trunk client for easier merging. --- ChangeLog | 4 +++- src/equipment.cpp | 4 +--- 2 files changed, 4 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/ChangeLog b/ChangeLog index 59b78674..31895fba 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,6 +1,8 @@ 2008-11-06 Dennis Friis - * src/game.cpp: Do not activate shortcuts if tradewindow is visible. + * src/game.cpp: Do not activate shortcuts if tradewindow is visible. + * src/equipment.cpp: Remove an extra include and arrange headers like + the trunk client for easier merging. 2008-11-04 Bjørn Lindeijer diff --git a/src/equipment.cpp b/src/equipment.cpp index d1f9a6cf..b54988a7 100644 --- a/src/equipment.cpp +++ b/src/equipment.cpp @@ -21,11 +21,9 @@ * $Id$ */ -#include "equipment.h" - #include -#include "item.h" +#include "equipment.h" #include "item.h" Equipment::Equipment(): -- cgit v1.2.3-60-g2f50 From 87f43f7621dda3071ba189df6975cd0a0595165a Mon Sep 17 00:00:00 2001 From: Dennis Friis Date: Thu, 6 Nov 2008 16:46:18 +0000 Subject: Have equipment tied into player inventory instead of keeping its own list of pointers to items. This ensures the ressource is up-to-date and avoids crashes on stale item pointers. --- ChangeLog | 6 ++++++ src/equipment.cpp | 20 ++++++++------------ src/equipment.h | 17 ++++++----------- src/gui/equipmentwindow.cpp | 20 ++++++++++++++------ src/gui/equipmentwindow.h | 2 ++ src/localplayer.cpp | 2 +- src/net/equipmenthandler.cpp | 8 ++++---- 7 files changed, 41 insertions(+), 34 deletions(-) (limited to 'src') diff --git a/ChangeLog b/ChangeLog index 31895fba..c95e33ca 100644 --- a/ChangeLog +++ b/ChangeLog @@ -3,6 +3,12 @@ * src/game.cpp: Do not activate shortcuts if tradewindow is visible. * src/equipment.cpp: Remove an extra include and arrange headers like the trunk client for easier merging. + * src/localplayer.cpp, src/gui/equipmentwindow.cpp, + src/gui/equipmentwindow.h, src/equipment.h, + src/net/equipmenthandler.cpp, src/equipment.cpp: Have equipment tied + into player inventory instead of keeping its own list of pointers to + items. This ensures the ressource is up-to-date and avoids crashes on + stale item pointers. 2008-11-04 Bjørn Lindeijer diff --git a/src/equipment.cpp b/src/equipment.cpp index b54988a7..a8910d14 100644 --- a/src/equipment.cpp +++ b/src/equipment.cpp @@ -25,24 +25,20 @@ #include "equipment.h" #include "item.h" +#include "inventory.h" +#include "localplayer.h" Equipment::Equipment(): mArrows(0) { - std::fill_n(mEquipment, EQUIPMENT_SIZE, (Item*) 0); + std::fill_n(mEquipment, EQUIPMENT_SIZE, 0); } void -Equipment::removeEquipment(Item *item) +Equipment::setEquipment(int index, int inventoryIndex) { - Item **i = std::find(mEquipment, mEquipment + EQUIPMENT_SIZE, item); - if (i != mEquipment + EQUIPMENT_SIZE) { - *i = 0; - } -} - -void Equipment::setEquipment(int index, Item *item) -{ - mEquipment[index] = item; - item->setEquipped(true); + mEquipment[index] = inventoryIndex; + Item* item = player_node->getInventory()->getItem(inventoryIndex); + if (item) + item->setEquipped(true); } diff --git a/src/equipment.h b/src/equipment.h index 80a2ae49..e3b10514 100644 --- a/src/equipment.h +++ b/src/equipment.h @@ -39,14 +39,14 @@ class Equipment /** * Get equipment at the given slot. */ - Item* getEquipment(int index) const + int getEquipment(int index) const { return mEquipment[index]; } /** * Set equipment at the given slot. */ void - setEquipment(int index, Item *item); + setEquipment(int index, int inventoryIndex); /** * Remove equipment from the given slot. @@ -54,26 +54,21 @@ class Equipment void removeEquipment(int index) { mEquipment[index] = 0; } - /** - * Remove the given item from equipment. - */ - void removeEquipment(Item *item); - /** * Get the item used in the arrow slot. */ - Item* + int getArrows() { return mArrows; } /** * Set the item used in the arrow slot. */ void - setArrows(Item *arrows) { mArrows = arrows; } + setArrows(int arrows) { mArrows = arrows; } private: - Item *mEquipment[EQUIPMENT_SIZE]; - Item *mArrows; + int mEquipment[EQUIPMENT_SIZE]; + int mArrows; }; #endif diff --git a/src/gui/equipmentwindow.cpp b/src/gui/equipmentwindow.cpp index 93b9ea37..3ea2fcbc 100644 --- a/src/gui/equipmentwindow.cpp +++ b/src/gui/equipmentwindow.cpp @@ -24,6 +24,8 @@ #include "equipmentwindow.h" #include "../equipment.h" +#include "../inventory.h" +#include "../localplayer.h" #include "../graphics.h" #include "../item.h" #include "../log.h" @@ -40,6 +42,7 @@ EquipmentWindow::EquipmentWindow(Equipment *equipment): setCloseButton(true); setDefaultSize(5, 230, 200, 120); loadWindowState(); + inventory = player_node->getInventory(); } EquipmentWindow::~EquipmentWindow() @@ -61,22 +64,27 @@ void EquipmentWindow::draw(gcn::Graphics *graphics) graphics->drawRectangle(gcn::Rectangle(10 + 36 * (i % 4), 36 * (i / 4) + 25, 32, 32)); - if (!(item = mEquipment->getEquipment(i))) + if (!(item = inventory->getItem(mEquipment->getEquipment(i)))) continue; image = item->getImage(); - static_cast(graphics)->drawImage( - image, 36 * (i % 4) + 10, 36 * (i / 4) + 25); + if (image) + { + static_cast(graphics)->drawImage( + image, 36 * (i % 4) + 10, 36 * (i / 4) + 25); + } } graphics->drawRectangle(gcn::Rectangle(160, 25, 32, 32)); - if (!(item = mEquipment->getArrows())) + if (!(item = inventory->getItem(mEquipment->getArrows()))) return; image = item->getImage(); - - static_cast(graphics)->drawImage(image, 160, 25); + if (image) + { + static_cast(graphics)->drawImage(image, 160, 25); + } graphics->drawText(toString(item->getQuantity()), 170, 62, gcn::Graphics::CENTER); } diff --git a/src/gui/equipmentwindow.h b/src/gui/equipmentwindow.h index 99a3cc60..c853a039 100644 --- a/src/gui/equipmentwindow.h +++ b/src/gui/equipmentwindow.h @@ -25,6 +25,7 @@ #define _TMW_EQUIPMENT_H #include "window.h" +#include "../inventory.h" class Equipment; @@ -53,6 +54,7 @@ class EquipmentWindow : public Window private: Equipment *mEquipment; + Inventory *inventory; }; extern EquipmentWindow *equipmentWindow; diff --git a/src/localplayer.cpp b/src/localplayer.cpp index 3caa5ead..bb91711c 100644 --- a/src/localplayer.cpp +++ b/src/localplayer.cpp @@ -144,7 +144,7 @@ void LocalPlayer::unequipItem(Item *item) outMsg.writeInt16(item->getInvIndex()); // Tidy equipment directly to avoid weapon still shown bug, for instance - mEquipment->removeEquipment(item); + mEquipment->removeEquipment(item->getInvIndex()); } void LocalPlayer::useItem(Item *item) diff --git a/src/net/equipmenthandler.cpp b/src/net/equipmenthandler.cpp index 85790b42..eddc0ea0 100644 --- a/src/net/equipmenthandler.cpp +++ b/src/net/equipmenthandler.cpp @@ -87,7 +87,7 @@ void EquipmentHandler::handleMessage(MessageIn *msg) position++; } item = inventory->getItem(index); - player_node->mEquipment->setEquipment(position, item); + player_node->mEquipment->setEquipment(position, index); } } break; @@ -117,13 +117,13 @@ void EquipmentHandler::handleMessage(MessageIn *msg) position++; } logger->log("Position %i", position); - item = player_node->mEquipment->getEquipment(position); + item = player_node->getInventory()->getItem(player_node->mEquipment->getEquipment(position)); if (item) { item->setEquipped(false); } item = inventory->getItem(index); - player_node->mEquipment->setEquipment(position, item); + player_node->mEquipment->setEquipment(position, index); break; case SMSG_PLAYER_UNEQUIP: @@ -192,7 +192,7 @@ void EquipmentHandler::handleMessage(MessageIn *msg) break; item->setEquipped(true); - player_node->mEquipment->setArrows(item); + player_node->mEquipment->setArrows(index); logger->log("Arrows equipped: %i", index); break; } -- cgit v1.2.3-60-g2f50 From f96b25dc1f23fd88e0ae338cafaee791d6bf1f01 Mon Sep 17 00:00:00 2001 From: Dennis Friis Date: Thu, 6 Nov 2008 19:59:41 +0000 Subject: Arrange system includes after project includes as a tweak to r4929. --- src/equipment.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/equipment.cpp b/src/equipment.cpp index a8910d14..61b2d5b0 100644 --- a/src/equipment.cpp +++ b/src/equipment.cpp @@ -21,13 +21,13 @@ * $Id$ */ -#include - #include "equipment.h" #include "item.h" #include "inventory.h" #include "localplayer.h" +#include + Equipment::Equipment(): mArrows(0) { -- cgit v1.2.3-60-g2f50 From af58f011a36fdfda135ca6b71504f30cb561be6b Mon Sep 17 00:00:00 2001 From: Dennis Friis Date: Thu, 6 Nov 2008 20:17:51 +0000 Subject: Tweak member naming to fit conventions as a fix to r4934. --- src/gui/equipmentwindow.cpp | 6 +++--- src/gui/equipmentwindow.h | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/gui/equipmentwindow.cpp b/src/gui/equipmentwindow.cpp index 3ea2fcbc..83e166c5 100644 --- a/src/gui/equipmentwindow.cpp +++ b/src/gui/equipmentwindow.cpp @@ -42,7 +42,7 @@ EquipmentWindow::EquipmentWindow(Equipment *equipment): setCloseButton(true); setDefaultSize(5, 230, 200, 120); loadWindowState(); - inventory = player_node->getInventory(); + mInventory = player_node->getInventory(); } EquipmentWindow::~EquipmentWindow() @@ -64,7 +64,7 @@ void EquipmentWindow::draw(gcn::Graphics *graphics) graphics->drawRectangle(gcn::Rectangle(10 + 36 * (i % 4), 36 * (i / 4) + 25, 32, 32)); - if (!(item = inventory->getItem(mEquipment->getEquipment(i)))) + if (!(item = mInventory->getItem(mEquipment->getEquipment(i)))) continue; image = item->getImage(); @@ -77,7 +77,7 @@ void EquipmentWindow::draw(gcn::Graphics *graphics) graphics->drawRectangle(gcn::Rectangle(160, 25, 32, 32)); - if (!(item = inventory->getItem(mEquipment->getArrows()))) + if (!(item = mInventory->getItem(mEquipment->getArrows()))) return; image = item->getImage(); diff --git a/src/gui/equipmentwindow.h b/src/gui/equipmentwindow.h index c853a039..2130b7ce 100644 --- a/src/gui/equipmentwindow.h +++ b/src/gui/equipmentwindow.h @@ -54,7 +54,7 @@ class EquipmentWindow : public Window private: Equipment *mEquipment; - Inventory *inventory; + Inventory *mInventory; }; extern EquipmentWindow *equipmentWindow; -- cgit v1.2.3-60-g2f50 From 9311774ad6c1a37f95bb2511251719d74426cbb0 Mon Sep 17 00:00:00 2001 From: Bjørn Lindeijer Date: Sat, 8 Nov 2008 16:17:30 +0000 Subject: Fixed compile error with GCC 4.4 reported by Martin Michlmayr. --- ChangeLog | 5 +++++ src/utils/strprintf.cpp | 6 +----- 2 files changed, 6 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/ChangeLog b/ChangeLog index c95e33ca..6d191f2f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2008-11-08 Bjørn Lindeijer + + * src/utils/strprintf.cpp: Fixed compile error with GCC 4.4 reported + by Martin Michlmayr. + 2008-11-06 Dennis Friis * src/game.cpp: Do not activate shortcuts if tradewindow is visible. diff --git a/src/utils/strprintf.cpp b/src/utils/strprintf.cpp index 352696f1..77a6b235 100644 --- a/src/utils/strprintf.cpp +++ b/src/utils/strprintf.cpp @@ -21,10 +21,8 @@ * $Id: strprintf.cpp 3416 2007-08-06 06:20:14Z gmelquio $ */ -#ifndef _TMW_UTILS_TOSTRING_H -#define _TMW_UTILS_TOSTRING_H - #include +#include #include "strprintf.h" @@ -49,5 +47,3 @@ std::string strprintf(char const *format, ...) delete [] buf2; return res; } - -#endif -- cgit v1.2.3-60-g2f50 From 12d50ac3bd08576ea23e00778463c3efa6b3a931 Mon Sep 17 00:00:00 2001 From: Philipp Sehmisch Date: Tue, 11 Nov 2008 15:24:32 +0000 Subject: Fixed two broken include paths --- ChangeLog | 4 ++++ src/gui/skill.cpp | 4 ++-- 2 files changed, 6 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/ChangeLog b/ChangeLog index 6d191f2f..238c0cb1 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2008-10-30 Philipp Sehmisch + + * src/gui/skil.cpp: fixed two broken include paths. + 2008-11-08 Bjørn Lindeijer * src/utils/strprintf.cpp: Fixed compile error with GCC 4.4 reported diff --git a/src/gui/skill.cpp b/src/gui/skill.cpp index 116e1860..178abe1f 100644 --- a/src/gui/skill.cpp +++ b/src/gui/skill.cpp @@ -35,8 +35,8 @@ #include "../localplayer.h" #include "../utils/dtor.h" -#include "utils/xml.h" -#include "log.h" +#include "../utils/xml.h" +#include "../log.h" #define SKILLS_FILE "skills.xml" -- cgit v1.2.3-60-g2f50 From 8a458bbf5bc6fcfa66d6e96e0dea1ec20b2fd0d9 Mon Sep 17 00:00:00 2001 From: Bjørn Lindeijer Date: Sun, 16 Nov 2008 16:21:37 +0100 Subject: Got rid of CVS/Subversion $Id$ markers I don't know why we dealt with these things for so long. Did we ever get anything out of it? --- src/animatedsprite.cpp | 2 -- src/animatedsprite.h | 2 -- src/animationparticle.cpp | 1 - src/animationparticle.h | 1 - src/being.cpp | 2 -- src/being.h | 2 -- src/beingmanager.cpp | 2 -- src/beingmanager.h | 2 -- src/configlistener.h | 2 -- src/configuration.cpp | 2 -- src/configuration.h | 2 -- src/engine.cpp | 2 -- src/engine.h | 2 -- src/equipment.cpp | 2 -- src/equipment.h | 2 -- src/floor_item.cpp | 2 -- src/floor_item.h | 2 -- src/flooritemmanager.cpp | 2 -- src/flooritemmanager.h | 2 -- src/game.cpp | 2 -- src/game.h | 2 -- src/graphics.cpp | 2 -- src/graphics.h | 2 -- src/gui/box.cpp | 2 -- src/gui/box.h | 2 -- src/gui/browserbox.cpp | 2 -- src/gui/browserbox.h | 2 -- src/gui/buddywindow.cpp | 2 -- src/gui/buddywindow.h | 2 -- src/gui/button.cpp | 2 -- src/gui/button.h | 2 -- src/gui/buy.cpp | 2 -- src/gui/buy.h | 2 -- src/gui/buysell.cpp | 2 -- src/gui/buysell.h | 2 -- src/gui/char_select.cpp | 2 -- src/gui/char_select.h | 2 -- src/gui/char_server.cpp | 2 -- src/gui/char_server.h | 2 -- src/gui/chargedialog.cpp | 1 - src/gui/chargedialog.h | 1 - src/gui/chat.cpp | 2 -- src/gui/chat.h | 2 -- src/gui/chatinput.cpp | 2 -- src/gui/chatinput.h | 2 -- src/gui/checkbox.cpp | 2 -- src/gui/checkbox.h | 2 -- src/gui/confirm_dialog.cpp | 2 -- src/gui/confirm_dialog.h | 2 -- src/gui/connection.cpp | 2 -- src/gui/connection.h | 2 -- src/gui/debugwindow.cpp | 2 -- src/gui/debugwindow.h | 2 -- src/gui/equipmentwindow.cpp | 2 -- src/gui/equipmentwindow.h | 2 -- src/gui/focushandler.cpp | 2 -- src/gui/focushandler.h | 2 -- src/gui/gccontainer.cpp | 2 -- src/gui/gccontainer.h | 2 -- src/gui/gui.cpp | 2 -- src/gui/gui.h | 2 -- src/gui/hbox.cpp | 2 -- src/gui/hbox.h | 2 -- src/gui/help.cpp | 2 -- src/gui/help.h | 2 -- src/gui/inttextbox.cpp | 2 -- src/gui/inttextbox.h | 2 -- src/gui/inventorywindow.cpp | 2 -- src/gui/inventorywindow.h | 2 -- src/gui/item_amount.cpp | 2 -- src/gui/item_amount.h | 2 -- src/gui/itemcontainer.cpp | 2 -- src/gui/itemcontainer.h | 2 -- src/gui/itemshortcutcontainer.cpp | 2 -- src/gui/itemshortcutcontainer.h | 2 -- src/gui/itemshortcutwindow.cpp | 2 -- src/gui/itemshortcutwindow.h | 2 -- src/gui/linkhandler.h | 2 -- src/gui/listbox.cpp | 2 -- src/gui/listbox.h | 2 -- src/gui/login.cpp | 2 -- src/gui/login.h | 2 -- src/gui/menuwindow.cpp | 2 -- src/gui/menuwindow.h | 2 -- src/gui/minimap.cpp | 2 -- src/gui/minimap.h | 2 -- src/gui/ministatus.cpp | 2 -- src/gui/ministatus.h | 2 -- src/gui/newskill.cpp | 2 -- src/gui/newskill.h | 2 -- src/gui/npc_text.cpp | 2 -- src/gui/npc_text.h | 2 -- src/gui/npclistdialog.cpp | 2 -- src/gui/npclistdialog.h | 2 -- src/gui/ok_dialog.cpp | 2 -- src/gui/ok_dialog.h | 2 -- src/gui/passwordfield.cpp | 2 -- src/gui/passwordfield.h | 2 -- src/gui/playerbox.cpp | 2 -- src/gui/playerbox.h | 2 -- src/gui/popupmenu.cpp | 2 -- src/gui/popupmenu.h | 2 -- src/gui/progressbar.cpp | 2 -- src/gui/progressbar.h | 2 -- src/gui/radiobutton.cpp | 2 -- src/gui/radiobutton.h | 2 -- src/gui/register.cpp | 2 -- src/gui/register.h | 2 -- src/gui/scrollarea.cpp | 2 -- src/gui/scrollarea.h | 2 -- src/gui/sell.cpp | 2 -- src/gui/sell.h | 2 -- src/gui/setup.cpp | 2 -- src/gui/setup.h | 2 -- src/gui/setup_audio.cpp | 2 -- src/gui/setup_audio.h | 2 -- src/gui/setup_joystick.cpp | 2 -- src/gui/setup_joystick.h | 2 -- src/gui/setup_keyboard.cpp | 2 -- src/gui/setup_keyboard.h | 2 -- src/gui/setup_players.cpp | 2 -- src/gui/setup_video.cpp | 2 -- src/gui/setup_video.h | 2 -- src/gui/setuptab.h | 2 -- src/gui/shop.cpp | 2 -- src/gui/shop.h | 2 -- src/gui/shoplistbox.cpp | 2 -- src/gui/shoplistbox.h | 2 -- src/gui/skill.cpp | 2 -- src/gui/skill.h | 2 -- src/gui/slider.cpp | 2 -- src/gui/slider.h | 2 -- src/gui/status.cpp | 2 -- src/gui/status.h | 2 -- src/gui/tabbedcontainer.cpp | 2 -- src/gui/tabbedcontainer.h | 2 -- src/gui/textbox.cpp | 2 -- src/gui/textbox.h | 2 -- src/gui/textfield.cpp | 2 -- src/gui/textfield.h | 2 -- src/gui/trade.cpp | 2 -- src/gui/trade.h | 2 -- src/gui/updatewindow.cpp | 2 -- src/gui/updatewindow.h | 2 -- src/gui/vbox.cpp | 2 -- src/gui/vbox.h | 2 -- src/gui/viewport.cpp | 2 -- src/gui/viewport.h | 2 -- src/gui/widgets/resizegrip.cpp | 2 -- src/gui/widgets/resizegrip.h | 2 -- src/gui/window.cpp | 2 -- src/gui/window.h | 2 -- src/gui/windowcontainer.cpp | 2 -- src/gui/windowcontainer.h | 2 -- src/guichanfwd.h | 2 -- src/imageparticle.cpp | 2 -- src/imageparticle.h | 2 -- src/inventory.cpp | 2 -- src/inventory.h | 2 -- src/item.cpp | 2 -- src/item.h | 2 -- src/itemshortcut.cpp | 2 -- src/itemshortcut.h | 2 -- src/joystick.cpp | 2 -- src/joystick.h | 2 -- src/keyboardconfig.cpp | 2 -- src/keyboardconfig.h | 2 -- src/localplayer.cpp | 2 -- src/localplayer.h | 2 -- src/lockedarray.h | 2 -- src/logindata.h | 2 -- src/main.cpp | 2 -- src/main.h | 2 -- src/map.cpp | 2 -- src/map.h | 2 -- src/monster.cpp | 2 -- src/monster.h | 2 -- src/net/beinghandler.cpp | 2 -- src/net/beinghandler.h | 2 -- src/net/buysellhandler.cpp | 2 -- src/net/buysellhandler.h | 2 -- src/net/charserverhandler.cpp | 2 -- src/net/charserverhandler.h | 2 -- src/net/chathandler.cpp | 2 -- src/net/chathandler.h | 2 -- src/net/equipmenthandler.cpp | 2 -- src/net/equipmenthandler.h | 2 -- src/net/inventoryhandler.cpp | 2 -- src/net/inventoryhandler.h | 2 -- src/net/itemhandler.cpp | 2 -- src/net/itemhandler.h | 2 -- src/net/loginhandler.cpp | 2 -- src/net/loginhandler.h | 2 -- src/net/maploginhandler.cpp | 2 -- src/net/maploginhandler.h | 2 -- src/net/messagehandler.cpp | 2 -- src/net/messagehandler.h | 2 -- src/net/messagein.cpp | 2 -- src/net/messagein.h | 2 -- src/net/messageout.cpp | 2 -- src/net/messageout.h | 2 -- src/net/network.cpp | 2 -- src/net/network.h | 2 -- src/net/npchandler.cpp | 2 -- src/net/npchandler.h | 2 -- src/net/playerhandler.cpp | 2 -- src/net/playerhandler.h | 2 -- src/net/protocol.cpp | 2 -- src/net/protocol.h | 2 -- src/net/skillhandler.cpp | 2 -- src/net/skillhandler.h | 2 -- src/net/tradehandler.cpp | 2 -- src/net/tradehandler.h | 2 -- src/npc.cpp | 2 -- src/npc.h | 2 -- src/openglgraphics.cpp | 2 -- src/openglgraphics.h | 2 -- src/particle.cpp | 2 -- src/particle.h | 2 -- src/particleemitter.cpp | 2 -- src/particleemitter.h | 2 -- src/particleemitterprop.h | 2 -- src/player.cpp | 2 -- src/player.h | 2 -- src/properties.h | 2 -- src/resources/action.cpp | 2 -- src/resources/action.h | 2 -- src/resources/ambientoverlay.cpp | 2 -- src/resources/ambientoverlay.h | 2 -- src/resources/animation.cpp | 2 -- src/resources/animation.h | 2 -- src/resources/buddylist.cpp | 2 -- src/resources/buddylist.h | 2 -- src/resources/dye.cpp | 2 -- src/resources/dye.h | 2 -- src/resources/image.cpp | 2 -- src/resources/image.h | 2 -- src/resources/imageloader.cpp | 2 -- src/resources/imageloader.h | 2 -- src/resources/imageset.cpp | 2 -- src/resources/imageset.h | 2 -- src/resources/imagewriter.cpp | 2 -- src/resources/imagewriter.h | 2 -- src/resources/itemdb.cpp | 2 -- src/resources/itemdb.h | 2 -- src/resources/iteminfo.cpp | 2 -- src/resources/iteminfo.h | 2 -- src/resources/mapreader.cpp | 2 -- src/resources/mapreader.h | 2 -- src/resources/monsterdb.cpp | 2 -- src/resources/monsterdb.h | 2 -- src/resources/monsterinfo.cpp | 2 -- src/resources/monsterinfo.h | 2 -- src/resources/music.cpp | 2 -- src/resources/music.h | 2 -- src/resources/npcdb.cpp | 2 -- src/resources/npcdb.h | 2 -- src/resources/resource.cpp | 2 -- src/resources/resource.h | 2 -- src/resources/resourcemanager.cpp | 2 -- src/resources/resourcemanager.h | 2 -- src/resources/soundeffect.cpp | 2 -- src/resources/soundeffect.h | 2 -- src/resources/spritedef.cpp | 2 -- src/resources/spritedef.h | 2 -- src/serverinfo.h | 2 -- src/shopitem.cpp | 2 -- src/shopitem.h | 2 -- src/simpleanimation.cpp | 2 -- src/simpleanimation.h | 2 -- src/sound.cpp | 2 -- src/sound.h | 2 -- src/sprite.h | 2 -- src/text.cpp | 2 -- src/text.h | 2 -- src/textmanager.cpp | 2 -- src/textmanager.h | 2 -- src/textparticle.cpp | 2 -- src/textparticle.h | 2 -- src/tileset.h | 2 -- src/utils/base64.cpp | 1 - src/utils/base64.h | 1 - src/utils/dtor.h | 2 -- src/utils/fastsqrt.h | 50 +++++++++++++++++++-------------------- src/utils/strprintf.cpp | 2 -- src/utils/strprintf.h | 2 -- src/utils/tostring.h | 2 -- src/utils/trim.h | 2 -- src/utils/xml.cpp | 2 -- src/utils/xml.h | 2 -- src/vector.h | 2 -- tools/tmxcopy/base64.cpp | 1 - tools/tmxcopy/base64.h | 1 - tools/tmxcopy/tostring.h | 2 -- tools/tmxcopy/xmlutils.cpp | 1 - tools/tmxcopy/xmlutils.h | 1 - 296 files changed, 24 insertions(+), 606 deletions(-) (limited to 'src') diff --git a/src/animatedsprite.cpp b/src/animatedsprite.cpp index 466779fd..840fb1e8 100644 --- a/src/animatedsprite.cpp +++ b/src/animatedsprite.cpp @@ -17,8 +17,6 @@ * 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 "animatedsprite.h" diff --git a/src/animatedsprite.h b/src/animatedsprite.h index a1fbe7a0..405bf42e 100644 --- a/src/animatedsprite.h +++ b/src/animatedsprite.h @@ -17,8 +17,6 @@ * 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_ANIMATEDSPRITE_H diff --git a/src/animationparticle.cpp b/src/animationparticle.cpp index c79a5bc4..eb260157 100644 --- a/src/animationparticle.cpp +++ b/src/animationparticle.cpp @@ -17,7 +17,6 @@ * 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 - * */ #include "animationparticle.h" diff --git a/src/animationparticle.h b/src/animationparticle.h index 054b1b73..eabc2742 100644 --- a/src/animationparticle.h +++ b/src/animationparticle.h @@ -17,7 +17,6 @@ * 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 - * */ #ifndef _ANIMATION_PARTICLE diff --git a/src/being.cpp b/src/being.cpp index 1569fcc3..ef257f43 100644 --- a/src/being.cpp +++ b/src/being.cpp @@ -17,8 +17,6 @@ * 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 "being.h" diff --git a/src/being.h b/src/being.h index 76317797..0dbc41db 100644 --- a/src/being.h +++ b/src/being.h @@ -17,8 +17,6 @@ * 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_BEING_H diff --git a/src/beingmanager.cpp b/src/beingmanager.cpp index b683b1bd..51d45213 100644 --- a/src/beingmanager.cpp +++ b/src/beingmanager.cpp @@ -17,8 +17,6 @@ * 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 diff --git a/src/beingmanager.h b/src/beingmanager.h index 243486e4..7a840030 100644 --- a/src/beingmanager.h +++ b/src/beingmanager.h @@ -17,8 +17,6 @@ * 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_BEINGMANAGER_H diff --git a/src/configlistener.h b/src/configlistener.h index 7ce5d949..b740720f 100644 --- a/src/configlistener.h +++ b/src/configlistener.h @@ -17,8 +17,6 @@ * 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_CONFIGLISTENER_H diff --git a/src/configuration.cpp b/src/configuration.cpp index 7e8cb542..e2deae31 100644 --- a/src/configuration.cpp +++ b/src/configuration.cpp @@ -17,8 +17,6 @@ * 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$ */ diff --git a/src/configuration.h b/src/configuration.h index 36d9e150..3751d429 100644 --- a/src/configuration.h +++ b/src/configuration.h @@ -17,8 +17,6 @@ * 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_CONFIGURATION_H diff --git a/src/engine.cpp b/src/engine.cpp index 67479a27..b1458cb4 100644 --- a/src/engine.cpp +++ b/src/engine.cpp @@ -17,8 +17,6 @@ * 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 "engine.h" diff --git a/src/engine.h b/src/engine.h index 52f1e63a..8d387f80 100644 --- a/src/engine.h +++ b/src/engine.h @@ -17,8 +17,6 @@ * 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 _ENGINE_H diff --git a/src/equipment.cpp b/src/equipment.cpp index 61b2d5b0..0bdd1c70 100644 --- a/src/equipment.cpp +++ b/src/equipment.cpp @@ -17,8 +17,6 @@ * 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 "equipment.h" diff --git a/src/equipment.h b/src/equipment.h index e3b10514..4993e4df 100644 --- a/src/equipment.h +++ b/src/equipment.h @@ -17,8 +17,6 @@ * 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_EQUIPMENT_H_ diff --git a/src/floor_item.cpp b/src/floor_item.cpp index 9727093f..7ad3c0c0 100644 --- a/src/floor_item.cpp +++ b/src/floor_item.cpp @@ -17,8 +17,6 @@ * 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 "floor_item.h" diff --git a/src/floor_item.h b/src/floor_item.h index a87e3f79..b747310b 100644 --- a/src/floor_item.h +++ b/src/floor_item.h @@ -17,8 +17,6 @@ * 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_FLOORITEM_H_ diff --git a/src/flooritemmanager.cpp b/src/flooritemmanager.cpp index 8a00cc51..006d62c1 100644 --- a/src/flooritemmanager.cpp +++ b/src/flooritemmanager.cpp @@ -17,8 +17,6 @@ * 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 diff --git a/src/flooritemmanager.h b/src/flooritemmanager.h index c12883a4..3dbaf988 100644 --- a/src/flooritemmanager.h +++ b/src/flooritemmanager.h @@ -17,8 +17,6 @@ * 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_FLOORITEMMANAGER_H diff --git a/src/game.cpp b/src/game.cpp index e08f45e4..245e711e 100644 --- a/src/game.cpp +++ b/src/game.cpp @@ -17,8 +17,6 @@ * 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 "game.h" diff --git a/src/game.h b/src/game.h index 5b73832e..24e29b7d 100644 --- a/src/game.h +++ b/src/game.h @@ -17,8 +17,6 @@ * 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_GAME_ diff --git a/src/graphics.cpp b/src/graphics.cpp index 586f9f49..6920bcb0 100644 --- a/src/graphics.cpp +++ b/src/graphics.cpp @@ -17,8 +17,6 @@ * 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 diff --git a/src/graphics.h b/src/graphics.h index 564826a2..efdd1ac1 100644 --- a/src/graphics.h +++ b/src/graphics.h @@ -17,8 +17,6 @@ * 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 _GRAPHICS_H diff --git a/src/gui/box.cpp b/src/gui/box.cpp index 6af3ae3e..59d8c135 100644 --- a/src/gui/box.cpp +++ b/src/gui/box.cpp @@ -17,8 +17,6 @@ * 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 "box.h" diff --git a/src/gui/box.h b/src/gui/box.h index ed1a7163..46654b48 100644 --- a/src/gui/box.h +++ b/src/gui/box.h @@ -17,8 +17,6 @@ * 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$ */ diff --git a/src/gui/browserbox.cpp b/src/gui/browserbox.cpp index bc76335f..1c549949 100644 --- a/src/gui/browserbox.cpp +++ b/src/gui/browserbox.cpp @@ -17,8 +17,6 @@ * 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 diff --git a/src/gui/browserbox.h b/src/gui/browserbox.h index 9c0e8ef1..39ecbda8 100644 --- a/src/gui/browserbox.h +++ b/src/gui/browserbox.h @@ -17,8 +17,6 @@ * 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_BROWSERBOX_H__ diff --git a/src/gui/buddywindow.cpp b/src/gui/buddywindow.cpp index 0ed383ce..14a941a5 100644 --- a/src/gui/buddywindow.cpp +++ b/src/gui/buddywindow.cpp @@ -17,8 +17,6 @@ * 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 "buddywindow.h" diff --git a/src/gui/buddywindow.h b/src/gui/buddywindow.h index a3ca4de2..6b07f470 100644 --- a/src/gui/buddywindow.h +++ b/src/gui/buddywindow.h @@ -17,8 +17,6 @@ * 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_BUDDYWINDOW_H diff --git a/src/gui/button.cpp b/src/gui/button.cpp index c6bc4ccb..40ecd1b7 100644 --- a/src/gui/button.cpp +++ b/src/gui/button.cpp @@ -17,8 +17,6 @@ * 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 diff --git a/src/gui/button.h b/src/gui/button.h index d12173b2..f451416c 100644 --- a/src/gui/button.h +++ b/src/gui/button.h @@ -17,8 +17,6 @@ * 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_BUTTON_H diff --git a/src/gui/buy.cpp b/src/gui/buy.cpp index c12e18b6..714f52db 100644 --- a/src/gui/buy.cpp +++ b/src/gui/buy.cpp @@ -17,8 +17,6 @@ * 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 "buy.h" diff --git a/src/gui/buy.h b/src/gui/buy.h index 3a9ea3c5..0915385a 100644 --- a/src/gui/buy.h +++ b/src/gui/buy.h @@ -17,8 +17,6 @@ * 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_BUY_H diff --git a/src/gui/buysell.cpp b/src/gui/buysell.cpp index ae5c7358..42380882 100644 --- a/src/gui/buysell.cpp +++ b/src/gui/buysell.cpp @@ -17,8 +17,6 @@ * 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 "buysell.h" diff --git a/src/gui/buysell.h b/src/gui/buysell.h index 97caf34b..2391ed1c 100644 --- a/src/gui/buysell.h +++ b/src/gui/buysell.h @@ -17,8 +17,6 @@ * 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_BUYSELL_H diff --git a/src/gui/char_select.cpp b/src/gui/char_select.cpp index 661a9fa7..d951f12e 100644 --- a/src/gui/char_select.cpp +++ b/src/gui/char_select.cpp @@ -17,8 +17,6 @@ * 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 "char_select.h" diff --git a/src/gui/char_select.h b/src/gui/char_select.h index 283ecf42..0890bea9 100644 --- a/src/gui/char_select.h +++ b/src/gui/char_select.h @@ -17,8 +17,6 @@ * 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 _CHAR_SELECT_H diff --git a/src/gui/char_server.cpp b/src/gui/char_server.cpp index b5ce9021..ce068ad1 100644 --- a/src/gui/char_server.cpp +++ b/src/gui/char_server.cpp @@ -17,8 +17,6 @@ * 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 "char_server.h" diff --git a/src/gui/char_server.h b/src/gui/char_server.h index 3e43dd55..e05792f8 100644 --- a/src/gui/char_server.h +++ b/src/gui/char_server.h @@ -17,8 +17,6 @@ * 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 _CHAR_SEL_SERVER_H diff --git a/src/gui/chargedialog.cpp b/src/gui/chargedialog.cpp index 862378ae..1c9edf45 100644 --- a/src/gui/chargedialog.cpp +++ b/src/gui/chargedialog.cpp @@ -17,7 +17,6 @@ * 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 - * */ /* The window supported by this class shows player stats and keeps a charging diff --git a/src/gui/chargedialog.h b/src/gui/chargedialog.h index c09c692c..9517ef6a 100644 --- a/src/gui/chargedialog.h +++ b/src/gui/chargedialog.h @@ -17,7 +17,6 @@ * 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 - * */ #ifndef _TMW_CHARGE_H diff --git a/src/gui/chat.cpp b/src/gui/chat.cpp index 2894bb70..71d36e97 100644 --- a/src/gui/chat.cpp +++ b/src/gui/chat.cpp @@ -17,8 +17,6 @@ * 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 diff --git a/src/gui/chat.h b/src/gui/chat.h index a1d659a0..6e412bf6 100644 --- a/src/gui/chat.h +++ b/src/gui/chat.h @@ -17,8 +17,6 @@ * 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_CHAT_H diff --git a/src/gui/chatinput.cpp b/src/gui/chatinput.cpp index fc5d6aab..afe7f037 100644 --- a/src/gui/chatinput.cpp +++ b/src/gui/chatinput.cpp @@ -17,8 +17,6 @@ * 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 "chatinput.h" diff --git a/src/gui/chatinput.h b/src/gui/chatinput.h index da2342ae..e04dfa6e 100644 --- a/src/gui/chatinput.h +++ b/src/gui/chatinput.h @@ -17,8 +17,6 @@ * 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_CHATINPUT_H diff --git a/src/gui/checkbox.cpp b/src/gui/checkbox.cpp index 5b300d33..20e24dee 100644 --- a/src/gui/checkbox.cpp +++ b/src/gui/checkbox.cpp @@ -17,8 +17,6 @@ * 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 "checkbox.h" diff --git a/src/gui/checkbox.h b/src/gui/checkbox.h index 262e63ae..839ca97e 100644 --- a/src/gui/checkbox.h +++ b/src/gui/checkbox.h @@ -17,8 +17,6 @@ * 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_CHECKBOX_H diff --git a/src/gui/confirm_dialog.cpp b/src/gui/confirm_dialog.cpp index 0ff8be17..9ef94f62 100644 --- a/src/gui/confirm_dialog.cpp +++ b/src/gui/confirm_dialog.cpp @@ -17,8 +17,6 @@ * 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 "confirm_dialog.h" diff --git a/src/gui/confirm_dialog.h b/src/gui/confirm_dialog.h index 8728f83f..c9bfca02 100644 --- a/src/gui/confirm_dialog.h +++ b/src/gui/confirm_dialog.h @@ -17,8 +17,6 @@ * 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_OPTION_DIALOG_H diff --git a/src/gui/connection.cpp b/src/gui/connection.cpp index baa1ea34..8ad3b436 100644 --- a/src/gui/connection.cpp +++ b/src/gui/connection.cpp @@ -17,8 +17,6 @@ * 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" diff --git a/src/gui/connection.h b/src/gui/connection.h index 7a072d2e..c3a6208f 100644 --- a/src/gui/connection.h +++ b/src/gui/connection.h @@ -17,8 +17,6 @@ * 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_CONNECTION_H diff --git a/src/gui/debugwindow.cpp b/src/gui/debugwindow.cpp index d6d99307..f6e9414e 100644 --- a/src/gui/debugwindow.cpp +++ b/src/gui/debugwindow.cpp @@ -17,8 +17,6 @@ * 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 "debugwindow.h" diff --git a/src/gui/debugwindow.h b/src/gui/debugwindow.h index 9b6f2017..ae1d8b14 100644 --- a/src/gui/debugwindow.h +++ b/src/gui/debugwindow.h @@ -17,8 +17,6 @@ * 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_DEBUGWINDOW_H diff --git a/src/gui/equipmentwindow.cpp b/src/gui/equipmentwindow.cpp index 83e166c5..e0246787 100644 --- a/src/gui/equipmentwindow.cpp +++ b/src/gui/equipmentwindow.cpp @@ -17,8 +17,6 @@ * 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 "equipmentwindow.h" diff --git a/src/gui/equipmentwindow.h b/src/gui/equipmentwindow.h index 2130b7ce..42aa7701 100644 --- a/src/gui/equipmentwindow.h +++ b/src/gui/equipmentwindow.h @@ -17,8 +17,6 @@ * 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_EQUIPMENT_H diff --git a/src/gui/focushandler.cpp b/src/gui/focushandler.cpp index ffdb7896..1bda568e 100644 --- a/src/gui/focushandler.cpp +++ b/src/gui/focushandler.cpp @@ -17,8 +17,6 @@ * 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 "focushandler.h" diff --git a/src/gui/focushandler.h b/src/gui/focushandler.h index 252fdd9d..a5218485 100644 --- a/src/gui/focushandler.h +++ b/src/gui/focushandler.h @@ -17,8 +17,6 @@ * 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_FOCUSHANDLER_H diff --git a/src/gui/gccontainer.cpp b/src/gui/gccontainer.cpp index 1edb4daf..ec3c8a5c 100644 --- a/src/gui/gccontainer.cpp +++ b/src/gui/gccontainer.cpp @@ -17,8 +17,6 @@ * 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 "gccontainer.h" diff --git a/src/gui/gccontainer.h b/src/gui/gccontainer.h index 8b8a7ffe..cc7c9336 100644 --- a/src/gui/gccontainer.h +++ b/src/gui/gccontainer.h @@ -17,8 +17,6 @@ * 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_GUI_GCCONTAINER_H diff --git a/src/gui/gui.cpp b/src/gui/gui.cpp index 12f19460..691cfe2b 100644 --- a/src/gui/gui.cpp +++ b/src/gui/gui.cpp @@ -17,8 +17,6 @@ * 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 "gui.h" diff --git a/src/gui/gui.h b/src/gui/gui.h index 1e4b9348..f31b98c3 100644 --- a/src/gui/gui.h +++ b/src/gui/gui.h @@ -17,8 +17,6 @@ * 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_GUI diff --git a/src/gui/hbox.cpp b/src/gui/hbox.cpp index 69564fbb..020e85c6 100644 --- a/src/gui/hbox.cpp +++ b/src/gui/hbox.cpp @@ -17,8 +17,6 @@ * 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 "hbox.h" diff --git a/src/gui/hbox.h b/src/gui/hbox.h index 560b1a29..4b241383 100644 --- a/src/gui/hbox.h +++ b/src/gui/hbox.h @@ -17,8 +17,6 @@ * 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 HBOX_H diff --git a/src/gui/help.cpp b/src/gui/help.cpp index 0b010253..290679b9 100644 --- a/src/gui/help.cpp +++ b/src/gui/help.cpp @@ -17,8 +17,6 @@ * 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" diff --git a/src/gui/help.h b/src/gui/help.h index 3c3715a0..053df723 100644 --- a/src/gui/help.h +++ b/src/gui/help.h @@ -17,8 +17,6 @@ * 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 diff --git a/src/gui/inttextbox.cpp b/src/gui/inttextbox.cpp index 2a09f255..4825fbf5 100644 --- a/src/gui/inttextbox.cpp +++ b/src/gui/inttextbox.cpp @@ -17,8 +17,6 @@ * 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 "inttextbox.h" diff --git a/src/gui/inttextbox.h b/src/gui/inttextbox.h index b5d339ac..8fc8e404 100644 --- a/src/gui/inttextbox.h +++ b/src/gui/inttextbox.h @@ -17,8 +17,6 @@ * 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 INTTEXTBOX_H diff --git a/src/gui/inventorywindow.cpp b/src/gui/inventorywindow.cpp index fcc602f9..d01a2112 100644 --- a/src/gui/inventorywindow.cpp +++ b/src/gui/inventorywindow.cpp @@ -17,8 +17,6 @@ * 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 "inventorywindow.h" diff --git a/src/gui/inventorywindow.h b/src/gui/inventorywindow.h index d45602d2..0b208bbb 100644 --- a/src/gui/inventorywindow.h +++ b/src/gui/inventorywindow.h @@ -17,8 +17,6 @@ * 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_INVENTORYWINDOW_H diff --git a/src/gui/item_amount.cpp b/src/gui/item_amount.cpp index f72462f9..2e8941e8 100644 --- a/src/gui/item_amount.cpp +++ b/src/gui/item_amount.cpp @@ -17,8 +17,6 @@ * 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 "item_amount.h" diff --git a/src/gui/item_amount.h b/src/gui/item_amount.h index 67002703..2005094d 100644 --- a/src/gui/item_amount.h +++ b/src/gui/item_amount.h @@ -17,8 +17,6 @@ * 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_ITEM_AMOUNT_WINDOW_H diff --git a/src/gui/itemcontainer.cpp b/src/gui/itemcontainer.cpp index cf5dcb92..68978db2 100644 --- a/src/gui/itemcontainer.cpp +++ b/src/gui/itemcontainer.cpp @@ -17,8 +17,6 @@ * 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 "itemcontainer.h" diff --git a/src/gui/itemcontainer.h b/src/gui/itemcontainer.h index db8c6f3d..60b62f08 100644 --- a/src/gui/itemcontainer.h +++ b/src/gui/itemcontainer.h @@ -17,8 +17,6 @@ * 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_ITEMCONTAINER_H__ diff --git a/src/gui/itemshortcutcontainer.cpp b/src/gui/itemshortcutcontainer.cpp index 0ce4f6b7..687f8d16 100644 --- a/src/gui/itemshortcutcontainer.cpp +++ b/src/gui/itemshortcutcontainer.cpp @@ -17,8 +17,6 @@ * 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 "itemshortcutcontainer.h" diff --git a/src/gui/itemshortcutcontainer.h b/src/gui/itemshortcutcontainer.h index 58f0aea7..76ca870c 100644 --- a/src/gui/itemshortcutcontainer.h +++ b/src/gui/itemshortcutcontainer.h @@ -17,8 +17,6 @@ * 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_ITEMSHORTCUTCONTAINER_H__ diff --git a/src/gui/itemshortcutwindow.cpp b/src/gui/itemshortcutwindow.cpp index de1a23a1..e7364411 100644 --- a/src/gui/itemshortcutwindow.cpp +++ b/src/gui/itemshortcutwindow.cpp @@ -17,8 +17,6 @@ * 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 "itemshortcutwindow.h" diff --git a/src/gui/itemshortcutwindow.h b/src/gui/itemshortcutwindow.h index 9742abdc..017df5ec 100644 --- a/src/gui/itemshortcutwindow.h +++ b/src/gui/itemshortcutwindow.h @@ -17,8 +17,6 @@ * 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_ITEMSHORTCUTWINDOW_H diff --git a/src/gui/linkhandler.h b/src/gui/linkhandler.h index 3a32f825..44f906db 100644 --- a/src/gui/linkhandler.h +++ b/src/gui/linkhandler.h @@ -17,8 +17,6 @@ * 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_LINK_HANDLER_H_ diff --git a/src/gui/listbox.cpp b/src/gui/listbox.cpp index 634afa07..28bb82e9 100644 --- a/src/gui/listbox.cpp +++ b/src/gui/listbox.cpp @@ -17,8 +17,6 @@ * 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 "listbox.h" diff --git a/src/gui/listbox.h b/src/gui/listbox.h index b226a11e..1d627b3b 100644 --- a/src/gui/listbox.h +++ b/src/gui/listbox.h @@ -17,8 +17,6 @@ * 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_LISTBOX_H diff --git a/src/gui/login.cpp b/src/gui/login.cpp index d85f4e83..06a5f9f0 100644 --- a/src/gui/login.cpp +++ b/src/gui/login.cpp @@ -17,8 +17,6 @@ * 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 "login.h" diff --git a/src/gui/login.h b/src/gui/login.h index e08120cb..4760817c 100644 --- a/src/gui/login.h +++ b/src/gui/login.h @@ -17,8 +17,6 @@ * 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_LOGIN_H diff --git a/src/gui/menuwindow.cpp b/src/gui/menuwindow.cpp index 2043b7d1..3c3e4ab8 100644 --- a/src/gui/menuwindow.cpp +++ b/src/gui/menuwindow.cpp @@ -17,8 +17,6 @@ * 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 "menuwindow.h" diff --git a/src/gui/menuwindow.h b/src/gui/menuwindow.h index f43b9921..03ec3380 100644 --- a/src/gui/menuwindow.h +++ b/src/gui/menuwindow.h @@ -17,8 +17,6 @@ * 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_MENU_H diff --git a/src/gui/minimap.cpp b/src/gui/minimap.cpp index c17fa06b..ef1e9544 100644 --- a/src/gui/minimap.cpp +++ b/src/gui/minimap.cpp @@ -17,8 +17,6 @@ * 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 "minimap.h" diff --git a/src/gui/minimap.h b/src/gui/minimap.h index 5e9458bf..f91dc22d 100644 --- a/src/gui/minimap.h +++ b/src/gui/minimap.h @@ -17,8 +17,6 @@ * 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 diff --git a/src/gui/ministatus.cpp b/src/gui/ministatus.cpp index 077e2331..4d834a91 100644 --- a/src/gui/ministatus.cpp +++ b/src/gui/ministatus.cpp @@ -17,8 +17,6 @@ * 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 "ministatus.h" diff --git a/src/gui/ministatus.h b/src/gui/ministatus.h index 718fe140..d7f6f68c 100644 --- a/src/gui/ministatus.h +++ b/src/gui/ministatus.h @@ -17,8 +17,6 @@ * 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_MINISTATUS_H diff --git a/src/gui/newskill.cpp b/src/gui/newskill.cpp index 6783a546..20fc01bd 100644 --- a/src/gui/newskill.cpp +++ b/src/gui/newskill.cpp @@ -17,8 +17,6 @@ * 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$ */ /* This file implements the new skill dialog for use under the latest diff --git a/src/gui/newskill.h b/src/gui/newskill.h index 6e12169f..49476e5e 100644 --- a/src/gui/newskill.h +++ b/src/gui/newskill.h @@ -17,8 +17,6 @@ * 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_NSKILL_H diff --git a/src/gui/npc_text.cpp b/src/gui/npc_text.cpp index 7b4fc634..3c4beaf3 100644 --- a/src/gui/npc_text.cpp +++ b/src/gui/npc_text.cpp @@ -17,8 +17,6 @@ * 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 "npc_text.h" diff --git a/src/gui/npc_text.h b/src/gui/npc_text.h index 0ef1b938..2c9771d3 100644 --- a/src/gui/npc_text.h +++ b/src/gui/npc_text.h @@ -17,8 +17,6 @@ * 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_NPC_TEXT_H diff --git a/src/gui/npclistdialog.cpp b/src/gui/npclistdialog.cpp index 1bcdc8ff..90444f1a 100644 --- a/src/gui/npclistdialog.cpp +++ b/src/gui/npclistdialog.cpp @@ -17,8 +17,6 @@ * 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 "npclistdialog.h" diff --git a/src/gui/npclistdialog.h b/src/gui/npclistdialog.h index c09b0a8c..0e6760f1 100644 --- a/src/gui/npclistdialog.h +++ b/src/gui/npclistdialog.h @@ -17,8 +17,6 @@ * 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_GUI_NPCLISTDIALOG_H diff --git a/src/gui/ok_dialog.cpp b/src/gui/ok_dialog.cpp index 90407d31..d43c8e69 100644 --- a/src/gui/ok_dialog.cpp +++ b/src/gui/ok_dialog.cpp @@ -17,8 +17,6 @@ * 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 "ok_dialog.h" diff --git a/src/gui/ok_dialog.h b/src/gui/ok_dialog.h index a7b24a90..cba12d72 100644 --- a/src/gui/ok_dialog.h +++ b/src/gui/ok_dialog.h @@ -17,8 +17,6 @@ * 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 _OK_DIALOG_H diff --git a/src/gui/passwordfield.cpp b/src/gui/passwordfield.cpp index 533f54fb..01c7e15d 100644 --- a/src/gui/passwordfield.cpp +++ b/src/gui/passwordfield.cpp @@ -17,8 +17,6 @@ * 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 "passwordfield.h" diff --git a/src/gui/passwordfield.h b/src/gui/passwordfield.h index cae1f92e..8a14b72a 100644 --- a/src/gui/passwordfield.h +++ b/src/gui/passwordfield.h @@ -17,8 +17,6 @@ * 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_PASSWORDFIELD_H_ diff --git a/src/gui/playerbox.cpp b/src/gui/playerbox.cpp index 2c633b72..b6b7663a 100644 --- a/src/gui/playerbox.cpp +++ b/src/gui/playerbox.cpp @@ -17,8 +17,6 @@ * 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 diff --git a/src/gui/playerbox.h b/src/gui/playerbox.h index c226e750..78eeee91 100644 --- a/src/gui/playerbox.h +++ b/src/gui/playerbox.h @@ -17,8 +17,6 @@ * 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_PLAYERBOX_H__ diff --git a/src/gui/popupmenu.cpp b/src/gui/popupmenu.cpp index cdc998e0..8b73abfe 100644 --- a/src/gui/popupmenu.cpp +++ b/src/gui/popupmenu.cpp @@ -17,8 +17,6 @@ * 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 "popupmenu.h" diff --git a/src/gui/popupmenu.h b/src/gui/popupmenu.h index 9fe9f866..2d10e6eb 100644 --- a/src/gui/popupmenu.h +++ b/src/gui/popupmenu.h @@ -17,8 +17,6 @@ * 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_POPUP_MENU_H diff --git a/src/gui/progressbar.cpp b/src/gui/progressbar.cpp index 6d18b2f7..708a2991 100644 --- a/src/gui/progressbar.cpp +++ b/src/gui/progressbar.cpp @@ -17,8 +17,6 @@ * 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 "progressbar.h" diff --git a/src/gui/progressbar.h b/src/gui/progressbar.h index 3e58f14e..70cfa15c 100644 --- a/src/gui/progressbar.h +++ b/src/gui/progressbar.h @@ -17,8 +17,6 @@ * 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_PROGRESSBAR_H diff --git a/src/gui/radiobutton.cpp b/src/gui/radiobutton.cpp index 0ac4dea8..5f929e62 100644 --- a/src/gui/radiobutton.cpp +++ b/src/gui/radiobutton.cpp @@ -17,8 +17,6 @@ * 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 "radiobutton.h" diff --git a/src/gui/radiobutton.h b/src/gui/radiobutton.h index 4f868fdb..6506444f 100644 --- a/src/gui/radiobutton.h +++ b/src/gui/radiobutton.h @@ -17,8 +17,6 @@ * 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_RADIOBUTTON_H diff --git a/src/gui/register.cpp b/src/gui/register.cpp index 9496da93..2a97a3e5 100644 --- a/src/gui/register.cpp +++ b/src/gui/register.cpp @@ -17,8 +17,6 @@ * 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 "register.h" diff --git a/src/gui/register.h b/src/gui/register.h index a80594af..771962cc 100644 --- a/src/gui/register.h +++ b/src/gui/register.h @@ -17,8 +17,6 @@ * 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_REGISTER_H diff --git a/src/gui/scrollarea.cpp b/src/gui/scrollarea.cpp index 255aa2d8..032e3f78 100644 --- a/src/gui/scrollarea.cpp +++ b/src/gui/scrollarea.cpp @@ -17,8 +17,6 @@ * 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 diff --git a/src/gui/scrollarea.h b/src/gui/scrollarea.h index be361f68..d21dae11 100644 --- a/src/gui/scrollarea.h +++ b/src/gui/scrollarea.h @@ -17,8 +17,6 @@ * 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_SCROLLAREA_H__ diff --git a/src/gui/sell.cpp b/src/gui/sell.cpp index d13be2db..6df1cbf6 100644 --- a/src/gui/sell.cpp +++ b/src/gui/sell.cpp @@ -17,8 +17,6 @@ * 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 "sell.h" diff --git a/src/gui/sell.h b/src/gui/sell.h index 0c1a2007..48961efc 100644 --- a/src/gui/sell.h +++ b/src/gui/sell.h @@ -17,8 +17,6 @@ * 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_SELL_H diff --git a/src/gui/setup.cpp b/src/gui/setup.cpp index c895d166..6be0399c 100644 --- a/src/gui/setup.cpp +++ b/src/gui/setup.cpp @@ -17,8 +17,6 @@ * 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 diff --git a/src/gui/setup.h b/src/gui/setup.h index 543cab2c..5268f725 100644 --- a/src/gui/setup.h +++ b/src/gui/setup.h @@ -17,8 +17,6 @@ * 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_SETUP_H diff --git a/src/gui/setup_audio.cpp b/src/gui/setup_audio.cpp index 4227b5ca..a027e133 100644 --- a/src/gui/setup_audio.cpp +++ b/src/gui/setup_audio.cpp @@ -17,8 +17,6 @@ * 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 "setup_audio.h" diff --git a/src/gui/setup_audio.h b/src/gui/setup_audio.h index 6e722f74..eaa55de6 100644 --- a/src/gui/setup_audio.h +++ b/src/gui/setup_audio.h @@ -17,8 +17,6 @@ * 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_GUI_SETUP_AUDIO_H diff --git a/src/gui/setup_joystick.cpp b/src/gui/setup_joystick.cpp index a501298e..c59068f7 100644 --- a/src/gui/setup_joystick.cpp +++ b/src/gui/setup_joystick.cpp @@ -17,8 +17,6 @@ * 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 "setup_joystick.h" diff --git a/src/gui/setup_joystick.h b/src/gui/setup_joystick.h index 6d3ad129..0b7ebe98 100644 --- a/src/gui/setup_joystick.h +++ b/src/gui/setup_joystick.h @@ -17,8 +17,6 @@ * 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_GUI_SETUP_JOYSTICK_H diff --git a/src/gui/setup_keyboard.cpp b/src/gui/setup_keyboard.cpp index e88080b5..c6247487 100644 --- a/src/gui/setup_keyboard.cpp +++ b/src/gui/setup_keyboard.cpp @@ -17,8 +17,6 @@ * 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 "setup_keyboard.h" diff --git a/src/gui/setup_keyboard.h b/src/gui/setup_keyboard.h index b72e8746..50fa76fb 100644 --- a/src/gui/setup_keyboard.h +++ b/src/gui/setup_keyboard.h @@ -17,8 +17,6 @@ * 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_GUI_SETUP_KEYBOARD_H diff --git a/src/gui/setup_players.cpp b/src/gui/setup_players.cpp index 24b559da..7dcbb5dc 100644 --- a/src/gui/setup_players.cpp +++ b/src/gui/setup_players.cpp @@ -17,8 +17,6 @@ * 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 "setup_players.h" diff --git a/src/gui/setup_video.cpp b/src/gui/setup_video.cpp index ae15c7ef..5db2c262 100644 --- a/src/gui/setup_video.cpp +++ b/src/gui/setup_video.cpp @@ -17,8 +17,6 @@ * 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 "setup_video.h" diff --git a/src/gui/setup_video.h b/src/gui/setup_video.h index a0701a3c..355a321e 100644 --- a/src/gui/setup_video.h +++ b/src/gui/setup_video.h @@ -17,8 +17,6 @@ * 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_GUI_SETUP_VIDEO_H diff --git a/src/gui/setuptab.h b/src/gui/setuptab.h index a7d45b9a..6c276c35 100644 --- a/src/gui/setuptab.h +++ b/src/gui/setuptab.h @@ -17,8 +17,6 @@ * 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_GUI_SETUPTAB_H diff --git a/src/gui/shop.cpp b/src/gui/shop.cpp index 62d18769..085e93ce 100644 --- a/src/gui/shop.cpp +++ b/src/gui/shop.cpp @@ -17,8 +17,6 @@ * 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 "shop.h" diff --git a/src/gui/shop.h b/src/gui/shop.h index 22e715c9..915ddd15 100644 --- a/src/gui/shop.h +++ b/src/gui/shop.h @@ -17,8 +17,6 @@ * 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 _SHOP_H diff --git a/src/gui/shoplistbox.cpp b/src/gui/shoplistbox.cpp index 7a8b52ed..bce6a48c 100644 --- a/src/gui/shoplistbox.cpp +++ b/src/gui/shoplistbox.cpp @@ -17,8 +17,6 @@ * 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: listbox.cpp 2655 2006-09-03 21:25:02Z b_lindeijer $ */ #include "shoplistbox.h" diff --git a/src/gui/shoplistbox.h b/src/gui/shoplistbox.h index 837f745f..75f514ab 100644 --- a/src/gui/shoplistbox.h +++ b/src/gui/shoplistbox.h @@ -17,8 +17,6 @@ * 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: listbox.h 2655 2006-09-03 21:25:02Z b_lindeijer $ */ #ifndef _TMW_SHOPLISTBOX_H diff --git a/src/gui/skill.cpp b/src/gui/skill.cpp index 178abe1f..a7b598eb 100644 --- a/src/gui/skill.cpp +++ b/src/gui/skill.cpp @@ -17,8 +17,6 @@ * 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 diff --git a/src/gui/skill.h b/src/gui/skill.h index 66ec35f3..bbd950cb 100644 --- a/src/gui/skill.h +++ b/src/gui/skill.h @@ -17,8 +17,6 @@ * 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_SKILL_H diff --git a/src/gui/slider.cpp b/src/gui/slider.cpp index c94c7bfb..afeecf17 100644 --- a/src/gui/slider.cpp +++ b/src/gui/slider.cpp @@ -17,8 +17,6 @@ * 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 "slider.h" diff --git a/src/gui/slider.h b/src/gui/slider.h index dc38b738..3b796425 100644 --- a/src/gui/slider.h +++ b/src/gui/slider.h @@ -17,8 +17,6 @@ * 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_SLIDER_H diff --git a/src/gui/status.cpp b/src/gui/status.cpp index 927b3554..2f2340d9 100644 --- a/src/gui/status.cpp +++ b/src/gui/status.cpp @@ -17,8 +17,6 @@ * 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 "status.h" diff --git a/src/gui/status.h b/src/gui/status.h index 10773e10..55ed393e 100644 --- a/src/gui/status.h +++ b/src/gui/status.h @@ -17,8 +17,6 @@ * 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_STATUS_H diff --git a/src/gui/tabbedcontainer.cpp b/src/gui/tabbedcontainer.cpp index d6267e65..fba4e846 100644 --- a/src/gui/tabbedcontainer.cpp +++ b/src/gui/tabbedcontainer.cpp @@ -17,8 +17,6 @@ * 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 diff --git a/src/gui/tabbedcontainer.h b/src/gui/tabbedcontainer.h index 7f8deef9..babf68a2 100644 --- a/src/gui/tabbedcontainer.h +++ b/src/gui/tabbedcontainer.h @@ -17,8 +17,6 @@ * 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_TABPANE_H diff --git a/src/gui/textbox.cpp b/src/gui/textbox.cpp index 8d16dc46..619265ec 100644 --- a/src/gui/textbox.cpp +++ b/src/gui/textbox.cpp @@ -17,8 +17,6 @@ * 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 "textbox.h" diff --git a/src/gui/textbox.h b/src/gui/textbox.h index f06f98ec..2060e377 100644 --- a/src/gui/textbox.h +++ b/src/gui/textbox.h @@ -17,8 +17,6 @@ * 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_TEXTBOX_H__ diff --git a/src/gui/textfield.cpp b/src/gui/textfield.cpp index 8db720cf..ea82ba77 100644 --- a/src/gui/textfield.cpp +++ b/src/gui/textfield.cpp @@ -17,8 +17,6 @@ * 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 diff --git a/src/gui/textfield.h b/src/gui/textfield.h index bc47d501..60a50c69 100644 --- a/src/gui/textfield.h +++ b/src/gui/textfield.h @@ -17,8 +17,6 @@ * 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_TEXTFIELD_H__ diff --git a/src/gui/trade.cpp b/src/gui/trade.cpp index 54544250..9cb0d34f 100644 --- a/src/gui/trade.cpp +++ b/src/gui/trade.cpp @@ -17,8 +17,6 @@ * 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 "trade.h" diff --git a/src/gui/trade.h b/src/gui/trade.h index 7adf9575..5d587991 100644 --- a/src/gui/trade.h +++ b/src/gui/trade.h @@ -17,8 +17,6 @@ * 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_TRADE_H diff --git a/src/gui/updatewindow.cpp b/src/gui/updatewindow.cpp index 518abda2..ea0f86cd 100644 --- a/src/gui/updatewindow.cpp +++ b/src/gui/updatewindow.cpp @@ -17,8 +17,6 @@ * 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 "updatewindow.h" diff --git a/src/gui/updatewindow.h b/src/gui/updatewindow.h index 61ea4a27..d7e3c4c7 100644 --- a/src/gui/updatewindow.h +++ b/src/gui/updatewindow.h @@ -17,8 +17,6 @@ * 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 _UPDATERWINDOW_H diff --git a/src/gui/vbox.cpp b/src/gui/vbox.cpp index b503508e..2ec1112d 100644 --- a/src/gui/vbox.cpp +++ b/src/gui/vbox.cpp @@ -17,8 +17,6 @@ * 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 "vbox.h" diff --git a/src/gui/vbox.h b/src/gui/vbox.h index 06a270ef..2072ab24 100644 --- a/src/gui/vbox.h +++ b/src/gui/vbox.h @@ -17,8 +17,6 @@ * 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 VBOX_H diff --git a/src/gui/viewport.cpp b/src/gui/viewport.cpp index e8293acf..37e7bcce 100644 --- a/src/gui/viewport.cpp +++ b/src/gui/viewport.cpp @@ -17,8 +17,6 @@ * 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 "viewport.h" diff --git a/src/gui/viewport.h b/src/gui/viewport.h index 8d3fbd3c..707ad33b 100644 --- a/src/gui/viewport.h +++ b/src/gui/viewport.h @@ -17,8 +17,6 @@ * 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_VIEWPORT_H_ diff --git a/src/gui/widgets/resizegrip.cpp b/src/gui/widgets/resizegrip.cpp index 6be50f2c..c3b537db 100644 --- a/src/gui/widgets/resizegrip.cpp +++ b/src/gui/widgets/resizegrip.cpp @@ -17,8 +17,6 @@ * 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 "resizegrip.h" diff --git a/src/gui/widgets/resizegrip.h b/src/gui/widgets/resizegrip.h index 04be3db3..f57eda94 100644 --- a/src/gui/widgets/resizegrip.h +++ b/src/gui/widgets/resizegrip.h @@ -17,8 +17,6 @@ * 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_RESIZEGRIP_H diff --git a/src/gui/window.cpp b/src/gui/window.cpp index ee8aca64..58544f7e 100644 --- a/src/gui/window.cpp +++ b/src/gui/window.cpp @@ -17,8 +17,6 @@ * 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 diff --git a/src/gui/window.h b/src/gui/window.h index f88e5c01..984c6f06 100644 --- a/src/gui/window.h +++ b/src/gui/window.h @@ -17,8 +17,6 @@ * 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_WINDOW_H__ diff --git a/src/gui/windowcontainer.cpp b/src/gui/windowcontainer.cpp index d10c519c..f92e8388 100644 --- a/src/gui/windowcontainer.cpp +++ b/src/gui/windowcontainer.cpp @@ -17,8 +17,6 @@ * 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 diff --git a/src/gui/windowcontainer.h b/src/gui/windowcontainer.h index df255f84..88a13d31 100644 --- a/src/gui/windowcontainer.h +++ b/src/gui/windowcontainer.h @@ -17,8 +17,6 @@ * 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_WINDOWCONTAINER_H_ diff --git a/src/guichanfwd.h b/src/guichanfwd.h index 812f3f7a..4fb7ea3e 100644 --- a/src/guichanfwd.h +++ b/src/guichanfwd.h @@ -17,8 +17,6 @@ * 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_GUICHANFWD_H diff --git a/src/imageparticle.cpp b/src/imageparticle.cpp index 965434b0..65780345 100644 --- a/src/imageparticle.cpp +++ b/src/imageparticle.cpp @@ -17,8 +17,6 @@ * 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 "imageparticle.h" diff --git a/src/imageparticle.h b/src/imageparticle.h index 0ad515cc..91c5426c 100644 --- a/src/imageparticle.h +++ b/src/imageparticle.h @@ -17,8 +17,6 @@ * 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 _IMAGEPARTICLE_H diff --git a/src/inventory.cpp b/src/inventory.cpp index 470b6c85..5633f430 100644 --- a/src/inventory.cpp +++ b/src/inventory.cpp @@ -17,8 +17,6 @@ * 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 "inventory.h" diff --git a/src/inventory.h b/src/inventory.h index 0d2bbc5a..aa5c8d1d 100644 --- a/src/inventory.h +++ b/src/inventory.h @@ -17,8 +17,6 @@ * 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 _INVENTORY_H diff --git a/src/item.cpp b/src/item.cpp index e84a06df..bc6b7cc7 100644 --- a/src/item.cpp +++ b/src/item.cpp @@ -17,8 +17,6 @@ * 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 "item.h" diff --git a/src/item.h b/src/item.h index 9e1c5ec8..eb6fed77 100644 --- a/src/item.h +++ b/src/item.h @@ -17,8 +17,6 @@ * 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 _ITEM_H_ diff --git a/src/itemshortcut.cpp b/src/itemshortcut.cpp index a32e50e0..5a92e216 100644 --- a/src/itemshortcut.cpp +++ b/src/itemshortcut.cpp @@ -17,8 +17,6 @@ * 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 "itemshortcut.h" diff --git a/src/itemshortcut.h b/src/itemshortcut.h index d75db2e8..a0c52468 100644 --- a/src/itemshortcut.h +++ b/src/itemshortcut.h @@ -17,8 +17,6 @@ * 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_ITEMSHORTCUT_H__ diff --git a/src/joystick.cpp b/src/joystick.cpp index a5dab4f4..b69537cf 100644 --- a/src/joystick.cpp +++ b/src/joystick.cpp @@ -17,8 +17,6 @@ * 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 "joystick.h" diff --git a/src/joystick.h b/src/joystick.h index 321e3e7d..4cc1babd 100644 --- a/src/joystick.h +++ b/src/joystick.h @@ -17,8 +17,6 @@ * 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_JOYSTICK_H diff --git a/src/keyboardconfig.cpp b/src/keyboardconfig.cpp index 9f558883..19cbb945 100644 --- a/src/keyboardconfig.cpp +++ b/src/keyboardconfig.cpp @@ -17,8 +17,6 @@ * 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 "keyboardconfig.h" diff --git a/src/keyboardconfig.h b/src/keyboardconfig.h index b57136dc..9c5fe943 100644 --- a/src/keyboardconfig.h +++ b/src/keyboardconfig.h @@ -17,8 +17,6 @@ * 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_KEYBOARDCONFIG_H diff --git a/src/localplayer.cpp b/src/localplayer.cpp index bb91711c..f67b3185 100644 --- a/src/localplayer.cpp +++ b/src/localplayer.cpp @@ -17,8 +17,6 @@ * 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 "localplayer.h" diff --git a/src/localplayer.h b/src/localplayer.h index 493e0846..34f10a4a 100644 --- a/src/localplayer.h +++ b/src/localplayer.h @@ -17,8 +17,6 @@ * 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_LOCALPLAYER_H diff --git a/src/lockedarray.h b/src/lockedarray.h index 7ec2f9da..a3e5dc0a 100644 --- a/src/lockedarray.h +++ b/src/lockedarray.h @@ -17,8 +17,6 @@ * 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_LOCKEDARRAY_H diff --git a/src/logindata.h b/src/logindata.h index a2e3f9f1..6b733269 100644 --- a/src/logindata.h +++ b/src/logindata.h @@ -17,8 +17,6 @@ * 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_LOGINDATA_H diff --git a/src/main.cpp b/src/main.cpp index 6c9fe45c..91ba4d53 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -17,8 +17,6 @@ * 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 "main.h" diff --git a/src/main.h b/src/main.h index c18a2ddd..3070804f 100644 --- a/src/main.h +++ b/src/main.h @@ -17,8 +17,6 @@ * 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_MAIN_H diff --git a/src/map.cpp b/src/map.cpp index 23eff3b0..928a0154 100644 --- a/src/map.cpp +++ b/src/map.cpp @@ -17,8 +17,6 @@ * 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 "map.h" diff --git a/src/map.h b/src/map.h index 95532eb3..6eaf9e43 100644 --- a/src/map.h +++ b/src/map.h @@ -17,8 +17,6 @@ * 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_MAP_H_ diff --git a/src/monster.cpp b/src/monster.cpp index d7a2add1..8666fe26 100644 --- a/src/monster.cpp +++ b/src/monster.cpp @@ -17,8 +17,6 @@ * 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 "monster.h" diff --git a/src/monster.h b/src/monster.h index cd34886b..c8f0a8f7 100644 --- a/src/monster.h +++ b/src/monster.h @@ -17,8 +17,6 @@ * 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_MONSTER_H diff --git a/src/net/beinghandler.cpp b/src/net/beinghandler.cpp index 1f2463b3..086b4280 100644 --- a/src/net/beinghandler.cpp +++ b/src/net/beinghandler.cpp @@ -17,8 +17,6 @@ * 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 "beinghandler.h" diff --git a/src/net/beinghandler.h b/src/net/beinghandler.h index 5d6d91a4..5e22a670 100644 --- a/src/net/beinghandler.h +++ b/src/net/beinghandler.h @@ -17,8 +17,6 @@ * 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_NET_BEINGHANDLER_H diff --git a/src/net/buysellhandler.cpp b/src/net/buysellhandler.cpp index 26261664..5eb76a46 100644 --- a/src/net/buysellhandler.cpp +++ b/src/net/buysellhandler.cpp @@ -17,8 +17,6 @@ * 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 "buysellhandler.h" diff --git a/src/net/buysellhandler.h b/src/net/buysellhandler.h index 673aaac1..49984840 100644 --- a/src/net/buysellhandler.h +++ b/src/net/buysellhandler.h @@ -17,8 +17,6 @@ * 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_NET_BUYSELLHANDLER_H diff --git a/src/net/charserverhandler.cpp b/src/net/charserverhandler.cpp index baa841f4..9fb67ea5 100644 --- a/src/net/charserverhandler.cpp +++ b/src/net/charserverhandler.cpp @@ -17,8 +17,6 @@ * 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 "charserverhandler.h" diff --git a/src/net/charserverhandler.h b/src/net/charserverhandler.h index ab4ca1c7..05f547d0 100644 --- a/src/net/charserverhandler.h +++ b/src/net/charserverhandler.h @@ -17,8 +17,6 @@ * 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_NET_CHARSERVERHANDLER_H diff --git a/src/net/chathandler.cpp b/src/net/chathandler.cpp index 524911d3..d852798d 100644 --- a/src/net/chathandler.cpp +++ b/src/net/chathandler.cpp @@ -17,8 +17,6 @@ * 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 "chathandler.h" diff --git a/src/net/chathandler.h b/src/net/chathandler.h index eed19206..53ea61d8 100644 --- a/src/net/chathandler.h +++ b/src/net/chathandler.h @@ -17,8 +17,6 @@ * 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_NET_CHATHANDLER_H diff --git a/src/net/equipmenthandler.cpp b/src/net/equipmenthandler.cpp index eddc0ea0..39b6e8cd 100644 --- a/src/net/equipmenthandler.cpp +++ b/src/net/equipmenthandler.cpp @@ -17,8 +17,6 @@ * 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 "equipmenthandler.h" diff --git a/src/net/equipmenthandler.h b/src/net/equipmenthandler.h index 656f7a73..31a747c3 100644 --- a/src/net/equipmenthandler.h +++ b/src/net/equipmenthandler.h @@ -17,8 +17,6 @@ * 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_NET_EQUIPMENTHANDLER_H diff --git a/src/net/inventoryhandler.cpp b/src/net/inventoryhandler.cpp index 48cf18ff..9ddbd62f 100644 --- a/src/net/inventoryhandler.cpp +++ b/src/net/inventoryhandler.cpp @@ -17,8 +17,6 @@ * 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 "inventoryhandler.h" diff --git a/src/net/inventoryhandler.h b/src/net/inventoryhandler.h index aedbc3a1..002fa938 100644 --- a/src/net/inventoryhandler.h +++ b/src/net/inventoryhandler.h @@ -17,8 +17,6 @@ * 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_NET_INVENTORYHANDLER_H diff --git a/src/net/itemhandler.cpp b/src/net/itemhandler.cpp index 567a5382..487b98bf 100644 --- a/src/net/itemhandler.cpp +++ b/src/net/itemhandler.cpp @@ -17,8 +17,6 @@ * 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 "itemhandler.h" diff --git a/src/net/itemhandler.h b/src/net/itemhandler.h index b2104722..99fc6b62 100644 --- a/src/net/itemhandler.h +++ b/src/net/itemhandler.h @@ -17,8 +17,6 @@ * 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_NET_ITEMHANDLER_H diff --git a/src/net/loginhandler.cpp b/src/net/loginhandler.cpp index 19893a8e..169503da 100644 --- a/src/net/loginhandler.cpp +++ b/src/net/loginhandler.cpp @@ -17,8 +17,6 @@ * 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 "loginhandler.h" diff --git a/src/net/loginhandler.h b/src/net/loginhandler.h index 86c1b609..8a952cd5 100644 --- a/src/net/loginhandler.h +++ b/src/net/loginhandler.h @@ -17,8 +17,6 @@ * 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_NET_LOGINHANDLER_H diff --git a/src/net/maploginhandler.cpp b/src/net/maploginhandler.cpp index 0afc8357..b1000c12 100644 --- a/src/net/maploginhandler.cpp +++ b/src/net/maploginhandler.cpp @@ -17,8 +17,6 @@ * 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 "maploginhandler.h" diff --git a/src/net/maploginhandler.h b/src/net/maploginhandler.h index fe597549..4d9fa75b 100644 --- a/src/net/maploginhandler.h +++ b/src/net/maploginhandler.h @@ -17,8 +17,6 @@ * 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_NET_MAPLOGINHANDLER_H diff --git a/src/net/messagehandler.cpp b/src/net/messagehandler.cpp index 849b6716..29e34a29 100644 --- a/src/net/messagehandler.cpp +++ b/src/net/messagehandler.cpp @@ -17,8 +17,6 @@ * 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 "messagehandler.h" diff --git a/src/net/messagehandler.h b/src/net/messagehandler.h index c09037f6..952e76a9 100644 --- a/src/net/messagehandler.h +++ b/src/net/messagehandler.h @@ -17,8 +17,6 @@ * 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_NET_MESSAGEHANDLER_H diff --git a/src/net/messagein.cpp b/src/net/messagein.cpp index bbc0a44c..8e31fded 100644 --- a/src/net/messagein.cpp +++ b/src/net/messagein.cpp @@ -17,8 +17,6 @@ * 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 "messagein.h" diff --git a/src/net/messagein.h b/src/net/messagein.h index d97cd8b6..da80df9e 100644 --- a/src/net/messagein.h +++ b/src/net/messagein.h @@ -17,8 +17,6 @@ * 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_MESSAGEIN_ diff --git a/src/net/messageout.cpp b/src/net/messageout.cpp index 9c87e69e..96678f19 100644 --- a/src/net/messageout.cpp +++ b/src/net/messageout.cpp @@ -17,8 +17,6 @@ * 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 diff --git a/src/net/messageout.h b/src/net/messageout.h index f6468adb..3c4cc241 100644 --- a/src/net/messageout.h +++ b/src/net/messageout.h @@ -17,8 +17,6 @@ * 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_MESSAGEOUT_ diff --git a/src/net/network.cpp b/src/net/network.cpp index 3e1b6571..e8b5e949 100644 --- a/src/net/network.cpp +++ b/src/net/network.cpp @@ -17,8 +17,6 @@ * 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 "network.h" diff --git a/src/net/network.h b/src/net/network.h index 0326b6ce..43b4dbbc 100644 --- a/src/net/network.h +++ b/src/net/network.h @@ -17,8 +17,6 @@ * 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_NETWORK_ diff --git a/src/net/npchandler.cpp b/src/net/npchandler.cpp index d41aaaad..b633835c 100644 --- a/src/net/npchandler.cpp +++ b/src/net/npchandler.cpp @@ -17,8 +17,6 @@ * 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 "npchandler.h" diff --git a/src/net/npchandler.h b/src/net/npchandler.h index 903ecd10..abb16b7a 100644 --- a/src/net/npchandler.h +++ b/src/net/npchandler.h @@ -17,8 +17,6 @@ * 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_NET_NPCHANDLER_H diff --git a/src/net/playerhandler.cpp b/src/net/playerhandler.cpp index 27d4e601..50546b1e 100644 --- a/src/net/playerhandler.cpp +++ b/src/net/playerhandler.cpp @@ -17,8 +17,6 @@ * 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 "playerhandler.h" diff --git a/src/net/playerhandler.h b/src/net/playerhandler.h index b28a23f5..ec22e704 100644 --- a/src/net/playerhandler.h +++ b/src/net/playerhandler.h @@ -17,8 +17,6 @@ * 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_NET_PLAYERHANDLER_H diff --git a/src/net/protocol.cpp b/src/net/protocol.cpp index d3db50bf..a0e21d2e 100644 --- a/src/net/protocol.cpp +++ b/src/net/protocol.cpp @@ -17,8 +17,6 @@ * 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 "protocol.h" diff --git a/src/net/protocol.h b/src/net/protocol.h index 49c177a2..d7bdd041 100644 --- a/src/net/protocol.h +++ b/src/net/protocol.h @@ -17,8 +17,6 @@ * 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_PROTOCOL_ diff --git a/src/net/skillhandler.cpp b/src/net/skillhandler.cpp index 53cfda1a..2bb5d9dc 100644 --- a/src/net/skillhandler.cpp +++ b/src/net/skillhandler.cpp @@ -17,8 +17,6 @@ * 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 "skillhandler.h" diff --git a/src/net/skillhandler.h b/src/net/skillhandler.h index 820a7b6a..80095bd3 100644 --- a/src/net/skillhandler.h +++ b/src/net/skillhandler.h @@ -17,8 +17,6 @@ * 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_NET_SKILLHANDLER_H diff --git a/src/net/tradehandler.cpp b/src/net/tradehandler.cpp index e2f7b998..955aeff1 100644 --- a/src/net/tradehandler.cpp +++ b/src/net/tradehandler.cpp @@ -17,8 +17,6 @@ * 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 "tradehandler.h" diff --git a/src/net/tradehandler.h b/src/net/tradehandler.h index a1971004..37ec5024 100644 --- a/src/net/tradehandler.h +++ b/src/net/tradehandler.h @@ -17,8 +17,6 @@ * 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_NET_TRADEHANDLER_H diff --git a/src/npc.cpp b/src/npc.cpp index ab3c6970..66048005 100644 --- a/src/npc.cpp +++ b/src/npc.cpp @@ -17,8 +17,6 @@ * 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 "npc.h" diff --git a/src/npc.h b/src/npc.h index 2f9bbef4..5eb9036d 100644 --- a/src/npc.h +++ b/src/npc.h @@ -17,8 +17,6 @@ * 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_NPC_H diff --git a/src/openglgraphics.cpp b/src/openglgraphics.cpp index 5b34de18..d8d7a807 100644 --- a/src/openglgraphics.cpp +++ b/src/openglgraphics.cpp @@ -17,8 +17,6 @@ * 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 "main.h" diff --git a/src/openglgraphics.h b/src/openglgraphics.h index ee5bc1e1..7d39e306 100644 --- a/src/openglgraphics.h +++ b/src/openglgraphics.h @@ -17,8 +17,6 @@ * 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_OPENGLGRAPHICS_H diff --git a/src/particle.cpp b/src/particle.cpp index 1521e75b..d4266df2 100644 --- a/src/particle.cpp +++ b/src/particle.cpp @@ -17,8 +17,6 @@ * 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 diff --git a/src/particle.h b/src/particle.h index f281864d..6c00eadd 100644 --- a/src/particle.h +++ b/src/particle.h @@ -17,8 +17,6 @@ * 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 _PARTICLE_H diff --git a/src/particleemitter.cpp b/src/particleemitter.cpp index bb4a7c6e..5ae1aae5 100644 --- a/src/particleemitter.cpp +++ b/src/particleemitter.cpp @@ -17,8 +17,6 @@ * 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 "particleemitter.h" diff --git a/src/particleemitter.h b/src/particleemitter.h index 4ef088f6..ad0e33f8 100644 --- a/src/particleemitter.h +++ b/src/particleemitter.h @@ -17,8 +17,6 @@ * 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 _PARTICLEEMITTER_H diff --git a/src/particleemitterprop.h b/src/particleemitterprop.h index e645c169..70a04aee 100644 --- a/src/particleemitterprop.h +++ b/src/particleemitterprop.h @@ -17,8 +17,6 @@ * 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 diff --git a/src/player.cpp b/src/player.cpp index 0e88da0b..f43e54d5 100644 --- a/src/player.cpp +++ b/src/player.cpp @@ -17,8 +17,6 @@ * 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 "player.h" diff --git a/src/player.h b/src/player.h index 6347b0a6..4676124c 100644 --- a/src/player.h +++ b/src/player.h @@ -17,8 +17,6 @@ * 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_PLAYER_H diff --git a/src/properties.h b/src/properties.h index 93148bdf..2eafeeca 100644 --- a/src/properties.h +++ b/src/properties.h @@ -17,8 +17,6 @@ * 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_ diff --git a/src/resources/action.cpp b/src/resources/action.cpp index 6b3c2f52..ffbbffb2 100644 --- a/src/resources/action.cpp +++ b/src/resources/action.cpp @@ -17,8 +17,6 @@ * 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 "action.h" diff --git a/src/resources/action.h b/src/resources/action.h index 8d5e8d11..09eb066e 100644 --- a/src/resources/action.h +++ b/src/resources/action.h @@ -17,8 +17,6 @@ * 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_ACTION_H diff --git a/src/resources/ambientoverlay.cpp b/src/resources/ambientoverlay.cpp index 058b6083..9eee57f0 100644 --- a/src/resources/ambientoverlay.cpp +++ b/src/resources/ambientoverlay.cpp @@ -17,8 +17,6 @@ * 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 "ambientoverlay.h" diff --git a/src/resources/ambientoverlay.h b/src/resources/ambientoverlay.h index a939cbb4..56c70066 100644 --- a/src/resources/ambientoverlay.h +++ b/src/resources/ambientoverlay.h @@ -17,8 +17,6 @@ * 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_RESOURCES_AMBIENTOVERLAY_H_ diff --git a/src/resources/animation.cpp b/src/resources/animation.cpp index de96525c..d2794e61 100644 --- a/src/resources/animation.cpp +++ b/src/resources/animation.cpp @@ -17,8 +17,6 @@ * 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 "animation.h" diff --git a/src/resources/animation.h b/src/resources/animation.h index aad93cda..8dfe8614 100644 --- a/src/resources/animation.h +++ b/src/resources/animation.h @@ -17,8 +17,6 @@ * 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_ANIMATION_H diff --git a/src/resources/buddylist.cpp b/src/resources/buddylist.cpp index 32d8d9f4..c85105c5 100644 --- a/src/resources/buddylist.cpp +++ b/src/resources/buddylist.cpp @@ -17,8 +17,6 @@ * 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 diff --git a/src/resources/buddylist.h b/src/resources/buddylist.h index 3791a03a..6a3de8c4 100644 --- a/src/resources/buddylist.h +++ b/src/resources/buddylist.h @@ -17,8 +17,6 @@ * 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_BUDDYLIST_H diff --git a/src/resources/dye.cpp b/src/resources/dye.cpp index 195d5dd1..3be105d8 100644 --- a/src/resources/dye.cpp +++ b/src/resources/dye.cpp @@ -17,8 +17,6 @@ * 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: dye.cpp 3708 2007-11-04 11:52:44Z gmelquio $ */ #include diff --git a/src/resources/dye.h b/src/resources/dye.h index fe8669bb..528a1d91 100644 --- a/src/resources/dye.h +++ b/src/resources/dye.h @@ -17,8 +17,6 @@ * 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: dye.h 3706 2007-11-03 21:04:51Z gmelquio $ */ #ifndef _TMW_DYE_H diff --git a/src/resources/image.cpp b/src/resources/image.cpp index d0dae462..77d77f96 100644 --- a/src/resources/image.cpp +++ b/src/resources/image.cpp @@ -17,8 +17,6 @@ * 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 diff --git a/src/resources/image.h b/src/resources/image.h index 52f286f8..3677696f 100644 --- a/src/resources/image.h +++ b/src/resources/image.h @@ -17,8 +17,6 @@ * 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_IMAGE_H diff --git a/src/resources/imageloader.cpp b/src/resources/imageloader.cpp index d6539b05..29458ba3 100644 --- a/src/resources/imageloader.cpp +++ b/src/resources/imageloader.cpp @@ -17,8 +17,6 @@ * 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: imageloader.cpp 3515 2007-08-25 16:56:52Z gmelquio $ */ #include diff --git a/src/resources/imageloader.h b/src/resources/imageloader.h index 89f38eda..7979fd2f 100644 --- a/src/resources/imageloader.h +++ b/src/resources/imageloader.h @@ -17,8 +17,6 @@ * 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: imageloader.h 3515 2007-08-25 16:56:52Z gmelquio $ */ #ifndef _TMW_IMAGELOADER_H diff --git a/src/resources/imageset.cpp b/src/resources/imageset.cpp index 1a753648..d7398c17 100644 --- a/src/resources/imageset.cpp +++ b/src/resources/imageset.cpp @@ -17,8 +17,6 @@ * 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 diff --git a/src/resources/imageset.h b/src/resources/imageset.h index fa1840ec..58b7a8ea 100644 --- a/src/resources/imageset.h +++ b/src/resources/imageset.h @@ -17,8 +17,6 @@ * 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_IMAGESET_H diff --git a/src/resources/imagewriter.cpp b/src/resources/imagewriter.cpp index 7cfa16b4..d6d8a6c2 100644 --- a/src/resources/imagewriter.cpp +++ b/src/resources/imagewriter.cpp @@ -17,8 +17,6 @@ * 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 "imagewriter.h" diff --git a/src/resources/imagewriter.h b/src/resources/imagewriter.h index 205e4584..632e2ae4 100644 --- a/src/resources/imagewriter.h +++ b/src/resources/imagewriter.h @@ -17,8 +17,6 @@ * 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 diff --git a/src/resources/itemdb.cpp b/src/resources/itemdb.cpp index 71bd898a..5ee40014 100644 --- a/src/resources/itemdb.cpp +++ b/src/resources/itemdb.cpp @@ -17,8 +17,6 @@ * 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 diff --git a/src/resources/itemdb.h b/src/resources/itemdb.h index 0029129c..62a1e94c 100644 --- a/src/resources/itemdb.h +++ b/src/resources/itemdb.h @@ -17,8 +17,6 @@ * 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_ITEM_MANAGER_H diff --git a/src/resources/iteminfo.cpp b/src/resources/iteminfo.cpp index f1ebd0a9..fb2c8ffe 100644 --- a/src/resources/iteminfo.cpp +++ b/src/resources/iteminfo.cpp @@ -17,8 +17,6 @@ * 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" diff --git a/src/resources/iteminfo.h b/src/resources/iteminfo.h index 680c8d61..4678bc08 100644 --- a/src/resources/iteminfo.h +++ b/src/resources/iteminfo.h @@ -17,8 +17,6 @@ * 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_ITEMINFO_H_ diff --git a/src/resources/mapreader.cpp b/src/resources/mapreader.cpp index eacbb0d8..4c37c239 100644 --- a/src/resources/mapreader.cpp +++ b/src/resources/mapreader.cpp @@ -17,8 +17,6 @@ * 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 "mapreader.h" diff --git a/src/resources/mapreader.h b/src/resources/mapreader.h index 60056358..0142eb45 100644 --- a/src/resources/mapreader.h +++ b/src/resources/mapreader.h @@ -17,8 +17,6 @@ * 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_MAPREADER_H_ diff --git a/src/resources/monsterdb.cpp b/src/resources/monsterdb.cpp index bf2878bc..11b2baf7 100644 --- a/src/resources/monsterdb.cpp +++ b/src/resources/monsterdb.cpp @@ -17,8 +17,6 @@ * 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 diff --git a/src/resources/monsterdb.h b/src/resources/monsterdb.h index 46a33b06..f1d69e72 100644 --- a/src/resources/monsterdb.h +++ b/src/resources/monsterdb.h @@ -17,8 +17,6 @@ * 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_MONSTER_DB_H diff --git a/src/resources/monsterinfo.cpp b/src/resources/monsterinfo.cpp index e492ccd3..7661c86b 100644 --- a/src/resources/monsterinfo.cpp +++ b/src/resources/monsterinfo.cpp @@ -17,8 +17,6 @@ * 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: monsterinfo.cpp 2650 2006-09-03 15:00:47Z b_lindeijer $ */ #include diff --git a/src/resources/monsterinfo.h b/src/resources/monsterinfo.h index 2f690756..84b131c6 100644 --- a/src/resources/monsterinfo.h +++ b/src/resources/monsterinfo.h @@ -17,8 +17,6 @@ * 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: monsterinfo.h 2650 2006-09-03 15:00:47Z b_lindeijer $ */ #ifndef _TMW_MONSTERINFO_H_ diff --git a/src/resources/music.cpp b/src/resources/music.cpp index 161d8b01..2386aa43 100644 --- a/src/resources/music.cpp +++ b/src/resources/music.cpp @@ -17,8 +17,6 @@ * 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 "music.h" diff --git a/src/resources/music.h b/src/resources/music.h index 72e76295..d50150b8 100644 --- a/src/resources/music.h +++ b/src/resources/music.h @@ -17,8 +17,6 @@ * 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_MUSIC_H diff --git a/src/resources/npcdb.cpp b/src/resources/npcdb.cpp index 5869e295..2f8d78d4 100644 --- a/src/resources/npcdb.cpp +++ b/src/resources/npcdb.cpp @@ -17,8 +17,6 @@ * 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 "npcdb.h" diff --git a/src/resources/npcdb.h b/src/resources/npcdb.h index 2abf959b..00b4f99b 100644 --- a/src/resources/npcdb.h +++ b/src/resources/npcdb.h @@ -17,8 +17,6 @@ * 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_NPC_DB_H diff --git a/src/resources/resource.cpp b/src/resources/resource.cpp index 8f21f5d2..449caf55 100644 --- a/src/resources/resource.cpp +++ b/src/resources/resource.cpp @@ -17,8 +17,6 @@ * 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 diff --git a/src/resources/resource.h b/src/resources/resource.h index 5b9a5eb8..e85e3147 100644 --- a/src/resources/resource.h +++ b/src/resources/resource.h @@ -17,8 +17,6 @@ * 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_RESOURCE_H diff --git a/src/resources/resourcemanager.cpp b/src/resources/resourcemanager.cpp index ef8671a8..073e41c4 100644 --- a/src/resources/resourcemanager.cpp +++ b/src/resources/resourcemanager.cpp @@ -17,8 +17,6 @@ * 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 diff --git a/src/resources/resourcemanager.h b/src/resources/resourcemanager.h index da85e2f9..66813a9c 100644 --- a/src/resources/resourcemanager.h +++ b/src/resources/resourcemanager.h @@ -17,8 +17,6 @@ * 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_RESOURCE_MANAGER_H diff --git a/src/resources/soundeffect.cpp b/src/resources/soundeffect.cpp index ec9bc65c..e21fd2b0 100644 --- a/src/resources/soundeffect.cpp +++ b/src/resources/soundeffect.cpp @@ -17,8 +17,6 @@ * 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 "soundeffect.h" diff --git a/src/resources/soundeffect.h b/src/resources/soundeffect.h index 866c53ec..c3ff6668 100644 --- a/src/resources/soundeffect.h +++ b/src/resources/soundeffect.h @@ -17,8 +17,6 @@ * 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_SOUND_EFFECT_H diff --git a/src/resources/spritedef.cpp b/src/resources/spritedef.cpp index a6d8891e..289df2e5 100644 --- a/src/resources/spritedef.cpp +++ b/src/resources/spritedef.cpp @@ -17,8 +17,6 @@ * 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 diff --git a/src/resources/spritedef.h b/src/resources/spritedef.h index 72c2566f..c7b94d9a 100644 --- a/src/resources/spritedef.h +++ b/src/resources/spritedef.h @@ -17,8 +17,6 @@ * 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_SPRITEDEF_H diff --git a/src/serverinfo.h b/src/serverinfo.h index 4f527128..4d2bb525 100644 --- a/src/serverinfo.h +++ b/src/serverinfo.h @@ -17,8 +17,6 @@ * 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_SERVERINFO_ diff --git a/src/shopitem.cpp b/src/shopitem.cpp index ed5d30a9..9888f829 100644 --- a/src/shopitem.cpp +++ b/src/shopitem.cpp @@ -17,8 +17,6 @@ * 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 "shopitem.h" diff --git a/src/shopitem.h b/src/shopitem.h index ffafbebe..f0c00ef0 100644 --- a/src/shopitem.h +++ b/src/shopitem.h @@ -17,8 +17,6 @@ * 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 _SHOPITEM_H_ diff --git a/src/simpleanimation.cpp b/src/simpleanimation.cpp index f425d3c1..e8c26df1 100644 --- a/src/simpleanimation.cpp +++ b/src/simpleanimation.cpp @@ -17,8 +17,6 @@ * 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 "simpleanimation.h" diff --git a/src/simpleanimation.h b/src/simpleanimation.h index 561c540d..577268a8 100644 --- a/src/simpleanimation.h +++ b/src/simpleanimation.h @@ -17,8 +17,6 @@ * 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_SIMPLEANIMAION_H diff --git a/src/sound.cpp b/src/sound.cpp index 0a20d3f2..888dcc31 100644 --- a/src/sound.cpp +++ b/src/sound.cpp @@ -17,8 +17,6 @@ * 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 "sound.h" diff --git a/src/sound.h b/src/sound.h index ebcd6442..0c2af74b 100644 --- a/src/sound.h +++ b/src/sound.h @@ -17,8 +17,6 @@ * 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_SOUND_H diff --git a/src/sprite.h b/src/sprite.h index 89780519..0e0a95db 100644 --- a/src/sprite.h +++ b/src/sprite.h @@ -17,8 +17,6 @@ * 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_SPRITE_H_ diff --git a/src/text.cpp b/src/text.cpp index 4212c5c8..22228ccb 100644 --- a/src/text.cpp +++ b/src/text.cpp @@ -17,8 +17,6 @@ * 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 "text.h" diff --git a/src/text.h b/src/text.h index 7ea96dee..e57fc06a 100644 --- a/src/text.h +++ b/src/text.h @@ -17,8 +17,6 @@ * 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_TEXT_H diff --git a/src/textmanager.cpp b/src/textmanager.cpp index b4135763..49ad1824 100644 --- a/src/textmanager.cpp +++ b/src/textmanager.cpp @@ -17,8 +17,6 @@ * 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 "textmanager.h" diff --git a/src/textmanager.h b/src/textmanager.h index f7f1247c..ec82c61f 100644 --- a/src/textmanager.h +++ b/src/textmanager.h @@ -17,8 +17,6 @@ * 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_TEXTMANAGER_H diff --git a/src/textparticle.cpp b/src/textparticle.cpp index 89466006..308c043d 100644 --- a/src/textparticle.cpp +++ b/src/textparticle.cpp @@ -17,8 +17,6 @@ * 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 "textparticle.h" diff --git a/src/textparticle.h b/src/textparticle.h index 34badb57..3a0ba674 100644 --- a/src/textparticle.h +++ b/src/textparticle.h @@ -17,8 +17,6 @@ * 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 _TEXTPARTICLE_H diff --git a/src/tileset.h b/src/tileset.h index 625fac1b..fb855831 100644 --- a/src/tileset.h +++ b/src/tileset.h @@ -17,8 +17,6 @@ * 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_TILESET_H_ diff --git a/src/utils/base64.cpp b/src/utils/base64.cpp index 9a8f6356..8cea60f9 100644 --- a/src/utils/base64.cpp +++ b/src/utils/base64.cpp @@ -26,7 +26,6 @@ | Author: Jim Winstead (jimw@php.net) | +----------------------------------------------------------------------+ */ -/* $Id$ */ #include #include diff --git a/src/utils/base64.h b/src/utils/base64.h index ff20ac53..c802207b 100644 --- a/src/utils/base64.h +++ b/src/utils/base64.h @@ -26,7 +26,6 @@ | Author: Jim Winstead (jimw@php.net) | +----------------------------------------------------------------------+ */ -/* $Id$ */ #ifndef _TMW_BASE64_H #define _TMW_BASE64_H diff --git a/src/utils/dtor.h b/src/utils/dtor.h index f2c6c1b8..f7c790c6 100644 --- a/src/utils/dtor.h +++ b/src/utils/dtor.h @@ -17,8 +17,6 @@ * 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_UTILS_DTOR_H diff --git a/src/utils/fastsqrt.h b/src/utils/fastsqrt.h index afadb901..78768149 100644 --- a/src/utils/fastsqrt.h +++ b/src/utils/fastsqrt.h @@ -1,26 +1,24 @@ -/* A very fast function to calculate the approximate inverse square root of a - * floating point value and a helper function that uses it for getting the - * normal squareroot. For an explanation of the inverse squareroot function - * read: - * http://www.math.purdue.edu/~clomont/Math/Papers/2003/InvSqrt.pdf - * - * Unfortunately the original creator of this function seems to be unknown. - * - * $Id$ - */ - -float fastInvSqrt(float x) -{ - union { int i; float x; } tmp; - float xhalf = 0.5f * x; - tmp.x = x; - tmp.i = 0x5f375a86 - (tmp.i >> 1); - x = tmp.x; - x = x * (1.5f - xhalf * x * x); - return x; -} - -float fastSqrt(float x) -{ - return 1.0f / fastInvSqrt(x); -} +/* A very fast function to calculate the approximate inverse square root of a + * floating point value and a helper function that uses it for getting the + * normal squareroot. For an explanation of the inverse squareroot function + * read: + * http://www.math.purdue.edu/~clomont/Math/Papers/2003/InvSqrt.pdf + * + * Unfortunately the original creator of this function seems to be unknown. + */ + +float fastInvSqrt(float x) +{ + union { int i; float x; } tmp; + float xhalf = 0.5f * x; + tmp.x = x; + tmp.i = 0x5f375a86 - (tmp.i >> 1); + x = tmp.x; + x = x * (1.5f - xhalf * x * x); + return x; +} + +float fastSqrt(float x) +{ + return 1.0f / fastInvSqrt(x); +} diff --git a/src/utils/strprintf.cpp b/src/utils/strprintf.cpp index 77a6b235..c5d7a595 100644 --- a/src/utils/strprintf.cpp +++ b/src/utils/strprintf.cpp @@ -17,8 +17,6 @@ * 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: strprintf.cpp 3416 2007-08-06 06:20:14Z gmelquio $ */ #include diff --git a/src/utils/strprintf.h b/src/utils/strprintf.h index 66d753fa..382ab6e0 100644 --- a/src/utils/strprintf.h +++ b/src/utils/strprintf.h @@ -17,8 +17,6 @@ * 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: strprintf.h 3417 2007-08-06 11:14:45Z gmelquio $ */ #ifndef _TMW_UTILS_STRPRINTF_H diff --git a/src/utils/tostring.h b/src/utils/tostring.h index 95b8985f..d2dd941a 100644 --- a/src/utils/tostring.h +++ b/src/utils/tostring.h @@ -17,8 +17,6 @@ * 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_UTILS_TOSTRING_H diff --git a/src/utils/trim.h b/src/utils/trim.h index fec99100..a7c40ca2 100644 --- a/src/utils/trim.h +++ b/src/utils/trim.h @@ -17,8 +17,6 @@ * 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_UTILS_TRIM_H_ diff --git a/src/utils/xml.cpp b/src/utils/xml.cpp index 98b474cb..47f1bd04 100644 --- a/src/utils/xml.cpp +++ b/src/utils/xml.cpp @@ -17,8 +17,6 @@ * 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 "xml.h" diff --git a/src/utils/xml.h b/src/utils/xml.h index 5473b2ca..5a5c756b 100644 --- a/src/utils/xml.h +++ b/src/utils/xml.h @@ -17,8 +17,6 @@ * 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_XML_H diff --git a/src/vector.h b/src/vector.h index 7a5da241..b19f6c64 100644 --- a/src/vector.h +++ b/src/vector.h @@ -17,8 +17,6 @@ * 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_VECTOR_H_ diff --git a/tools/tmxcopy/base64.cpp b/tools/tmxcopy/base64.cpp index 9a8f6356..8cea60f9 100644 --- a/tools/tmxcopy/base64.cpp +++ b/tools/tmxcopy/base64.cpp @@ -26,7 +26,6 @@ | Author: Jim Winstead (jimw@php.net) | +----------------------------------------------------------------------+ */ -/* $Id$ */ #include #include diff --git a/tools/tmxcopy/base64.h b/tools/tmxcopy/base64.h index ff20ac53..c802207b 100644 --- a/tools/tmxcopy/base64.h +++ b/tools/tmxcopy/base64.h @@ -26,7 +26,6 @@ | Author: Jim Winstead (jimw@php.net) | +----------------------------------------------------------------------+ */ -/* $Id$ */ #ifndef _TMW_BASE64_H #define _TMW_BASE64_H diff --git a/tools/tmxcopy/tostring.h b/tools/tmxcopy/tostring.h index 95b8985f..d2dd941a 100644 --- a/tools/tmxcopy/tostring.h +++ b/tools/tmxcopy/tostring.h @@ -17,8 +17,6 @@ * 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_UTILS_TOSTRING_H diff --git a/tools/tmxcopy/xmlutils.cpp b/tools/tmxcopy/xmlutils.cpp index 47bff51a..8b1b62cf 100644 --- a/tools/tmxcopy/xmlutils.cpp +++ b/tools/tmxcopy/xmlutils.cpp @@ -17,7 +17,6 @@ * 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 - * */ #include "xmlutils.h" diff --git a/tools/tmxcopy/xmlutils.h b/tools/tmxcopy/xmlutils.h index 32d1a960..60e8f3cd 100644 --- a/tools/tmxcopy/xmlutils.h +++ b/tools/tmxcopy/xmlutils.h @@ -17,7 +17,6 @@ * 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 - * */ #ifndef _XMLUTILS_H -- cgit v1.2.3-60-g2f50 From 1515a857d92de384e55f56124273e7ceda0b994c Mon Sep 17 00:00:00 2001 From: David Athay Date: Mon, 17 Nov 2008 20:35:54 +0000 Subject: Added Xcode files. --- English.lproj/InfoPlist.strings | Bin 0 -> 204 bytes English.lproj/main.nib/classes.nib | 4 + English.lproj/main.nib/info.nib | 26 + English.lproj/main.nib/objects.xib | 272 +++++ Info.plist | 26 + LICENSE.rtf | 15 + The Mana World.icns | Bin 0 -> 65136 bytes src/SDLMain.h | 11 + src/SDLMain.m | 278 +++++ themanaworld.xcodeproj/garfield.mode1 | 1329 +++++++++++++++++++++++ themanaworld.xcodeproj/garfield.mode1v3 | 1377 ++++++++++++++++++++++++ themanaworld.xcodeproj/garfield.pbxuser | 730 +++++++++++++ themanaworld.xcodeproj/project.pbxproj | 1761 +++++++++++++++++++++++++++++++ 13 files changed, 5829 insertions(+) create mode 100644 English.lproj/InfoPlist.strings create mode 100644 English.lproj/main.nib/classes.nib create mode 100644 English.lproj/main.nib/info.nib create mode 100644 English.lproj/main.nib/objects.xib create mode 100644 Info.plist create mode 100644 LICENSE.rtf create mode 100644 The Mana World.icns create mode 100755 src/SDLMain.h create mode 100755 src/SDLMain.m create mode 100644 themanaworld.xcodeproj/garfield.mode1 create mode 100644 themanaworld.xcodeproj/garfield.mode1v3 create mode 100644 themanaworld.xcodeproj/garfield.pbxuser create mode 100644 themanaworld.xcodeproj/project.pbxproj (limited to 'src') diff --git a/English.lproj/InfoPlist.strings b/English.lproj/InfoPlist.strings new file mode 100644 index 00000000..7080cf94 Binary files /dev/null and b/English.lproj/InfoPlist.strings differ diff --git a/English.lproj/main.nib/classes.nib b/English.lproj/main.nib/classes.nib new file mode 100644 index 00000000..ea58db11 --- /dev/null +++ b/English.lproj/main.nib/classes.nib @@ -0,0 +1,4 @@ +{ +IBClasses = (); +IBVersion = 1; +} diff --git a/English.lproj/main.nib/info.nib b/English.lproj/main.nib/info.nib new file mode 100644 index 00000000..dfd1f0e8 --- /dev/null +++ b/English.lproj/main.nib/info.nib @@ -0,0 +1,26 @@ + + + + + IBDocumentLocation + 117 12 356 240 0 0 1920 1178 + IBEditorPositions + + 29 + 110 302 204 44 0 0 1920 1178 + + IBFramework Version + 431.0 + IBOldestOS + 3 + IBOpenObjects + + 29 + 166 + + IBSystem Version + 8A383 + targetFramework + IBCarbonFramework + + diff --git a/English.lproj/main.nib/objects.xib b/English.lproj/main.nib/objects.xib new file mode 100644 index 00000000..d1922ce1 --- /dev/null +++ b/English.lproj/main.nib/objects.xib @@ -0,0 +1,272 @@ + + + IBCarbonFramework + + NSApplication + + + + main + + + themanaworld + + themanaworld + + + About themanaworld + 0 + abou + + + _NSAppleMenu + + + + File + + File + + + New + n + new + + + Open… + o + open + + + TRUE + + + Close + w + clos + + + Save + s + save + + + Save As… + S + svas + + + Revert + r + rvrt + + + TRUE + + + Page Setup… + P + page + + + Print… + p + prnt + + + + + + Edit + + Edit + + + Undo + z + undo + + + Redo + Z + redo + + + TRUE + + + Cut + x + cut + + + Copy + c + copy + + + Paste + v + past + + + Delete + clea + + + Select All + a + sall + + + TRUE + + + Special Characters… + chrp + + + + + + Window + + Window + + + TRUE + Minimize + m + mini + + + TRUE + Minimize All + m + 1572864 + mina + + + Zoom + zoom + + + TRUE + + + TRUE + Bring All to Front + bfrt + + + TRUE + Arrange in Front + 1572864 + frnt + + + _NSWindowsMenu + + + + _NSMainMenu + + + + + + + + + + + + + + + + + + + + + + + + + 204 300 564 780 + Window + + 0 0 360 480 + 0 0 480 360 + + FALSE + TRUE + TRUE + FALSE + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Files Owner + + MainWindow + + MenuBar + + + 200 + diff --git a/Info.plist b/Info.plist new file mode 100644 index 00000000..76f8dc76 --- /dev/null +++ b/Info.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + English + CFBundleExecutable + The Mana World + CFBundleIconFile + The Mana World.icns + CFBundleIdentifier + TMW + CFBundleName + The Mana World + CFBundlePackageType + APPL + CFBundleSignature + tmw. + CFBundleVersion + 1.0 + NSMainNibFile + main + NSPrincipleClass + NSApplication + + diff --git a/LICENSE.rtf b/LICENSE.rtf new file mode 100644 index 00000000..2592d38a --- /dev/null +++ b/LICENSE.rtf @@ -0,0 +1,15 @@ +{\rtf1\ansi\ansicpg1252\cocoartf949 +{\fonttbl\f0\fswiss\fcharset0 Helvetica;} +{\colortbl;\red255\green255\blue255;} +\paperw11900\paperh16840\margl1440\margr1440\vieww9480\viewh8400\viewkind0 +\pard\tx566\tx1133\tx1700\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\ql\qnatural\pardirnatural + +\f0\fs24 \cf0 The Mana World is released under the GPL - more info at www.themanaworld.org\ +\ +SDL is used under the LGPL - more info at www.libsdl.org\ +\ +SDL_image, SDL_ttf, SDL_mixer and SDL_net are used under the LGPL - more info at www.libsdl.org/libs\ +\ +physfs is used under the BSD license - more info at http://icculus.org/physfs/\ +\ +zlib is used under the BSD license - more info at www.zlib.net} \ No newline at end of file diff --git a/The Mana World.icns b/The Mana World.icns new file mode 100644 index 00000000..7230a099 Binary files /dev/null and b/The Mana World.icns differ diff --git a/src/SDLMain.h b/src/SDLMain.h new file mode 100755 index 00000000..4683df57 --- /dev/null +++ b/src/SDLMain.h @@ -0,0 +1,11 @@ +/* SDLMain.m - main entry point for our Cocoa-ized SDL app + Initial Version: Darrell Walisser + Non-NIB-Code & other changes: Max Horn + + Feel free to customize this file to suit your needs +*/ + +#import + +@interface SDLMain : NSObject +@end diff --git a/src/SDLMain.m b/src/SDLMain.m new file mode 100755 index 00000000..19694b5f --- /dev/null +++ b/src/SDLMain.m @@ -0,0 +1,278 @@ +/* SDLMain.m - main entry point for our Cocoa-ized SDL app + Initial Version: Darrell Walisser + Non-NIB-Code & other changes: Max Horn + + Feel free to customize this file to suit your needs +*/ + +#import "SDL.h" +#import "SDLMain.h" +#import /* for MAXPATHLEN */ +#import + +/* Use this flag to determine whether we use SDLMain.nib or not */ +#define SDL_USE_NIB_FILE 0 + + +static int gArgc; +static char **gArgv; +static BOOL gFinderLaunch; + +#if SDL_USE_NIB_FILE +/* A helper category for NSString */ +@interface NSString (ReplaceSubString) +- (NSString *)stringByReplacingRange:(NSRange)aRange with:(NSString *)aString; +@end +#else +/* An internal Apple class used to setup Apple menus */ +@interface NSAppleMenuController:NSObject {} +- (void)controlMenu:(NSMenu *)aMenu; +@end +#endif + +@interface SDLApplication : NSApplication +@end + +@implementation SDLApplication +/* Invoked from the Quit menu item */ +- (void)terminate:(id)sender +{ + /* Post a SDL_QUIT event */ + SDL_Event event; + event.type = SDL_QUIT; + SDL_PushEvent(&event); +} +@end + + +/* The main class of the application, the application's delegate */ +@implementation SDLMain + +/* Set the working directory to the .app's parent directory */ +- (void) setupWorkingDirectory:(BOOL)shouldChdir +{ + char parentdir[MAXPATHLEN]; + char *c; + + strncpy ( parentdir, gArgv[0], sizeof(parentdir) ); + c = (char*) parentdir; + + while (*c != '\0') /* go to end */ + c++; + + while (*c != '/') /* back up to parent */ + c--; + + *c++ = '\0'; /* cut off last part (binary name) */ + + if (shouldChdir) + { + assert ( chdir (parentdir) == 0 ); /* chdir to the binary app's parent */ + assert ( chdir ("../../../") == 0 ); /* chdir to the .app's parent */ + } +} + +#if SDL_USE_NIB_FILE + +/* Fix menu to contain the real app name instead of "SDL App" */ +- (void)fixMenu:(NSMenu *)aMenu withAppName:(NSString *)appName +{ + NSRange aRange; + NSEnumerator *enumerator; + NSMenuItem *menuItem; + + aRange = [[aMenu title] rangeOfString:@"SDL App"]; + if (aRange.length != 0) + [aMenu setTitle: [[aMenu title] stringByReplacingRange:aRange with:appName]]; + + enumerator = [[aMenu itemArray] objectEnumerator]; + while ((menuItem = [enumerator nextObject])) + { + aRange = [[menuItem title] rangeOfString:@"SDL App"]; + if (aRange.length != 0) + [menuItem setTitle: [[menuItem title] stringByReplacingRange:aRange with:appName]]; + if ([menuItem hasSubmenu]) + [self fixMenu:[menuItem submenu] withAppName:appName]; + } + [ aMenu sizeToFit ]; +} + +#else + +void setupAppleMenu(void) +{ + /* warning: this code is very odd */ + NSAppleMenuController *appleMenuController; + NSMenu *appleMenu; + NSMenuItem *appleMenuItem; + + appleMenuController = [[NSAppleMenuController alloc] init]; + appleMenu = [[NSMenu alloc] initWithTitle:@""]; + appleMenuItem = [[NSMenuItem alloc] initWithTitle:@"" action:nil keyEquivalent:@""]; + + [appleMenuItem setSubmenu:appleMenu]; + + /* yes, we do need to add it and then remove it -- + if you don't add it, it doesn't get displayed + if you don't remove it, you have an extra, titleless item in the menubar + when you remove it, it appears to stick around + very, very odd */ + [[NSApp mainMenu] addItem:appleMenuItem]; + [appleMenuController controlMenu:appleMenu]; + [[NSApp mainMenu] removeItem:appleMenuItem]; + [appleMenu release]; + [appleMenuItem release]; +} + +/* Create a window menu */ +void setupWindowMenu(void) +{ + NSMenu *windowMenu; + NSMenuItem *windowMenuItem; + NSMenuItem *menuItem; + + + windowMenu = [[NSMenu alloc] initWithTitle:@"Window"]; + + /* "Minimize" item */ + menuItem = [[NSMenuItem alloc] initWithTitle:@"Minimize" action:@selector(performMiniaturize:) keyEquivalent:@"m"]; + [windowMenu addItem:menuItem]; + [menuItem release]; + + /* Put menu into the menubar */ + windowMenuItem = [[NSMenuItem alloc] initWithTitle:@"Window" action:nil keyEquivalent:@""]; + [windowMenuItem setSubmenu:windowMenu]; + [[NSApp mainMenu] addItem:windowMenuItem]; + + /* Tell the application object that this is now the window menu */ + [NSApp setWindowsMenu:windowMenu]; + + /* Finally give up our references to the objects */ + [windowMenu release]; + [windowMenuItem release]; +} + +/* Replacement for NSApplicationMain */ +void CustomApplicationMain (argc, argv) +{ + NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; + SDLMain *sdlMain; + + /* Ensure the application object is initialised */ + [SDLApplication sharedApplication]; + + /* Set up the menubar */ + [NSApp setMainMenu:[[NSMenu alloc] init]]; + setupAppleMenu(); + setupWindowMenu(); + + /* Create SDLMain and make it the app delegate */ + sdlMain = [[SDLMain alloc] init]; + [NSApp setDelegate:sdlMain]; + + /* Start the main event loop */ + [NSApp run]; + + [sdlMain release]; + [pool release]; +} + +#endif + +/* Called when the internal event loop has just started running */ +- (void) applicationDidFinishLaunching: (NSNotification *) note +{ + int status; + + /* Set the working directory to the .app's parent directory */ + [self setupWorkingDirectory:gFinderLaunch]; + +#if SDL_USE_NIB_FILE + /* Set the main menu to contain the real app name instead of "SDL App" */ + [self fixMenu:[NSApp mainMenu] withAppName:[[NSProcessInfo processInfo] processName]]; +#endif + + /* Hand off to main application code */ + status = SDL_main (gArgc, gArgv); + + /* We're done, thank you for playing */ + exit(status); +} +@end + + +@implementation NSString (ReplaceSubString) + +- (NSString *)stringByReplacingRange:(NSRange)aRange with:(NSString *)aString +{ + unsigned int bufferSize; + unsigned int selfLen = [self length]; + unsigned int aStringLen = [aString length]; + unichar *buffer; + NSRange localRange; + NSString *result; + + bufferSize = selfLen + aStringLen - aRange.length; + buffer = NSAllocateMemoryPages(bufferSize*sizeof(unichar)); + + /* Get first part into buffer */ + localRange.location = 0; + localRange.length = aRange.location; + [self getCharacters:buffer range:localRange]; + + /* Get middle part into buffer */ + localRange.location = 0; + localRange.length = aStringLen; + [aString getCharacters:(buffer+aRange.location) range:localRange]; + + /* Get last part into buffer */ + localRange.location = aRange.location + aRange.length; + localRange.length = selfLen - localRange.location; + [self getCharacters:(buffer+aRange.location+aStringLen) range:localRange]; + + /* Build output string */ + result = [NSString stringWithCharacters:buffer length:bufferSize]; + + NSDeallocateMemoryPages(buffer, bufferSize); + + return result; +} + +@end + + + +#ifdef main +# undef main +#endif + + +/* Main entry point to executable - should *not* be SDL_main! */ +int main (int argc, char **argv) +{ + + /* Copy the arguments into a global variable */ + int i; + + /* This is passed if we are launched by double-clicking */ + if ( argc >= 2 && strncmp (argv[1], "-psn", 4) == 0 ) { + gArgc = 1; + gFinderLaunch = YES; + } else { + gArgc = argc; + gFinderLaunch = NO; + } + gArgv = (char**) malloc (sizeof(*gArgv) * (gArgc+1)); + assert (gArgv != NULL); + for (i = 0; i < gArgc; i++) + gArgv[i] = argv[i]; + gArgv[i] = NULL; + +#if SDL_USE_NIB_FILE + [SDLApplication poseAsClass:[NSApplication class]]; + NSApplicationMain (argc, argv); +#else + CustomApplicationMain (argc, argv); +#endif + return 0; +} diff --git a/themanaworld.xcodeproj/garfield.mode1 b/themanaworld.xcodeproj/garfield.mode1 new file mode 100644 index 00000000..debfe473 --- /dev/null +++ b/themanaworld.xcodeproj/garfield.mode1 @@ -0,0 +1,1329 @@ + + + + + ActivePerspectiveName + Project + AllowedModules + + + BundleLoadPath + + MaxInstances + n + Module + PBXSmartGroupTreeModule + Name + Groups and Files Outline View + + + BundleLoadPath + + MaxInstances + n + Module + PBXNavigatorGroup + Name + Editor + + + BundleLoadPath + + MaxInstances + n + Module + XCTaskListModule + Name + Task List + + + BundleLoadPath + + MaxInstances + n + Module + XCDetailModule + Name + File and Smart Group Detail Viewer + + + BundleLoadPath + + MaxInstances + 1 + Module + PBXBuildResultsModule + Name + Detailed Build Results Viewer + + + BundleLoadPath + + MaxInstances + 1 + Module + PBXProjectFindModule + Name + Project Batch Find Tool + + + BundleLoadPath + + MaxInstances + n + Module + PBXRunSessionModule + Name + Run Log + + + BundleLoadPath + + MaxInstances + n + Module + PBXBookmarksModule + Name + Bookmarks Tool + + + BundleLoadPath + + MaxInstances + n + Module + PBXClassBrowserModule + Name + Class Browser + + + BundleLoadPath + + MaxInstances + n + Module + PBXCVSModule + Name + Source Code Control Tool + + + BundleLoadPath + + MaxInstances + n + Module + PBXDebugBreakpointsModule + Name + Debug Breakpoints Tool + + + BundleLoadPath + + MaxInstances + n + Module + XCDockableInspector + Name + Inspector + + + BundleLoadPath + + MaxInstances + n + Module + PBXOpenQuicklyModule + Name + Open Quickly Tool + + + BundleLoadPath + + MaxInstances + 1 + Module + PBXDebugSessionModule + Name + Debugger + + + BundleLoadPath + + MaxInstances + 1 + Module + PBXDebugCLIModule + Name + Debug Console + + + Description + DefaultDescriptionKey + DockingSystemVisible + + Extension + mode1 + FavBarConfig + + PBXProjectModuleGUID + 92BC40BF0BAEE965000DAB7F + XCBarModuleItemNames + + XCBarModuleItems + + + FirstTimeWindowDisplayed + + Identifier + com.apple.perspectives.project.mode1 + MajorVersion + 31 + MinorVersion + 1 + Name + Default + Notifications + + OpenEditors + + PerspectiveWidths + + -1 + -1 + + Perspectives + + + ChosenToolbarItems + + active-target-popup + action + NSToolbarFlexibleSpaceItem + buildOrClean + build-and-runOrDebug + debug + clean-target + com.apple.ide.PBXToolbarStopButton + get-info + toggle-editor + NSToolbarFlexibleSpaceItem + com.apple.pbx.toolbar.searchfield + + ControllerClassBaseName + + IconName + WindowOfProjectWithEditor + Identifier + perspective.project + IsVertical + + Layout + + + ContentConfiguration + + PBXBottomSmartGroupGIDs + + 1C37FBAC04509CD000000102 + 1C37FAAC04509CD000000102 + 1C08E77C0454961000C914BD + 1C37FABC05509CD000000102 + 1C37FABC05539CD112110102 + E2644B35053B69B200211256 + 1C37FABC04509CD000100104 + 1CC0EA4004350EF90044410B + 1CC0EA4004350EF90041110B + + PBXProjectModuleGUID + 1CE0B1FE06471DED0097A5F4 + PBXProjectModuleLabel + Files + PBXProjectStructureProvided + yes + PBXSmartGroupTreeModuleColumnData + + PBXSmartGroupTreeModuleColumnWidthsKey + + 186 + + PBXSmartGroupTreeModuleColumnsKey_v4 + + MainColumn + + + PBXSmartGroupTreeModuleOutlineStateKey_v7 + + PBXSmartGroupTreeModuleOutlineStateExpansionKey + + 20286C29FDCF999611CA2CEA + 20286C2AFDCF999611CA2CEA + 20286C32FDCF999611CA2CEA + 1C37FBAC04509CD000000102 + + PBXSmartGroupTreeModuleOutlineStateSelectionKey + + + 78 + 0 + + + PBXSmartGroupTreeModuleOutlineStateVisibleRectKey + {{0, 1010}, {186, 520}} + + PBXTopSmartGroupGIDs + + XCIncludePerspectivesSwitch + + XCSharingToken + com.apple.Xcode.GFSharingToken + + GeometryConfiguration + + Frame + {{0, 0}, {203, 538}} + GroupTreeTableConfiguration + + MainColumn + 186 + + RubberWindowFrame + 372 210 780 579 0 0 1280 832 + + Module + PBXSmartGroupTreeModule + Proportion + 203pt + + + Dock + + + ContentConfiguration + + PBXProjectModuleGUID + 1CE0B20306471E060097A5F4 + PBXProjectModuleLabel + MyNewFile14.java + PBXSplitModuleInNavigatorKey + + Split0 + + PBXProjectModuleGUID + 1CE0B20406471E060097A5F4 + PBXProjectModuleLabel + MyNewFile14.java + + SplitCount + 1 + + StatusBarVisibility + + + GeometryConfiguration + + Frame + {{0, 0}, {572, 0}} + RubberWindowFrame + 372 210 780 579 0 0 1280 832 + + Module + PBXNavigatorGroup + Proportion + 0pt + + + BecomeActive + + ContentConfiguration + + PBXProjectModuleGUID + 1CE0B20506471E060097A5F4 + PBXProjectModuleLabel + Detail + + GeometryConfiguration + + Frame + {{0, 5}, {572, 533}} + RubberWindowFrame + 372 210 780 579 0 0 1280 832 + + Module + XCDetailModule + Proportion + 533pt + + + Proportion + 572pt + + + Name + Project + ServiceClasses + + XCModuleDock + PBXSmartGroupTreeModule + XCModuleDock + PBXNavigatorGroup + XCDetailModule + + TableOfContents + + 924A47AB0D1069F5004FEA83 + 1CE0B1FE06471DED0097A5F4 + 924A47AC0D1069F5004FEA83 + 1CE0B20306471E060097A5F4 + 1CE0B20506471E060097A5F4 + + ToolbarConfiguration + xcode.toolbar.config.default + + + ControllerClassBaseName + + IconName + WindowOfProject + Identifier + perspective.morph + IsVertical + 0 + Layout + + + BecomeActive + 1 + ContentConfiguration + + PBXBottomSmartGroupGIDs + + 1C37FBAC04509CD000000102 + 1C37FAAC04509CD000000102 + 1C08E77C0454961000C914BD + 1C37FABC05509CD000000102 + 1C37FABC05539CD112110102 + E2644B35053B69B200211256 + 1C37FABC04509CD000100104 + 1CC0EA4004350EF90044410B + 1CC0EA4004350EF90041110B + + PBXProjectModuleGUID + 11E0B1FE06471DED0097A5F4 + PBXProjectModuleLabel + Files + PBXProjectStructureProvided + yes + PBXSmartGroupTreeModuleColumnData + + PBXSmartGroupTreeModuleColumnWidthsKey + + 186 + + PBXSmartGroupTreeModuleColumnsKey_v4 + + MainColumn + + + PBXSmartGroupTreeModuleOutlineStateKey_v7 + + PBXSmartGroupTreeModuleOutlineStateExpansionKey + + 29B97314FDCFA39411CA2CEA + 1C37FABC05509CD000000102 + + PBXSmartGroupTreeModuleOutlineStateSelectionKey + + + 0 + + + PBXSmartGroupTreeModuleOutlineStateVisibleRectKey + {{0, 0}, {186, 337}} + + PBXTopSmartGroupGIDs + + XCIncludePerspectivesSwitch + 1 + XCSharingToken + com.apple.Xcode.GFSharingToken + + GeometryConfiguration + + Frame + {{0, 0}, {203, 355}} + GroupTreeTableConfiguration + + MainColumn + 186 + + RubberWindowFrame + 373 269 690 397 0 0 1440 878 + + Module + PBXSmartGroupTreeModule + Proportion + 100% + + + Name + Morph + PreferredWidth + 300 + ServiceClasses + + XCModuleDock + PBXSmartGroupTreeModule + + TableOfContents + + 11E0B1FE06471DED0097A5F4 + + ToolbarConfiguration + xcode.toolbar.config.default.short + + + PerspectivesBarVisible + + ShelfIsVisible + + SourceDescription + file at '/System/Library/PrivateFrameworks/DevToolsInterface.framework/Versions/A/Resources/XCPerspectivesSpecificationMode1.xcperspec' + StatusbarIsVisible + + TimeStamp + 0.0 + ToolbarDisplayMode + 1 + ToolbarIsVisible + + ToolbarSizeMode + 1 + Type + Perspectives + UpdateMessage + The Default Workspace in this version of Xcode now includes support to hide and show the detail view (what has been referred to as the "Metro-Morph" feature). You must discard your current Default Workspace settings and update to the latest Default Workspace in order to gain this feature. Do you wish to update to the latest Workspace defaults for project '%@'? + WindowJustification + 5 + WindowOrderList + + 92BC40B30BAEE8C1000DAB7F + /Users/garfield/programming/themanaworld/tmw/branches/0.0/themanaworld.xcodeproj + + WindowString + 372 210 780 579 0 0 1280 832 + WindowTools + + + FirstTimeWindowDisplayed + + Identifier + windowTool.build + IsVertical + + Layout + + + Dock + + + ContentConfiguration + + PBXProjectModuleGUID + 1CD0528F0623707200166675 + PBXProjectModuleLabel + + StatusBarVisibility + + + GeometryConfiguration + + Frame + {{0, 0}, {553, 0}} + RubberWindowFrame + 316 222 553 548 0 0 1280 832 + + Module + PBXNavigatorGroup + Proportion + 0pt + + + BecomeActive + + ContentConfiguration + + PBXBuildLogShowsTranscriptDefaultKey + {{0, 5}, {553, 497}} + PBXProjectModuleGUID + XCMainBuildResultsModuleGUID + PBXProjectModuleLabel + Build + XCBuildResultsTrigger_Collapse + 1021 + XCBuildResultsTrigger_Open + 1011 + + GeometryConfiguration + + Frame + {{0, 5}, {553, 502}} + RubberWindowFrame + 316 222 553 548 0 0 1280 832 + + Module + PBXBuildResultsModule + Proportion + 502pt + + + Proportion + 507pt + + + Name + Build Results + ServiceClasses + + PBXBuildResultsModule + + StatusbarIsVisible + + TableOfContents + + 92BC40B30BAEE8C1000DAB7F + 924A47B10D107075004FEA83 + 1CD0528F0623707200166675 + XCMainBuildResultsModuleGUID + + ToolbarConfiguration + xcode.toolbar.config.build + WindowString + 316 222 553 548 0 0 1280 832 + WindowToolGUID + 92BC40B30BAEE8C1000DAB7F + WindowToolIsVisible + + + + Identifier + windowTool.debugger + Layout + + + Dock + + + ContentConfiguration + + Debugger + + HorizontalSplitView + + _collapsingFrameDimension + 0.0 + _indexOfCollapsedView + 0 + _percentageOfCollapsedView + 0.0 + isCollapsed + yes + sizes + + {{0, 0}, {317, 164}} + {{317, 0}, {377, 164}} + + + VerticalSplitView + + _collapsingFrameDimension + 0.0 + _indexOfCollapsedView + 0 + _percentageOfCollapsedView + 0.0 + isCollapsed + yes + sizes + + {{0, 0}, {694, 164}} + {{0, 164}, {694, 216}} + + + + LauncherConfigVersion + 8 + PBXProjectModuleGUID + 1C162984064C10D400B95A72 + PBXProjectModuleLabel + Debug - GLUTExamples (Underwater) + + GeometryConfiguration + + DebugConsoleDrawerSize + {100, 120} + DebugConsoleVisible + None + DebugConsoleWindowFrame + {{200, 200}, {500, 300}} + DebugSTDIOWindowFrame + {{200, 200}, {500, 300}} + Frame + {{0, 0}, {694, 380}} + RubberWindowFrame + 321 238 694 422 0 0 1440 878 + + Module + PBXDebugSessionModule + Proportion + 100% + + + Proportion + 100% + + + Name + Debugger + ServiceClasses + + PBXDebugSessionModule + + StatusbarIsVisible + 1 + TableOfContents + + 1CD10A99069EF8BA00B06720 + 1C0AD2AB069F1E9B00FABCE6 + 1C162984064C10D400B95A72 + 1C0AD2AC069F1E9B00FABCE6 + + ToolbarConfiguration + xcode.toolbar.config.debug + WindowString + 321 238 694 422 0 0 1440 878 + WindowToolGUID + 1CD10A99069EF8BA00B06720 + WindowToolIsVisible + 0 + + + FirstTimeWindowDisplayed + + Identifier + windowTool.find + IsVertical + + Layout + + + Dock + + + Dock + + + ContentConfiguration + + PBXProjectModuleGUID + 1CDD528C0622207200134675 + PBXProjectModuleLabel + playerhandler.cpp + StatusBarVisibility + + + GeometryConfiguration + + Frame + {{0, 0}, {781, 212}} + RubberWindowFrame + 212 362 781 470 0 0 1280 832 + + Module + PBXNavigatorGroup + Proportion + 781pt + + + Proportion + 212pt + + + BecomeActive + + ContentConfiguration + + PBXProjectModuleGUID + 1CD0528E0623707200166675 + PBXProjectModuleLabel + Project Find + + GeometryConfiguration + + Frame + {{0, 217}, {781, 212}} + RubberWindowFrame + 212 362 781 470 0 0 1280 832 + + Module + PBXProjectFindModule + Proportion + 212pt + + + Proportion + 429pt + + + Name + Project Find + ServiceClasses + + PBXProjectFindModule + + StatusbarIsVisible + + TableOfContents + + 1C530D57069F1CE1000CFCEE + 92E427510C1EB4AC000361B7 + 92E427520C1EB4AC000361B7 + 1CDD528C0622207200134675 + 1CD0528E0623707200166675 + + WindowString + 212 362 781 470 0 0 1280 832 + WindowToolGUID + 1C530D57069F1CE1000CFCEE + WindowToolIsVisible + + + + Identifier + MENUSEPARATOR + + + Identifier + windowTool.debuggerConsole + Layout + + + Dock + + + BecomeActive + 1 + ContentConfiguration + + PBXProjectModuleGUID + 1C78EAAC065D492600B07095 + PBXProjectModuleLabel + Debugger Console + + GeometryConfiguration + + Frame + {{0, 0}, {440, 358}} + RubberWindowFrame + 650 41 440 400 0 0 1280 1002 + + Module + PBXDebugCLIModule + Proportion + 358pt + + + Proportion + 358pt + + + Name + Debugger Console + ServiceClasses + + PBXDebugCLIModule + + StatusbarIsVisible + 1 + TableOfContents + + 1C78EAAD065D492600B07095 + 1C78EAAE065D492600B07095 + 1C78EAAC065D492600B07095 + + WindowString + 650 41 440 400 0 0 1280 1002 + + + FirstTimeWindowDisplayed + + Identifier + windowTool.run + IsVertical + + Layout + + + Dock + + + ContentConfiguration + + LauncherConfigVersion + 3 + PBXProjectModuleGUID + 1CD0528B0623707200166675 + PBXProjectModuleLabel + Run + Runner + + HorizontalSplitView + + _collapsingFrameDimension + 0.0 + _indexOfCollapsedView + 0 + _percentageOfCollapsedView + 0.0 + isCollapsed + yes + sizes + + {{0, 0}, {493, 167}} + {{0, 176}, {493, 267}} + + + VerticalSplitView + + _collapsingFrameDimension + 0.0 + _indexOfCollapsedView + 0 + _percentageOfCollapsedView + 0.0 + isCollapsed + yes + sizes + + {{0, 0}, {405, 443}} + {{414, 0}, {514, 443}} + + + + + GeometryConfiguration + + Frame + {{0, 0}, {459, 159}} + RubberWindowFrame + 316 570 459 200 0 0 1280 832 + + Module + PBXRunSessionModule + Proportion + 159pt + + + Proportion + 159pt + + + Name + Run Log + ServiceClasses + + PBXRunSessionModule + + StatusbarIsVisible + + TableOfContents + + 1C0AD2B3069F1EA900FABCE6 + 92AA62E70C21BDEA007FAAD0 + 1CD0528B0623707200166675 + 92AA62E80C21BDEA007FAAD0 + + ToolbarConfiguration + xcode.toolbar.config.run + WindowString + 316 570 459 200 0 0 1280 832 + WindowToolGUID + 1C0AD2B3069F1EA900FABCE6 + WindowToolIsVisible + + + + Identifier + windowTool.scm + Layout + + + Dock + + + ContentConfiguration + + PBXProjectModuleGUID + 1C78EAB2065D492600B07095 + PBXProjectModuleLabel + <No Editor> + PBXSplitModuleInNavigatorKey + + Split0 + + PBXProjectModuleGUID + 1C78EAB3065D492600B07095 + + SplitCount + 1 + + StatusBarVisibility + 1 + + GeometryConfiguration + + Frame + {{0, 0}, {452, 0}} + RubberWindowFrame + 743 379 452 308 0 0 1280 1002 + + Module + PBXNavigatorGroup + Proportion + 0pt + + + BecomeActive + 1 + ContentConfiguration + + PBXProjectModuleGUID + 1CD052920623707200166675 + PBXProjectModuleLabel + SCM + + GeometryConfiguration + + ConsoleFrame + {{0, 259}, {452, 0}} + Frame + {{0, 7}, {452, 259}} + RubberWindowFrame + 743 379 452 308 0 0 1280 1002 + TableConfiguration + + Status + 30 + FileName + 199 + Path + 197.09500122070312 + + TableFrame + {{0, 0}, {452, 250}} + + Module + PBXCVSModule + Proportion + 262pt + + + Proportion + 266pt + + + Name + SCM + ServiceClasses + + PBXCVSModule + + StatusbarIsVisible + 1 + TableOfContents + + 1C78EAB4065D492600B07095 + 1C78EAB5065D492600B07095 + 1C78EAB2065D492600B07095 + 1CD052920623707200166675 + + ToolbarConfiguration + xcode.toolbar.config.scm + WindowString + 743 379 452 308 0 0 1280 1002 + + + Identifier + windowTool.breakpoints + IsVertical + 0 + Layout + + + Dock + + + BecomeActive + 1 + ContentConfiguration + + PBXBottomSmartGroupGIDs + + 1C77FABC04509CD000000102 + + PBXProjectModuleGUID + 1CE0B1FE06471DED0097A5F4 + PBXProjectModuleLabel + Files + PBXProjectStructureProvided + no + PBXSmartGroupTreeModuleColumnData + + PBXSmartGroupTreeModuleColumnWidthsKey + + 168 + + PBXSmartGroupTreeModuleColumnsKey_v4 + + MainColumn + + + PBXSmartGroupTreeModuleOutlineStateKey_v7 + + PBXSmartGroupTreeModuleOutlineStateExpansionKey + + 1C77FABC04509CD000000102 + + PBXSmartGroupTreeModuleOutlineStateSelectionKey + + + 0 + + + PBXSmartGroupTreeModuleOutlineStateVisibleRectKey + {{0, 0}, {168, 350}} + + PBXTopSmartGroupGIDs + + XCIncludePerspectivesSwitch + 0 + + GeometryConfiguration + + Frame + {{0, 0}, {185, 368}} + GroupTreeTableConfiguration + + MainColumn + 168 + + RubberWindowFrame + 315 424 744 409 0 0 1440 878 + + Module + PBXSmartGroupTreeModule + Proportion + 185pt + + + ContentConfiguration + + PBXProjectModuleGUID + 1CA1AED706398EBD00589147 + PBXProjectModuleLabel + Detail + + GeometryConfiguration + + Frame + {{190, 0}, {554, 368}} + RubberWindowFrame + 315 424 744 409 0 0 1440 878 + + Module + XCDetailModule + Proportion + 554pt + + + Proportion + 368pt + + + MajorVersion + 2 + MinorVersion + 0 + Name + Breakpoints + ServiceClasses + + PBXSmartGroupTreeModule + XCDetailModule + + StatusbarIsVisible + 1 + TableOfContents + + 1CDDB66807F98D9800BB5817 + 1CDDB66907F98D9800BB5817 + 1CE0B1FE06471DED0097A5F4 + 1CA1AED706398EBD00589147 + + ToolbarConfiguration + xcode.toolbar.config.breakpoints + WindowString + 315 424 744 409 0 0 1440 878 + WindowToolGUID + 1CDDB66807F98D9800BB5817 + WindowToolIsVisible + 1 + + + Identifier + windowTool.debugAnimator + Layout + + + Dock + + + Module + PBXNavigatorGroup + Proportion + 100% + + + Proportion + 100% + + + Name + Debug Visualizer + ServiceClasses + + PBXNavigatorGroup + + StatusbarIsVisible + 1 + ToolbarConfiguration + xcode.toolbar.config.debugAnimator + WindowString + 100 100 700 500 0 0 1280 1002 + + + Identifier + windowTool.bookmarks + Layout + + + Dock + + + Module + PBXBookmarksModule + Proportion + 100% + + + Proportion + 100% + + + Name + Bookmarks + ServiceClasses + + PBXBookmarksModule + + StatusbarIsVisible + 0 + WindowString + 538 42 401 187 0 0 1280 1002 + + + Identifier + windowTool.classBrowser + Layout + + + Dock + + + BecomeActive + 1 + ContentConfiguration + + OptionsSetName + Hierarchy, all classes + PBXProjectModuleGUID + 1CA6456E063B45B4001379D8 + PBXProjectModuleLabel + Class Browser - NSObject + + GeometryConfiguration + + ClassesFrame + {{0, 0}, {374, 96}} + ClassesTreeTableConfiguration + + PBXClassNameColumnIdentifier + 208 + PBXClassBookColumnIdentifier + 22 + + Frame + {{0, 0}, {630, 331}} + MembersFrame + {{0, 105}, {374, 395}} + MembersTreeTableConfiguration + + PBXMemberTypeIconColumnIdentifier + 22 + PBXMemberNameColumnIdentifier + 216 + PBXMemberTypeColumnIdentifier + 97 + PBXMemberBookColumnIdentifier + 22 + + PBXModuleWindowStatusBarHidden2 + 1 + RubberWindowFrame + 385 179 630 352 0 0 1440 878 + + Module + PBXClassBrowserModule + Proportion + 332pt + + + Proportion + 332pt + + + Name + Class Browser + ServiceClasses + + PBXClassBrowserModule + + StatusbarIsVisible + 0 + TableOfContents + + 1C0AD2AF069F1E9B00FABCE6 + 1C0AD2B0069F1E9B00FABCE6 + 1CA6456E063B45B4001379D8 + + ToolbarConfiguration + xcode.toolbar.config.classbrowser + WindowString + 385 179 630 352 0 0 1440 878 + WindowToolGUID + 1C0AD2AF069F1E9B00FABCE6 + WindowToolIsVisible + 0 + + + + diff --git a/themanaworld.xcodeproj/garfield.mode1v3 b/themanaworld.xcodeproj/garfield.mode1v3 new file mode 100644 index 00000000..fc9662d9 --- /dev/null +++ b/themanaworld.xcodeproj/garfield.mode1v3 @@ -0,0 +1,1377 @@ + + + + + ActivePerspectiveName + Project + AllowedModules + + + BundleLoadPath + + MaxInstances + n + Module + PBXSmartGroupTreeModule + Name + Groups and Files Outline View + + + BundleLoadPath + + MaxInstances + n + Module + PBXNavigatorGroup + Name + Editor + + + BundleLoadPath + + MaxInstances + n + Module + XCTaskListModule + Name + Task List + + + BundleLoadPath + + MaxInstances + n + Module + XCDetailModule + Name + File and Smart Group Detail Viewer + + + BundleLoadPath + + MaxInstances + 1 + Module + PBXBuildResultsModule + Name + Detailed Build Results Viewer + + + BundleLoadPath + + MaxInstances + 1 + Module + PBXProjectFindModule + Name + Project Batch Find Tool + + + BundleLoadPath + + MaxInstances + n + Module + XCProjectFormatConflictsModule + Name + Project Format Conflicts List + + + BundleLoadPath + + MaxInstances + n + Module + PBXBookmarksModule + Name + Bookmarks Tool + + + BundleLoadPath + + MaxInstances + n + Module + PBXClassBrowserModule + Name + Class Browser + + + BundleLoadPath + + MaxInstances + n + Module + PBXCVSModule + Name + Source Code Control Tool + + + BundleLoadPath + + MaxInstances + n + Module + PBXDebugBreakpointsModule + Name + Debug Breakpoints Tool + + + BundleLoadPath + + MaxInstances + n + Module + XCDockableInspector + Name + Inspector + + + BundleLoadPath + + MaxInstances + n + Module + PBXOpenQuicklyModule + Name + Open Quickly Tool + + + BundleLoadPath + + MaxInstances + 1 + Module + PBXDebugSessionModule + Name + Debugger + + + BundleLoadPath + + MaxInstances + 1 + Module + PBXDebugCLIModule + Name + Debug Console + + + BundleLoadPath + + MaxInstances + n + Module + XCSnapshotModule + Name + Snapshots Tool + + + Description + DefaultDescriptionKey + DockingSystemVisible + + Extension + mode1v3 + FavBarConfig + + PBXProjectModuleGUID + 92A4CC870D1C46A000CA28FB + XCBarModuleItemNames + + XCBarModuleItems + + + FirstTimeWindowDisplayed + + Identifier + com.apple.perspectives.project.mode1v3 + MajorVersion + 33 + MinorVersion + 0 + Name + Default + Notifications + + OpenEditors + + PerspectiveWidths + + -1 + -1 + + Perspectives + + + ChosenToolbarItems + + active-target-popup + active-buildstyle-popup + action + NSToolbarFlexibleSpaceItem + buildOrClean + build-and-goOrGo + com.apple.ide.PBXToolbarStopButton + get-info + toggle-editor + NSToolbarFlexibleSpaceItem + com.apple.pbx.toolbar.searchfield + + ControllerClassBaseName + + IconName + WindowOfProjectWithEditor + Identifier + perspective.project + IsVertical + + Layout + + + BecomeActive + + ContentConfiguration + + PBXBottomSmartGroupGIDs + + 1C37FBAC04509CD000000102 + 1C37FAAC04509CD000000102 + 1C08E77C0454961000C914BD + 1C37FABC05509CD000000102 + 1C37FABC05539CD112110102 + E2644B35053B69B200211256 + 1C37FABC04509CD000100104 + 1CC0EA4004350EF90044410B + 1CC0EA4004350EF90041110B + + PBXProjectModuleGUID + 1CE0B1FE06471DED0097A5F4 + PBXProjectModuleLabel + Files + PBXProjectStructureProvided + yes + PBXSmartGroupTreeModuleColumnData + + PBXSmartGroupTreeModuleColumnWidthsKey + + 186 + + PBXSmartGroupTreeModuleColumnsKey_v4 + + MainColumn + + + PBXSmartGroupTreeModuleOutlineStateKey_v7 + + PBXSmartGroupTreeModuleOutlineStateExpansionKey + + 20286C29FDCF999611CA2CEA + + PBXSmartGroupTreeModuleOutlineStateSelectionKey + + PBXSmartGroupTreeModuleOutlineStateVisibleRectKey + {{0, 0}, {186, 520}} + + PBXTopSmartGroupGIDs + + XCIncludePerspectivesSwitch + + XCSharingToken + com.apple.Xcode.GFSharingToken + + GeometryConfiguration + + Frame + {{0, 0}, {203, 538}} + GroupTreeTableConfiguration + + MainColumn + 186 + + RubberWindowFrame + 670 364 780 579 0 0 1680 1028 + + Module + PBXSmartGroupTreeModule + Proportion + 203pt + + + Dock + + + ContentConfiguration + + PBXProjectModuleGUID + 1CE0B20306471E060097A5F4 + PBXProjectModuleLabel + physfs.c + PBXSplitModuleInNavigatorKey + + Split0 + + PBXProjectModuleGUID + 1CE0B20406471E060097A5F4 + PBXProjectModuleLabel + physfs.c + + SplitCount + 1 + + StatusBarVisibility + + + GeometryConfiguration + + Frame + {{0, 0}, {572, 160}} + RubberWindowFrame + 670 364 780 579 0 0 1680 1028 + + Module + PBXNavigatorGroup + Proportion + 160pt + + + ContentConfiguration + + PBXProjectModuleGUID + 1CE0B20506471E060097A5F4 + PBXProjectModuleLabel + Detail + + GeometryConfiguration + + Frame + {{0, 165}, {572, 373}} + RubberWindowFrame + 670 364 780 579 0 0 1680 1028 + + Module + XCDetailModule + Proportion + 373pt + + + Proportion + 572pt + + + Name + Project + ServiceClasses + + XCModuleDock + PBXSmartGroupTreeModule + XCModuleDock + PBXNavigatorGroup + XCDetailModule + + TableOfContents + + 920378B80ED200E400D3712D + 1CE0B1FE06471DED0097A5F4 + 920378B90ED200E400D3712D + 1CE0B20306471E060097A5F4 + 1CE0B20506471E060097A5F4 + + ToolbarConfiguration + xcode.toolbar.config.defaultV3 + + + ControllerClassBaseName + + IconName + WindowOfProject + Identifier + perspective.morph + IsVertical + + Layout + + + BecomeActive + 1 + ContentConfiguration + + PBXBottomSmartGroupGIDs + + 1C37FBAC04509CD000000102 + 1C37FAAC04509CD000000102 + 1C08E77C0454961000C914BD + 1C37FABC05509CD000000102 + 1C37FABC05539CD112110102 + E2644B35053B69B200211256 + 1C37FABC04509CD000100104 + 1CC0EA4004350EF90044410B + 1CC0EA4004350EF90041110B + + PBXProjectModuleGUID + 11E0B1FE06471DED0097A5F4 + PBXProjectModuleLabel + Files + PBXProjectStructureProvided + yes + PBXSmartGroupTreeModuleColumnData + + PBXSmartGroupTreeModuleColumnWidthsKey + + 186 + + PBXSmartGroupTreeModuleColumnsKey_v4 + + MainColumn + + + PBXSmartGroupTreeModuleOutlineStateKey_v7 + + PBXSmartGroupTreeModuleOutlineStateExpansionKey + + 29B97314FDCFA39411CA2CEA + 1C37FABC05509CD000000102 + + PBXSmartGroupTreeModuleOutlineStateSelectionKey + + + 0 + + + PBXSmartGroupTreeModuleOutlineStateVisibleRectKey + {{0, 0}, {186, 337}} + + PBXTopSmartGroupGIDs + + XCIncludePerspectivesSwitch + 1 + XCSharingToken + com.apple.Xcode.GFSharingToken + + GeometryConfiguration + + Frame + {{0, 0}, {203, 355}} + GroupTreeTableConfiguration + + MainColumn + 186 + + RubberWindowFrame + 373 269 690 397 0 0 1440 878 + + Module + PBXSmartGroupTreeModule + Proportion + 100% + + + Name + Morph + PreferredWidth + 300 + ServiceClasses + + XCModuleDock + PBXSmartGroupTreeModule + + TableOfContents + + 11E0B1FE06471DED0097A5F4 + + ToolbarConfiguration + xcode.toolbar.config.default.shortV3 + + + PerspectivesBarVisible + + ShelfIsVisible + + StatusbarIsVisible + + TimeStamp + 0.0 + ToolbarDisplayMode + 1 + ToolbarIsVisible + + ToolbarSizeMode + 1 + Type + Perspectives + UpdateMessage + The Default Workspace in this version of Xcode now includes support to hide and show the detail view (what has been referred to as the "Metro-Morph" feature). You must discard your current Default Workspace settings and update to the latest Default Workspace in order to gain this feature. Do you wish to update to the latest Workspace defaults for project '%@'? + WindowJustification + 5 + WindowOrderList + + 1C78EAAD065D492600B07095 + 1CD10A99069EF8BA00B06720 + 92A4CC8A0D1C5F1E00CA28FB + /Users/garfield/programming/tmwclient/themanaworld.xcodeproj + + WindowString + 670 364 780 579 0 0 1680 1028 + WindowToolsV3 + + + FirstTimeWindowDisplayed + + Identifier + windowTool.build + IsVertical + + Layout + + + Dock + + + ContentConfiguration + + PBXProjectModuleGUID + 1CD0528F0623707200166675 + PBXProjectModuleLabel + + StatusBarVisibility + + + GeometryConfiguration + + Frame + {{0, 0}, {553, 0}} + RubberWindowFrame + 490 365 553 548 0 0 1680 1028 + + Module + PBXNavigatorGroup + Proportion + 0pt + + + BecomeActive + + ContentConfiguration + + PBXBuildLogShowsTranscriptDefaultKey + {{0, 325}, {553, 177}} + PBXProjectModuleGUID + XCMainBuildResultsModuleGUID + PBXProjectModuleLabel + Build + XCBuildResultsTrigger_Collapse + 1021 + XCBuildResultsTrigger_Open + 1011 + + GeometryConfiguration + + Frame + {{0, 5}, {553, 502}} + RubberWindowFrame + 490 365 553 548 0 0 1680 1028 + + Module + PBXBuildResultsModule + Proportion + 502pt + + + Proportion + 507pt + + + Name + Build Results + ServiceClasses + + PBXBuildResultsModule + + StatusbarIsVisible + + TableOfContents + + 92A4CC8A0D1C5F1E00CA28FB + 92037A230ED20C3200D3712D + 1CD0528F0623707200166675 + XCMainBuildResultsModuleGUID + + ToolbarConfiguration + xcode.toolbar.config.buildV3 + WindowString + 490 365 553 548 0 0 1680 1028 + WindowToolGUID + 92A4CC8A0D1C5F1E00CA28FB + WindowToolIsVisible + + + + FirstTimeWindowDisplayed + + Identifier + windowTool.debugger + IsVertical + + Layout + + + Dock + + + ContentConfiguration + + Debugger + + HorizontalSplitView + + _collapsingFrameDimension + 0.0 + _indexOfCollapsedView + 0 + _percentageOfCollapsedView + 0.0 + isCollapsed + yes + sizes + + {{0, 0}, {316, 203}} + {{316, 0}, {378, 203}} + + + VerticalSplitView + + _collapsingFrameDimension + 0.0 + _indexOfCollapsedView + 0 + _percentageOfCollapsedView + 0.0 + isCollapsed + yes + sizes + + {{0, 0}, {694, 203}} + {{0, 203}, {694, 178}} + + + + LauncherConfigVersion + 8 + PBXProjectModuleGUID + 1C162984064C10D400B95A72 + PBXProjectModuleLabel + Debug - GLUTExamples (Underwater) + + GeometryConfiguration + + DebugConsoleVisible + None + DebugConsoleWindowFrame + {{200, 200}, {500, 300}} + DebugSTDIOWindowFrame + {{200, 200}, {500, 300}} + Frame + {{0, 0}, {694, 381}} + PBXDebugSessionStackFrameViewKey + + DebugVariablesTableConfiguration + + Name + 120 + Value + 85 + Summary + 986 + + Frame + {{316, 0}, {378, 203}} + RubberWindowFrame + 348 319 694 422 0 0 1680 1028 + + RubberWindowFrame + 348 319 694 422 0 0 1680 1028 + + Module + PBXDebugSessionModule + Proportion + 381pt + + + Proportion + 381pt + + + Name + Debugger + ServiceClasses + + PBXDebugSessionModule + + StatusbarIsVisible + + TableOfContents + + 1CD10A99069EF8BA00B06720 + 92037A240ED20C3200D3712D + 1C162984064C10D400B95A72 + 92037A250ED20C3200D3712D + 92037A260ED20C3200D3712D + 92037A270ED20C3200D3712D + 92037A280ED20C3200D3712D + 92037A290ED20C3200D3712D + + ToolbarConfiguration + xcode.toolbar.config.debugV3 + WindowString + 348 319 694 422 0 0 1680 1028 + WindowToolGUID + 1CD10A99069EF8BA00B06720 + WindowToolIsVisible + + + + FirstTimeWindowDisplayed + + Identifier + windowTool.find + IsVertical + + Layout + + + Dock + + + Dock + + + ContentConfiguration + + PBXProjectModuleGUID + 1CDD528C0622207200134675 + PBXProjectModuleLabel + <No Editor> + StatusBarVisibility + + + GeometryConfiguration + + Frame + {{0, 0}, {781, 212}} + RubberWindowFrame + 212 362 781 470 0 0 1280 832 + + Module + PBXNavigatorGroup + Proportion + 781pt + + + Proportion + 212pt + + + ContentConfiguration + + PBXProjectModuleGUID + 1CD0528E0623707200166675 + PBXProjectModuleLabel + Project Find + + GeometryConfiguration + + Frame + {{0, 217}, {781, 212}} + RubberWindowFrame + 212 362 781 470 0 0 1280 832 + + Module + PBXProjectFindModule + Proportion + 212pt + + + Proportion + 429pt + + + Name + Project Find + ServiceClasses + + PBXProjectFindModule + + StatusbarIsVisible + + TableOfContents + + 1C530D57069F1CE1000CFCEE + 92983E440D3A6D3600350ADB + 92983E450D3A6D3600350ADB + 1CDD528C0622207200134675 + 1CD0528E0623707200166675 + + WindowString + 212 362 781 470 0 0 1280 832 + WindowToolGUID + 1C530D57069F1CE1000CFCEE + WindowToolIsVisible + + + + FirstTimeWindowDisplayed + + Identifier + MENUSEPARATOR + + + FirstTimeWindowDisplayed + + Identifier + windowTool.debuggerConsole + IsVertical + + Layout + + + Dock + + + ContentConfiguration + + PBXProjectModuleGUID + 1C78EAAC065D492600B07095 + PBXProjectModuleLabel + Debugger Console + + GeometryConfiguration + + Frame + {{0, 0}, {440, 359}} + RubberWindowFrame + 655 284 440 400 0 0 1680 1028 + + Module + PBXDebugCLIModule + Proportion + 359pt + + + Proportion + 359pt + + + Name + Debugger Console + ServiceClasses + + PBXDebugCLIModule + + StatusbarIsVisible + + TableOfContents + + 1C78EAAD065D492600B07095 + 92037A2A0ED20C3200D3712D + 1C78EAAC065D492600B07095 + + ToolbarConfiguration + xcode.toolbar.config.consoleV3 + WindowString + 655 284 440 400 0 0 1680 1028 + WindowToolGUID + 1C78EAAD065D492600B07095 + WindowToolIsVisible + + + + Identifier + windowTool.snapshots + Layout + + + Dock + + + Module + XCSnapshotModule + Proportion + 100% + + + Proportion + 100% + + + Name + Snapshots + ServiceClasses + + XCSnapshotModule + + StatusbarIsVisible + Yes + ToolbarConfiguration + xcode.toolbar.config.snapshots + WindowString + 315 824 300 550 0 0 1440 878 + WindowToolIsVisible + Yes + + + FirstTimeWindowDisplayed + + Identifier + windowTool.scm + Layout + + + Dock + + + ContentConfiguration + + PBXProjectModuleGUID + 1C78EAB2065D492600B07095 + PBXProjectModuleLabel + <No Editor> + PBXSplitModuleInNavigatorKey + + Split0 + + PBXProjectModuleGUID + 1C78EAB3065D492600B07095 + + SplitCount + 1 + + StatusBarVisibility + 1 + + GeometryConfiguration + + Frame + {{0, 0}, {452, 0}} + RubberWindowFrame + 743 379 452 308 0 0 1280 1002 + + Module + PBXNavigatorGroup + Proportion + 0pt + + + BecomeActive + 1 + ContentConfiguration + + PBXProjectModuleGUID + 1CD052920623707200166675 + PBXProjectModuleLabel + SCM + + GeometryConfiguration + + ConsoleFrame + {{0, 259}, {452, 0}} + Frame + {{0, 7}, {452, 259}} + RubberWindowFrame + 743 379 452 308 0 0 1280 1002 + TableConfiguration + + Status + 30 + FileName + 199 + Path + 197.09500122070312 + + TableFrame + {{0, 0}, {452, 250}} + + Module + PBXCVSModule + Proportion + 262pt + + + Proportion + 266pt + + + Name + SCM + ServiceClasses + + PBXCVSModule + + StatusbarIsVisible + + TableOfContents + + 1C78EAB4065D492600B07095 + 1C78EAB5065D492600B07095 + 1C78EAB2065D492600B07095 + 1CD052920623707200166675 + + ToolbarConfiguration + xcode.toolbar.config.scm + WindowString + 743 379 452 308 0 0 1280 1002 + + + FirstTimeWindowDisplayed + + Identifier + windowTool.breakpoints + IsVertical + + Layout + + + Dock + + + ContentConfiguration + + PBXBottomSmartGroupGIDs + + 1C77FABC04509CD000000102 + + PBXProjectModuleGUID + 1CE0B1FE06471DED0097A5F4 + PBXProjectModuleLabel + Files + PBXProjectStructureProvided + no + PBXSmartGroupTreeModuleColumnData + + PBXSmartGroupTreeModuleColumnWidthsKey + + 168 + + PBXSmartGroupTreeModuleColumnsKey_v4 + + MainColumn + + + PBXSmartGroupTreeModuleOutlineStateKey_v7 + + PBXSmartGroupTreeModuleOutlineStateExpansionKey + + 1C77FABC04509CD000000102 + + PBXSmartGroupTreeModuleOutlineStateSelectionKey + + + 0 + + + PBXSmartGroupTreeModuleOutlineStateVisibleRectKey + {{0, 0}, {168, 350}} + + PBXTopSmartGroupGIDs + + XCIncludePerspectivesSwitch + + + GeometryConfiguration + + Frame + {{0, 0}, {185, 368}} + GroupTreeTableConfiguration + + MainColumn + 168 + + RubberWindowFrame + 243 383 744 409 0 0 1280 832 + + Module + PBXSmartGroupTreeModule + Proportion + 185pt + + + BecomeActive + + ContentConfiguration + + PBXProjectModuleGUID + 1CA1AED706398EBD00589147 + PBXProjectModuleLabel + Detail + + GeometryConfiguration + + Frame + {{190, 0}, {554, 368}} + RubberWindowFrame + 243 383 744 409 0 0 1280 832 + + Module + XCDetailModule + Proportion + 554pt + + + Proportion + 368pt + + + MajorVersion + 3 + MinorVersion + 0 + Name + Breakpoints + ServiceClasses + + PBXSmartGroupTreeModule + XCDetailModule + + StatusbarIsVisible + + TableOfContents + + 92EE9EF30D2E0CA400DDE300 + 92EE9EF40D2E0CA400DDE300 + 1CE0B1FE06471DED0097A5F4 + 1CA1AED706398EBD00589147 + + ToolbarConfiguration + xcode.toolbar.config.breakpointsV3 + WindowString + 243 383 744 409 0 0 1280 832 + WindowToolGUID + 92EE9EF30D2E0CA400DDE300 + WindowToolIsVisible + + + + FirstTimeWindowDisplayed + + Identifier + windowTool.debugAnimator + Layout + + + Dock + + + Module + PBXNavigatorGroup + Proportion + 100% + + + Proportion + 100% + + + Name + Debug Visualizer + ServiceClasses + + PBXNavigatorGroup + + StatusbarIsVisible + + ToolbarConfiguration + xcode.toolbar.config.debugAnimatorV3 + WindowString + 100 100 700 500 0 0 1280 1002 + + + FirstTimeWindowDisplayed + + Identifier + windowTool.bookmarks + Layout + + + Dock + + + Module + PBXBookmarksModule + Proportion + 100% + + + Proportion + 100% + + + Name + Bookmarks + ServiceClasses + + PBXBookmarksModule + + StatusbarIsVisible + + WindowString + 538 42 401 187 0 0 1280 1002 + + + Identifier + windowTool.projectFormatConflicts + Layout + + + Dock + + + Module + XCProjectFormatConflictsModule + Proportion + 100% + + + Proportion + 100% + + + Name + Project Format Conflicts + ServiceClasses + + XCProjectFormatConflictsModule + + StatusbarIsVisible + + WindowContentMinSize + 450 300 + WindowString + 50 850 472 307 0 0 1440 877 + + + FirstTimeWindowDisplayed + + Identifier + windowTool.classBrowser + Layout + + + Dock + + + BecomeActive + 1 + ContentConfiguration + + OptionsSetName + Hierarchy, all classes + PBXProjectModuleGUID + 1CA6456E063B45B4001379D8 + PBXProjectModuleLabel + Class Browser - NSObject + + GeometryConfiguration + + ClassesFrame + {{0, 0}, {374, 96}} + ClassesTreeTableConfiguration + + PBXClassNameColumnIdentifier + 208 + PBXClassBookColumnIdentifier + 22 + + Frame + {{0, 0}, {630, 331}} + MembersFrame + {{0, 105}, {374, 395}} + MembersTreeTableConfiguration + + PBXMemberTypeIconColumnIdentifier + 22 + PBXMemberNameColumnIdentifier + 216 + PBXMemberTypeColumnIdentifier + 97 + PBXMemberBookColumnIdentifier + 22 + + PBXModuleWindowStatusBarHidden2 + 1 + RubberWindowFrame + 385 179 630 352 0 0 1440 878 + + Module + PBXClassBrowserModule + Proportion + 332pt + + + Proportion + 332pt + + + Name + Class Browser + ServiceClasses + + PBXClassBrowserModule + + StatusbarIsVisible + + TableOfContents + + 1C0AD2AF069F1E9B00FABCE6 + 1C0AD2B0069F1E9B00FABCE6 + 1CA6456E063B45B4001379D8 + + ToolbarConfiguration + xcode.toolbar.config.classbrowser + WindowString + 385 179 630 352 0 0 1440 878 + WindowToolGUID + 1C0AD2AF069F1E9B00FABCE6 + WindowToolIsVisible + + + + Identifier + windowTool.refactoring + IncludeInToolsMenu + + Layout + + + Dock + + + BecomeActive + + GeometryConfiguration + + Frame + {0, 0}, {500, 335} + RubberWindowFrame + {0, 0}, {500, 335} + + Module + XCRefactoringModule + Proportion + 100% + + + Proportion + 100% + + + Name + Refactoring + ServiceClasses + + XCRefactoringModule + + WindowString + 200 200 500 356 0 0 1920 1200 + + + + diff --git a/themanaworld.xcodeproj/garfield.pbxuser b/themanaworld.xcodeproj/garfield.pbxuser new file mode 100644 index 00000000..c2eef960 --- /dev/null +++ b/themanaworld.xcodeproj/garfield.pbxuser @@ -0,0 +1,730 @@ +// !$*UTF8*$! +{ + 20286C28FDCF999611CA2CEA /* Project object */ = { + activeBuildConfigurationName = Release; + activeExecutable = 92BC3EBC0BAEE3BB000DAB7F /* themanaworld */; + activeTarget = 8D0C4E890486CD37000505A6 /* themanaworld */; + addToTargets = ( + 8D0C4E890486CD37000505A6 /* themanaworld */, + ); + breakpoints = ( + ); + codeSenseManager = 92BC3EC90BAEE3C8000DAB7F /* Code sense */; + executables = ( + 92BC3EBC0BAEE3BB000DAB7F /* themanaworld */, + ); + perUserDictionary = { + "PBXConfiguration.PBXBreakpointsDataSource.v1:1CA1AED706398EBD00589147" = { + PBXFileTableDataSourceColumnSortingDirectionKey = "-1"; + PBXFileTableDataSourceColumnSortingKey = PBXBreakpointsDataSource_BreakpointID; + PBXFileTableDataSourceColumnWidthsKey = ( + 20, + 20, + 216, + 20, + 100, + 99, + 10, + 20, + ); + PBXFileTableDataSourceColumnsKey = ( + PBXBreakpointsDataSource_ActionID, + PBXBreakpointsDataSource_TypeID, + PBXBreakpointsDataSource_BreakpointID, + PBXBreakpointsDataSource_UseID, + PBXBreakpointsDataSource_LocationID, + PBXBreakpointsDataSource_ConditionID, + PBXBreakpointsDataSource_IgnoreCountID, + PBXBreakpointsDataSource_ContinueID, + ); + }; + PBXConfiguration.PBXFileTableDataSource3.PBXErrorsWarningsDataSource = { + PBXFileTableDataSourceColumnSortingDirectionKey = "-1"; + PBXFileTableDataSourceColumnSortingKey = PBXErrorsWarningsDataSource_LocationID; + PBXFileTableDataSourceColumnWidthsKey = ( + 20, + 300, + 133, + ); + PBXFileTableDataSourceColumnsKey = ( + PBXErrorsWarningsDataSource_TypeID, + PBXErrorsWarningsDataSource_MessageID, + PBXErrorsWarningsDataSource_LocationID, + ); + }; + PBXConfiguration.PBXFileTableDataSource3.PBXExecutablesDataSource = { + PBXFileTableDataSourceColumnSortingDirectionKey = "-1"; + PBXFileTableDataSourceColumnSortingKey = PBXExecutablesDataSource_NameID; + PBXFileTableDataSourceColumnWidthsKey = ( + 22, + 300, + 131, + ); + PBXFileTableDataSourceColumnsKey = ( + PBXExecutablesDataSource_ActiveFlagID, + PBXExecutablesDataSource_NameID, + PBXExecutablesDataSource_CommentsID, + ); + }; + PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = { + PBXFileTableDataSourceColumnSortingDirectionKey = "-1"; + PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID; + PBXFileTableDataSourceColumnWidthsKey = ( + 20, + 333, + 20, + 48, + 43, + 43, + 20, + ); + PBXFileTableDataSourceColumnsKey = ( + PBXFileDataSource_FiletypeID, + PBXFileDataSource_Filename_ColumnID, + PBXFileDataSource_Built_ColumnID, + PBXFileDataSource_ObjectSize_ColumnID, + PBXFileDataSource_Errors_ColumnID, + PBXFileDataSource_Warnings_ColumnID, + PBXFileDataSource_Target_ColumnID, + ); + }; + PBXConfiguration.PBXFileTableDataSource3.XCSCMDataSource = { + PBXFileTableDataSourceColumnSortingDirectionKey = "-1"; + PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID; + PBXFileTableDataSourceColumnWidthsKey = ( + 20, + 20, + 219, + 20, + 48.1626, + 43, + 43, + 20, + ); + PBXFileTableDataSourceColumnsKey = ( + PBXFileDataSource_SCM_ColumnID, + PBXFileDataSource_FiletypeID, + PBXFileDataSource_Filename_ColumnID, + PBXFileDataSource_Built_ColumnID, + PBXFileDataSource_ObjectSize_ColumnID, + PBXFileDataSource_Errors_ColumnID, + PBXFileDataSource_Warnings_ColumnID, + PBXFileDataSource_Target_ColumnID, + ); + }; + PBXConfiguration.PBXTargetDataSource.PBXTargetDataSource = { + PBXFileTableDataSourceColumnSortingDirectionKey = "-1"; + PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID; + PBXFileTableDataSourceColumnWidthsKey = ( + 20, + 293, + 60, + 20, + 48, + 43, + 43, + ); + PBXFileTableDataSourceColumnsKey = ( + PBXFileDataSource_FiletypeID, + PBXFileDataSource_Filename_ColumnID, + PBXTargetDataSource_PrimaryAttribute, + PBXFileDataSource_Built_ColumnID, + PBXFileDataSource_ObjectSize_ColumnID, + PBXFileDataSource_Errors_ColumnID, + PBXFileDataSource_Warnings_ColumnID, + ); + }; + PBXPerProjectTemplateStateSaveDate = 248643809; + PBXWorkspaceStateSaveDate = 248643809; + }; + sourceControlManager = 92BC3EC80BAEE3C8000DAB7F /* Source Control */; + userBuildSettings = { + }; + }; + 8D0C4E890486CD37000505A6 /* themanaworld */ = { + activeExec = 0; + executables = ( + 92BC3EBC0BAEE3BB000DAB7F /* themanaworld */, + ); + }; + 92024E740CF1DCF6006B55CB /* imageloader.cpp */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {568, 1400}}"; + sepNavSelRange = "{0, 0}"; + sepNavVisRange = "{1434, 1155}"; + sepNavWindowFrame = "{{65, 113}, {627, 714}}"; + }; + }; + 924A42600C0874D00066885E /* Info.plist */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {674, 474}}"; + sepNavSelRange = "{418, 0}"; + sepNavVisRange = "{0, 771}"; + sepNavVisRect = "{{0, 0}, {557, 473}}"; + sepNavWindowFrame = "{{192, 99}, {602, 602}}"; + }; + }; + 926F9CF60DB005FA00AACD26 /* itemshortcut.cpp */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {633, 1302}}"; + sepNavSelRange = "{1424, 0}"; + sepNavVisRange = "{1251, 209}"; + }; + }; + 92A4CCE70D1DA58D00CA28FB /* zip.c */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {568, 20230}}"; + sepNavSelRange = "{229, 19}"; + sepNavVisRange = "{0, 1138}"; + sepNavWindowFrame = "{{180, 8}, {627, 714}}"; + }; + }; + 92A4CCF10D1DA5A800CA28FB /* physfs_platforms.h */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {568, 586}}"; + sepNavSelRange = "{0, 0}"; + sepNavVisRange = "{0, 1165}"; + sepNavWindowFrame = "{{88, 92}, {627, 714}}"; + }; + }; + 92A4CCF20D1DA5C600CA28FB /* macosx.c */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {720, 5558}}"; + sepNavSelRange = "{0, 0}"; + sepNavVisRange = "{0, 961}"; + sepNavWindowFrame = "{{180, 8}, {627, 714}}"; + }; + }; + 92BC3EBC0BAEE3BB000DAB7F /* themanaworld */ = { + isa = PBXExecutable; + activeArgIndices = ( + ); + argumentStrings = ( + ); + autoAttachOnCrash = 1; + breakpointsEnabled = 0; + configStateDict = { + }; + customDataFormattersEnabled = 1; + debuggerPlugin = GDBDebugging; + disassemblyDisplayState = 0; + dylibVariantSuffix = ""; + enableDebugStr = 1; + environmentEntries = ( + ); + executableSystemSymbolLevel = 0; + executableUserSymbolLevel = 0; + libgmallocEnabled = 0; + name = themanaworld; + savedGlobals = { + }; + sourceDirectories = ( + ); + variableFormatDictionary = { + }; + }; + 92BC3EC80BAEE3C8000DAB7F /* Source Control */ = { + isa = PBXSourceControlManager; + fallbackIsa = XCSourceControlManager; + isSCMEnabled = 0; + scmConfiguration = { + }; + scmType = ""; + }; + 92BC3EC90BAEE3C8000DAB7F /* Code sense */ = { + isa = PBXCodeSenseManager; + indexTemplatePath = ""; + }; + 92BC3ECC0BAEE55A000DAB7F /* being.cpp */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {543, 6776}}"; + sepNavSelRange = "{2724, 0}"; + sepNavVisRange = "{2276, 537}"; + sepNavVisRect = "{{0, 1497}, {557, 473}}"; + sepNavWindowFrame = "{{100, 183}, {602, 602}}"; + }; + }; + 92BC3EE40BAEE55A000DAB7F /* engine.cpp */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {720, 1848}}"; + sepNavSelRange = "{3021, 9}"; + sepNavVisRange = "{2828, 277}"; + sepNavWindowFrame = "{{64, 113}, {627, 714}}"; + }; + }; + 92BC3EE60BAEE55A000DAB7F /* equipment.cpp */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {568, 700}}"; + sepNavSelRange = "{0, 0}"; + sepNavVisRange = "{268, 1098}"; + sepNavWindowFrame = "{{64, 113}, {627, 714}}"; + }; + }; + 92BC3EEC0BAEE55A000DAB7F /* game.cpp */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {633, 11256}}"; + sepNavSelRange = "{24258, 0}"; + sepNavVisRange = "{18439, 446}"; + sepNavVisRect = "{{0, 4423}, {734, 180}}"; + sepNavWindowFrame = "{{134, 50}, {627, 714}}"; + }; + }; + 92BC3EED0BAEE55A000DAB7F /* game.h */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {543, 1148}}"; + sepNavSelRange = "{0, 0}"; + sepNavVisRange = "{1178, 918}"; + sepNavVisRect = "{{0, 297}, {557, 473}}"; + sepNavWindowFrame = "{{215, 78}, {602, 602}}"; + }; + }; + 92BC3EEF0BAEE55A000DAB7F /* graphics.h */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {557, 2240}}"; + sepNavSelRange = "{0, 0}"; + sepNavVisRect = "{{0, 1767}, {557, 473}}"; + sepNavWindowFrame = "{{192, 99}, {602, 602}}"; + }; + }; + 92BC3EF70BAEE55A000DAB7F /* button.cpp */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {557, 2044}}"; + sepNavSelRange = "{0, 0}"; + sepNavVisRect = "{{0, 1537}, {557, 473}}"; + sepNavWindowFrame = "{{54, 225}, {602, 602}}"; + }; + }; + 92BC3EFB0BAEE55A000DAB7F /* buysell.cpp */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {557, 924}}"; + sepNavSelRange = "{0, 0}"; + sepNavVisRect = "{{0, 418}, {557, 473}}"; + sepNavWindowFrame = "{{54, 225}, {602, 602}}"; + }; + }; + 92BC3F0D0BAEE55A000DAB7F /* debugwindow.cpp */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {720, 1428}}"; + sepNavSelRange = "{2619, 0}"; + sepNavVisRange = "{2223, 508}"; + }; + }; + 92BC3F120BAEE55A000DAB7F /* focushandler.h */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {568, 952}}"; + sepNavSelRange = "{0, 0}"; + sepNavVisRange = "{0, 1387}"; + sepNavWindowFrame = "{{64, 113}, {627, 714}}"; + }; + }; + 92BC3F150BAEE55A000DAB7F /* gui.cpp */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {568, 3234}}"; + sepNavSelRange = "{0, 0}"; + sepNavVisRange = "{2374, 1272}"; + sepNavWindowFrame = "{{157, 29}, {627, 714}}"; + }; + }; + 92BC3F1D0BAEE55A000DAB7F /* inventorywindow.cpp */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {557, 3486}}"; + sepNavSelRange = "{0, 0}"; + sepNavVisRect = "{{0, 2371}, {557, 473}}"; + sepNavWindowFrame = "{{100, 183}, {602, 602}}"; + }; + }; + 92BC3F340BAEE55A000DAB7F /* ok_dialog.cpp */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {568, 980}}"; + sepNavSelRange = "{0, 0}"; + sepNavVisRange = "{755, 1075}"; + sepNavWindowFrame = "{{88, 92}, {627, 714}}"; + }; + }; + 92BC3F350BAEE55A000DAB7F /* ok_dialog.h */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {568, 742}}"; + sepNavSelRange = "{0, 0}"; + sepNavVisRange = "{361, 1114}"; + sepNavWindowFrame = "{{65, 113}, {627, 714}}"; + }; + }; + 92BC3F450BAEE55A000DAB7F /* sell.cpp */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {557, 3962}}"; + sepNavSelRange = "{0, 0}"; + sepNavVisRect = "{{0, 2734}, {557, 473}}"; + sepNavWindowFrame = "{{77, 204}, {602, 602}}"; + }; + }; + 92BC3F580BAEE55A000DAB7F /* status.cpp */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {557, 5530}}"; + sepNavSelRange = "{12685, 0}"; + sepNavVisRect = "{{0, 3895}, {557, 473}}"; + sepNavWindowFrame = "{{54, 225}, {602, 602}}"; + }; + }; + 92BC3F620BAEE55B000DAB7F /* updatewindow.cpp */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {633, 6762}}"; + sepNavSelRange = "{9189, 0}"; + sepNavVisRange = "{9082, 354}"; + sepNavWindowFrame = "{{157, 29}, {627, 714}}"; + }; + }; + 92BC3F660BAEE55B000DAB7F /* viewport.cpp */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {718, 7028}}"; + sepNavSelRange = "{12276, 0}"; + sepNavVisRange = "{11882, 995}"; + sepNavVisRect = "{{0, 4144}, {732, 459}}"; + sepNavWindowFrame = "{{61, 197}, {777, 588}}"; + }; + }; + 92BC3F670BAEE55B000DAB7F /* viewport.h */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {732, 2520}}"; + sepNavSelRange = "{3505, 0}"; + sepNavVisRect = "{{0, 1906}, {732, 459}}"; + sepNavWindowFrame = "{{153, 113}, {777, 588}}"; + }; + }; + 92BC3F680BAEE55B000DAB7F /* window.cpp */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {557, 6580}}"; + sepNavSelRange = "{0, 0}"; + sepNavVisRect = "{{0, 6107}, {557, 473}}"; + sepNavWindowFrame = "{{100, 183}, {602, 602}}"; + }; + }; + 92BC3F690BAEE55B000DAB7F /* window.h */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {557, 3878}}"; + sepNavSelRange = "{0, 0}"; + sepNavVisRect = "{{0, 533}, {557, 473}}"; + sepNavWindowFrame = "{{77, 204}, {602, 602}}"; + }; + }; + 92BC3F6D0BAEE55B000DAB7F /* inventory.cpp */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {633, 1904}}"; + sepNavSelRange = "{1728, 0}"; + sepNavVisRange = "{1653, 334}"; + }; + }; + 92BC3F700BAEE55B000DAB7F /* item.h */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {633, 1890}}"; + sepNavSelRange = "{1887, 0}"; + sepNavVisRange = "{1727, 287}"; + }; + }; + 92BC3F730BAEE55B000DAB7F /* localplayer.cpp */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {543, 6706}}"; + sepNavSelRange = "{6691, 0}"; + sepNavVisRange = "{6631, 622}"; + sepNavVisRect = "{{0, 3594}, {734, 180}}"; + sepNavWindowFrame = "{{436, 128}, {602, 602}}"; + }; + }; + 92BC3F740BAEE55B000DAB7F /* localplayer.h */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {557, 2940}}"; + sepNavSelRange = "{0, 0}"; + sepNavVisRect = "{{0, 2240}, {557, 473}}"; + sepNavWindowFrame = "{{238, 57}, {602, 602}}"; + }; + }; + 92BC3F790BAEE55B000DAB7F /* main.cpp */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {718, 12404}}"; + sepNavSelRange = "{958, 19}"; + sepNavVisRange = "{616, 747}"; + sepNavVisRect = "{{0, 1289}, {732, 459}}"; + sepNavWindowFrame = "{{100, 219}, {777, 588}}"; + }; + }; + 92BC3F7A0BAEE55B000DAB7F /* main.h */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {734, 1022}}"; + sepNavSelRange = "{989, 8}"; + sepNavVisRect = "{{0, 324}, {734, 180}}"; + }; + }; + 92BC3F7C0BAEE55B000DAB7F /* map.cpp */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {633, 6706}}"; + sepNavSelRange = "{8349, 0}"; + sepNavVisRange = "{13918, 210}"; + sepNavVisRect = "{{0, 2184}, {732, 459}}"; + sepNavWindowFrame = "{{107, 155}, {777, 588}}"; + }; + }; + 92BC3F7D0BAEE55B000DAB7F /* map.h */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {732, 3220}}"; + sepNavSelRange = "{0, 0}"; + sepNavVisRect = "{{0, 1156}, {732, 459}}"; + sepNavWindowFrame = "{{84, 176}, {777, 588}}"; + }; + }; + 92BC3F810BAEE55B000DAB7F /* beinghandler.cpp */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {568, 5586}}"; + sepNavSelRange = "{1189, 0}"; + sepNavVisRange = "{567, 1104}"; + sepNavWindowFrame = "{{284, 87}, {627, 714}}"; + }; + }; + 92BC3F870BAEE55B000DAB7F /* chathandler.cpp */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {557, 1666}}"; + sepNavSelRange = "{0, 0}"; + sepNavVisRect = "{{0, 403}, {557, 473}}"; + sepNavWindowFrame = "{{261, 36}, {602, 602}}"; + }; + }; + 92BC3F890BAEE55B000DAB7F /* equipmenthandler.cpp */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {482, 3024}}"; + sepNavSelRange = "{6326, 0}"; + sepNavVisRect = "{{0, 544}, {453, 186}}"; + }; + }; + 92BC3F8B0BAEE55B000DAB7F /* inventoryhandler.cpp */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {568, 1946}}"; + sepNavSelRange = "{1765, 0}"; + sepNavVisRange = "{1454, 1476}"; + sepNavWindowFrame = "{{65, 113}, {627, 714}}"; + }; + }; + 92BC3F930BAEE55B000DAB7F /* messagehandler.cpp */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {557, 644}}"; + sepNavSelRange = "{0, 0}"; + sepNavVisRect = "{{0, 162}, {557, 473}}"; + sepNavWindowFrame = "{{284, 15}, {602, 602}}"; + }; + }; + 92BC3F950BAEE55B000DAB7F /* messagein.cpp */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {557, 2730}}"; + sepNavSelRange = "{0, 0}"; + sepNavVisRect = "{{0, 2257}, {557, 473}}"; + sepNavWindowFrame = "{{54, 225}, {602, 602}}"; + }; + }; + 92BC3F9A0BAEE55B000DAB7F /* network.h */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {482, 1470}}"; + sepNavSelRange = "{956, 21}"; + sepNavVisRect = "{{0, 292}, {453, 186}}"; + }; + }; + 92BC3F9D0BAEE55B000DAB7F /* playerhandler.cpp */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {557, 4858}}"; + sepNavSelRange = "{13406, 0}"; + sepNavVisRect = "{{0, 2215}, {557, 473}}"; + sepNavWindowFrame = "{{169, 120}, {602, 602}}"; + }; + }; + 92BC3F9F0BAEE55B000DAB7F /* protocol.cpp */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {633, 1120}}"; + sepNavSelRange = "{1206, 0}"; + sepNavVisRange = "{1930, 220}"; + sepNavVisRect = "{{0, 56}, {557, 473}}"; + sepNavWindowFrame = "{{192, 99}, {602, 602}}"; + }; + }; + 92BC3FA00BAEE55B000DAB7F /* protocol.h */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {584, 1568}}"; + sepNavSelRange = "{1647, 0}"; + sepNavVisRect = "{{0, 482}, {557, 473}}"; + sepNavWindowFrame = "{{215, 78}, {602, 602}}"; + }; + }; + 92BC3FA70BAEE55B000DAB7F /* openglgraphics.cpp */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {568, 5012}}"; + sepNavSelRange = "{2418, 0}"; + sepNavVisRange = "{1719, 1239}"; + sepNavWindowFrame = "{{111, 71}, {627, 714}}"; + }; + }; + 92BC3FAB0BAEE55B000DAB7F /* physfs.c */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {568, 30534}}"; + sepNavSelRange = "{2692, 19}"; + sepNavVisRange = "{2207, 1196}"; + sepNavVisRect = "{{0, 0}, {734, 180}}"; + sepNavWindowFrame = "{{157, 29}, {627, 714}}"; + }; + }; + 92BC3FAC0BAEE55B000DAB7F /* physfs.h */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {594, 32648}}"; + sepNavSelRange = "{68391, 0}"; + sepNavVisRange = "{91786, 1458}"; + sepNavWindowFrame = "{{140, 245}, {627, 714}}"; + }; + }; + 92BC3FAD0BAEE55B000DAB7F /* physfs_byteorder.c */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {568, 4424}}"; + sepNavSelRange = "{0, 0}"; + sepNavVisRange = "{1921, 2082}"; + sepNavVisRect = "{{0, 0}, {734, 180}}"; + sepNavWindowFrame = "{{134, 50}, {627, 714}}"; + }; + }; + 92BC3FAE0BAEE55B000DAB7F /* physfs_internal.h */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {708, 25382}}"; + sepNavSelRange = "{67524, 9}"; + sepNavVisRange = "{2139, 2075}"; + sepNavWindowFrame = "{{111, 71}, {627, 714}}"; + }; + }; + 92BC3FB50BAEE55B000DAB7F /* posix.c */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {568, 5642}}"; + sepNavSelRange = "{6658, 0}"; + sepNavVisRange = "{6143, 1239}"; + sepNavVisRect = "{{0, 0}, {734, 180}}"; + sepNavWindowFrame = "{{65, 113}, {627, 714}}"; + }; + }; + 92BC3FB70BAEE55B000DAB7F /* unix.c */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {734, 8232}}"; + sepNavSelRange = "{188, 8}"; + sepNavVisRect = "{{0, 0}, {734, 180}}"; + }; + }; + 92BC3FBA0BAEE55B000DAB7F /* player.cpp */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {543, 2870}}"; + sepNavSelRange = "{0, 0}"; + sepNavVisRange = "{0, 1100}"; + sepNavVisRect = "{{0, 2733}, {557, 473}}"; + sepNavWindowFrame = "{{77, 204}, {602, 602}}"; + }; + }; + 92BC3FBB0BAEE55B000DAB7F /* player.h */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {557, 952}}"; + sepNavSelRange = "{0, 0}"; + sepNavVisRect = "{{0, 479}, {557, 473}}"; + sepNavWindowFrame = "{{123, 162}, {602, 602}}"; + }; + }; + 92BC3FC90BAEE55B000DAB7F /* image.cpp */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {568, 5544}}"; + sepNavSelRange = "{0, 0}"; + sepNavVisRange = "{1527, 900}"; + sepNavWindowFrame = "{{179, 8}, {627, 714}}"; + }; + }; + 92BC3FD70BAEE55B000DAB7F /* music.cpp */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {568, 1274}}"; + sepNavSelRange = "{0, 0}"; + sepNavVisRange = "{1087, 1007}"; + sepNavWindowFrame = "{{64, 113}, {627, 714}}"; + }; + }; + 92BC3FD80BAEE55B000DAB7F /* music.h */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {568, 1148}}"; + sepNavSelRange = "{0, 0}"; + sepNavVisRange = "{919, 1041}"; + sepNavWindowFrame = "{{87, 92}, {627, 714}}"; + }; + }; + 92BC3FDC0BAEE55B000DAB7F /* resource.h */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {568, 1078}}"; + sepNavSelRange = "{0, 0}"; + sepNavVisRange = "{1038, 870}"; + sepNavWindowFrame = "{{110, 71}, {627, 714}}"; + }; + }; + 92BC3FDD0BAEE55B000DAB7F /* resourcemanager.cpp */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {568, 6650}}"; + sepNavSelRange = "{5598, 0}"; + sepNavVisRange = "{5065, 1072}"; + sepNavWindowFrame = "{{351, 73}, {627, 714}}"; + }; + }; + 92BC3FDE0BAEE55B000DAB7F /* resourcemanager.h */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {568, 3276}}"; + sepNavSelRange = "{3055, 0}"; + sepNavVisRange = "{2573, 1462}"; + sepNavWindowFrame = "{{133, 50}, {627, 714}}"; + }; + }; + 92BC3FE20BAEE55B000DAB7F /* soundeffect.h */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {568, 1064}}"; + sepNavSelRange = "{0, 0}"; + sepNavVisRange = "{1110, 1062}"; + sepNavWindowFrame = "{{179, 8}, {627, 714}}"; + }; + }; + 92BC3FEA0BAEE55B000DAB7F /* sound.cpp */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {568, 3066}}"; + sepNavSelRange = "{3587, 0}"; + sepNavVisRange = "{3180, 872}"; + sepNavWindowFrame = "{{110, 71}, {627, 714}}"; + }; + }; + 92BC3FEB0BAEE55B000DAB7F /* sound.h */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {720, 1764}}"; + sepNavSelRange = "{1673, 9}"; + sepNavVisRange = "{1374, 363}"; + sepNavWindowFrame = "{{156, 29}, {627, 714}}"; + }; + }; + 92BC3FF20BAEE55B000DAB7F /* tostring.h */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {633, 532}}"; + sepNavSelRange = "{1038, 0}"; + sepNavVisRange = "{962, 150}"; + }; + }; + 92BC40E50BAEF54B000DAB7F /* SDLMain.m */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {806, 5278}}"; + sepNavSelRange = "{776, 0}"; + sepNavVisRange = "{0, 1283}"; + sepNavWindowFrame = "{{583, 96}, {627, 714}}"; + }; + }; + 92BC416E0BAF664C000DAB7F /* ChangeLog */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {734, 59234}}"; + sepNavSelRange = "{146456, 3}"; + sepNavVisRect = "{{0, 47601}, {734, 180}}"; + sepNavWindowFrame = "{{130, 134}, {777, 588}}"; + }; + }; + 92FD19AE0DDCE51000D14E5D /* player_relations.cpp */ = { + uiCtxt = { + sepNavIntBoundsRect = "{{0, 0}, {632, 5388}}"; + sepNavSelRange = "{3940, 0}"; + sepNavVisRange = "{3262, 1320}"; + sepNavWindowFrame = "{{180, 8}, {627, 714}}"; + }; + }; +} diff --git a/themanaworld.xcodeproj/project.pbxproj b/themanaworld.xcodeproj/project.pbxproj new file mode 100644 index 00000000..795e832d --- /dev/null +++ b/themanaworld.xcodeproj/project.pbxproj @@ -0,0 +1,1761 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 42; + objects = { + +/* Begin PBXBuildFile section */ + 8D0C4E920486CD37000505A6 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 20286C33FDCF999611CA2CEA /* Carbon.framework */; }; + 92024D2F0CF1BD9E006B55CB /* keyboardconfig.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92024D2A0CF1BD9E006B55CB /* keyboardconfig.cpp */; }; + 92024D3D0CF1BDF7006B55CB /* setup_keyboard.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92024D360CF1BDF7006B55CB /* setup_keyboard.cpp */; }; + 92024E150CF1C0DA006B55CB /* close_button.png in Copy GUI Files */ = {isa = PBXBuildFile; fileRef = 92024D5B0CF1BE5C006B55CB /* close_button.png */; }; + 92024E160CF1C0FB006B55CB /* unknown-item.png in Copy GUI Files */ = {isa = PBXBuildFile; fileRef = 92024D5D0CF1BE5C006B55CB /* unknown-item.png */; }; + 92024E170CF1C11D006B55CB /* item_shortcut_bgr.png in Copy GUI Files */ = {isa = PBXBuildFile; fileRef = 92024D5C0CF1BE5C006B55CB /* item_shortcut_bgr.png */; }; + 92024E760CF1DCF6006B55CB /* imageloader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92024E740CF1DCF6006B55CB /* imageloader.cpp */; }; + 92037A1F0ED2037300D3712D /* text.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92037A1B0ED2037300D3712D /* text.cpp */; }; + 92037A200ED2037300D3712D /* textmanager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92037A1D0ED2037300D3712D /* textmanager.cpp */; }; + 920D9ADF0DE09DC0003D7E61 /* Info.plist in Copy plist */ = {isa = PBXBuildFile; fileRef = 924A42600C0874D00066885E /* Info.plist */; }; + 922CD9580E3D00900074C50E /* npcdb.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 922CD9560E3D00900074C50E /* npcdb.cpp */; }; + 922CD95F0E3D01080074C50E /* shopitem.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 922CD95D0E3D01080074C50E /* shopitem.cpp */; }; + 922CD9ED0E3D02C50074C50E /* guichan.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 922CD9EC0E3D02C50074C50E /* guichan.framework */; }; + 922CDA6A0E3D07150074C50E /* guichan.framework in Copy Frameworks */ = {isa = PBXBuildFile; fileRef = 922CD9EC0E3D02C50074C50E /* guichan.framework */; }; + 924A39F20C0784280066885E /* animationparticle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 924A39E80C0784280066885E /* animationparticle.cpp */; }; + 924A39F30C0784280066885E /* imageparticle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 924A39EA0C0784280066885E /* imageparticle.cpp */; }; + 924A39F40C0784280066885E /* particle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 924A39EC0C0784280066885E /* particle.cpp */; }; + 924A39F50C0784280066885E /* particleemitter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 924A39EE0C0784280066885E /* particleemitter.cpp */; }; + 924A39F60C0784280066885E /* textparticle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 924A39F00C0784280066885E /* textparticle.cpp */; }; + 924A3A120C07A60B0066885E /* resizegrip.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 924A3A100C07A60B0066885E /* resizegrip.cpp */; }; + 924A3E580C085E600066885E /* main.nib in Resources */ = {isa = PBXBuildFile; fileRef = 02345980000FD03B11CA0E72 /* main.nib */; }; + 924A40570C085EF50066885E /* items.xsd in Copy Data Files */ = {isa = PBXBuildFile; fileRef = 924A401C0C085ED80066885E /* items.xsd */; }; + 924A405A0C085F950066885E /* bg_quad_dis.png in Copy GUI Files */ = {isa = PBXBuildFile; fileRef = 924A3E600C085ED70066885E /* bg_quad_dis.png */; }; + 924A405B0C085F950066885E /* browserfont.png in Copy GUI Files */ = {isa = PBXBuildFile; fileRef = 924A3E610C085ED70066885E /* browserfont.png */; }; + 924A405C0C085F950066885E /* button.png in Copy GUI Files */ = {isa = PBXBuildFile; fileRef = 924A3E620C085ED70066885E /* button.png */; }; + 924A405D0C085F950066885E /* button_disabled.png in Copy GUI Files */ = {isa = PBXBuildFile; fileRef = 924A3E630C085ED70066885E /* button_disabled.png */; }; + 924A405E0C085F950066885E /* buttonhi.png in Copy GUI Files */ = {isa = PBXBuildFile; fileRef = 924A3E640C085ED70066885E /* buttonhi.png */; }; + 924A405F0C085F950066885E /* buttonpress.png in Copy GUI Files */ = {isa = PBXBuildFile; fileRef = 924A3E650C085ED70066885E /* buttonpress.png */; }; + 924A40600C085F950066885E /* checkbox.png in Copy GUI Files */ = {isa = PBXBuildFile; fileRef = 924A3E660C085ED70066885E /* checkbox.png */; }; + 924A40610C085F950066885E /* deepbox.png in Copy GUI Files */ = {isa = PBXBuildFile; fileRef = 924A3E680C085ED70066885E /* deepbox.png */; }; + 924A40620C085F950066885E /* fixedfont.png in Copy GUI Files */ = {isa = PBXBuildFile; fileRef = 924A3E690C085ED70066885E /* fixedfont.png */; }; + 924A40630C085F950066885E /* hits_blue.png in Copy GUI Files */ = {isa = PBXBuildFile; fileRef = 924A3E6A0C085ED70066885E /* hits_blue.png */; }; + 924A40640C085F950066885E /* hits_red.png in Copy GUI Files */ = {isa = PBXBuildFile; fileRef = 924A3E6B0C085ED70066885E /* hits_red.png */; }; + 924A40650C085F950066885E /* hits_yellow.png in Copy GUI Files */ = {isa = PBXBuildFile; fileRef = 924A3E6C0C085ED70066885E /* hits_yellow.png */; }; + 924A40660C085F950066885E /* hscroll_left_default.png in Copy GUI Files */ = {isa = PBXBuildFile; fileRef = 924A3E6D0C085ED70066885E /* hscroll_left_default.png */; }; + 924A40670C085F950066885E /* hscroll_left_highlight.png in Copy GUI Files */ = {isa = PBXBuildFile; fileRef = 924A3E6E0C085ED70066885E /* hscroll_left_highlight.png */; }; + 924A40680C085F950066885E /* hscroll_left_pressed.png in Copy GUI Files */ = {isa = PBXBuildFile; fileRef = 924A3E6F0C085ED70066885E /* hscroll_left_pressed.png */; }; + 924A40690C085F950066885E /* hscroll_right_default.png in Copy GUI Files */ = {isa = PBXBuildFile; fileRef = 924A3E700C085ED70066885E /* hscroll_right_default.png */; }; + 924A406A0C085F950066885E /* hscroll_right_highlight.png in Copy GUI Files */ = {isa = PBXBuildFile; fileRef = 924A3E710C085ED70066885E /* hscroll_right_highlight.png */; }; + 924A406B0C085F950066885E /* hscroll_right_pressed.png in Copy GUI Files */ = {isa = PBXBuildFile; fileRef = 924A3E720C085ED70066885E /* hscroll_right_pressed.png */; }; + 924A406C0C085F950066885E /* menuitemD.png in Copy GUI Files */ = {isa = PBXBuildFile; fileRef = 924A3E740C085ED70066885E /* menuitemD.png */; }; + 924A406D0C085F950066885E /* menuitemF.png in Copy GUI Files */ = {isa = PBXBuildFile; fileRef = 924A3E750C085ED70066885E /* menuitemF.png */; }; + 924A406E0C085F950066885E /* menuitemN.png in Copy GUI Files */ = {isa = PBXBuildFile; fileRef = 924A3E760C085ED70066885E /* menuitemN.png */; }; + 924A406F0C085F950066885E /* menuitemP.png in Copy GUI Files */ = {isa = PBXBuildFile; fileRef = 924A3E770C085ED70066885E /* menuitemP.png */; }; + 924A40700C085F950066885E /* mouse.png in Copy GUI Files */ = {isa = PBXBuildFile; fileRef = 924A3E780C085ED70066885E /* mouse.png */; }; + 924A40710C085F950066885E /* radioin.png in Copy GUI Files */ = {isa = PBXBuildFile; fileRef = 924A3E790C085ED70066885E /* radioin.png */; }; + 924A40720C085F950066885E /* radioout.png in Copy GUI Files */ = {isa = PBXBuildFile; fileRef = 924A3E7A0C085ED70066885E /* radioout.png */; }; + 924A40730C085F950066885E /* resize.png in Copy GUI Files */ = {isa = PBXBuildFile; fileRef = 924A3E7B0C085ED70066885E /* resize.png */; }; + 924A40740C085F950066885E /* rpgfont_wider.png in Copy GUI Files */ = {isa = PBXBuildFile; fileRef = 924A3E7C0C085ED70066885E /* rpgfont_wider.png */; }; + 924A40750C085F950066885E /* sansserif8.png in Copy GUI Files */ = {isa = PBXBuildFile; fileRef = 924A3E7D0C085ED70066885E /* sansserif8.png */; }; + 924A40760C085F950066885E /* selection.png in Copy GUI Files */ = {isa = PBXBuildFile; fileRef = 924A3E7E0C085ED70066885E /* selection.png */; }; + 924A40770C085F950066885E /* slider.png in Copy GUI Files */ = {isa = PBXBuildFile; fileRef = 924A3E7F0C085ED70066885E /* slider.png */; }; + 924A40780C085F950066885E /* target-cursor-blue-l.png in Copy GUI Files */ = {isa = PBXBuildFile; fileRef = 924A3E800C085ED70066885E /* target-cursor-blue-l.png */; }; + 924A40790C085F950066885E /* target-cursor-blue-m.png in Copy GUI Files */ = {isa = PBXBuildFile; fileRef = 924A3E810C085ED70066885E /* target-cursor-blue-m.png */; }; + 924A407A0C085F950066885E /* target-cursor-blue-s.png in Copy GUI Files */ = {isa = PBXBuildFile; fileRef = 924A3E820C085ED70066885E /* target-cursor-blue-s.png */; }; + 924A407B0C085F950066885E /* target-cursor-red-l.png in Copy GUI Files */ = {isa = PBXBuildFile; fileRef = 924A3E830C085ED70066885E /* target-cursor-red-l.png */; }; + 924A407C0C085F950066885E /* target-cursor-red-m.png in Copy GUI Files */ = {isa = PBXBuildFile; fileRef = 924A3E840C085ED70066885E /* target-cursor-red-m.png */; }; + 924A407D0C085F950066885E /* target-cursor-red-s.png in Copy GUI Files */ = {isa = PBXBuildFile; fileRef = 924A3E850C085ED70066885E /* target-cursor-red-s.png */; }; + 924A407E0C085F950066885E /* thickborder.png in Copy GUI Files */ = {isa = PBXBuildFile; fileRef = 924A3E860C085ED70066885E /* thickborder.png */; }; + 924A407F0C085F950066885E /* vscroll_blue.png in Copy GUI Files */ = {isa = PBXBuildFile; fileRef = 924A3E870C085ED70066885E /* vscroll_blue.png */; }; + 924A40800C085F950066885E /* vscroll_down_default.png in Copy GUI Files */ = {isa = PBXBuildFile; fileRef = 924A3E880C085ED70066885E /* vscroll_down_default.png */; }; + 924A40810C085F950066885E /* vscroll_down_highlight.png in Copy GUI Files */ = {isa = PBXBuildFile; fileRef = 924A3E890C085ED70066885E /* vscroll_down_highlight.png */; }; + 924A40820C085F950066885E /* vscroll_down_pressed.png in Copy GUI Files */ = {isa = PBXBuildFile; fileRef = 924A3E8A0C085ED70066885E /* vscroll_down_pressed.png */; }; + 924A40830C085F950066885E /* vscroll_grey.png in Copy GUI Files */ = {isa = PBXBuildFile; fileRef = 924A3E8B0C085ED70066885E /* vscroll_grey.png */; }; + 924A40840C085F950066885E /* vscroll_red.png in Copy GUI Files */ = {isa = PBXBuildFile; fileRef = 924A3E8C0C085ED70066885E /* vscroll_red.png */; }; + 924A40850C085F950066885E /* vscroll_up_default.png in Copy GUI Files */ = {isa = PBXBuildFile; fileRef = 924A3E8D0C085ED70066885E /* vscroll_up_default.png */; }; + 924A40860C085F950066885E /* vscroll_up_highlight.png in Copy GUI Files */ = {isa = PBXBuildFile; fileRef = 924A3E8E0C085ED70066885E /* vscroll_up_highlight.png */; }; + 924A40870C085F950066885E /* vscroll_up_pressed.png in Copy GUI Files */ = {isa = PBXBuildFile; fileRef = 924A3E8F0C085ED70066885E /* vscroll_up_pressed.png */; }; + 924A408A0C0860120066885E /* error.png in Copy Image Files */ = {isa = PBXBuildFile; fileRef = 924A3E990C085ED70066885E /* error.png */; }; + 924A408B0C0860120066885E /* login_wallpaper.png in Copy Image Files */ = {isa = PBXBuildFile; fileRef = 924A3E9A0C085ED70066885E /* login_wallpaper.png */; }; + 924A42020C0861EC0066885E /* about.txt in Copy Help Files */ = {isa = PBXBuildFile; fileRef = 924A400A0C085ED80066885E /* about.txt */; }; + 924A42030C0861EC0066885E /* changes.txt in Copy Help Files */ = {isa = PBXBuildFile; fileRef = 924A400B0C085ED80066885E /* changes.txt */; }; + 924A42040C0861EC0066885E /* commands.txt in Copy Help Files */ = {isa = PBXBuildFile; fileRef = 924A400D0C085ED80066885E /* commands.txt */; }; + 924A42050C0861EC0066885E /* header.txt in Copy Help Files */ = {isa = PBXBuildFile; fileRef = 924A400E0C085ED80066885E /* header.txt */; }; + 924A42060C0861EC0066885E /* index.txt in Copy Help Files */ = {isa = PBXBuildFile; fileRef = 924A400F0C085ED80066885E /* index.txt */; }; + 924A42070C0861EC0066885E /* skills.txt in Copy Help Files */ = {isa = PBXBuildFile; fileRef = 924A40110C085ED80066885E /* skills.txt */; }; + 924A42080C0861EC0066885E /* support.txt in Copy Help Files */ = {isa = PBXBuildFile; fileRef = 924A40120C085ED80066885E /* support.txt */; }; + 924A42090C0861EC0066885E /* team.txt in Copy Help Files */ = {isa = PBXBuildFile; fileRef = 924A40130C085ED80066885E /* team.txt */; }; + 924A425A0C0871EC0066885E /* The Mana World.icns in Resources */ = {isa = PBXBuildFile; fileRef = 924A42590C0871EC0066885E /* The Mana World.icns */; }; + 925350030BC12A3200115FD5 /* imageset.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 925350010BC12A3200115FD5 /* imageset.cpp */; }; + 926F9CF80DB005FA00AACD26 /* itemshortcut.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 926F9CF60DB005FA00AACD26 /* itemshortcut.cpp */; }; + 926F9D450DB00AFC00AACD26 /* itemshortcutcontainer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 926F9D410DB00AFC00AACD26 /* itemshortcutcontainer.cpp */; }; + 926F9D460DB00AFC00AACD26 /* itemshortcutwindow.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 926F9D430DB00AFC00AACD26 /* itemshortcutwindow.cpp */; }; + 9294DA9B0C17E70400FCEDE9 /* physfs.c in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3FAB0BAEE55B000DAB7F /* physfs.c */; }; + 9294DA9C0C17E70600FCEDE9 /* physfs_byteorder.c in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3FAD0BAEE55B000DAB7F /* physfs_byteorder.c */; }; + 9294DAA10C17E73200FCEDE9 /* libpng.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9294DAA00C17E73200FCEDE9 /* libpng.framework */; }; + 92A4CC9E0D1C622E00CA28FB /* dye.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92A4CC9D0D1C622E00CA28FB /* dye.cpp */; }; + 92A4CCE80D1DA58D00CA28FB /* dir.c in Sources */ = {isa = PBXBuildFile; fileRef = 92A4CCE00D1DA58D00CA28FB /* dir.c */; }; + 92A4CCE90D1DA58D00CA28FB /* grp.c in Sources */ = {isa = PBXBuildFile; fileRef = 92A4CCE10D1DA58D00CA28FB /* grp.c */; }; + 92A4CCEA0D1DA58D00CA28FB /* hog.c in Sources */ = {isa = PBXBuildFile; fileRef = 92A4CCE20D1DA58D00CA28FB /* hog.c */; }; + 92A4CCEB0D1DA58D00CA28FB /* lzma.c in Sources */ = {isa = PBXBuildFile; fileRef = 92A4CCE30D1DA58D00CA28FB /* lzma.c */; }; + 92A4CCEC0D1DA58D00CA28FB /* mvl.c in Sources */ = {isa = PBXBuildFile; fileRef = 92A4CCE40D1DA58D00CA28FB /* mvl.c */; }; + 92A4CCED0D1DA58D00CA28FB /* qpak.c in Sources */ = {isa = PBXBuildFile; fileRef = 92A4CCE50D1DA58D00CA28FB /* qpak.c */; }; + 92A4CCEE0D1DA58D00CA28FB /* wad.c in Sources */ = {isa = PBXBuildFile; fileRef = 92A4CCE60D1DA58D00CA28FB /* wad.c */; }; + 92A4CCEF0D1DA58D00CA28FB /* zip.c in Sources */ = {isa = PBXBuildFile; fileRef = 92A4CCE70D1DA58D00CA28FB /* zip.c */; }; + 92A4CCF30D1DA5C600CA28FB /* macosx.c in Sources */ = {isa = PBXBuildFile; fileRef = 92A4CCF20D1DA5C600CA28FB /* macosx.c */; }; + 92A4CCF90D1DA81A00CA28FB /* posix.c in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3FB50BAEE55B000DAB7F /* posix.c */; }; + 92A4CCFC0D1DA89800CA28FB /* physfs_unicode.c in Sources */ = {isa = PBXBuildFile; fileRef = 92A4CCFB0D1DA89800CA28FB /* physfs_unicode.c */; }; + 92A4CCFF0D1DA8E500CA28FB /* LICENSE.rtf in Resources */ = {isa = PBXBuildFile; fileRef = 92A4CCFE0D1DA8E500CA28FB /* LICENSE.rtf */; }; + 92BC3FF60BAEE55B000DAB7F /* animatedsprite.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3ECA0BAEE55A000DAB7F /* animatedsprite.cpp */; }; + 92BC3FF70BAEE55B000DAB7F /* being.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3ECC0BAEE55A000DAB7F /* being.cpp */; }; + 92BC3FF80BAEE55B000DAB7F /* beingmanager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3ECE0BAEE55A000DAB7F /* beingmanager.cpp */; }; + 92BC3FFA0BAEE55B000DAB7F /* configuration.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3ED20BAEE55A000DAB7F /* configuration.cpp */; }; + 92BC40020BAEE55B000DAB7F /* engine.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3EE40BAEE55A000DAB7F /* engine.cpp */; }; + 92BC40030BAEE55B000DAB7F /* equipment.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3EE60BAEE55A000DAB7F /* equipment.cpp */; }; + 92BC40040BAEE55B000DAB7F /* floor_item.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3EE80BAEE55A000DAB7F /* floor_item.cpp */; }; + 92BC40050BAEE55B000DAB7F /* flooritemmanager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3EEA0BAEE55A000DAB7F /* flooritemmanager.cpp */; }; + 92BC40060BAEE55B000DAB7F /* game.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3EEC0BAEE55A000DAB7F /* game.cpp */; }; + 92BC40070BAEE55B000DAB7F /* graphics.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3EEE0BAEE55A000DAB7F /* graphics.cpp */; }; + 92BC40080BAEE55B000DAB7F /* box.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3EF10BAEE55A000DAB7F /* box.cpp */; }; + 92BC40090BAEE55B000DAB7F /* browserbox.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3EF30BAEE55A000DAB7F /* browserbox.cpp */; }; + 92BC400A0BAEE55B000DAB7F /* buddywindow.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3EF50BAEE55A000DAB7F /* buddywindow.cpp */; }; + 92BC400B0BAEE55B000DAB7F /* button.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3EF70BAEE55A000DAB7F /* button.cpp */; }; + 92BC400C0BAEE55B000DAB7F /* buy.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3EF90BAEE55A000DAB7F /* buy.cpp */; }; + 92BC400D0BAEE55B000DAB7F /* buysell.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3EFB0BAEE55A000DAB7F /* buysell.cpp */; }; + 92BC400E0BAEE55B000DAB7F /* char_select.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3EFD0BAEE55A000DAB7F /* char_select.cpp */; }; + 92BC400F0BAEE55B000DAB7F /* char_server.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3EFF0BAEE55A000DAB7F /* char_server.cpp */; }; + 92BC40100BAEE55B000DAB7F /* chargedialog.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F010BAEE55A000DAB7F /* chargedialog.cpp */; }; + 92BC40110BAEE55B000DAB7F /* chat.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F030BAEE55A000DAB7F /* chat.cpp */; }; + 92BC40120BAEE55B000DAB7F /* chatinput.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F050BAEE55A000DAB7F /* chatinput.cpp */; }; + 92BC40130BAEE55B000DAB7F /* checkbox.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F070BAEE55A000DAB7F /* checkbox.cpp */; }; + 92BC40140BAEE55B000DAB7F /* confirm_dialog.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F090BAEE55A000DAB7F /* confirm_dialog.cpp */; }; + 92BC40150BAEE55B000DAB7F /* connection.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F0B0BAEE55A000DAB7F /* connection.cpp */; }; + 92BC40160BAEE55B000DAB7F /* debugwindow.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F0D0BAEE55A000DAB7F /* debugwindow.cpp */; }; + 92BC40170BAEE55B000DAB7F /* equipmentwindow.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F0F0BAEE55A000DAB7F /* equipmentwindow.cpp */; }; + 92BC40180BAEE55B000DAB7F /* focushandler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F110BAEE55A000DAB7F /* focushandler.cpp */; }; + 92BC40190BAEE55B000DAB7F /* gccontainer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F130BAEE55A000DAB7F /* gccontainer.cpp */; }; + 92BC401A0BAEE55B000DAB7F /* gui.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F150BAEE55A000DAB7F /* gui.cpp */; }; + 92BC401B0BAEE55B000DAB7F /* hbox.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F170BAEE55A000DAB7F /* hbox.cpp */; }; + 92BC401C0BAEE55B000DAB7F /* help.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F190BAEE55A000DAB7F /* help.cpp */; }; + 92BC401D0BAEE55B000DAB7F /* inttextbox.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F1B0BAEE55A000DAB7F /* inttextbox.cpp */; }; + 92BC401E0BAEE55B000DAB7F /* inventorywindow.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F1D0BAEE55A000DAB7F /* inventorywindow.cpp */; }; + 92BC401F0BAEE55B000DAB7F /* item_amount.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F1F0BAEE55A000DAB7F /* item_amount.cpp */; }; + 92BC40200BAEE55B000DAB7F /* itemcontainer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F210BAEE55A000DAB7F /* itemcontainer.cpp */; }; + 92BC40210BAEE55B000DAB7F /* listbox.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F240BAEE55A000DAB7F /* listbox.cpp */; }; + 92BC40220BAEE55B000DAB7F /* login.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F260BAEE55A000DAB7F /* login.cpp */; }; + 92BC40230BAEE55B000DAB7F /* menuwindow.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F280BAEE55A000DAB7F /* menuwindow.cpp */; }; + 92BC40240BAEE55B000DAB7F /* minimap.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F2A0BAEE55A000DAB7F /* minimap.cpp */; }; + 92BC40250BAEE55B000DAB7F /* ministatus.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F2C0BAEE55A000DAB7F /* ministatus.cpp */; }; + 92BC40260BAEE55B000DAB7F /* newskill.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F2E0BAEE55A000DAB7F /* newskill.cpp */; }; + 92BC40270BAEE55B000DAB7F /* npc_text.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F300BAEE55A000DAB7F /* npc_text.cpp */; }; + 92BC40280BAEE55B000DAB7F /* npclistdialog.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F320BAEE55A000DAB7F /* npclistdialog.cpp */; }; + 92BC40290BAEE55B000DAB7F /* ok_dialog.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F340BAEE55A000DAB7F /* ok_dialog.cpp */; }; + 92BC402A0BAEE55B000DAB7F /* passwordfield.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F360BAEE55A000DAB7F /* passwordfield.cpp */; }; + 92BC402B0BAEE55B000DAB7F /* playerbox.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F380BAEE55A000DAB7F /* playerbox.cpp */; }; + 92BC402C0BAEE55B000DAB7F /* popupmenu.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F3A0BAEE55A000DAB7F /* popupmenu.cpp */; }; + 92BC402D0BAEE55B000DAB7F /* progressbar.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F3C0BAEE55A000DAB7F /* progressbar.cpp */; }; + 92BC402E0BAEE55B000DAB7F /* radiobutton.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F3E0BAEE55A000DAB7F /* radiobutton.cpp */; }; + 92BC402F0BAEE55B000DAB7F /* register.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F400BAEE55A000DAB7F /* register.cpp */; }; + 92BC40300BAEE55B000DAB7F /* scrollarea.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F420BAEE55A000DAB7F /* scrollarea.cpp */; }; + 92BC40310BAEE55B000DAB7F /* sell.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F450BAEE55A000DAB7F /* sell.cpp */; }; + 92BC40320BAEE55B000DAB7F /* setup.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F470BAEE55A000DAB7F /* setup.cpp */; }; + 92BC40330BAEE55B000DAB7F /* setup_audio.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F490BAEE55A000DAB7F /* setup_audio.cpp */; }; + 92BC40340BAEE55B000DAB7F /* setup_joystick.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F4B0BAEE55A000DAB7F /* setup_joystick.cpp */; }; + 92BC40350BAEE55B000DAB7F /* setup_video.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F4D0BAEE55A000DAB7F /* setup_video.cpp */; }; + 92BC40360BAEE55B000DAB7F /* shop.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F500BAEE55A000DAB7F /* shop.cpp */; }; + 92BC40370BAEE55B000DAB7F /* shoplistbox.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F520BAEE55A000DAB7F /* shoplistbox.cpp */; }; + 92BC40380BAEE55B000DAB7F /* skill.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F540BAEE55A000DAB7F /* skill.cpp */; }; + 92BC40390BAEE55B000DAB7F /* slider.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F560BAEE55A000DAB7F /* slider.cpp */; }; + 92BC403A0BAEE55B000DAB7F /* status.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F580BAEE55A000DAB7F /* status.cpp */; }; + 92BC403B0BAEE55B000DAB7F /* tabbedcontainer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F5A0BAEE55B000DAB7F /* tabbedcontainer.cpp */; }; + 92BC403C0BAEE55B000DAB7F /* textbox.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F5C0BAEE55B000DAB7F /* textbox.cpp */; }; + 92BC403D0BAEE55B000DAB7F /* textfield.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F5E0BAEE55B000DAB7F /* textfield.cpp */; }; + 92BC403E0BAEE55B000DAB7F /* trade.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F600BAEE55B000DAB7F /* trade.cpp */; }; + 92BC403F0BAEE55B000DAB7F /* updatewindow.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F620BAEE55B000DAB7F /* updatewindow.cpp */; }; + 92BC40400BAEE55B000DAB7F /* vbox.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F640BAEE55B000DAB7F /* vbox.cpp */; }; + 92BC40410BAEE55B000DAB7F /* viewport.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F660BAEE55B000DAB7F /* viewport.cpp */; }; + 92BC40420BAEE55B000DAB7F /* window.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F680BAEE55B000DAB7F /* window.cpp */; }; + 92BC40430BAEE55B000DAB7F /* windowcontainer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F6A0BAEE55B000DAB7F /* windowcontainer.cpp */; }; + 92BC40440BAEE55B000DAB7F /* inventory.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F6D0BAEE55B000DAB7F /* inventory.cpp */; }; + 92BC40450BAEE55B000DAB7F /* item.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F6F0BAEE55B000DAB7F /* item.cpp */; }; + 92BC40460BAEE55B000DAB7F /* joystick.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F710BAEE55B000DAB7F /* joystick.cpp */; }; + 92BC40470BAEE55B000DAB7F /* localplayer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F730BAEE55B000DAB7F /* localplayer.cpp */; }; + 92BC40480BAEE55B000DAB7F /* log.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F760BAEE55B000DAB7F /* log.cpp */; }; + 92BC40490BAEE55B000DAB7F /* main.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F790BAEE55B000DAB7F /* main.cpp */; }; + 92BC404B0BAEE55B000DAB7F /* map.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F7C0BAEE55B000DAB7F /* map.cpp */; }; + 92BC404C0BAEE55B000DAB7F /* monster.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F7E0BAEE55B000DAB7F /* monster.cpp */; }; + 92BC404D0BAEE55B000DAB7F /* beinghandler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F810BAEE55B000DAB7F /* beinghandler.cpp */; }; + 92BC404E0BAEE55B000DAB7F /* buysellhandler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F830BAEE55B000DAB7F /* buysellhandler.cpp */; }; + 92BC404F0BAEE55B000DAB7F /* charserverhandler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F850BAEE55B000DAB7F /* charserverhandler.cpp */; }; + 92BC40500BAEE55B000DAB7F /* chathandler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F870BAEE55B000DAB7F /* chathandler.cpp */; }; + 92BC40510BAEE55B000DAB7F /* equipmenthandler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F890BAEE55B000DAB7F /* equipmenthandler.cpp */; }; + 92BC40520BAEE55B000DAB7F /* inventoryhandler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F8B0BAEE55B000DAB7F /* inventoryhandler.cpp */; }; + 92BC40530BAEE55B000DAB7F /* itemhandler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F8D0BAEE55B000DAB7F /* itemhandler.cpp */; }; + 92BC40540BAEE55B000DAB7F /* loginhandler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F8F0BAEE55B000DAB7F /* loginhandler.cpp */; }; + 92BC40550BAEE55B000DAB7F /* maploginhandler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F910BAEE55B000DAB7F /* maploginhandler.cpp */; }; + 92BC40560BAEE55B000DAB7F /* messagehandler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F930BAEE55B000DAB7F /* messagehandler.cpp */; }; + 92BC40570BAEE55B000DAB7F /* messagein.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F950BAEE55B000DAB7F /* messagein.cpp */; }; + 92BC40580BAEE55B000DAB7F /* messageout.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F970BAEE55B000DAB7F /* messageout.cpp */; }; + 92BC40590BAEE55B000DAB7F /* network.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F990BAEE55B000DAB7F /* network.cpp */; }; + 92BC405A0BAEE55B000DAB7F /* npchandler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F9B0BAEE55B000DAB7F /* npchandler.cpp */; }; + 92BC405B0BAEE55B000DAB7F /* playerhandler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F9D0BAEE55B000DAB7F /* playerhandler.cpp */; }; + 92BC405C0BAEE55B000DAB7F /* protocol.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3F9F0BAEE55B000DAB7F /* protocol.cpp */; }; + 92BC405D0BAEE55B000DAB7F /* skillhandler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3FA10BAEE55B000DAB7F /* skillhandler.cpp */; }; + 92BC405E0BAEE55B000DAB7F /* tradehandler.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3FA30BAEE55B000DAB7F /* tradehandler.cpp */; }; + 92BC405F0BAEE55B000DAB7F /* npc.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3FA50BAEE55B000DAB7F /* npc.cpp */; }; + 92BC40600BAEE55B000DAB7F /* openglgraphics.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3FA70BAEE55B000DAB7F /* openglgraphics.cpp */; }; + 92BC406E0BAEE55B000DAB7F /* player.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3FBA0BAEE55B000DAB7F /* player.cpp */; }; + 92BC406F0BAEE55B000DAB7F /* action.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3FBE0BAEE55B000DAB7F /* action.cpp */; }; + 92BC40700BAEE55B000DAB7F /* ambientoverlay.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3FC00BAEE55B000DAB7F /* ambientoverlay.cpp */; }; + 92BC40710BAEE55B000DAB7F /* animation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3FC20BAEE55B000DAB7F /* animation.cpp */; }; + 92BC40720BAEE55B000DAB7F /* buddylist.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3FC40BAEE55B000DAB7F /* buddylist.cpp */; }; + 92BC40740BAEE55B000DAB7F /* image.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3FC90BAEE55B000DAB7F /* image.cpp */; }; + 92BC40750BAEE55B000DAB7F /* imagewriter.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3FCB0BAEE55B000DAB7F /* imagewriter.cpp */; }; + 92BC40760BAEE55B000DAB7F /* itemdb.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3FCD0BAEE55B000DAB7F /* itemdb.cpp */; }; + 92BC40770BAEE55B000DAB7F /* iteminfo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3FCF0BAEE55B000DAB7F /* iteminfo.cpp */; }; + 92BC40780BAEE55B000DAB7F /* mapreader.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3FD10BAEE55B000DAB7F /* mapreader.cpp */; }; + 92BC40790BAEE55B000DAB7F /* monsterdb.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3FD30BAEE55B000DAB7F /* monsterdb.cpp */; }; + 92BC407A0BAEE55B000DAB7F /* monsterinfo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3FD50BAEE55B000DAB7F /* monsterinfo.cpp */; }; + 92BC407B0BAEE55B000DAB7F /* music.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3FD70BAEE55B000DAB7F /* music.cpp */; }; + 92BC407D0BAEE55B000DAB7F /* resource.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3FDB0BAEE55B000DAB7F /* resource.cpp */; }; + 92BC407E0BAEE55B000DAB7F /* resourcemanager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3FDD0BAEE55B000DAB7F /* resourcemanager.cpp */; }; + 92BC40800BAEE55B000DAB7F /* soundeffect.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3FE10BAEE55B000DAB7F /* soundeffect.cpp */; }; + 92BC40810BAEE55B000DAB7F /* spritedef.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3FE30BAEE55B000DAB7F /* spritedef.cpp */; }; + 92BC40830BAEE55B000DAB7F /* simpleanimation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3FE80BAEE55B000DAB7F /* simpleanimation.cpp */; }; + 92BC40840BAEE55B000DAB7F /* sound.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3FEA0BAEE55B000DAB7F /* sound.cpp */; }; + 92BC40850BAEE55B000DAB7F /* base64.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3FEF0BAEE55B000DAB7F /* base64.cpp */; }; + 92BC40860BAEE55B000DAB7F /* xml.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3FF40BAEE55B000DAB7F /* xml.cpp */; }; + 92BC40940BAEE818000DAB7F /* SDL_image.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 92BC408E0BAEE818000DAB7F /* SDL_image.framework */; }; + 92BC40950BAEE818000DAB7F /* SDL_mixer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 92BC408F0BAEE818000DAB7F /* SDL_mixer.framework */; }; + 92BC40960BAEE818000DAB7F /* SDL_net.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 92BC40900BAEE818000DAB7F /* SDL_net.framework */; }; + 92BC40970BAEE818000DAB7F /* SDL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 92BC40910BAEE818000DAB7F /* SDL.framework */; }; + 92BC40C70BAEEDAA000DAB7F /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 92BC40C60BAEEDAA000DAB7F /* OpenGL.framework */; }; + 92BC40D90BAEEED3000DAB7F /* IOKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 92BC40D80BAEEED3000DAB7F /* IOKit.framework */; }; + 92BC40E60BAEF54B000DAB7F /* SDLMain.m in Sources */ = {isa = PBXBuildFile; fileRef = 92BC40E50BAEF54B000DAB7F /* SDLMain.m */; }; + 92BC40E90BAEF57D000DAB7F /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 92BC40E80BAEF57D000DAB7F /* Cocoa.framework */; }; + 92EEA0030D2E20B300DDE300 /* libpng.framework in Copy Frameworks */ = {isa = PBXBuildFile; fileRef = 9294DAA00C17E73200FCEDE9 /* libpng.framework */; }; + 92EEA0050D2E20B300DDE300 /* SDL_image.framework in Copy Frameworks */ = {isa = PBXBuildFile; fileRef = 92BC408E0BAEE818000DAB7F /* SDL_image.framework */; }; + 92EEA0060D2E20B300DDE300 /* SDL_mixer.framework in Copy Frameworks */ = {isa = PBXBuildFile; fileRef = 92BC408F0BAEE818000DAB7F /* SDL_mixer.framework */; }; + 92EEA0070D2E20B300DDE300 /* SDL_net.framework in Copy Frameworks */ = {isa = PBXBuildFile; fileRef = 92BC40900BAEE818000DAB7F /* SDL_net.framework */; }; + 92EEA0080D2E20B300DDE300 /* SDL.framework in Copy Frameworks */ = {isa = PBXBuildFile; fileRef = 92BC40910BAEE818000DAB7F /* SDL.framework */; }; + 92FD19A20DDCD60C00D14E5D /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 92FD19A00DDCD60C00D14E5D /* InfoPlist.strings */; }; + 92FD19B00DDCE51000D14E5D /* player_relations.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92FD19AE0DDCE51000D14E5D /* player_relations.cpp */; }; + 92FD19BA0DDCE53400D14E5D /* setup_players.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92FD19B30DDCE53400D14E5D /* setup_players.cpp */; }; + 92FD19BB0DDCE53400D14E5D /* table.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92FD19B50DDCE53400D14E5D /* table.cpp */; }; + 92FD19BC0DDCE53400D14E5D /* table_model.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92FD19B70DDCE53400D14E5D /* table_model.cpp */; }; + 92FD19C10DDCE6F700D14E5D /* strprintf.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92FD19BF0DDCE6F700D14E5D /* strprintf.cpp */; }; + 92FD19C80DDCEBA500D14E5D /* emotions.png in Copy GUI Files */ = {isa = PBXBuildFile; fileRef = 92FD19C60DDCEB8500D14E5D /* emotions.png */; }; +/* End PBXBuildFile section */ + +/* Begin PBXCopyFilesBuildPhase section */ + 920D9AE20DE09DCA003D7E61 /* Copy plist */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ..; + dstSubfolderSpec = 6; + files = ( + 920D9ADF0DE09DC0003D7E61 /* Info.plist in Copy plist */, + ); + name = "Copy plist"; + runOnlyForDeploymentPostprocessing = 0; + }; + 924A3A520C085C190066885E /* Copy Data Files */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = data; + dstSubfolderSpec = 7; + files = ( + 924A40570C085EF50066885E /* items.xsd in Copy Data Files */, + ); + name = "Copy Data Files"; + runOnlyForDeploymentPostprocessing = 0; + }; + 924A3E540C085CAF0066885E /* Copy GUI Files */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = data/graphics/gui; + dstSubfolderSpec = 7; + files = ( + 92FD19C80DDCEBA500D14E5D /* emotions.png in Copy GUI Files */, + 92024E170CF1C11D006B55CB /* item_shortcut_bgr.png in Copy GUI Files */, + 92024E150CF1C0DA006B55CB /* close_button.png in Copy GUI Files */, + 924A405A0C085F950066885E /* bg_quad_dis.png in Copy GUI Files */, + 924A405B0C085F950066885E /* browserfont.png in Copy GUI Files */, + 924A405C0C085F950066885E /* button.png in Copy GUI Files */, + 924A405D0C085F950066885E /* button_disabled.png in Copy GUI Files */, + 924A405E0C085F950066885E /* buttonhi.png in Copy GUI Files */, + 92024E160CF1C0FB006B55CB /* unknown-item.png in Copy GUI Files */, + 924A405F0C085F950066885E /* buttonpress.png in Copy GUI Files */, + 924A40600C085F950066885E /* checkbox.png in Copy GUI Files */, + 924A40610C085F950066885E /* deepbox.png in Copy GUI Files */, + 924A40620C085F950066885E /* fixedfont.png in Copy GUI Files */, + 924A40630C085F950066885E /* hits_blue.png in Copy GUI Files */, + 924A40640C085F950066885E /* hits_red.png in Copy GUI Files */, + 924A40650C085F950066885E /* hits_yellow.png in Copy GUI Files */, + 924A40660C085F950066885E /* hscroll_left_default.png in Copy GUI Files */, + 924A40670C085F950066885E /* hscroll_left_highlight.png in Copy GUI Files */, + 924A40680C085F950066885E /* hscroll_left_pressed.png in Copy GUI Files */, + 924A40690C085F950066885E /* hscroll_right_default.png in Copy GUI Files */, + 924A406A0C085F950066885E /* hscroll_right_highlight.png in Copy GUI Files */, + 924A406B0C085F950066885E /* hscroll_right_pressed.png in Copy GUI Files */, + 924A406C0C085F950066885E /* menuitemD.png in Copy GUI Files */, + 924A406D0C085F950066885E /* menuitemF.png in Copy GUI Files */, + 924A406E0C085F950066885E /* menuitemN.png in Copy GUI Files */, + 924A406F0C085F950066885E /* menuitemP.png in Copy GUI Files */, + 924A40700C085F950066885E /* mouse.png in Copy GUI Files */, + 924A40710C085F950066885E /* radioin.png in Copy GUI Files */, + 924A40720C085F950066885E /* radioout.png in Copy GUI Files */, + 924A40730C085F950066885E /* resize.png in Copy GUI Files */, + 924A40740C085F950066885E /* rpgfont_wider.png in Copy GUI Files */, + 924A40750C085F950066885E /* sansserif8.png in Copy GUI Files */, + 924A40760C085F950066885E /* selection.png in Copy GUI Files */, + 924A40770C085F950066885E /* slider.png in Copy GUI Files */, + 924A40780C085F950066885E /* target-cursor-blue-l.png in Copy GUI Files */, + 924A40790C085F950066885E /* target-cursor-blue-m.png in Copy GUI Files */, + 924A407A0C085F950066885E /* target-cursor-blue-s.png in Copy GUI Files */, + 924A407B0C085F950066885E /* target-cursor-red-l.png in Copy GUI Files */, + 924A407C0C085F950066885E /* target-cursor-red-m.png in Copy GUI Files */, + 924A407D0C085F950066885E /* target-cursor-red-s.png in Copy GUI Files */, + 924A407E0C085F950066885E /* thickborder.png in Copy GUI Files */, + 924A407F0C085F950066885E /* vscroll_blue.png in Copy GUI Files */, + 924A40800C085F950066885E /* vscroll_down_default.png in Copy GUI Files */, + 924A40810C085F950066885E /* vscroll_down_highlight.png in Copy GUI Files */, + 924A40820C085F950066885E /* vscroll_down_pressed.png in Copy GUI Files */, + 924A40830C085F950066885E /* vscroll_grey.png in Copy GUI Files */, + 924A40840C085F950066885E /* vscroll_red.png in Copy GUI Files */, + 924A40850C085F950066885E /* vscroll_up_default.png in Copy GUI Files */, + 924A40860C085F950066885E /* vscroll_up_highlight.png in Copy GUI Files */, + 924A40870C085F950066885E /* vscroll_up_pressed.png in Copy GUI Files */, + ); + name = "Copy GUI Files"; + runOnlyForDeploymentPostprocessing = 0; + }; + 924A40880C085FBD0066885E /* Copy Image Files */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = data/graphics/images; + dstSubfolderSpec = 7; + files = ( + 924A408A0C0860120066885E /* error.png in Copy Image Files */, + 924A408B0C0860120066885E /* login_wallpaper.png in Copy Image Files */, + ); + name = "Copy Image Files"; + runOnlyForDeploymentPostprocessing = 0; + }; + 924A42000C0861C70066885E /* Copy Help Files */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = data/help; + dstSubfolderSpec = 7; + files = ( + 924A42020C0861EC0066885E /* about.txt in Copy Help Files */, + 924A42030C0861EC0066885E /* changes.txt in Copy Help Files */, + 924A42040C0861EC0066885E /* commands.txt in Copy Help Files */, + 924A42050C0861EC0066885E /* header.txt in Copy Help Files */, + 924A42060C0861EC0066885E /* index.txt in Copy Help Files */, + 924A42070C0861EC0066885E /* skills.txt in Copy Help Files */, + 924A42080C0861EC0066885E /* support.txt in Copy Help Files */, + 924A42090C0861EC0066885E /* team.txt in Copy Help Files */, + ); + name = "Copy Help Files"; + runOnlyForDeploymentPostprocessing = 0; + }; + 92EEA0090D2E20D100DDE300 /* Copy Frameworks */ = { + isa = PBXCopyFilesBuildPhase; + buildActionMask = 2147483647; + dstPath = ""; + dstSubfolderSpec = 10; + files = ( + 922CDA6A0E3D07150074C50E /* guichan.framework in Copy Frameworks */, + 92EEA0030D2E20B300DDE300 /* libpng.framework in Copy Frameworks */, + 92EEA0050D2E20B300DDE300 /* SDL_image.framework in Copy Frameworks */, + 92EEA0060D2E20B300DDE300 /* SDL_mixer.framework in Copy Frameworks */, + 92EEA0070D2E20B300DDE300 /* SDL_net.framework in Copy Frameworks */, + 92EEA0080D2E20B300DDE300 /* SDL.framework in Copy Frameworks */, + ); + name = "Copy Frameworks"; + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXCopyFilesBuildPhase section */ + +/* Begin PBXFileReference section */ + 1870340FFE93FCAF11CA0CD7 /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = English.lproj/main.nib; sourceTree = ""; }; + 20286C33FDCF999611CA2CEA /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Carbon.framework; path = /System/Library/Frameworks/Carbon.framework; sourceTree = ""; }; + 508344B209E5C41E0093A071 /* The Mana World.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "The Mana World.app"; sourceTree = BUILT_PRODUCTS_DIR; }; + 92024D2A0CF1BD9E006B55CB /* keyboardconfig.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = keyboardconfig.cpp; path = src/keyboardconfig.cpp; sourceTree = ""; }; + 92024D2B0CF1BD9E006B55CB /* keyboardconfig.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = keyboardconfig.h; path = src/keyboardconfig.h; sourceTree = ""; }; + 92024D2C0CF1BD9E006B55CB /* vector.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = vector.h; path = src/vector.h; sourceTree = ""; }; + 92024D360CF1BDF7006B55CB /* setup_keyboard.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = setup_keyboard.cpp; sourceTree = ""; }; + 92024D370CF1BDF7006B55CB /* setup_keyboard.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = setup_keyboard.h; sourceTree = ""; }; + 92024D400CF1BE22006B55CB /* fastsqrt.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = fastsqrt.h; sourceTree = ""; }; + 92024D420CF1BE22006B55CB /* trim.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = trim.h; sourceTree = ""; }; + 92024D5B0CF1BE5C006B55CB /* close_button.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = close_button.png; sourceTree = ""; }; + 92024D5C0CF1BE5C006B55CB /* item_shortcut_bgr.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = item_shortcut_bgr.png; sourceTree = ""; }; + 92024D5D0CF1BE5C006B55CB /* unknown-item.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "unknown-item.png"; sourceTree = ""; }; + 92024DDD0CF1BFC8006B55CB /* The Mana World.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; path = "The Mana World.icns"; sourceTree = ""; }; + 92024E740CF1DCF6006B55CB /* imageloader.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = imageloader.cpp; sourceTree = ""; }; + 92024E750CF1DCF6006B55CB /* imageloader.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = imageloader.h; sourceTree = ""; }; + 92037A190ED2035A00D3712D /* SDLMain.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = SDLMain.h; path = src/SDLMain.h; sourceTree = ""; }; + 92037A1A0ED2037300D3712D /* particleemitterprop.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = particleemitterprop.h; path = src/particleemitterprop.h; sourceTree = ""; }; + 92037A1B0ED2037300D3712D /* text.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = text.cpp; path = src/text.cpp; sourceTree = ""; }; + 92037A1C0ED2037300D3712D /* text.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = text.h; path = src/text.h; sourceTree = ""; }; + 92037A1D0ED2037300D3712D /* textmanager.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = textmanager.cpp; path = src/textmanager.cpp; sourceTree = ""; }; + 92037A1E0ED2037300D3712D /* textmanager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = textmanager.h; path = src/textmanager.h; sourceTree = ""; }; + 922CD9560E3D00900074C50E /* npcdb.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = npcdb.cpp; sourceTree = ""; }; + 922CD9570E3D00900074C50E /* npcdb.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = npcdb.h; sourceTree = ""; }; + 922CD95D0E3D01080074C50E /* shopitem.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = shopitem.cpp; path = src/shopitem.cpp; sourceTree = ""; }; + 922CD95E0E3D01080074C50E /* shopitem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = shopitem.h; path = src/shopitem.h; sourceTree = ""; }; + 922CD9EC0E3D02C50074C50E /* guichan.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = guichan.framework; sourceTree = ""; }; + 924A39E80C0784280066885E /* animationparticle.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = animationparticle.cpp; path = src/animationparticle.cpp; sourceTree = ""; }; + 924A39E90C0784280066885E /* animationparticle.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = animationparticle.h; path = src/animationparticle.h; sourceTree = ""; }; + 924A39EA0C0784280066885E /* imageparticle.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = imageparticle.cpp; path = src/imageparticle.cpp; sourceTree = ""; }; + 924A39EB0C0784280066885E /* imageparticle.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = imageparticle.h; path = src/imageparticle.h; sourceTree = ""; }; + 924A39EC0C0784280066885E /* particle.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = particle.cpp; path = src/particle.cpp; sourceTree = ""; }; + 924A39ED0C0784280066885E /* particle.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = particle.h; path = src/particle.h; sourceTree = ""; }; + 924A39EE0C0784280066885E /* particleemitter.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = particleemitter.cpp; path = src/particleemitter.cpp; sourceTree = ""; }; + 924A39EF0C0784280066885E /* particleemitter.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = particleemitter.h; path = src/particleemitter.h; sourceTree = ""; }; + 924A39F00C0784280066885E /* textparticle.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = textparticle.cpp; path = src/textparticle.cpp; sourceTree = ""; }; + 924A39F10C0784280066885E /* textparticle.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = textparticle.h; path = src/textparticle.h; sourceTree = ""; }; + 924A3A100C07A60B0066885E /* resizegrip.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = resizegrip.cpp; sourceTree = ""; }; + 924A3A110C07A60B0066885E /* resizegrip.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = resizegrip.h; sourceTree = ""; }; + 924A3E600C085ED70066885E /* bg_quad_dis.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = bg_quad_dis.png; sourceTree = ""; }; + 924A3E610C085ED70066885E /* browserfont.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = browserfont.png; sourceTree = ""; }; + 924A3E620C085ED70066885E /* button.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = button.png; sourceTree = ""; }; + 924A3E630C085ED70066885E /* button_disabled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = button_disabled.png; sourceTree = ""; }; + 924A3E640C085ED70066885E /* buttonhi.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = buttonhi.png; sourceTree = ""; }; + 924A3E650C085ED70066885E /* buttonpress.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = buttonpress.png; sourceTree = ""; }; + 924A3E660C085ED70066885E /* checkbox.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = checkbox.png; sourceTree = ""; }; + 924A3E680C085ED70066885E /* deepbox.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = deepbox.png; sourceTree = ""; }; + 924A3E690C085ED70066885E /* fixedfont.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = fixedfont.png; sourceTree = ""; }; + 924A3E6A0C085ED70066885E /* hits_blue.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = hits_blue.png; sourceTree = ""; }; + 924A3E6B0C085ED70066885E /* hits_red.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = hits_red.png; sourceTree = ""; }; + 924A3E6C0C085ED70066885E /* hits_yellow.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = hits_yellow.png; sourceTree = ""; }; + 924A3E6D0C085ED70066885E /* hscroll_left_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = hscroll_left_default.png; sourceTree = ""; }; + 924A3E6E0C085ED70066885E /* hscroll_left_highlight.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = hscroll_left_highlight.png; sourceTree = ""; }; + 924A3E6F0C085ED70066885E /* hscroll_left_pressed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = hscroll_left_pressed.png; sourceTree = ""; }; + 924A3E700C085ED70066885E /* hscroll_right_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = hscroll_right_default.png; sourceTree = ""; }; + 924A3E710C085ED70066885E /* hscroll_right_highlight.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = hscroll_right_highlight.png; sourceTree = ""; }; + 924A3E720C085ED70066885E /* hscroll_right_pressed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = hscroll_right_pressed.png; sourceTree = ""; }; + 924A3E740C085ED70066885E /* menuitemD.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = menuitemD.png; sourceTree = ""; }; + 924A3E750C085ED70066885E /* menuitemF.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = menuitemF.png; sourceTree = ""; }; + 924A3E760C085ED70066885E /* menuitemN.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = menuitemN.png; sourceTree = ""; }; + 924A3E770C085ED70066885E /* menuitemP.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = menuitemP.png; sourceTree = ""; }; + 924A3E780C085ED70066885E /* mouse.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = mouse.png; sourceTree = ""; }; + 924A3E790C085ED70066885E /* radioin.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = radioin.png; sourceTree = ""; }; + 924A3E7A0C085ED70066885E /* radioout.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = radioout.png; sourceTree = ""; }; + 924A3E7B0C085ED70066885E /* resize.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = resize.png; sourceTree = ""; }; + 924A3E7C0C085ED70066885E /* rpgfont_wider.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = rpgfont_wider.png; sourceTree = ""; }; + 924A3E7D0C085ED70066885E /* sansserif8.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = sansserif8.png; sourceTree = ""; }; + 924A3E7E0C085ED70066885E /* selection.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = selection.png; sourceTree = ""; }; + 924A3E7F0C085ED70066885E /* slider.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = slider.png; sourceTree = ""; }; + 924A3E800C085ED70066885E /* target-cursor-blue-l.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "target-cursor-blue-l.png"; sourceTree = ""; }; + 924A3E810C085ED70066885E /* target-cursor-blue-m.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "target-cursor-blue-m.png"; sourceTree = ""; }; + 924A3E820C085ED70066885E /* target-cursor-blue-s.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "target-cursor-blue-s.png"; sourceTree = ""; }; + 924A3E830C085ED70066885E /* target-cursor-red-l.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "target-cursor-red-l.png"; sourceTree = ""; }; + 924A3E840C085ED70066885E /* target-cursor-red-m.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "target-cursor-red-m.png"; sourceTree = ""; }; + 924A3E850C085ED70066885E /* target-cursor-red-s.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "target-cursor-red-s.png"; sourceTree = ""; }; + 924A3E860C085ED70066885E /* thickborder.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = thickborder.png; sourceTree = ""; }; + 924A3E870C085ED70066885E /* vscroll_blue.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = vscroll_blue.png; sourceTree = ""; }; + 924A3E880C085ED70066885E /* vscroll_down_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = vscroll_down_default.png; sourceTree = ""; }; + 924A3E890C085ED70066885E /* vscroll_down_highlight.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = vscroll_down_highlight.png; sourceTree = ""; }; + 924A3E8A0C085ED70066885E /* vscroll_down_pressed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = vscroll_down_pressed.png; sourceTree = ""; }; + 924A3E8B0C085ED70066885E /* vscroll_grey.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = vscroll_grey.png; sourceTree = ""; }; + 924A3E8C0C085ED70066885E /* vscroll_red.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = vscroll_red.png; sourceTree = ""; }; + 924A3E8D0C085ED70066885E /* vscroll_up_default.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = vscroll_up_default.png; sourceTree = ""; }; + 924A3E8E0C085ED70066885E /* vscroll_up_highlight.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = vscroll_up_highlight.png; sourceTree = ""; }; + 924A3E8F0C085ED70066885E /* vscroll_up_pressed.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = vscroll_up_pressed.png; sourceTree = ""; }; + 924A3E990C085ED70066885E /* error.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = error.png; sourceTree = ""; }; + 924A3E9A0C085ED70066885E /* login_wallpaper.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = login_wallpaper.png; sourceTree = ""; }; + 924A400A0C085ED80066885E /* about.txt */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = about.txt; sourceTree = ""; }; + 924A400B0C085ED80066885E /* changes.txt */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = changes.txt; sourceTree = ""; }; + 924A400D0C085ED80066885E /* commands.txt */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = commands.txt; sourceTree = ""; }; + 924A400E0C085ED80066885E /* header.txt */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = header.txt; sourceTree = ""; }; + 924A400F0C085ED80066885E /* index.txt */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = index.txt; sourceTree = ""; }; + 924A40110C085ED80066885E /* skills.txt */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = skills.txt; sourceTree = ""; }; + 924A40120C085ED80066885E /* support.txt */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = support.txt; sourceTree = ""; }; + 924A40130C085ED80066885E /* team.txt */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = team.txt; sourceTree = ""; }; + 924A40180C085ED80066885E /* tmw.ico */ = {isa = PBXFileReference; lastKnownFileType = image.ico; path = tmw.ico; sourceTree = ""; }; + 924A40190C085ED80066885E /* tmw.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = tmw.png; sourceTree = ""; }; + 924A401A0C085ED80066885E /* tmw.xpm */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = tmw.xpm; sourceTree = ""; }; + 924A401C0C085ED80066885E /* items.xsd */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.xml; path = items.xsd; sourceTree = ""; }; + 924A42590C0871EC0066885E /* The Mana World.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; path = "The Mana World.icns"; sourceTree = ""; }; + 924A42600C0874D00066885E /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 925350010BC12A3200115FD5 /* imageset.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = imageset.cpp; sourceTree = ""; }; + 925350020BC12A3200115FD5 /* imageset.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = imageset.h; sourceTree = ""; }; + 926F9CF60DB005FA00AACD26 /* itemshortcut.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = itemshortcut.cpp; path = src/itemshortcut.cpp; sourceTree = ""; }; + 926F9CF70DB005FA00AACD26 /* itemshortcut.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = itemshortcut.h; path = src/itemshortcut.h; sourceTree = ""; }; + 926F9D410DB00AFC00AACD26 /* itemshortcutcontainer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = itemshortcutcontainer.cpp; sourceTree = ""; }; + 926F9D420DB00AFC00AACD26 /* itemshortcutcontainer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = itemshortcutcontainer.h; sourceTree = ""; }; + 926F9D430DB00AFC00AACD26 /* itemshortcutwindow.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = itemshortcutwindow.cpp; sourceTree = ""; }; + 926F9D440DB00AFC00AACD26 /* itemshortcutwindow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = itemshortcutwindow.h; sourceTree = ""; }; + 9294DAA00C17E73200FCEDE9 /* libpng.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = libpng.framework; path = /Library/Frameworks/libpng.framework; sourceTree = ""; }; + 92A4CC9D0D1C622E00CA28FB /* dye.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = dye.cpp; path = src/resources/dye.cpp; sourceTree = ""; }; + 92A4CCE00D1DA58D00CA28FB /* dir.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = dir.c; sourceTree = ""; }; + 92A4CCE10D1DA58D00CA28FB /* grp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = grp.c; sourceTree = ""; }; + 92A4CCE20D1DA58D00CA28FB /* hog.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = hog.c; sourceTree = ""; }; + 92A4CCE30D1DA58D00CA28FB /* lzma.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lzma.c; sourceTree = ""; }; + 92A4CCE40D1DA58D00CA28FB /* mvl.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = mvl.c; sourceTree = ""; }; + 92A4CCE50D1DA58D00CA28FB /* qpak.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = qpak.c; sourceTree = ""; }; + 92A4CCE60D1DA58D00CA28FB /* wad.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = wad.c; sourceTree = ""; }; + 92A4CCE70D1DA58D00CA28FB /* zip.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = zip.c; sourceTree = ""; }; + 92A4CCF00D1DA5A800CA28FB /* physfs_casefolding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = physfs_casefolding.h; sourceTree = ""; }; + 92A4CCF10D1DA5A800CA28FB /* physfs_platforms.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = physfs_platforms.h; sourceTree = ""; }; + 92A4CCF20D1DA5C600CA28FB /* macosx.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = macosx.c; sourceTree = ""; }; + 92A4CCFB0D1DA89800CA28FB /* physfs_unicode.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = physfs_unicode.c; sourceTree = ""; }; + 92A4CCFE0D1DA8E500CA28FB /* LICENSE.rtf */ = {isa = PBXFileReference; lastKnownFileType = text.rtf; path = LICENSE.rtf; sourceTree = ""; }; + 92BC3ECA0BAEE55A000DAB7F /* animatedsprite.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = animatedsprite.cpp; path = src/animatedsprite.cpp; sourceTree = ""; }; + 92BC3ECB0BAEE55A000DAB7F /* animatedsprite.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = animatedsprite.h; path = src/animatedsprite.h; sourceTree = ""; }; + 92BC3ECC0BAEE55A000DAB7F /* being.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = being.cpp; path = src/being.cpp; sourceTree = ""; }; + 92BC3ECD0BAEE55A000DAB7F /* being.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = being.h; path = src/being.h; sourceTree = ""; }; + 92BC3ECE0BAEE55A000DAB7F /* beingmanager.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = beingmanager.cpp; path = src/beingmanager.cpp; sourceTree = ""; }; + 92BC3ECF0BAEE55A000DAB7F /* beingmanager.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = beingmanager.h; path = src/beingmanager.h; sourceTree = ""; }; + 92BC3ED10BAEE55A000DAB7F /* configlistener.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = configlistener.h; path = src/configlistener.h; sourceTree = ""; }; + 92BC3ED20BAEE55A000DAB7F /* configuration.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = configuration.cpp; path = src/configuration.cpp; sourceTree = ""; }; + 92BC3ED30BAEE55A000DAB7F /* configuration.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = configuration.h; path = src/configuration.h; sourceTree = ""; }; + 92BC3EE40BAEE55A000DAB7F /* engine.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = engine.cpp; path = src/engine.cpp; sourceTree = ""; }; + 92BC3EE50BAEE55A000DAB7F /* engine.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = engine.h; path = src/engine.h; sourceTree = ""; }; + 92BC3EE60BAEE55A000DAB7F /* equipment.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = equipment.cpp; path = src/equipment.cpp; sourceTree = ""; }; + 92BC3EE70BAEE55A000DAB7F /* equipment.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = equipment.h; path = src/equipment.h; sourceTree = ""; }; + 92BC3EE80BAEE55A000DAB7F /* floor_item.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = floor_item.cpp; path = src/floor_item.cpp; sourceTree = ""; }; + 92BC3EE90BAEE55A000DAB7F /* floor_item.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = floor_item.h; path = src/floor_item.h; sourceTree = ""; }; + 92BC3EEA0BAEE55A000DAB7F /* flooritemmanager.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = flooritemmanager.cpp; path = src/flooritemmanager.cpp; sourceTree = ""; }; + 92BC3EEB0BAEE55A000DAB7F /* flooritemmanager.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = flooritemmanager.h; path = src/flooritemmanager.h; sourceTree = ""; }; + 92BC3EEC0BAEE55A000DAB7F /* game.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = game.cpp; path = src/game.cpp; sourceTree = ""; }; + 92BC3EED0BAEE55A000DAB7F /* game.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = game.h; path = src/game.h; sourceTree = ""; }; + 92BC3EEE0BAEE55A000DAB7F /* graphics.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = graphics.cpp; path = src/graphics.cpp; sourceTree = ""; }; + 92BC3EEF0BAEE55A000DAB7F /* graphics.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = graphics.h; path = src/graphics.h; sourceTree = ""; }; + 92BC3EF10BAEE55A000DAB7F /* box.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = box.cpp; sourceTree = ""; }; + 92BC3EF20BAEE55A000DAB7F /* box.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = box.h; sourceTree = ""; }; + 92BC3EF30BAEE55A000DAB7F /* browserbox.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = browserbox.cpp; sourceTree = ""; }; + 92BC3EF40BAEE55A000DAB7F /* browserbox.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = browserbox.h; sourceTree = ""; }; + 92BC3EF50BAEE55A000DAB7F /* buddywindow.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = buddywindow.cpp; sourceTree = ""; }; + 92BC3EF60BAEE55A000DAB7F /* buddywindow.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = buddywindow.h; sourceTree = ""; }; + 92BC3EF70BAEE55A000DAB7F /* button.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = button.cpp; sourceTree = ""; }; + 92BC3EF80BAEE55A000DAB7F /* button.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = button.h; sourceTree = ""; }; + 92BC3EF90BAEE55A000DAB7F /* buy.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = buy.cpp; sourceTree = ""; }; + 92BC3EFA0BAEE55A000DAB7F /* buy.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = buy.h; sourceTree = ""; }; + 92BC3EFB0BAEE55A000DAB7F /* buysell.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = buysell.cpp; sourceTree = ""; }; + 92BC3EFC0BAEE55A000DAB7F /* buysell.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = buysell.h; sourceTree = ""; }; + 92BC3EFD0BAEE55A000DAB7F /* char_select.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = char_select.cpp; sourceTree = ""; }; + 92BC3EFE0BAEE55A000DAB7F /* char_select.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = char_select.h; sourceTree = ""; }; + 92BC3EFF0BAEE55A000DAB7F /* char_server.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = char_server.cpp; sourceTree = ""; }; + 92BC3F000BAEE55A000DAB7F /* char_server.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = char_server.h; sourceTree = ""; }; + 92BC3F010BAEE55A000DAB7F /* chargedialog.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = chargedialog.cpp; sourceTree = ""; }; + 92BC3F020BAEE55A000DAB7F /* chargedialog.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = chargedialog.h; sourceTree = ""; }; + 92BC3F030BAEE55A000DAB7F /* chat.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = chat.cpp; sourceTree = ""; }; + 92BC3F040BAEE55A000DAB7F /* chat.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = chat.h; sourceTree = ""; }; + 92BC3F050BAEE55A000DAB7F /* chatinput.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = chatinput.cpp; sourceTree = ""; }; + 92BC3F060BAEE55A000DAB7F /* chatinput.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = chatinput.h; sourceTree = ""; }; + 92BC3F070BAEE55A000DAB7F /* checkbox.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = checkbox.cpp; sourceTree = ""; }; + 92BC3F080BAEE55A000DAB7F /* checkbox.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = checkbox.h; sourceTree = ""; }; + 92BC3F090BAEE55A000DAB7F /* confirm_dialog.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = confirm_dialog.cpp; sourceTree = ""; }; + 92BC3F0A0BAEE55A000DAB7F /* confirm_dialog.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = confirm_dialog.h; sourceTree = ""; }; + 92BC3F0B0BAEE55A000DAB7F /* connection.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = connection.cpp; sourceTree = ""; }; + 92BC3F0C0BAEE55A000DAB7F /* connection.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = connection.h; sourceTree = ""; }; + 92BC3F0D0BAEE55A000DAB7F /* debugwindow.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = debugwindow.cpp; sourceTree = ""; }; + 92BC3F0E0BAEE55A000DAB7F /* debugwindow.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = debugwindow.h; sourceTree = ""; }; + 92BC3F0F0BAEE55A000DAB7F /* equipmentwindow.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = equipmentwindow.cpp; sourceTree = ""; }; + 92BC3F100BAEE55A000DAB7F /* equipmentwindow.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = equipmentwindow.h; sourceTree = ""; }; + 92BC3F110BAEE55A000DAB7F /* focushandler.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = focushandler.cpp; sourceTree = ""; }; + 92BC3F120BAEE55A000DAB7F /* focushandler.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = focushandler.h; sourceTree = ""; }; + 92BC3F130BAEE55A000DAB7F /* gccontainer.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = gccontainer.cpp; sourceTree = ""; }; + 92BC3F140BAEE55A000DAB7F /* gccontainer.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = gccontainer.h; sourceTree = ""; }; + 92BC3F150BAEE55A000DAB7F /* gui.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = gui.cpp; sourceTree = ""; }; + 92BC3F160BAEE55A000DAB7F /* gui.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = gui.h; sourceTree = ""; }; + 92BC3F170BAEE55A000DAB7F /* hbox.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = hbox.cpp; sourceTree = ""; }; + 92BC3F180BAEE55A000DAB7F /* hbox.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = hbox.h; sourceTree = ""; }; + 92BC3F190BAEE55A000DAB7F /* help.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = help.cpp; sourceTree = ""; }; + 92BC3F1A0BAEE55A000DAB7F /* help.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = help.h; sourceTree = ""; }; + 92BC3F1B0BAEE55A000DAB7F /* inttextbox.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = inttextbox.cpp; sourceTree = ""; }; + 92BC3F1C0BAEE55A000DAB7F /* inttextbox.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = inttextbox.h; sourceTree = ""; }; + 92BC3F1D0BAEE55A000DAB7F /* inventorywindow.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = inventorywindow.cpp; sourceTree = ""; }; + 92BC3F1E0BAEE55A000DAB7F /* inventorywindow.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = inventorywindow.h; sourceTree = ""; }; + 92BC3F1F0BAEE55A000DAB7F /* item_amount.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = item_amount.cpp; sourceTree = ""; }; + 92BC3F200BAEE55A000DAB7F /* item_amount.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = item_amount.h; sourceTree = ""; }; + 92BC3F210BAEE55A000DAB7F /* itemcontainer.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = itemcontainer.cpp; sourceTree = ""; }; + 92BC3F220BAEE55A000DAB7F /* itemcontainer.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = itemcontainer.h; sourceTree = ""; }; + 92BC3F230BAEE55A000DAB7F /* linkhandler.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = linkhandler.h; sourceTree = ""; }; + 92BC3F240BAEE55A000DAB7F /* listbox.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = listbox.cpp; sourceTree = ""; }; + 92BC3F250BAEE55A000DAB7F /* listbox.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = listbox.h; sourceTree = ""; }; + 92BC3F260BAEE55A000DAB7F /* login.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = login.cpp; sourceTree = ""; }; + 92BC3F270BAEE55A000DAB7F /* login.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = login.h; sourceTree = ""; }; + 92BC3F280BAEE55A000DAB7F /* menuwindow.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = menuwindow.cpp; sourceTree = ""; }; + 92BC3F290BAEE55A000DAB7F /* menuwindow.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = menuwindow.h; sourceTree = ""; }; + 92BC3F2A0BAEE55A000DAB7F /* minimap.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = minimap.cpp; sourceTree = ""; }; + 92BC3F2B0BAEE55A000DAB7F /* minimap.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = minimap.h; sourceTree = ""; }; + 92BC3F2C0BAEE55A000DAB7F /* ministatus.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = ministatus.cpp; sourceTree = ""; }; + 92BC3F2D0BAEE55A000DAB7F /* ministatus.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = ministatus.h; sourceTree = ""; }; + 92BC3F2E0BAEE55A000DAB7F /* newskill.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = newskill.cpp; sourceTree = ""; }; + 92BC3F2F0BAEE55A000DAB7F /* newskill.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = newskill.h; sourceTree = ""; }; + 92BC3F300BAEE55A000DAB7F /* npc_text.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = npc_text.cpp; sourceTree = ""; }; + 92BC3F310BAEE55A000DAB7F /* npc_text.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = npc_text.h; sourceTree = ""; }; + 92BC3F320BAEE55A000DAB7F /* npclistdialog.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = npclistdialog.cpp; sourceTree = ""; }; + 92BC3F330BAEE55A000DAB7F /* npclistdialog.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = npclistdialog.h; sourceTree = ""; }; + 92BC3F340BAEE55A000DAB7F /* ok_dialog.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = ok_dialog.cpp; sourceTree = ""; }; + 92BC3F350BAEE55A000DAB7F /* ok_dialog.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = ok_dialog.h; sourceTree = ""; }; + 92BC3F360BAEE55A000DAB7F /* passwordfield.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = passwordfield.cpp; sourceTree = ""; }; + 92BC3F370BAEE55A000DAB7F /* passwordfield.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = passwordfield.h; sourceTree = ""; }; + 92BC3F380BAEE55A000DAB7F /* playerbox.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = playerbox.cpp; sourceTree = ""; }; + 92BC3F390BAEE55A000DAB7F /* playerbox.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = playerbox.h; sourceTree = ""; }; + 92BC3F3A0BAEE55A000DAB7F /* popupmenu.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = popupmenu.cpp; sourceTree = ""; }; + 92BC3F3B0BAEE55A000DAB7F /* popupmenu.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = popupmenu.h; sourceTree = ""; }; + 92BC3F3C0BAEE55A000DAB7F /* progressbar.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = progressbar.cpp; sourceTree = ""; }; + 92BC3F3D0BAEE55A000DAB7F /* progressbar.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = progressbar.h; sourceTree = ""; }; + 92BC3F3E0BAEE55A000DAB7F /* radiobutton.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = radiobutton.cpp; sourceTree = ""; }; + 92BC3F3F0BAEE55A000DAB7F /* radiobutton.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = radiobutton.h; sourceTree = ""; }; + 92BC3F400BAEE55A000DAB7F /* register.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = register.cpp; sourceTree = ""; }; + 92BC3F410BAEE55A000DAB7F /* register.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = register.h; sourceTree = ""; }; + 92BC3F420BAEE55A000DAB7F /* scrollarea.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = scrollarea.cpp; sourceTree = ""; }; + 92BC3F430BAEE55A000DAB7F /* scrollarea.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = scrollarea.h; sourceTree = ""; }; + 92BC3F450BAEE55A000DAB7F /* sell.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = sell.cpp; sourceTree = ""; }; + 92BC3F460BAEE55A000DAB7F /* sell.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = sell.h; sourceTree = ""; }; + 92BC3F470BAEE55A000DAB7F /* setup.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = setup.cpp; sourceTree = ""; }; + 92BC3F480BAEE55A000DAB7F /* setup.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = setup.h; sourceTree = ""; }; + 92BC3F490BAEE55A000DAB7F /* setup_audio.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = setup_audio.cpp; sourceTree = ""; }; + 92BC3F4A0BAEE55A000DAB7F /* setup_audio.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = setup_audio.h; sourceTree = ""; }; + 92BC3F4B0BAEE55A000DAB7F /* setup_joystick.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = setup_joystick.cpp; sourceTree = ""; }; + 92BC3F4C0BAEE55A000DAB7F /* setup_joystick.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = setup_joystick.h; sourceTree = ""; }; + 92BC3F4D0BAEE55A000DAB7F /* setup_video.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = setup_video.cpp; sourceTree = ""; }; + 92BC3F4E0BAEE55A000DAB7F /* setup_video.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = setup_video.h; sourceTree = ""; }; + 92BC3F4F0BAEE55A000DAB7F /* setuptab.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = setuptab.h; sourceTree = ""; }; + 92BC3F500BAEE55A000DAB7F /* shop.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = shop.cpp; sourceTree = ""; }; + 92BC3F510BAEE55A000DAB7F /* shop.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = shop.h; sourceTree = ""; }; + 92BC3F520BAEE55A000DAB7F /* shoplistbox.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = shoplistbox.cpp; sourceTree = ""; }; + 92BC3F530BAEE55A000DAB7F /* shoplistbox.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = shoplistbox.h; sourceTree = ""; }; + 92BC3F540BAEE55A000DAB7F /* skill.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = skill.cpp; sourceTree = ""; }; + 92BC3F550BAEE55A000DAB7F /* skill.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = skill.h; sourceTree = ""; }; + 92BC3F560BAEE55A000DAB7F /* slider.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = slider.cpp; sourceTree = ""; }; + 92BC3F570BAEE55A000DAB7F /* slider.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = slider.h; sourceTree = ""; }; + 92BC3F580BAEE55A000DAB7F /* status.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = status.cpp; sourceTree = ""; }; + 92BC3F590BAEE55B000DAB7F /* status.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = status.h; sourceTree = ""; }; + 92BC3F5A0BAEE55B000DAB7F /* tabbedcontainer.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = tabbedcontainer.cpp; sourceTree = ""; }; + 92BC3F5B0BAEE55B000DAB7F /* tabbedcontainer.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = tabbedcontainer.h; sourceTree = ""; }; + 92BC3F5C0BAEE55B000DAB7F /* textbox.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = textbox.cpp; sourceTree = ""; }; + 92BC3F5D0BAEE55B000DAB7F /* textbox.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = textbox.h; sourceTree = ""; }; + 92BC3F5E0BAEE55B000DAB7F /* textfield.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = textfield.cpp; sourceTree = ""; }; + 92BC3F5F0BAEE55B000DAB7F /* textfield.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = textfield.h; sourceTree = ""; }; + 92BC3F600BAEE55B000DAB7F /* trade.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = trade.cpp; sourceTree = ""; }; + 92BC3F610BAEE55B000DAB7F /* trade.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = trade.h; sourceTree = ""; }; + 92BC3F620BAEE55B000DAB7F /* updatewindow.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = updatewindow.cpp; sourceTree = ""; }; + 92BC3F630BAEE55B000DAB7F /* updatewindow.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = updatewindow.h; sourceTree = ""; }; + 92BC3F640BAEE55B000DAB7F /* vbox.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = vbox.cpp; sourceTree = ""; }; + 92BC3F650BAEE55B000DAB7F /* vbox.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = vbox.h; sourceTree = ""; }; + 92BC3F660BAEE55B000DAB7F /* viewport.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = viewport.cpp; sourceTree = ""; }; + 92BC3F670BAEE55B000DAB7F /* viewport.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = viewport.h; sourceTree = ""; }; + 92BC3F680BAEE55B000DAB7F /* window.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = window.cpp; sourceTree = ""; }; + 92BC3F690BAEE55B000DAB7F /* window.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = window.h; sourceTree = ""; }; + 92BC3F6A0BAEE55B000DAB7F /* windowcontainer.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = windowcontainer.cpp; sourceTree = ""; }; + 92BC3F6B0BAEE55B000DAB7F /* windowcontainer.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = windowcontainer.h; sourceTree = ""; }; + 92BC3F6C0BAEE55B000DAB7F /* guichanfwd.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = guichanfwd.h; path = src/guichanfwd.h; sourceTree = ""; }; + 92BC3F6D0BAEE55B000DAB7F /* inventory.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = inventory.cpp; path = src/inventory.cpp; sourceTree = ""; }; + 92BC3F6E0BAEE55B000DAB7F /* inventory.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = inventory.h; path = src/inventory.h; sourceTree = ""; }; + 92BC3F6F0BAEE55B000DAB7F /* item.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = item.cpp; path = src/item.cpp; sourceTree = ""; }; + 92BC3F700BAEE55B000DAB7F /* item.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = item.h; path = src/item.h; sourceTree = ""; }; + 92BC3F710BAEE55B000DAB7F /* joystick.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = joystick.cpp; path = src/joystick.cpp; sourceTree = ""; }; + 92BC3F720BAEE55B000DAB7F /* joystick.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = joystick.h; path = src/joystick.h; sourceTree = ""; }; + 92BC3F730BAEE55B000DAB7F /* localplayer.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = localplayer.cpp; path = src/localplayer.cpp; sourceTree = ""; }; + 92BC3F740BAEE55B000DAB7F /* localplayer.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = localplayer.h; path = src/localplayer.h; sourceTree = ""; }; + 92BC3F750BAEE55B000DAB7F /* lockedarray.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = lockedarray.h; path = src/lockedarray.h; sourceTree = ""; }; + 92BC3F760BAEE55B000DAB7F /* log.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = log.cpp; path = src/log.cpp; sourceTree = ""; }; + 92BC3F770BAEE55B000DAB7F /* log.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = log.h; path = src/log.h; sourceTree = ""; }; + 92BC3F780BAEE55B000DAB7F /* logindata.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = logindata.h; path = src/logindata.h; sourceTree = ""; }; + 92BC3F790BAEE55B000DAB7F /* main.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = main.cpp; path = src/main.cpp; sourceTree = ""; }; + 92BC3F7A0BAEE55B000DAB7F /* main.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = main.h; path = src/main.h; sourceTree = ""; }; + 92BC3F7C0BAEE55B000DAB7F /* map.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = map.cpp; path = src/map.cpp; sourceTree = ""; }; + 92BC3F7D0BAEE55B000DAB7F /* map.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = map.h; path = src/map.h; sourceTree = ""; }; + 92BC3F7E0BAEE55B000DAB7F /* monster.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = monster.cpp; path = src/monster.cpp; sourceTree = ""; }; + 92BC3F7F0BAEE55B000DAB7F /* monster.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = monster.h; path = src/monster.h; sourceTree = ""; }; + 92BC3F810BAEE55B000DAB7F /* beinghandler.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = beinghandler.cpp; sourceTree = ""; }; + 92BC3F820BAEE55B000DAB7F /* beinghandler.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = beinghandler.h; sourceTree = ""; }; + 92BC3F830BAEE55B000DAB7F /* buysellhandler.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = buysellhandler.cpp; sourceTree = ""; }; + 92BC3F840BAEE55B000DAB7F /* buysellhandler.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = buysellhandler.h; sourceTree = ""; }; + 92BC3F850BAEE55B000DAB7F /* charserverhandler.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = charserverhandler.cpp; sourceTree = ""; }; + 92BC3F860BAEE55B000DAB7F /* charserverhandler.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = charserverhandler.h; sourceTree = ""; }; + 92BC3F870BAEE55B000DAB7F /* chathandler.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = chathandler.cpp; sourceTree = ""; }; + 92BC3F880BAEE55B000DAB7F /* chathandler.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = chathandler.h; sourceTree = ""; }; + 92BC3F890BAEE55B000DAB7F /* equipmenthandler.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = equipmenthandler.cpp; sourceTree = ""; }; + 92BC3F8A0BAEE55B000DAB7F /* equipmenthandler.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = equipmenthandler.h; sourceTree = ""; }; + 92BC3F8B0BAEE55B000DAB7F /* inventoryhandler.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = inventoryhandler.cpp; sourceTree = ""; }; + 92BC3F8C0BAEE55B000DAB7F /* inventoryhandler.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = inventoryhandler.h; sourceTree = ""; }; + 92BC3F8D0BAEE55B000DAB7F /* itemhandler.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = itemhandler.cpp; sourceTree = ""; }; + 92BC3F8E0BAEE55B000DAB7F /* itemhandler.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = itemhandler.h; sourceTree = ""; }; + 92BC3F8F0BAEE55B000DAB7F /* loginhandler.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = loginhandler.cpp; sourceTree = ""; }; + 92BC3F900BAEE55B000DAB7F /* loginhandler.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = loginhandler.h; sourceTree = ""; }; + 92BC3F910BAEE55B000DAB7F /* maploginhandler.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = maploginhandler.cpp; sourceTree = ""; }; + 92BC3F920BAEE55B000DAB7F /* maploginhandler.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = maploginhandler.h; sourceTree = ""; }; + 92BC3F930BAEE55B000DAB7F /* messagehandler.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = messagehandler.cpp; sourceTree = ""; }; + 92BC3F940BAEE55B000DAB7F /* messagehandler.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = messagehandler.h; sourceTree = ""; }; + 92BC3F950BAEE55B000DAB7F /* messagein.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = messagein.cpp; sourceTree = ""; }; + 92BC3F960BAEE55B000DAB7F /* messagein.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = messagein.h; sourceTree = ""; }; + 92BC3F970BAEE55B000DAB7F /* messageout.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = messageout.cpp; sourceTree = ""; }; + 92BC3F980BAEE55B000DAB7F /* messageout.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = messageout.h; sourceTree = ""; }; + 92BC3F990BAEE55B000DAB7F /* network.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = network.cpp; sourceTree = ""; }; + 92BC3F9A0BAEE55B000DAB7F /* network.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = network.h; sourceTree = ""; }; + 92BC3F9B0BAEE55B000DAB7F /* npchandler.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = npchandler.cpp; sourceTree = ""; }; + 92BC3F9C0BAEE55B000DAB7F /* npchandler.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = npchandler.h; sourceTree = ""; }; + 92BC3F9D0BAEE55B000DAB7F /* playerhandler.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = playerhandler.cpp; sourceTree = ""; }; + 92BC3F9E0BAEE55B000DAB7F /* playerhandler.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = playerhandler.h; sourceTree = ""; }; + 92BC3F9F0BAEE55B000DAB7F /* protocol.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = protocol.cpp; sourceTree = ""; }; + 92BC3FA00BAEE55B000DAB7F /* protocol.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = protocol.h; sourceTree = ""; }; + 92BC3FA10BAEE55B000DAB7F /* skillhandler.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = skillhandler.cpp; sourceTree = ""; }; + 92BC3FA20BAEE55B000DAB7F /* skillhandler.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = skillhandler.h; sourceTree = ""; }; + 92BC3FA30BAEE55B000DAB7F /* tradehandler.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = tradehandler.cpp; sourceTree = ""; }; + 92BC3FA40BAEE55B000DAB7F /* tradehandler.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = tradehandler.h; sourceTree = ""; }; + 92BC3FA50BAEE55B000DAB7F /* npc.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = npc.cpp; path = src/npc.cpp; sourceTree = ""; }; + 92BC3FA60BAEE55B000DAB7F /* npc.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = npc.h; path = src/npc.h; sourceTree = ""; }; + 92BC3FA70BAEE55B000DAB7F /* openglgraphics.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = openglgraphics.cpp; path = src/openglgraphics.cpp; sourceTree = ""; }; + 92BC3FA80BAEE55B000DAB7F /* openglgraphics.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = openglgraphics.h; path = src/openglgraphics.h; sourceTree = ""; }; + 92BC3FAB0BAEE55B000DAB7F /* physfs.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = physfs.c; sourceTree = ""; }; + 92BC3FAC0BAEE55B000DAB7F /* physfs.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = physfs.h; sourceTree = ""; }; + 92BC3FAD0BAEE55B000DAB7F /* physfs_byteorder.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = physfs_byteorder.c; sourceTree = ""; }; + 92BC3FAE0BAEE55B000DAB7F /* physfs_internal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = physfs_internal.h; sourceTree = ""; }; + 92BC3FB50BAEE55B000DAB7F /* posix.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = posix.c; sourceTree = ""; }; + 92BC3FB70BAEE55B000DAB7F /* unix.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = unix.c; sourceTree = ""; }; + 92BC3FBA0BAEE55B000DAB7F /* player.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = player.cpp; path = src/player.cpp; sourceTree = ""; }; + 92BC3FBB0BAEE55B000DAB7F /* player.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = player.h; path = src/player.h; sourceTree = ""; }; + 92BC3FBC0BAEE55B000DAB7F /* properties.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = properties.h; path = src/properties.h; sourceTree = ""; }; + 92BC3FBE0BAEE55B000DAB7F /* action.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = action.cpp; sourceTree = ""; }; + 92BC3FBF0BAEE55B000DAB7F /* action.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = action.h; sourceTree = ""; }; + 92BC3FC00BAEE55B000DAB7F /* ambientoverlay.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = ambientoverlay.cpp; sourceTree = ""; }; + 92BC3FC10BAEE55B000DAB7F /* ambientoverlay.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = ambientoverlay.h; sourceTree = ""; }; + 92BC3FC20BAEE55B000DAB7F /* animation.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = animation.cpp; sourceTree = ""; }; + 92BC3FC30BAEE55B000DAB7F /* animation.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = animation.h; sourceTree = ""; }; + 92BC3FC40BAEE55B000DAB7F /* buddylist.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = buddylist.cpp; sourceTree = ""; }; + 92BC3FC50BAEE55B000DAB7F /* buddylist.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = buddylist.h; sourceTree = ""; }; + 92BC3FC90BAEE55B000DAB7F /* image.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = image.cpp; sourceTree = ""; }; + 92BC3FCA0BAEE55B000DAB7F /* image.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = image.h; sourceTree = ""; }; + 92BC3FCB0BAEE55B000DAB7F /* imagewriter.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = imagewriter.cpp; sourceTree = ""; }; + 92BC3FCC0BAEE55B000DAB7F /* imagewriter.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = imagewriter.h; sourceTree = ""; }; + 92BC3FCD0BAEE55B000DAB7F /* itemdb.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = itemdb.cpp; sourceTree = ""; }; + 92BC3FCE0BAEE55B000DAB7F /* itemdb.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = itemdb.h; sourceTree = ""; }; + 92BC3FCF0BAEE55B000DAB7F /* iteminfo.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = iteminfo.cpp; sourceTree = ""; }; + 92BC3FD00BAEE55B000DAB7F /* iteminfo.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = iteminfo.h; sourceTree = ""; }; + 92BC3FD10BAEE55B000DAB7F /* mapreader.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = mapreader.cpp; sourceTree = ""; }; + 92BC3FD20BAEE55B000DAB7F /* mapreader.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = mapreader.h; sourceTree = ""; }; + 92BC3FD30BAEE55B000DAB7F /* monsterdb.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = monsterdb.cpp; sourceTree = ""; }; + 92BC3FD40BAEE55B000DAB7F /* monsterdb.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = monsterdb.h; sourceTree = ""; }; + 92BC3FD50BAEE55B000DAB7F /* monsterinfo.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = monsterinfo.cpp; sourceTree = ""; }; + 92BC3FD60BAEE55B000DAB7F /* monsterinfo.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = monsterinfo.h; sourceTree = ""; }; + 92BC3FD70BAEE55B000DAB7F /* music.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = music.cpp; sourceTree = ""; }; + 92BC3FD80BAEE55B000DAB7F /* music.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = music.h; sourceTree = ""; }; + 92BC3FDB0BAEE55B000DAB7F /* resource.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = resource.cpp; sourceTree = ""; }; + 92BC3FDC0BAEE55B000DAB7F /* resource.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = resource.h; sourceTree = ""; }; + 92BC3FDD0BAEE55B000DAB7F /* resourcemanager.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = resourcemanager.cpp; sourceTree = ""; }; + 92BC3FDE0BAEE55B000DAB7F /* resourcemanager.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = resourcemanager.h; sourceTree = ""; }; + 92BC3FE10BAEE55B000DAB7F /* soundeffect.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = soundeffect.cpp; sourceTree = ""; }; + 92BC3FE20BAEE55B000DAB7F /* soundeffect.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = soundeffect.h; sourceTree = ""; }; + 92BC3FE30BAEE55B000DAB7F /* spritedef.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = spritedef.cpp; sourceTree = ""; }; + 92BC3FE40BAEE55B000DAB7F /* spritedef.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = spritedef.h; sourceTree = ""; }; + 92BC3FE70BAEE55B000DAB7F /* serverinfo.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = serverinfo.h; path = src/serverinfo.h; sourceTree = ""; }; + 92BC3FE80BAEE55B000DAB7F /* simpleanimation.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = simpleanimation.cpp; path = src/simpleanimation.cpp; sourceTree = ""; }; + 92BC3FE90BAEE55B000DAB7F /* simpleanimation.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = simpleanimation.h; path = src/simpleanimation.h; sourceTree = ""; }; + 92BC3FEA0BAEE55B000DAB7F /* sound.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = sound.cpp; path = src/sound.cpp; sourceTree = ""; }; + 92BC3FEB0BAEE55B000DAB7F /* sound.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = sound.h; path = src/sound.h; sourceTree = ""; }; + 92BC3FEC0BAEE55B000DAB7F /* sprite.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = sprite.h; path = src/sprite.h; sourceTree = ""; }; + 92BC3FED0BAEE55B000DAB7F /* tileset.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = tileset.h; path = src/tileset.h; sourceTree = ""; }; + 92BC3FEF0BAEE55B000DAB7F /* base64.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = base64.cpp; sourceTree = ""; }; + 92BC3FF00BAEE55B000DAB7F /* base64.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = base64.h; sourceTree = ""; }; + 92BC3FF10BAEE55B000DAB7F /* dtor.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = dtor.h; sourceTree = ""; }; + 92BC3FF20BAEE55B000DAB7F /* tostring.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = tostring.h; sourceTree = ""; }; + 92BC3FF40BAEE55B000DAB7F /* xml.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = xml.cpp; sourceTree = ""; }; + 92BC3FF50BAEE55B000DAB7F /* xml.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = xml.h; sourceTree = ""; }; + 92BC408E0BAEE818000DAB7F /* SDL_image.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SDL_image.framework; path = /Library/Frameworks/SDL_image.framework; sourceTree = ""; }; + 92BC408F0BAEE818000DAB7F /* SDL_mixer.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SDL_mixer.framework; path = /Library/Frameworks/SDL_mixer.framework; sourceTree = ""; }; + 92BC40900BAEE818000DAB7F /* SDL_net.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SDL_net.framework; path = /Library/Frameworks/SDL_net.framework; sourceTree = ""; }; + 92BC40910BAEE818000DAB7F /* SDL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SDL.framework; path = /Library/Frameworks/SDL.framework; sourceTree = ""; }; + 92BC40C60BAEEDAA000DAB7F /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGL.framework; path = /Developer/SDKs/MacOSX10.4u.sdk/System/Library/Frameworks/OpenGL.framework; sourceTree = ""; }; + 92BC40D80BAEEED3000DAB7F /* IOKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = IOKit.framework; path = /Developer/SDKs/MacOSX10.4u.sdk/System/Library/Frameworks/IOKit.framework; sourceTree = ""; }; + 92BC40E50BAEF54B000DAB7F /* SDLMain.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = SDLMain.m; path = src/SDLMain.m; sourceTree = ""; }; + 92BC40E80BAEF57D000DAB7F /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /Developer/SDKs/MacOSX10.4u.sdk/System/Library/Frameworks/Cocoa.framework; sourceTree = ""; }; + 92BC416E0BAF664C000DAB7F /* ChangeLog */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = text; path = ChangeLog; sourceTree = ""; }; + 92FD19A10DDCD60C00D14E5D /* English */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/InfoPlist.strings; sourceTree = ""; }; + 92FD19AE0DDCE51000D14E5D /* player_relations.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = player_relations.cpp; path = src/player_relations.cpp; sourceTree = ""; }; + 92FD19AF0DDCE51000D14E5D /* player_relations.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = player_relations.h; path = src/player_relations.h; sourceTree = ""; }; + 92FD19B30DDCE53400D14E5D /* setup_players.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = setup_players.cpp; sourceTree = ""; }; + 92FD19B40DDCE53400D14E5D /* setup_players.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = setup_players.h; sourceTree = ""; }; + 92FD19B50DDCE53400D14E5D /* table.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = table.cpp; sourceTree = ""; }; + 92FD19B60DDCE53400D14E5D /* table.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = table.h; sourceTree = ""; }; + 92FD19B70DDCE53400D14E5D /* table_model.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = table_model.cpp; sourceTree = ""; }; + 92FD19B80DDCE53400D14E5D /* table_model.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = table_model.h; sourceTree = ""; }; + 92FD19BD0DDCE56A00D14E5D /* dye.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = dye.h; sourceTree = ""; }; + 92FD19BF0DDCE6F700D14E5D /* strprintf.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = strprintf.cpp; sourceTree = ""; }; + 92FD19C00DDCE6F700D14E5D /* strprintf.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = strprintf.h; sourceTree = ""; }; + 92FD19C60DDCEB8500D14E5D /* emotions.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = emotions.png; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 8D0C4E910486CD37000505A6 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 8D0C4E920486CD37000505A6 /* Carbon.framework in Frameworks */, + 92BC40940BAEE818000DAB7F /* SDL_image.framework in Frameworks */, + 92BC40950BAEE818000DAB7F /* SDL_mixer.framework in Frameworks */, + 92BC40960BAEE818000DAB7F /* SDL_net.framework in Frameworks */, + 92BC40970BAEE818000DAB7F /* SDL.framework in Frameworks */, + 92BC40C70BAEEDAA000DAB7F /* OpenGL.framework in Frameworks */, + 92BC40D90BAEEED3000DAB7F /* IOKit.framework in Frameworks */, + 92BC40E90BAEF57D000DAB7F /* Cocoa.framework in Frameworks */, + 9294DAA10C17E73200FCEDE9 /* libpng.framework in Frameworks */, + 922CD9ED0E3D02C50074C50E /* guichan.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 195DF8CFFE9D517E11CA2CBB /* Products */ = { + isa = PBXGroup; + children = ( + 508344B209E5C41E0093A071 /* The Mana World.app */, + ); + name = Products; + sourceTree = ""; + }; + 20286C29FDCF999611CA2CEA /* themanaworld */ = { + isa = PBXGroup; + children = ( + 5048396909E3304600765E4B /* Configuration Files */, + 20286C2AFDCF999611CA2CEA /* Sources */, + 20286C2CFDCF999611CA2CEA /* Resources */, + 20286C32FDCF999611CA2CEA /* External Frameworks and Libraries */, + 195DF8CFFE9D517E11CA2CBB /* Products */, + ); + name = themanaworld; + sourceTree = ""; + }; + 20286C2AFDCF999611CA2CEA /* Sources */ = { + isa = PBXGroup; + children = ( + 92037A1A0ED2037300D3712D /* particleemitterprop.h */, + 92037A1B0ED2037300D3712D /* text.cpp */, + 92037A1C0ED2037300D3712D /* text.h */, + 92037A1D0ED2037300D3712D /* textmanager.cpp */, + 92037A1E0ED2037300D3712D /* textmanager.h */, + 922CD95D0E3D01080074C50E /* shopitem.cpp */, + 922CD95E0E3D01080074C50E /* shopitem.h */, + 92FD19AE0DDCE51000D14E5D /* player_relations.cpp */, + 92FD19AF0DDCE51000D14E5D /* player_relations.h */, + 926F9CF60DB005FA00AACD26 /* itemshortcut.cpp */, + 926F9CF70DB005FA00AACD26 /* itemshortcut.h */, + 92A4CC9D0D1C622E00CA28FB /* dye.cpp */, + 92024D2A0CF1BD9E006B55CB /* keyboardconfig.cpp */, + 92024D2B0CF1BD9E006B55CB /* keyboardconfig.h */, + 92024D2C0CF1BD9E006B55CB /* vector.h */, + 924A39E80C0784280066885E /* animationparticle.cpp */, + 924A39E90C0784280066885E /* animationparticle.h */, + 924A39EA0C0784280066885E /* imageparticle.cpp */, + 924A39EB0C0784280066885E /* imageparticle.h */, + 924A39EC0C0784280066885E /* particle.cpp */, + 924A39ED0C0784280066885E /* particle.h */, + 924A39EE0C0784280066885E /* particleemitter.cpp */, + 924A39EF0C0784280066885E /* particleemitter.h */, + 924A39F00C0784280066885E /* textparticle.cpp */, + 924A39F10C0784280066885E /* textparticle.h */, + 92BC3ECA0BAEE55A000DAB7F /* animatedsprite.cpp */, + 92BC3ECB0BAEE55A000DAB7F /* animatedsprite.h */, + 92BC3ECC0BAEE55A000DAB7F /* being.cpp */, + 92BC3ECD0BAEE55A000DAB7F /* being.h */, + 92BC3ECE0BAEE55A000DAB7F /* beingmanager.cpp */, + 92BC3ECF0BAEE55A000DAB7F /* beingmanager.h */, + 92BC3ED10BAEE55A000DAB7F /* configlistener.h */, + 92BC3ED20BAEE55A000DAB7F /* configuration.cpp */, + 92BC3ED30BAEE55A000DAB7F /* configuration.h */, + 92BC3EE40BAEE55A000DAB7F /* engine.cpp */, + 92BC3EE50BAEE55A000DAB7F /* engine.h */, + 92BC3EE60BAEE55A000DAB7F /* equipment.cpp */, + 92BC3EE70BAEE55A000DAB7F /* equipment.h */, + 92BC3EE80BAEE55A000DAB7F /* floor_item.cpp */, + 92BC3EE90BAEE55A000DAB7F /* floor_item.h */, + 92BC3EEA0BAEE55A000DAB7F /* flooritemmanager.cpp */, + 92BC3EEB0BAEE55A000DAB7F /* flooritemmanager.h */, + 92BC3EEC0BAEE55A000DAB7F /* game.cpp */, + 92BC3EED0BAEE55A000DAB7F /* game.h */, + 92BC3EEE0BAEE55A000DAB7F /* graphics.cpp */, + 92BC3EEF0BAEE55A000DAB7F /* graphics.h */, + 92BC3EF00BAEE55A000DAB7F /* gui */, + 92BC3F6C0BAEE55B000DAB7F /* guichanfwd.h */, + 92BC3F6D0BAEE55B000DAB7F /* inventory.cpp */, + 92BC3F6E0BAEE55B000DAB7F /* inventory.h */, + 92BC3F6F0BAEE55B000DAB7F /* item.cpp */, + 92BC3F700BAEE55B000DAB7F /* item.h */, + 92BC3F710BAEE55B000DAB7F /* joystick.cpp */, + 92BC3F720BAEE55B000DAB7F /* joystick.h */, + 92BC3F730BAEE55B000DAB7F /* localplayer.cpp */, + 92BC3F740BAEE55B000DAB7F /* localplayer.h */, + 92BC3F750BAEE55B000DAB7F /* lockedarray.h */, + 92BC3F760BAEE55B000DAB7F /* log.cpp */, + 92BC3F770BAEE55B000DAB7F /* log.h */, + 92BC3F780BAEE55B000DAB7F /* logindata.h */, + 92BC3F790BAEE55B000DAB7F /* main.cpp */, + 92BC3F7A0BAEE55B000DAB7F /* main.h */, + 92BC3F7C0BAEE55B000DAB7F /* map.cpp */, + 92BC3F7D0BAEE55B000DAB7F /* map.h */, + 92BC3F7E0BAEE55B000DAB7F /* monster.cpp */, + 92BC3F7F0BAEE55B000DAB7F /* monster.h */, + 92BC3F800BAEE55B000DAB7F /* net */, + 92BC3FA50BAEE55B000DAB7F /* npc.cpp */, + 92BC3FA60BAEE55B000DAB7F /* npc.h */, + 92BC3FA70BAEE55B000DAB7F /* openglgraphics.cpp */, + 92BC3FA80BAEE55B000DAB7F /* openglgraphics.h */, + 92BC3FA90BAEE55B000DAB7F /* physfs */, + 92BC3FBA0BAEE55B000DAB7F /* player.cpp */, + 92BC3FBB0BAEE55B000DAB7F /* player.h */, + 92BC3FBC0BAEE55B000DAB7F /* properties.h */, + 92BC3FBD0BAEE55B000DAB7F /* resources */, + 92BC3FE70BAEE55B000DAB7F /* serverinfo.h */, + 92BC3FE80BAEE55B000DAB7F /* simpleanimation.cpp */, + 92BC3FE90BAEE55B000DAB7F /* simpleanimation.h */, + 92BC3FEA0BAEE55B000DAB7F /* sound.cpp */, + 92BC3FEB0BAEE55B000DAB7F /* sound.h */, + 92BC3FEC0BAEE55B000DAB7F /* sprite.h */, + 92BC3FED0BAEE55B000DAB7F /* tileset.h */, + 92BC3FEE0BAEE55B000DAB7F /* utils */, + ); + name = Sources; + sourceTree = ""; + }; + 20286C2CFDCF999611CA2CEA /* Resources */ = { + isa = PBXGroup; + children = ( + 92FD19A00DDCD60C00D14E5D /* InfoPlist.strings */, + 92A4CCFE0D1DA8E500CA28FB /* LICENSE.rtf */, + 924A42600C0874D00066885E /* Info.plist */, + 924A42590C0871EC0066885E /* The Mana World.icns */, + 924A3E590C085ED70066885E /* data */, + 92BC416E0BAF664C000DAB7F /* ChangeLog */, + 02345980000FD03B11CA0E72 /* main.nib */, + ); + name = Resources; + sourceTree = ""; + }; + 20286C32FDCF999611CA2CEA /* External Frameworks and Libraries */ = { + isa = PBXGroup; + children = ( + 922CD9EC0E3D02C50074C50E /* guichan.framework */, + 9294DAA00C17E73200FCEDE9 /* libpng.framework */, + 92BC40E80BAEF57D000DAB7F /* Cocoa.framework */, + 92BC40D80BAEEED3000DAB7F /* IOKit.framework */, + 92BC40C60BAEEDAA000DAB7F /* OpenGL.framework */, + 92BC408E0BAEE818000DAB7F /* SDL_image.framework */, + 92BC408F0BAEE818000DAB7F /* SDL_mixer.framework */, + 92BC40900BAEE818000DAB7F /* SDL_net.framework */, + 92BC40910BAEE818000DAB7F /* SDL.framework */, + 20286C33FDCF999611CA2CEA /* Carbon.framework */, + ); + name = "External Frameworks and Libraries"; + sourceTree = ""; + }; + 5048396909E3304600765E4B /* Configuration Files */ = { + isa = PBXGroup; + children = ( + 92037A190ED2035A00D3712D /* SDLMain.h */, + 92BC40E50BAEF54B000DAB7F /* SDLMain.m */, + ); + name = "Configuration Files"; + sourceTree = ""; + }; + 924A3A0F0C07A60B0066885E /* widgets */ = { + isa = PBXGroup; + children = ( + 924A3A100C07A60B0066885E /* resizegrip.cpp */, + 924A3A110C07A60B0066885E /* resizegrip.h */, + ); + path = widgets; + sourceTree = ""; + }; + 924A3E590C085ED70066885E /* data */ = { + isa = PBXGroup; + children = ( + 924A3E5C0C085ED70066885E /* graphics */, + 924A40090C085ED80066885E /* help */, + 924A40140C085ED80066885E /* icons */, + 924A401C0C085ED80066885E /* items.xsd */, + ); + path = data; + sourceTree = ""; + }; + 924A3E5C0C085ED70066885E /* graphics */ = { + isa = PBXGroup; + children = ( + 924A3E5E0C085ED70066885E /* gui */, + 924A3E900C085ED70066885E /* images */, + ); + path = graphics; + sourceTree = ""; + }; + 924A3E5E0C085ED70066885E /* gui */ = { + isa = PBXGroup; + children = ( + 92FD19C60DDCEB8500D14E5D /* emotions.png */, + 92024D5B0CF1BE5C006B55CB /* close_button.png */, + 92024D5D0CF1BE5C006B55CB /* unknown-item.png */, + 92024D5C0CF1BE5C006B55CB /* item_shortcut_bgr.png */, + 924A3E600C085ED70066885E /* bg_quad_dis.png */, + 924A3E610C085ED70066885E /* browserfont.png */, + 924A3E620C085ED70066885E /* button.png */, + 924A3E630C085ED70066885E /* button_disabled.png */, + 924A3E640C085ED70066885E /* buttonhi.png */, + 924A3E650C085ED70066885E /* buttonpress.png */, + 924A3E660C085ED70066885E /* checkbox.png */, + 924A3E680C085ED70066885E /* deepbox.png */, + 924A3E690C085ED70066885E /* fixedfont.png */, + 924A3E6A0C085ED70066885E /* hits_blue.png */, + 924A3E6B0C085ED70066885E /* hits_red.png */, + 924A3E6C0C085ED70066885E /* hits_yellow.png */, + 924A3E6D0C085ED70066885E /* hscroll_left_default.png */, + 924A3E6E0C085ED70066885E /* hscroll_left_highlight.png */, + 924A3E6F0C085ED70066885E /* hscroll_left_pressed.png */, + 924A3E700C085ED70066885E /* hscroll_right_default.png */, + 924A3E710C085ED70066885E /* hscroll_right_highlight.png */, + 924A3E720C085ED70066885E /* hscroll_right_pressed.png */, + 924A3E740C085ED70066885E /* menuitemD.png */, + 924A3E750C085ED70066885E /* menuitemF.png */, + 924A3E760C085ED70066885E /* menuitemN.png */, + 924A3E770C085ED70066885E /* menuitemP.png */, + 924A3E780C085ED70066885E /* mouse.png */, + 924A3E790C085ED70066885E /* radioin.png */, + 924A3E7A0C085ED70066885E /* radioout.png */, + 924A3E7B0C085ED70066885E /* resize.png */, + 924A3E7C0C085ED70066885E /* rpgfont_wider.png */, + 924A3E7D0C085ED70066885E /* sansserif8.png */, + 924A3E7E0C085ED70066885E /* selection.png */, + 924A3E7F0C085ED70066885E /* slider.png */, + 924A3E800C085ED70066885E /* target-cursor-blue-l.png */, + 924A3E810C085ED70066885E /* target-cursor-blue-m.png */, + 924A3E820C085ED70066885E /* target-cursor-blue-s.png */, + 924A3E830C085ED70066885E /* target-cursor-red-l.png */, + 924A3E840C085ED70066885E /* target-cursor-red-m.png */, + 924A3E850C085ED70066885E /* target-cursor-red-s.png */, + 924A3E860C085ED70066885E /* thickborder.png */, + 924A3E870C085ED70066885E /* vscroll_blue.png */, + 924A3E880C085ED70066885E /* vscroll_down_default.png */, + 924A3E890C085ED70066885E /* vscroll_down_highlight.png */, + 924A3E8A0C085ED70066885E /* vscroll_down_pressed.png */, + 924A3E8B0C085ED70066885E /* vscroll_grey.png */, + 924A3E8C0C085ED70066885E /* vscroll_red.png */, + 924A3E8D0C085ED70066885E /* vscroll_up_default.png */, + 924A3E8E0C085ED70066885E /* vscroll_up_highlight.png */, + 924A3E8F0C085ED70066885E /* vscroll_up_pressed.png */, + ); + path = gui; + sourceTree = ""; + }; + 924A3E900C085ED70066885E /* images */ = { + isa = PBXGroup; + children = ( + 924A3E990C085ED70066885E /* error.png */, + 924A3E9A0C085ED70066885E /* login_wallpaper.png */, + ); + path = images; + sourceTree = ""; + }; + 924A40090C085ED80066885E /* help */ = { + isa = PBXGroup; + children = ( + 924A400A0C085ED80066885E /* about.txt */, + 924A400B0C085ED80066885E /* changes.txt */, + 924A400D0C085ED80066885E /* commands.txt */, + 924A400E0C085ED80066885E /* header.txt */, + 924A400F0C085ED80066885E /* index.txt */, + 924A40110C085ED80066885E /* skills.txt */, + 924A40120C085ED80066885E /* support.txt */, + 924A40130C085ED80066885E /* team.txt */, + ); + path = help; + sourceTree = ""; + }; + 924A40140C085ED80066885E /* icons */ = { + isa = PBXGroup; + children = ( + 92024DDD0CF1BFC8006B55CB /* The Mana World.icns */, + 924A40180C085ED80066885E /* tmw.ico */, + 924A40190C085ED80066885E /* tmw.png */, + 924A401A0C085ED80066885E /* tmw.xpm */, + ); + path = icons; + sourceTree = ""; + }; + 92A4CCDF0D1DA58D00CA28FB /* archivers */ = { + isa = PBXGroup; + children = ( + 92A4CCE00D1DA58D00CA28FB /* dir.c */, + 92A4CCE10D1DA58D00CA28FB /* grp.c */, + 92A4CCE20D1DA58D00CA28FB /* hog.c */, + 92A4CCE30D1DA58D00CA28FB /* lzma.c */, + 92A4CCE40D1DA58D00CA28FB /* mvl.c */, + 92A4CCE50D1DA58D00CA28FB /* qpak.c */, + 92A4CCE60D1DA58D00CA28FB /* wad.c */, + 92A4CCE70D1DA58D00CA28FB /* zip.c */, + ); + path = archivers; + sourceTree = ""; + }; + 92BC3EF00BAEE55A000DAB7F /* gui */ = { + isa = PBXGroup; + children = ( + 92FD19B30DDCE53400D14E5D /* setup_players.cpp */, + 92FD19B40DDCE53400D14E5D /* setup_players.h */, + 92FD19B50DDCE53400D14E5D /* table.cpp */, + 92FD19B60DDCE53400D14E5D /* table.h */, + 92FD19B70DDCE53400D14E5D /* table_model.cpp */, + 92FD19B80DDCE53400D14E5D /* table_model.h */, + 926F9D410DB00AFC00AACD26 /* itemshortcutcontainer.cpp */, + 926F9D420DB00AFC00AACD26 /* itemshortcutcontainer.h */, + 926F9D430DB00AFC00AACD26 /* itemshortcutwindow.cpp */, + 926F9D440DB00AFC00AACD26 /* itemshortcutwindow.h */, + 92024D360CF1BDF7006B55CB /* setup_keyboard.cpp */, + 92024D370CF1BDF7006B55CB /* setup_keyboard.h */, + 924A3A0F0C07A60B0066885E /* widgets */, + 92BC3EF10BAEE55A000DAB7F /* box.cpp */, + 92BC3EF20BAEE55A000DAB7F /* box.h */, + 92BC3EF30BAEE55A000DAB7F /* browserbox.cpp */, + 92BC3EF40BAEE55A000DAB7F /* browserbox.h */, + 92BC3EF50BAEE55A000DAB7F /* buddywindow.cpp */, + 92BC3EF60BAEE55A000DAB7F /* buddywindow.h */, + 92BC3EF70BAEE55A000DAB7F /* button.cpp */, + 92BC3EF80BAEE55A000DAB7F /* button.h */, + 92BC3EF90BAEE55A000DAB7F /* buy.cpp */, + 92BC3EFA0BAEE55A000DAB7F /* buy.h */, + 92BC3EFB0BAEE55A000DAB7F /* buysell.cpp */, + 92BC3EFC0BAEE55A000DAB7F /* buysell.h */, + 92BC3EFD0BAEE55A000DAB7F /* char_select.cpp */, + 92BC3EFE0BAEE55A000DAB7F /* char_select.h */, + 92BC3EFF0BAEE55A000DAB7F /* char_server.cpp */, + 92BC3F000BAEE55A000DAB7F /* char_server.h */, + 92BC3F010BAEE55A000DAB7F /* chargedialog.cpp */, + 92BC3F020BAEE55A000DAB7F /* chargedialog.h */, + 92BC3F030BAEE55A000DAB7F /* chat.cpp */, + 92BC3F040BAEE55A000DAB7F /* chat.h */, + 92BC3F050BAEE55A000DAB7F /* chatinput.cpp */, + 92BC3F060BAEE55A000DAB7F /* chatinput.h */, + 92BC3F070BAEE55A000DAB7F /* checkbox.cpp */, + 92BC3F080BAEE55A000DAB7F /* checkbox.h */, + 92BC3F090BAEE55A000DAB7F /* confirm_dialog.cpp */, + 92BC3F0A0BAEE55A000DAB7F /* confirm_dialog.h */, + 92BC3F0B0BAEE55A000DAB7F /* connection.cpp */, + 92BC3F0C0BAEE55A000DAB7F /* connection.h */, + 92BC3F0D0BAEE55A000DAB7F /* debugwindow.cpp */, + 92BC3F0E0BAEE55A000DAB7F /* debugwindow.h */, + 92BC3F0F0BAEE55A000DAB7F /* equipmentwindow.cpp */, + 92BC3F100BAEE55A000DAB7F /* equipmentwindow.h */, + 92BC3F110BAEE55A000DAB7F /* focushandler.cpp */, + 92BC3F120BAEE55A000DAB7F /* focushandler.h */, + 92BC3F130BAEE55A000DAB7F /* gccontainer.cpp */, + 92BC3F140BAEE55A000DAB7F /* gccontainer.h */, + 92BC3F150BAEE55A000DAB7F /* gui.cpp */, + 92BC3F160BAEE55A000DAB7F /* gui.h */, + 92BC3F170BAEE55A000DAB7F /* hbox.cpp */, + 92BC3F180BAEE55A000DAB7F /* hbox.h */, + 92BC3F190BAEE55A000DAB7F /* help.cpp */, + 92BC3F1A0BAEE55A000DAB7F /* help.h */, + 92BC3F1B0BAEE55A000DAB7F /* inttextbox.cpp */, + 92BC3F1C0BAEE55A000DAB7F /* inttextbox.h */, + 92BC3F1D0BAEE55A000DAB7F /* inventorywindow.cpp */, + 92BC3F1E0BAEE55A000DAB7F /* inventorywindow.h */, + 92BC3F1F0BAEE55A000DAB7F /* item_amount.cpp */, + 92BC3F200BAEE55A000DAB7F /* item_amount.h */, + 92BC3F210BAEE55A000DAB7F /* itemcontainer.cpp */, + 92BC3F220BAEE55A000DAB7F /* itemcontainer.h */, + 92BC3F230BAEE55A000DAB7F /* linkhandler.h */, + 92BC3F240BAEE55A000DAB7F /* listbox.cpp */, + 92BC3F250BAEE55A000DAB7F /* listbox.h */, + 92BC3F260BAEE55A000DAB7F /* login.cpp */, + 92BC3F270BAEE55A000DAB7F /* login.h */, + 92BC3F280BAEE55A000DAB7F /* menuwindow.cpp */, + 92BC3F290BAEE55A000DAB7F /* menuwindow.h */, + 92BC3F2A0BAEE55A000DAB7F /* minimap.cpp */, + 92BC3F2B0BAEE55A000DAB7F /* minimap.h */, + 92BC3F2C0BAEE55A000DAB7F /* ministatus.cpp */, + 92BC3F2D0BAEE55A000DAB7F /* ministatus.h */, + 92BC3F2E0BAEE55A000DAB7F /* newskill.cpp */, + 92BC3F2F0BAEE55A000DAB7F /* newskill.h */, + 92BC3F300BAEE55A000DAB7F /* npc_text.cpp */, + 92BC3F310BAEE55A000DAB7F /* npc_text.h */, + 92BC3F320BAEE55A000DAB7F /* npclistdialog.cpp */, + 92BC3F330BAEE55A000DAB7F /* npclistdialog.h */, + 92BC3F340BAEE55A000DAB7F /* ok_dialog.cpp */, + 92BC3F350BAEE55A000DAB7F /* ok_dialog.h */, + 92BC3F360BAEE55A000DAB7F /* passwordfield.cpp */, + 92BC3F370BAEE55A000DAB7F /* passwordfield.h */, + 92BC3F380BAEE55A000DAB7F /* playerbox.cpp */, + 92BC3F390BAEE55A000DAB7F /* playerbox.h */, + 92BC3F3A0BAEE55A000DAB7F /* popupmenu.cpp */, + 92BC3F3B0BAEE55A000DAB7F /* popupmenu.h */, + 92BC3F3C0BAEE55A000DAB7F /* progressbar.cpp */, + 92BC3F3D0BAEE55A000DAB7F /* progressbar.h */, + 92BC3F3E0BAEE55A000DAB7F /* radiobutton.cpp */, + 92BC3F3F0BAEE55A000DAB7F /* radiobutton.h */, + 92BC3F400BAEE55A000DAB7F /* register.cpp */, + 92BC3F410BAEE55A000DAB7F /* register.h */, + 92BC3F420BAEE55A000DAB7F /* scrollarea.cpp */, + 92BC3F430BAEE55A000DAB7F /* scrollarea.h */, + 92BC3F450BAEE55A000DAB7F /* sell.cpp */, + 92BC3F460BAEE55A000DAB7F /* sell.h */, + 92BC3F470BAEE55A000DAB7F /* setup.cpp */, + 92BC3F480BAEE55A000DAB7F /* setup.h */, + 92BC3F490BAEE55A000DAB7F /* setup_audio.cpp */, + 92BC3F4A0BAEE55A000DAB7F /* setup_audio.h */, + 92BC3F4B0BAEE55A000DAB7F /* setup_joystick.cpp */, + 92BC3F4C0BAEE55A000DAB7F /* setup_joystick.h */, + 92BC3F4D0BAEE55A000DAB7F /* setup_video.cpp */, + 92BC3F4E0BAEE55A000DAB7F /* setup_video.h */, + 92BC3F4F0BAEE55A000DAB7F /* setuptab.h */, + 92BC3F500BAEE55A000DAB7F /* shop.cpp */, + 92BC3F510BAEE55A000DAB7F /* shop.h */, + 92BC3F520BAEE55A000DAB7F /* shoplistbox.cpp */, + 92BC3F530BAEE55A000DAB7F /* shoplistbox.h */, + 92BC3F540BAEE55A000DAB7F /* skill.cpp */, + 92BC3F550BAEE55A000DAB7F /* skill.h */, + 92BC3F560BAEE55A000DAB7F /* slider.cpp */, + 92BC3F570BAEE55A000DAB7F /* slider.h */, + 92BC3F580BAEE55A000DAB7F /* status.cpp */, + 92BC3F590BAEE55B000DAB7F /* status.h */, + 92BC3F5A0BAEE55B000DAB7F /* tabbedcontainer.cpp */, + 92BC3F5B0BAEE55B000DAB7F /* tabbedcontainer.h */, + 92BC3F5C0BAEE55B000DAB7F /* textbox.cpp */, + 92BC3F5D0BAEE55B000DAB7F /* textbox.h */, + 92BC3F5E0BAEE55B000DAB7F /* textfield.cpp */, + 92BC3F5F0BAEE55B000DAB7F /* textfield.h */, + 92BC3F600BAEE55B000DAB7F /* trade.cpp */, + 92BC3F610BAEE55B000DAB7F /* trade.h */, + 92BC3F620BAEE55B000DAB7F /* updatewindow.cpp */, + 92BC3F630BAEE55B000DAB7F /* updatewindow.h */, + 92BC3F640BAEE55B000DAB7F /* vbox.cpp */, + 92BC3F650BAEE55B000DAB7F /* vbox.h */, + 92BC3F660BAEE55B000DAB7F /* viewport.cpp */, + 92BC3F670BAEE55B000DAB7F /* viewport.h */, + 92BC3F680BAEE55B000DAB7F /* window.cpp */, + 92BC3F690BAEE55B000DAB7F /* window.h */, + 92BC3F6A0BAEE55B000DAB7F /* windowcontainer.cpp */, + 92BC3F6B0BAEE55B000DAB7F /* windowcontainer.h */, + ); + name = gui; + path = src/gui; + sourceTree = ""; + }; + 92BC3F800BAEE55B000DAB7F /* net */ = { + isa = PBXGroup; + children = ( + 92BC3F810BAEE55B000DAB7F /* beinghandler.cpp */, + 92BC3F820BAEE55B000DAB7F /* beinghandler.h */, + 92BC3F830BAEE55B000DAB7F /* buysellhandler.cpp */, + 92BC3F840BAEE55B000DAB7F /* buysellhandler.h */, + 92BC3F850BAEE55B000DAB7F /* charserverhandler.cpp */, + 92BC3F860BAEE55B000DAB7F /* charserverhandler.h */, + 92BC3F870BAEE55B000DAB7F /* chathandler.cpp */, + 92BC3F880BAEE55B000DAB7F /* chathandler.h */, + 92BC3F890BAEE55B000DAB7F /* equipmenthandler.cpp */, + 92BC3F8A0BAEE55B000DAB7F /* equipmenthandler.h */, + 92BC3F8B0BAEE55B000DAB7F /* inventoryhandler.cpp */, + 92BC3F8C0BAEE55B000DAB7F /* inventoryhandler.h */, + 92BC3F8D0BAEE55B000DAB7F /* itemhandler.cpp */, + 92BC3F8E0BAEE55B000DAB7F /* itemhandler.h */, + 92BC3F8F0BAEE55B000DAB7F /* loginhandler.cpp */, + 92BC3F900BAEE55B000DAB7F /* loginhandler.h */, + 92BC3F910BAEE55B000DAB7F /* maploginhandler.cpp */, + 92BC3F920BAEE55B000DAB7F /* maploginhandler.h */, + 92BC3F930BAEE55B000DAB7F /* messagehandler.cpp */, + 92BC3F940BAEE55B000DAB7F /* messagehandler.h */, + 92BC3F950BAEE55B000DAB7F /* messagein.cpp */, + 92BC3F960BAEE55B000DAB7F /* messagein.h */, + 92BC3F970BAEE55B000DAB7F /* messageout.cpp */, + 92BC3F980BAEE55B000DAB7F /* messageout.h */, + 92BC3F990BAEE55B000DAB7F /* network.cpp */, + 92BC3F9A0BAEE55B000DAB7F /* network.h */, + 92BC3F9B0BAEE55B000DAB7F /* npchandler.cpp */, + 92BC3F9C0BAEE55B000DAB7F /* npchandler.h */, + 92BC3F9D0BAEE55B000DAB7F /* playerhandler.cpp */, + 92BC3F9E0BAEE55B000DAB7F /* playerhandler.h */, + 92BC3F9F0BAEE55B000DAB7F /* protocol.cpp */, + 92BC3FA00BAEE55B000DAB7F /* protocol.h */, + 92BC3FA10BAEE55B000DAB7F /* skillhandler.cpp */, + 92BC3FA20BAEE55B000DAB7F /* skillhandler.h */, + 92BC3FA30BAEE55B000DAB7F /* tradehandler.cpp */, + 92BC3FA40BAEE55B000DAB7F /* tradehandler.h */, + ); + name = net; + path = src/net; + sourceTree = ""; + }; + 92BC3FA90BAEE55B000DAB7F /* physfs */ = { + isa = PBXGroup; + children = ( + 92A4CCFB0D1DA89800CA28FB /* physfs_unicode.c */, + 92A4CCF00D1DA5A800CA28FB /* physfs_casefolding.h */, + 92A4CCF10D1DA5A800CA28FB /* physfs_platforms.h */, + 92A4CCDF0D1DA58D00CA28FB /* archivers */, + 92BC3FAB0BAEE55B000DAB7F /* physfs.c */, + 92BC3FAC0BAEE55B000DAB7F /* physfs.h */, + 92BC3FAD0BAEE55B000DAB7F /* physfs_byteorder.c */, + 92BC3FAE0BAEE55B000DAB7F /* physfs_internal.h */, + 92BC3FAF0BAEE55B000DAB7F /* platform */, + ); + name = physfs; + path = src/physfs; + sourceTree = ""; + }; + 92BC3FAF0BAEE55B000DAB7F /* platform */ = { + isa = PBXGroup; + children = ( + 92A4CCF20D1DA5C600CA28FB /* macosx.c */, + 92BC3FB50BAEE55B000DAB7F /* posix.c */, + 92BC3FB70BAEE55B000DAB7F /* unix.c */, + ); + path = platform; + sourceTree = ""; + }; + 92BC3FBD0BAEE55B000DAB7F /* resources */ = { + isa = PBXGroup; + children = ( + 922CD9560E3D00900074C50E /* npcdb.cpp */, + 922CD9570E3D00900074C50E /* npcdb.h */, + 92FD19BD0DDCE56A00D14E5D /* dye.h */, + 92024E740CF1DCF6006B55CB /* imageloader.cpp */, + 92024E750CF1DCF6006B55CB /* imageloader.h */, + 925350010BC12A3200115FD5 /* imageset.cpp */, + 925350020BC12A3200115FD5 /* imageset.h */, + 92BC3FBE0BAEE55B000DAB7F /* action.cpp */, + 92BC3FBF0BAEE55B000DAB7F /* action.h */, + 92BC3FC00BAEE55B000DAB7F /* ambientoverlay.cpp */, + 92BC3FC10BAEE55B000DAB7F /* ambientoverlay.h */, + 92BC3FC20BAEE55B000DAB7F /* animation.cpp */, + 92BC3FC30BAEE55B000DAB7F /* animation.h */, + 92BC3FC40BAEE55B000DAB7F /* buddylist.cpp */, + 92BC3FC50BAEE55B000DAB7F /* buddylist.h */, + 92BC3FC90BAEE55B000DAB7F /* image.cpp */, + 92BC3FCA0BAEE55B000DAB7F /* image.h */, + 92BC3FCB0BAEE55B000DAB7F /* imagewriter.cpp */, + 92BC3FCC0BAEE55B000DAB7F /* imagewriter.h */, + 92BC3FCD0BAEE55B000DAB7F /* itemdb.cpp */, + 92BC3FCE0BAEE55B000DAB7F /* itemdb.h */, + 92BC3FCF0BAEE55B000DAB7F /* iteminfo.cpp */, + 92BC3FD00BAEE55B000DAB7F /* iteminfo.h */, + 92BC3FD10BAEE55B000DAB7F /* mapreader.cpp */, + 92BC3FD20BAEE55B000DAB7F /* mapreader.h */, + 92BC3FD30BAEE55B000DAB7F /* monsterdb.cpp */, + 92BC3FD40BAEE55B000DAB7F /* monsterdb.h */, + 92BC3FD50BAEE55B000DAB7F /* monsterinfo.cpp */, + 92BC3FD60BAEE55B000DAB7F /* monsterinfo.h */, + 92BC3FD70BAEE55B000DAB7F /* music.cpp */, + 92BC3FD80BAEE55B000DAB7F /* music.h */, + 92BC3FDB0BAEE55B000DAB7F /* resource.cpp */, + 92BC3FDC0BAEE55B000DAB7F /* resource.h */, + 92BC3FDD0BAEE55B000DAB7F /* resourcemanager.cpp */, + 92BC3FDE0BAEE55B000DAB7F /* resourcemanager.h */, + 92BC3FE10BAEE55B000DAB7F /* soundeffect.cpp */, + 92BC3FE20BAEE55B000DAB7F /* soundeffect.h */, + 92BC3FE30BAEE55B000DAB7F /* spritedef.cpp */, + 92BC3FE40BAEE55B000DAB7F /* spritedef.h */, + ); + name = resources; + path = src/resources; + sourceTree = ""; + }; + 92BC3FEE0BAEE55B000DAB7F /* utils */ = { + isa = PBXGroup; + children = ( + 92FD19BF0DDCE6F700D14E5D /* strprintf.cpp */, + 92FD19C00DDCE6F700D14E5D /* strprintf.h */, + 92024D400CF1BE22006B55CB /* fastsqrt.h */, + 92024D420CF1BE22006B55CB /* trim.h */, + 92BC3FEF0BAEE55B000DAB7F /* base64.cpp */, + 92BC3FF00BAEE55B000DAB7F /* base64.h */, + 92BC3FF10BAEE55B000DAB7F /* dtor.h */, + 92BC3FF20BAEE55B000DAB7F /* tostring.h */, + 92BC3FF40BAEE55B000DAB7F /* xml.cpp */, + 92BC3FF50BAEE55B000DAB7F /* xml.h */, + ); + name = utils; + path = src/utils; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + 8D0C4E890486CD37000505A6 /* themanaworld */ = { + isa = PBXNativeTarget; + buildConfigurationList = C0E91AC508A95435008D54AB /* Build configuration list for PBXNativeTarget "themanaworld" */; + buildPhases = ( + 8D0C4E8C0486CD37000505A6 /* Resources */, + 8D0C4E8F0486CD37000505A6 /* Sources */, + 8D0C4E910486CD37000505A6 /* Frameworks */, + 924A3A520C085C190066885E /* Copy Data Files */, + 924A3E540C085CAF0066885E /* Copy GUI Files */, + 924A40880C085FBD0066885E /* Copy Image Files */, + 924A42000C0861C70066885E /* Copy Help Files */, + 92EEA0090D2E20D100DDE300 /* Copy Frameworks */, + 920D9AE20DE09DCA003D7E61 /* Copy plist */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = themanaworld; + productInstallPath = "$(HOME)/Applications"; + productName = themanaworld; + productReference = 508344B209E5C41E0093A071 /* The Mana World.app */; + productType = "com.apple.product-type.application"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + 20286C28FDCF999611CA2CEA /* Project object */ = { + isa = PBXProject; + buildConfigurationList = C0E91AC908A95435008D54AB /* Build configuration list for PBXProject "themanaworld" */; + compatibilityVersion = "Xcode 2.4"; + hasScannedForEncodings = 1; + mainGroup = 20286C29FDCF999611CA2CEA /* themanaworld */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + 8D0C4E890486CD37000505A6 /* themanaworld */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 8D0C4E8C0486CD37000505A6 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 924A3E580C085E600066885E /* main.nib in Resources */, + 924A425A0C0871EC0066885E /* The Mana World.icns in Resources */, + 92A4CCFF0D1DA8E500CA28FB /* LICENSE.rtf in Resources */, + 92FD19A20DDCD60C00D14E5D /* InfoPlist.strings in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 8D0C4E8F0486CD37000505A6 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 92BC3FF60BAEE55B000DAB7F /* animatedsprite.cpp in Sources */, + 92BC3FF70BAEE55B000DAB7F /* being.cpp in Sources */, + 92BC3FF80BAEE55B000DAB7F /* beingmanager.cpp in Sources */, + 92BC3FFA0BAEE55B000DAB7F /* configuration.cpp in Sources */, + 92BC40020BAEE55B000DAB7F /* engine.cpp in Sources */, + 92BC40030BAEE55B000DAB7F /* equipment.cpp in Sources */, + 92BC40040BAEE55B000DAB7F /* floor_item.cpp in Sources */, + 92BC40050BAEE55B000DAB7F /* flooritemmanager.cpp in Sources */, + 92BC40060BAEE55B000DAB7F /* game.cpp in Sources */, + 92BC40070BAEE55B000DAB7F /* graphics.cpp in Sources */, + 92BC40080BAEE55B000DAB7F /* box.cpp in Sources */, + 92BC40090BAEE55B000DAB7F /* browserbox.cpp in Sources */, + 92BC400A0BAEE55B000DAB7F /* buddywindow.cpp in Sources */, + 92BC400B0BAEE55B000DAB7F /* button.cpp in Sources */, + 92BC400C0BAEE55B000DAB7F /* buy.cpp in Sources */, + 92BC400D0BAEE55B000DAB7F /* buysell.cpp in Sources */, + 92BC400E0BAEE55B000DAB7F /* char_select.cpp in Sources */, + 92BC400F0BAEE55B000DAB7F /* char_server.cpp in Sources */, + 92BC40100BAEE55B000DAB7F /* chargedialog.cpp in Sources */, + 92BC40110BAEE55B000DAB7F /* chat.cpp in Sources */, + 92BC40120BAEE55B000DAB7F /* chatinput.cpp in Sources */, + 92BC40130BAEE55B000DAB7F /* checkbox.cpp in Sources */, + 92BC40140BAEE55B000DAB7F /* confirm_dialog.cpp in Sources */, + 92BC40150BAEE55B000DAB7F /* connection.cpp in Sources */, + 92BC40160BAEE55B000DAB7F /* debugwindow.cpp in Sources */, + 92BC40170BAEE55B000DAB7F /* equipmentwindow.cpp in Sources */, + 92BC40180BAEE55B000DAB7F /* focushandler.cpp in Sources */, + 92BC40190BAEE55B000DAB7F /* gccontainer.cpp in Sources */, + 92BC401A0BAEE55B000DAB7F /* gui.cpp in Sources */, + 92BC401B0BAEE55B000DAB7F /* hbox.cpp in Sources */, + 92BC401C0BAEE55B000DAB7F /* help.cpp in Sources */, + 92BC401D0BAEE55B000DAB7F /* inttextbox.cpp in Sources */, + 92BC401E0BAEE55B000DAB7F /* inventorywindow.cpp in Sources */, + 92BC401F0BAEE55B000DAB7F /* item_amount.cpp in Sources */, + 92BC40200BAEE55B000DAB7F /* itemcontainer.cpp in Sources */, + 92BC40210BAEE55B000DAB7F /* listbox.cpp in Sources */, + 92BC40220BAEE55B000DAB7F /* login.cpp in Sources */, + 92BC40230BAEE55B000DAB7F /* menuwindow.cpp in Sources */, + 92BC40240BAEE55B000DAB7F /* minimap.cpp in Sources */, + 92BC40250BAEE55B000DAB7F /* ministatus.cpp in Sources */, + 92BC40260BAEE55B000DAB7F /* newskill.cpp in Sources */, + 92BC40270BAEE55B000DAB7F /* npc_text.cpp in Sources */, + 92BC40280BAEE55B000DAB7F /* npclistdialog.cpp in Sources */, + 92BC40290BAEE55B000DAB7F /* ok_dialog.cpp in Sources */, + 92BC402A0BAEE55B000DAB7F /* passwordfield.cpp in Sources */, + 92BC402B0BAEE55B000DAB7F /* playerbox.cpp in Sources */, + 92BC402C0BAEE55B000DAB7F /* popupmenu.cpp in Sources */, + 92BC402D0BAEE55B000DAB7F /* progressbar.cpp in Sources */, + 92BC402E0BAEE55B000DAB7F /* radiobutton.cpp in Sources */, + 92BC402F0BAEE55B000DAB7F /* register.cpp in Sources */, + 92BC40300BAEE55B000DAB7F /* scrollarea.cpp in Sources */, + 92BC40310BAEE55B000DAB7F /* sell.cpp in Sources */, + 92BC40320BAEE55B000DAB7F /* setup.cpp in Sources */, + 92BC40330BAEE55B000DAB7F /* setup_audio.cpp in Sources */, + 92BC40340BAEE55B000DAB7F /* setup_joystick.cpp in Sources */, + 92BC40350BAEE55B000DAB7F /* setup_video.cpp in Sources */, + 92BC40360BAEE55B000DAB7F /* shop.cpp in Sources */, + 92BC40370BAEE55B000DAB7F /* shoplistbox.cpp in Sources */, + 92BC40380BAEE55B000DAB7F /* skill.cpp in Sources */, + 92BC40390BAEE55B000DAB7F /* slider.cpp in Sources */, + 92BC403A0BAEE55B000DAB7F /* status.cpp in Sources */, + 92BC403B0BAEE55B000DAB7F /* tabbedcontainer.cpp in Sources */, + 92BC403C0BAEE55B000DAB7F /* textbox.cpp in Sources */, + 92BC403D0BAEE55B000DAB7F /* textfield.cpp in Sources */, + 92BC403E0BAEE55B000DAB7F /* trade.cpp in Sources */, + 92BC403F0BAEE55B000DAB7F /* updatewindow.cpp in Sources */, + 92BC40400BAEE55B000DAB7F /* vbox.cpp in Sources */, + 92BC40410BAEE55B000DAB7F /* viewport.cpp in Sources */, + 92BC40420BAEE55B000DAB7F /* window.cpp in Sources */, + 92BC40430BAEE55B000DAB7F /* windowcontainer.cpp in Sources */, + 92BC40440BAEE55B000DAB7F /* inventory.cpp in Sources */, + 92BC40450BAEE55B000DAB7F /* item.cpp in Sources */, + 92BC40460BAEE55B000DAB7F /* joystick.cpp in Sources */, + 92BC40470BAEE55B000DAB7F /* localplayer.cpp in Sources */, + 92BC40480BAEE55B000DAB7F /* log.cpp in Sources */, + 92BC40490BAEE55B000DAB7F /* main.cpp in Sources */, + 92BC404B0BAEE55B000DAB7F /* map.cpp in Sources */, + 92BC404C0BAEE55B000DAB7F /* monster.cpp in Sources */, + 92BC404D0BAEE55B000DAB7F /* beinghandler.cpp in Sources */, + 92BC404E0BAEE55B000DAB7F /* buysellhandler.cpp in Sources */, + 92BC404F0BAEE55B000DAB7F /* charserverhandler.cpp in Sources */, + 92BC40500BAEE55B000DAB7F /* chathandler.cpp in Sources */, + 92BC40510BAEE55B000DAB7F /* equipmenthandler.cpp in Sources */, + 92BC40520BAEE55B000DAB7F /* inventoryhandler.cpp in Sources */, + 92BC40530BAEE55B000DAB7F /* itemhandler.cpp in Sources */, + 92BC40540BAEE55B000DAB7F /* loginhandler.cpp in Sources */, + 92BC40550BAEE55B000DAB7F /* maploginhandler.cpp in Sources */, + 92BC40560BAEE55B000DAB7F /* messagehandler.cpp in Sources */, + 92BC40570BAEE55B000DAB7F /* messagein.cpp in Sources */, + 92BC40580BAEE55B000DAB7F /* messageout.cpp in Sources */, + 92BC40590BAEE55B000DAB7F /* network.cpp in Sources */, + 92BC405A0BAEE55B000DAB7F /* npchandler.cpp in Sources */, + 92BC405B0BAEE55B000DAB7F /* playerhandler.cpp in Sources */, + 92BC405C0BAEE55B000DAB7F /* protocol.cpp in Sources */, + 92BC405D0BAEE55B000DAB7F /* skillhandler.cpp in Sources */, + 92BC405E0BAEE55B000DAB7F /* tradehandler.cpp in Sources */, + 92BC405F0BAEE55B000DAB7F /* npc.cpp in Sources */, + 92BC40600BAEE55B000DAB7F /* openglgraphics.cpp in Sources */, + 92BC406E0BAEE55B000DAB7F /* player.cpp in Sources */, + 92BC406F0BAEE55B000DAB7F /* action.cpp in Sources */, + 92BC40700BAEE55B000DAB7F /* ambientoverlay.cpp in Sources */, + 92BC40710BAEE55B000DAB7F /* animation.cpp in Sources */, + 92BC40720BAEE55B000DAB7F /* buddylist.cpp in Sources */, + 92BC40740BAEE55B000DAB7F /* image.cpp in Sources */, + 92BC40750BAEE55B000DAB7F /* imagewriter.cpp in Sources */, + 92BC40760BAEE55B000DAB7F /* itemdb.cpp in Sources */, + 92BC40770BAEE55B000DAB7F /* iteminfo.cpp in Sources */, + 92BC40780BAEE55B000DAB7F /* mapreader.cpp in Sources */, + 92BC40790BAEE55B000DAB7F /* monsterdb.cpp in Sources */, + 92BC407A0BAEE55B000DAB7F /* monsterinfo.cpp in Sources */, + 92BC407B0BAEE55B000DAB7F /* music.cpp in Sources */, + 92BC407D0BAEE55B000DAB7F /* resource.cpp in Sources */, + 92BC407E0BAEE55B000DAB7F /* resourcemanager.cpp in Sources */, + 92BC40800BAEE55B000DAB7F /* soundeffect.cpp in Sources */, + 92BC40810BAEE55B000DAB7F /* spritedef.cpp in Sources */, + 92BC40830BAEE55B000DAB7F /* simpleanimation.cpp in Sources */, + 92BC40840BAEE55B000DAB7F /* sound.cpp in Sources */, + 92BC40850BAEE55B000DAB7F /* base64.cpp in Sources */, + 92BC40860BAEE55B000DAB7F /* xml.cpp in Sources */, + 92BC40E60BAEF54B000DAB7F /* SDLMain.m in Sources */, + 925350030BC12A3200115FD5 /* imageset.cpp in Sources */, + 924A39F20C0784280066885E /* animationparticle.cpp in Sources */, + 924A39F30C0784280066885E /* imageparticle.cpp in Sources */, + 924A39F40C0784280066885E /* particle.cpp in Sources */, + 924A39F50C0784280066885E /* particleemitter.cpp in Sources */, + 924A39F60C0784280066885E /* textparticle.cpp in Sources */, + 924A3A120C07A60B0066885E /* resizegrip.cpp in Sources */, + 9294DA9B0C17E70400FCEDE9 /* physfs.c in Sources */, + 9294DA9C0C17E70600FCEDE9 /* physfs_byteorder.c in Sources */, + 92024D2F0CF1BD9E006B55CB /* keyboardconfig.cpp in Sources */, + 92024D3D0CF1BDF7006B55CB /* setup_keyboard.cpp in Sources */, + 92024E760CF1DCF6006B55CB /* imageloader.cpp in Sources */, + 92A4CC9E0D1C622E00CA28FB /* dye.cpp in Sources */, + 92A4CCE80D1DA58D00CA28FB /* dir.c in Sources */, + 92A4CCE90D1DA58D00CA28FB /* grp.c in Sources */, + 92A4CCEA0D1DA58D00CA28FB /* hog.c in Sources */, + 92A4CCEB0D1DA58D00CA28FB /* lzma.c in Sources */, + 92A4CCEC0D1DA58D00CA28FB /* mvl.c in Sources */, + 92A4CCED0D1DA58D00CA28FB /* qpak.c in Sources */, + 92A4CCEE0D1DA58D00CA28FB /* wad.c in Sources */, + 92A4CCEF0D1DA58D00CA28FB /* zip.c in Sources */, + 92A4CCF30D1DA5C600CA28FB /* macosx.c in Sources */, + 92A4CCF90D1DA81A00CA28FB /* posix.c in Sources */, + 92A4CCFC0D1DA89800CA28FB /* physfs_unicode.c in Sources */, + 926F9CF80DB005FA00AACD26 /* itemshortcut.cpp in Sources */, + 926F9D450DB00AFC00AACD26 /* itemshortcutcontainer.cpp in Sources */, + 926F9D460DB00AFC00AACD26 /* itemshortcutwindow.cpp in Sources */, + 92FD19B00DDCE51000D14E5D /* player_relations.cpp in Sources */, + 92FD19BA0DDCE53400D14E5D /* setup_players.cpp in Sources */, + 92FD19BB0DDCE53400D14E5D /* table.cpp in Sources */, + 92FD19BC0DDCE53400D14E5D /* table_model.cpp in Sources */, + 92FD19C10DDCE6F700D14E5D /* strprintf.cpp in Sources */, + 922CD9580E3D00900074C50E /* npcdb.cpp in Sources */, + 922CD95F0E3D01080074C50E /* shopitem.cpp in Sources */, + 92037A1F0ED2037300D3712D /* text.cpp in Sources */, + 92037A200ED2037300D3712D /* textmanager.cpp in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXVariantGroup section */ + 02345980000FD03B11CA0E72 /* main.nib */ = { + isa = PBXVariantGroup; + children = ( + 1870340FFE93FCAF11CA0CD7 /* English */, + ); + name = main.nib; + sourceTree = ""; + }; + 92FD19A00DDCD60C00D14E5D /* InfoPlist.strings */ = { + isa = PBXVariantGroup; + children = ( + 92FD19A10DDCD60C00D14E5D /* English */, + ); + name = InfoPlist.strings; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + C0E91AC608A95435008D54AB /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(FRAMEWORK_SEARCH_PATHS_QUOTED_1)", + "$(FRAMEWORK_SEARCH_PATHS_QUOTED_2)", + "$(FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", + ); + FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)\""; + GCC_DEBUGGING_SYMBOLS = full; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + PHYSFS_SUPPORTS_ZIP, + USE_OPENGL, + __PHYSFS_CARBONIZED__, + ); + GCC_VERSION_ppc = 3.3; + HEADER_SEARCH_PATHS = ( + /Library/Frameworks/SDL_net.framework/Headers, + /Library/Frameworks/SDL_image.framework/Headers, + /Library/Frameworks/SDL_mixer.framework/Headers, + /Library/Frameworks/guichan.framework/Headers, + /Library/Frameworks/libpng.framework/Headers, + /usr/include/libxml2, + /Library/Frameworks/SDL.framework/Headers, + ); + LIBRARY_SEARCH_PATHS = /usr/lib; + MACOSX_DEPLOYMENT_TARGET = ""; + OTHER_LDFLAGS = ( + "-lxml2", + "-lcurl", + ); + PREBINDING = NO; + PRODUCT_NAME = "The Mana World"; + USER_HEADER_SEARCH_PATHS = src; + ZERO_LINK = NO; + }; + name = Debug; + }; + C0E91AC708A95435008D54AB /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + DEAD_CODE_STRIPPING = YES; + DEBUG_INFORMATION_FORMAT = dwarf; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(FRAMEWORK_SEARCH_PATHS_QUOTED_1)", + "$(FRAMEWORK_SEARCH_PATHS_QUOTED_2)", + "$(FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1)", + ); + FRAMEWORK_SEARCH_PATHS_QUOTED_1 = "\"/System/Library/Frameworks\""; + FRAMEWORK_SEARCH_PATHS_QUOTED_FOR_TARGET_1 = "\"$(SRCROOT)\""; + GCC_GENERATE_DEBUGGING_SYMBOLS = NO; + GCC_OPTIMIZATION_LEVEL = 2; + GCC_PREPROCESSOR_DEFINITIONS = ( + PHYSFS_SUPPORTS_ZIP, + USE_OPENGL, + __PHYSFS_CARBONIZED__, + ); + GCC_VERSION_i386 = 4.0; + GCC_VERSION_ppc = 3.3; + GCC_WARN_EFFECTIVE_CPLUSPLUS_VIOLATIONS = NO; + HEADER_SEARCH_PATHS = ( + /Library/Frameworks/SDL_net.framework/Headers, + /Library/Frameworks/SDL_image.framework/Headers, + /Library/Frameworks/SDL_mixer.framework/Headers, + guichan.framework/Headers, + /Library/Frameworks/libpng.framework/Headers, + /usr/include/libxml2, + /Library/Frameworks/SDL.framework/Headers, + ); + INSTALL_PATH = "$(HOME)/Applications"; + LIBRARY_SEARCH_PATHS = /usr/lib; + MACOSX_DEPLOYMENT_TARGET = 10.3; + MACOSX_DEPLOYMENT_TARGET_i386 = 10.4; + MACOSX_DEPLOYMENT_TARGET_ppc = 10.3; + OTHER_LDFLAGS = ( + "-lxml2", + "-lcurl", + "-lz", + ); + PREBINDING = NO; + PRECOMPS_INCLUDE_HEADERS_FROM_BUILT_PRODUCTS_DIR = NO; + PRESERVE_DEAD_CODE_INITS_AND_TERMS = YES; + PRODUCT_NAME = "The Mana World"; + SDKROOT = /Developer/SDKs/MacOSX10.3.9.sdk; + SDKROOT_i386 = /Developer/SDKs/MacOSX10.4u.sdk; + SDKROOT_ppc = /Developer/SDKs/MacOSX10.3.9.sdk; + USER_HEADER_SEARCH_PATHS = src; + }; + name = Release; + }; + C0E91ACA08A95435008D54AB /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + DEBUG_INFORMATION_FORMAT = dwarf; + GCC_ENABLE_FIX_AND_CONTINUE = YES; + GCC_OPTIMIZATION_LEVEL = 0; + SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk; + ZERO_LINK = YES; + }; + name = Debug; + }; + C0E91ACB08A95435008D54AB /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ARCHS = ( + ppc, + i386, + ); + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + GCC_PREPROCESSOR_DEFINITIONS = PHYSFS_SUPPORTS_ZIP; + SDKROOT = /Developer/SDKs/MacOSX10.4u.sdk; + SEPARATE_STRIP = YES; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + C0E91AC508A95435008D54AB /* Build configuration list for PBXNativeTarget "themanaworld" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + C0E91AC608A95435008D54AB /* Debug */, + C0E91AC708A95435008D54AB /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + C0E91AC908A95435008D54AB /* Build configuration list for PBXProject "themanaworld" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + C0E91ACA08A95435008D54AB /* Debug */, + C0E91ACB08A95435008D54AB /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = 20286C28FDCF999611CA2CEA /* Project object */; +} -- cgit v1.2.3-60-g2f50 From 0ee94c03f57b82de14c7c1fea182bee9c80ae765 Mon Sep 17 00:00:00 2001 From: Bjørn Lindeijer Date: Thu, 20 Nov 2008 22:31:44 +0100 Subject: Removed a duplicated include --- src/engine.cpp | 1 - 1 file changed, 1 deletion(-) (limited to 'src') diff --git a/src/engine.cpp b/src/engine.cpp index b1458cb4..2edc6550 100644 --- a/src/engine.cpp +++ b/src/engine.cpp @@ -29,7 +29,6 @@ #include "flooritemmanager.h" #include "game.h" #include "graphics.h" -#include "main.h" #include "localplayer.h" #include "log.h" #include "main.h" -- cgit v1.2.3-60-g2f50 From 6b6f41466f548f4ab25e7d1fc7701de1b8f2dca9 Mon Sep 17 00:00:00 2001 From: Bjørn Lindeijer Date: Fri, 21 Nov 2008 23:01:33 +0100 Subject: Center large minimaps on player Based on a patch by QOAL. --- src/gui/minimap.cpp | 34 +++++++++++++++++++--------------- 1 file changed, 19 insertions(+), 15 deletions(-) (limited to 'src') diff --git a/src/gui/minimap.cpp b/src/gui/minimap.cpp index ef1e9544..f07cb417 100644 --- a/src/gui/minimap.cpp +++ b/src/gui/minimap.cpp @@ -40,42 +40,47 @@ Minimap::Minimap(): Minimap::~Minimap() { if (mMapImage) - { mMapImage->decRef(); - } } void Minimap::setMapImage(Image *img) { if (mMapImage) - { mMapImage->decRef(); - } mMapImage = img; if (mMapImage) - { mMapImage->setAlpha(0.7); - } } void Minimap::draw(gcn::Graphics *graphics) { Window::draw(graphics); - if (mMapImage != NULL) + const gcn::Rectangle a = getChildrenArea(); + + int mapOriginX = a.x; + int mapOriginY = a.y; + + if (mMapImage) { + if (mMapImage->getWidth() > a.width || + mMapImage->getHeight() > a.height) + { + mapOriginX += (a.width - player_node->mX) / 2; + mapOriginY += (a.height - player_node->mY) / 2; + } static_cast(graphics)-> - drawImage(mMapImage, getPadding(), getTitleBarHeight()); + drawImage(mMapImage, mapOriginX, mapOriginY); } - Beings &beings = beingManager->getAll(); - BeingIterator bi; + const Beings &beings = beingManager->getAll(); + Beings::const_iterator bi; for (bi = beings.begin(); bi != beings.end(); bi++) { - Being *being = (*bi); + const Being *being = (*bi); int dotSize = 2; switch (being->getType()) { @@ -101,11 +106,10 @@ void Minimap::draw(gcn::Graphics *graphics) continue; } - int offset = (dotSize - 1) / 2; - + const int offset = (dotSize - 1) / 2; graphics->fillRectangle(gcn::Rectangle( - being->mX / 2 + getPadding() - offset, - being->mY / 2 + getTitleBarHeight() - offset, + being->mX / 2 + mapOriginX - offset, + being->mY / 2 + mapOriginY - offset, dotSize, dotSize)); } } -- cgit v1.2.3-60-g2f50 From 991389a535985af072f830b89e5113da82650fe5 Mon Sep 17 00:00:00 2001 From: Nikos Giagtzoglou Date: Sat, 22 Nov 2008 11:43:53 +0100 Subject: Inventory window now displays amount of slots used Patch by Nikos, with some improvements by vargavind. --- NEWS | 1 + src/gui/inventorywindow.cpp | 19 +++++++++++++++---- src/gui/inventorywindow.h | 1 + src/inventory.cpp | 11 ++++++++--- src/inventory.h | 11 ++++++++--- 5 files changed, 33 insertions(+), 10 deletions(-) (limited to 'src') diff --git a/NEWS b/NEWS index e2df4964..c93575b5 100644 --- a/NEWS +++ b/NEWS @@ -4,6 +4,7 @@ - Added --data parameter for developers - Added particle effect for critical hits - Added support for dynamic skill names and hair colors +- Inventory window now displays amount of slots used - Center minimap on player when it is larger than the minimap window - Extended particle emitters with properties that can change over time - Extended the GUI font to support more characters diff --git a/src/gui/inventorywindow.cpp b/src/gui/inventorywindow.cpp index d01a2112..6a5a8b37 100644 --- a/src/gui/inventorywindow.cpp +++ b/src/gui/inventorywindow.cpp @@ -24,11 +24,11 @@ #include #include - #include #include "button.h" #include "gui.h" +#include "inventory.h" #include "item_amount.h" #include "itemcontainer.h" #include "scrollarea.h" @@ -64,10 +64,13 @@ InventoryWindow::InventoryWindow(): mItemNameLabel = new gcn::Label("Name:"); mItemDescriptionLabel = new gcn::Label("Description:"); mItemEffectLabel = new gcn::Label("Effect:"); - mWeightLabel = new gcn::Label("Total Weight: - Maximum Weight: "); + mWeightLabel = new gcn::Label("Weight:"); mWeightLabel->setPosition(8, 8); mInvenScroll->setPosition(8, mWeightLabel->getY() + mWeightLabel->getHeight() + 5); + mInvenSlotLabel = new gcn::Label("Slots used:"); + mInvenSlotLabel->setPosition(mWeightLabel->getX() + + mWeightLabel->getWidth() + 100, 8); add(mUseButton); add(mDropButton); @@ -76,6 +79,7 @@ InventoryWindow::InventoryWindow(): add(mItemDescriptionLabel); add(mItemEffectLabel); add(mWeightLabel); + add(mInvenSlotLabel); mUseButton->setSize(60, mUseButton->getHeight()); @@ -92,8 +96,14 @@ void InventoryWindow::logic() // Update weight information mWeightLabel->setCaption( - "Total Weight: " + toString(player_node->mTotalWeight) + " - " - "Maximum Weight: " + toString(player_node->mMaxWeight)); + "Weight: " + toString(player_node->mTotalWeight) + + "/" + toString(player_node->mMaxWeight)); + + // Update number of items in inventory + mInvenSlotLabel->setCaption( + "Slots used: " + + toString(player_node->getInventory()->getNumberOfSlotsUsed()) + + "/" + toString(player_node->getInventory()->getInventorySize())); } void InventoryWindow::action(const gcn::ActionEvent &event) @@ -201,6 +211,7 @@ void InventoryWindow::widgetResized(const gcn::Event &event) mItemDescriptionLabel->getY() - mWeightLabel->getHeight() - 18); mWeightLabel->setWidth(width - 16); + mInvenSlotLabel->setWidth(width - 16); } void InventoryWindow::updateButtons() diff --git a/src/gui/inventorywindow.h b/src/gui/inventorywindow.h index 0b208bbb..b1e3ede3 100644 --- a/src/gui/inventorywindow.h +++ b/src/gui/inventorywindow.h @@ -84,6 +84,7 @@ class InventoryWindow : public Window, gcn::ActionListener, gcn::Label *mItemDescriptionLabel; gcn::Label *mItemEffectLabel; gcn::Label *mWeightLabel; + gcn::Label *mInvenSlotLabel; }; extern InventoryWindow *inventoryWindow; diff --git a/src/inventory.cpp b/src/inventory.cpp index 5633f430..938d23d3 100644 --- a/src/inventory.cpp +++ b/src/inventory.cpp @@ -132,19 +132,19 @@ bool Inventory::contains(Item *item) const return false; } -int Inventory::getFreeSlot() +int Inventory::getFreeSlot() const { Item **i = std::find_if(mItems + 2, mItems + INVENTORY_SIZE, std::not1(SlotUsed())); return (i == mItems + INVENTORY_SIZE) ? -1 : (i - mItems); } -int Inventory::getNumberOfSlotsUsed() +int Inventory::getNumberOfSlotsUsed() const { return count_if(mItems, mItems + INVENTORY_SIZE, SlotUsed()); } -int Inventory::getLastUsedSlot() +int Inventory::getLastUsedSlot() const { for (int i = INVENTORY_SIZE - 1; i >= 0; i--) { if (SlotUsed()(mItems[i])) { @@ -154,3 +154,8 @@ int Inventory::getLastUsedSlot() return -1; } + +int Inventory::getInventorySize() const +{ + return INVENTORY_SIZE - 2; +} diff --git a/src/inventory.h b/src/inventory.h index aa5c8d1d..2fbbbf4c 100644 --- a/src/inventory.h +++ b/src/inventory.h @@ -80,7 +80,7 @@ class Inventory /** * Returns id of next free slot or -1 if all occupied. */ - int getFreeSlot(); + int getFreeSlot() const; /** * Reset all item slots. @@ -90,12 +90,17 @@ class Inventory /** * Get the number of slots filled with an item */ - int getNumberOfSlotsUsed(); + int getNumberOfSlotsUsed() const; /** * Returns the index of the last occupied slot or 0 if none occupied. */ - int getLastUsedSlot(); + int getLastUsedSlot() const; + + /** + * Returns the number of slots available in the inventory. + */ + int getInventorySize() const; protected: Item **mItems; /**< The holder of items */ -- cgit v1.2.3-60-g2f50 From f7179cdca447c534029bb36a776595bbe3fc999e Mon Sep 17 00:00:00 2001 From: David Athay Date: Sat, 22 Nov 2008 11:50:17 +0000 Subject: Added custom nib for Cmd-Q on OSX --- English.lproj/SDLMain.nib/classes.nib | 8 + English.lproj/SDLMain.nib/info.nib | 20 +++ English.lproj/SDLMain.nib/objects.xib | 77 ++++++++++ Info.plist | 2 +- SDLMain.nib/classes.nib | 8 + SDLMain.nib/info.nib | 20 +++ SDLMain.nib/objects.xib | 80 ++++++++++ src/SDLMain.m | 257 ++++++++++++++++++++++---------- themanaworld.xcodeproj/garfield.mode1v3 | 23 +-- themanaworld.xcodeproj/garfield.pbxuser | 169 +++++++++++++-------- themanaworld.xcodeproj/project.pbxproj | 15 -- 11 files changed, 513 insertions(+), 166 deletions(-) create mode 100644 English.lproj/SDLMain.nib/classes.nib create mode 100644 English.lproj/SDLMain.nib/info.nib create mode 100644 English.lproj/SDLMain.nib/objects.xib create mode 100644 SDLMain.nib/classes.nib create mode 100644 SDLMain.nib/info.nib create mode 100644 SDLMain.nib/objects.xib (limited to 'src') diff --git a/English.lproj/SDLMain.nib/classes.nib b/English.lproj/SDLMain.nib/classes.nib new file mode 100644 index 00000000..c4b887e7 --- /dev/null +++ b/English.lproj/SDLMain.nib/classes.nib @@ -0,0 +1,8 @@ + + + + + IBVersion + 1 + + diff --git a/English.lproj/SDLMain.nib/info.nib b/English.lproj/SDLMain.nib/info.nib new file mode 100644 index 00000000..0411a4a5 --- /dev/null +++ b/English.lproj/SDLMain.nib/info.nib @@ -0,0 +1,20 @@ + + + + + IBFramework Version + 670 + IBLastKnownRelativeProjectPath + ../themanaworld.xcodeproj + IBOldestOS + 5 + IBOpenObjects + + 29 + + IBSystem Version + 9F33 + targetFramework + IBCarbonFramework + + diff --git a/English.lproj/SDLMain.nib/objects.xib b/English.lproj/SDLMain.nib/objects.xib new file mode 100644 index 00000000..6d0c83db --- /dev/null +++ b/English.lproj/SDLMain.nib/objects.xib @@ -0,0 +1,77 @@ + + + + + + + Quit + q + TRUE + quit + + + FALSE + TRUE + TRUE + FALSE + Window + + 0 0 480 360 + 0 0 360 480 + + 204 300 564 780 + 0 0 768 1024 + + + themanaworld + _NSAppleMenu + + + About themanaworld + 0 + abou + + + TRUE + TRUE + TRUE + + + + + + + main + _NSMainMenu + + + themanaworld + + + + + + + + + + + + + + + + + + + + File's Owner + + MainWindow + + MenuBar + + + IBCarbonFramework + 231 + diff --git a/Info.plist b/Info.plist index 8699a8ae..36084dd8 100644 --- a/Info.plist +++ b/Info.plist @@ -21,7 +21,7 @@ NSHumanReadableCopyright Copyright 2008 The Mana World Development Team NSMainNibFile - main + SDLMain NSPrincipalClass NSApplication NSPrincipleClass diff --git a/SDLMain.nib/classes.nib b/SDLMain.nib/classes.nib new file mode 100644 index 00000000..c4b887e7 --- /dev/null +++ b/SDLMain.nib/classes.nib @@ -0,0 +1,8 @@ + + + + + IBVersion + 1 + + diff --git a/SDLMain.nib/info.nib b/SDLMain.nib/info.nib new file mode 100644 index 00000000..a753dd52 --- /dev/null +++ b/SDLMain.nib/info.nib @@ -0,0 +1,20 @@ + + + + + IBFramework Version + 670 + IBLastKnownRelativeProjectPath + themanaworld.xcodeproj + IBOldestOS + 5 + IBOpenObjects + + 29 + + IBSystem Version + 9F33 + targetFramework + IBCarbonFramework + + diff --git a/SDLMain.nib/objects.xib b/SDLMain.nib/objects.xib new file mode 100644 index 00000000..f4adb409 --- /dev/null +++ b/SDLMain.nib/objects.xib @@ -0,0 +1,80 @@ + + + + + + + themanaworld + _NSAppleMenu + + + About themanaworld + 0 + abou + + + TRUE + TRUE + TRUE + + + Quit + q + TRUE + quit + + + + + FALSE + FALSE + FALSE + FALSE + FALSE + TRUE + FALSE + Window + + 0 0 800 600 + 0 0 600 800 + + 154 408 754 1208 + 64 0 1028 1680 + + + The Mana World + + + + + + main + _NSMainMenu + + + + + + + + + + + + + + + + + + + File's Owner + + MainWindow + + MenuBar + + + IBCarbonFramework + 231 + diff --git a/src/SDLMain.m b/src/SDLMain.m index 19694b5f..3d02719c 100755 --- a/src/SDLMain.m +++ b/src/SDLMain.m @@ -1,33 +1,67 @@ /* SDLMain.m - main entry point for our Cocoa-ized SDL app - Initial Version: Darrell Walisser - Non-NIB-Code & other changes: Max Horn - - Feel free to customize this file to suit your needs -*/ + Initial Version: Darrell Walisser + Non-NIB-Code & other changes: Max Horn + + Feel free to customize this file to suit your needs + */ #import "SDL.h" #import "SDLMain.h" #import /* for MAXPATHLEN */ #import +/* For some reaon, Apple removed setAppleMenu from the headers in 10.4, + but the method still is there and works. To avoid warnings, we declare + it ourselves here. */ +@interface NSApplication(SDL_Missing_Methods) +- (void)setAppleMenu:(NSMenu *)menu; +@end + /* Use this flag to determine whether we use SDLMain.nib or not */ #define SDL_USE_NIB_FILE 0 +/* Use this flag to determine whether we use CPS (docking) or not */ +#define SDL_USE_CPS 1 +#ifdef SDL_USE_CPS +/* Portions of CPS.h */ +typedef struct CPSProcessSerNum + { + UInt32 lo; + UInt32 hi; + } CPSProcessSerNum; + +extern OSErr CPSGetCurrentProcess( CPSProcessSerNum *psn); +extern OSErr CPSEnableForegroundOperation( CPSProcessSerNum *psn, UInt32 _arg2, UInt32 _arg3, UInt32 _arg4, UInt32 _arg5); +extern OSErr CPSSetFrontProcess( CPSProcessSerNum *psn); + +#endif /* SDL_USE_CPS */ static int gArgc; static char **gArgv; static BOOL gFinderLaunch; +static BOOL gCalledAppMainline = FALSE; + +static NSString *getApplicationName(void) +{ + NSDictionary *dict; + NSString *appName = 0; + + /* Determine the application name */ + dict = (NSDictionary *)CFBundleGetInfoDictionary(CFBundleGetMainBundle()); + if (dict) + appName = [dict objectForKey: @"CFBundleName"]; + + if (![appName length]) + appName = [[NSProcessInfo processInfo] processName]; + + return appName; +} #if SDL_USE_NIB_FILE /* A helper category for NSString */ @interface NSString (ReplaceSubString) - (NSString *)stringByReplacingRange:(NSRange)aRange with:(NSString *)aString; @end -#else -/* An internal Apple class used to setup Apple menus */ -@interface NSAppleMenuController:NSObject {} -- (void)controlMenu:(NSMenu *)aMenu; -@end #endif @interface SDLApplication : NSApplication @@ -44,32 +78,24 @@ static BOOL gFinderLaunch; } @end - /* The main class of the application, the application's delegate */ @implementation SDLMain /* Set the working directory to the .app's parent directory */ - (void) setupWorkingDirectory:(BOOL)shouldChdir { - char parentdir[MAXPATHLEN]; - char *c; - - strncpy ( parentdir, gArgv[0], sizeof(parentdir) ); - c = (char*) parentdir; - - while (*c != '\0') /* go to end */ - c++; - - while (*c != '/') /* back up to parent */ - c--; - - *c++ = '\0'; /* cut off last part (binary name) */ - if (shouldChdir) { - assert ( chdir (parentdir) == 0 ); /* chdir to the binary app's parent */ - assert ( chdir ("../../../") == 0 ); /* chdir to the .app's parent */ - } + char parentdir[MAXPATHLEN]; + CFURLRef url = CFBundleCopyBundleURL(CFBundleGetMainBundle()); + CFURLRef url2 = CFURLCreateCopyDeletingLastPathComponent(0, url); + if (CFURLGetFileSystemRepresentation(url2, true, (UInt8 *)parentdir, MAXPATHLEN)) { + assert ( chdir (parentdir) == 0 ); /* chdir to the binary app's parent */ + } + CFRelease(url); + CFRelease(url2); + } + } #if SDL_USE_NIB_FILE @@ -80,11 +106,11 @@ static BOOL gFinderLaunch; NSRange aRange; NSEnumerator *enumerator; NSMenuItem *menuItem; - + aRange = [[aMenu title] rangeOfString:@"SDL App"]; if (aRange.length != 0) [aMenu setTitle: [[aMenu title] stringByReplacingRange:aRange with:appName]]; - + enumerator = [[aMenu itemArray] objectEnumerator]; while ((menuItem = [enumerator nextObject])) { @@ -99,39 +125,57 @@ static BOOL gFinderLaunch; #else -void setupAppleMenu(void) +static void setApplicationMenu(void) { /* warning: this code is very odd */ - NSAppleMenuController *appleMenuController; NSMenu *appleMenu; - NSMenuItem *appleMenuItem; - - appleMenuController = [[NSAppleMenuController alloc] init]; + NSMenuItem *menuItem; + NSString *title; + NSString *appName; + + appName = getApplicationName(); appleMenu = [[NSMenu alloc] initWithTitle:@""]; - appleMenuItem = [[NSMenuItem alloc] initWithTitle:@"" action:nil keyEquivalent:@""]; - - [appleMenuItem setSubmenu:appleMenu]; - - /* yes, we do need to add it and then remove it -- - if you don't add it, it doesn't get displayed - if you don't remove it, you have an extra, titleless item in the menubar - when you remove it, it appears to stick around - very, very odd */ - [[NSApp mainMenu] addItem:appleMenuItem]; - [appleMenuController controlMenu:appleMenu]; - [[NSApp mainMenu] removeItem:appleMenuItem]; + + /* Add menu items */ + title = [@"About " stringByAppendingString:appName]; + [appleMenu addItemWithTitle:title action:@selector(orderFrontStandardAboutPanel:) keyEquivalent:@""]; + + [appleMenu addItem:[NSMenuItem separatorItem]]; + + title = [@"Hide " stringByAppendingString:appName]; + [appleMenu addItemWithTitle:title action:@selector(hide:) keyEquivalent:@"h"]; + + menuItem = (NSMenuItem *)[appleMenu addItemWithTitle:@"Hide Others" action:@selector(hideOtherApplications:) keyEquivalent:@"h"]; + [menuItem setKeyEquivalentModifierMask:(NSAlternateKeyMask|NSCommandKeyMask)]; + + [appleMenu addItemWithTitle:@"Show All" action:@selector(unhideAllApplications:) keyEquivalent:@""]; + + [appleMenu addItem:[NSMenuItem separatorItem]]; + + title = [@"Quit " stringByAppendingString:appName]; + [appleMenu addItemWithTitle:title action:@selector(terminate:) keyEquivalent:@"q"]; + + + /* Put menu into the menubar */ + menuItem = [[NSMenuItem alloc] initWithTitle:@"" action:nil keyEquivalent:@""]; + [menuItem setSubmenu:appleMenu]; + [[NSApp mainMenu] addItem:menuItem]; + + /* Tell the application object that this is now the application menu */ + [NSApp setAppleMenu:appleMenu]; + + /* Finally give up our references to the objects */ [appleMenu release]; - [appleMenuItem release]; + [menuItem release]; } /* Create a window menu */ -void setupWindowMenu(void) +static void setupWindowMenu(void) { - NSMenu *windowMenu; - NSMenuItem *windowMenuItem; - NSMenuItem *menuItem; - - + NSMenu *windowMenu; + NSMenuItem *windowMenuItem; + NSMenuItem *menuItem; + windowMenu = [[NSMenu alloc] initWithTitle:@"Window"]; /* "Minimize" item */ @@ -146,24 +190,35 @@ void setupWindowMenu(void) /* Tell the application object that this is now the window menu */ [NSApp setWindowsMenu:windowMenu]; - + /* Finally give up our references to the objects */ [windowMenu release]; [windowMenuItem release]; } /* Replacement for NSApplicationMain */ -void CustomApplicationMain (argc, argv) +static void CustomApplicationMain (int argc, char **argv) { NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; SDLMain *sdlMain; - + /* Ensure the application object is initialised */ [SDLApplication sharedApplication]; +#ifdef SDL_USE_CPS + { + CPSProcessSerNum PSN; + /* Tell the dock about us */ + if (!CPSGetCurrentProcess(&PSN)) + if (!CPSEnableForegroundOperation(&PSN,0x03,0x3C,0x2C,0x1103)) + if (!CPSSetFrontProcess(&PSN)) + [SDLApplication sharedApplication]; + } +#endif /* SDL_USE_CPS */ + /* Set up the menubar */ [NSApp setMainMenu:[[NSMenu alloc] init]]; - setupAppleMenu(); + setApplicationMenu(); setupWindowMenu(); /* Create SDLMain and make it the app delegate */ @@ -179,22 +234,73 @@ void CustomApplicationMain (argc, argv) #endif + +/* + * Catch document open requests...this lets us notice files when the app + * was launched by double-clicking a document, or when a document was + * dragged/dropped on the app's icon. You need to have a + * CFBundleDocumentsType section in your Info.plist to get this message, + * apparently. + * + * Files are added to gArgv, so to the app, they'll look like command line + * arguments. Previously, apps launched from the finder had nothing but + * an argv[0]. + * + * This message may be received multiple times to open several docs on launch. + * + * This message is ignored once the app's mainline has been called. + */ +- (BOOL)application:(NSApplication *)theApplication openFile:(NSString *)filename +{ + const char *temparg; + size_t arglen; + char *arg; + char **newargv; + + if (!gFinderLaunch) /* MacOS is passing command line args. */ + return FALSE; + + if (gCalledAppMainline) /* app has started, ignore this document. */ + return FALSE; + + temparg = [filename UTF8String]; + arglen = SDL_strlen(temparg) + 1; + arg = (char *) SDL_malloc(arglen); + if (arg == NULL) + return FALSE; + + newargv = (char **) realloc(gArgv, sizeof (char *) * (gArgc + 2)); + if (newargv == NULL) + { + SDL_free(arg); + return FALSE; + } + gArgv = newargv; + + SDL_strlcpy(arg, temparg, arglen); + gArgv[gArgc++] = arg; + gArgv[gArgc] = NULL; + return TRUE; +} + + /* Called when the internal event loop has just started running */ - (void) applicationDidFinishLaunching: (NSNotification *) note { int status; - + /* Set the working directory to the .app's parent directory */ [self setupWorkingDirectory:gFinderLaunch]; - + #if SDL_USE_NIB_FILE /* Set the main menu to contain the real app name instead of "SDL App" */ - [self fixMenu:[NSApp mainMenu] withAppName:[[NSProcessInfo processInfo] processName]]; + [self fixMenu:[NSApp mainMenu] withAppName:getApplicationName()]; #endif - + /* Hand off to main application code */ + gCalledAppMainline = TRUE; status = SDL_main (gArgc, gArgv); - + /* We're done, thank you for playing */ exit(status); } @@ -211,7 +317,7 @@ void CustomApplicationMain (argc, argv) unichar *buffer; NSRange localRange; NSString *result; - + bufferSize = selfLen + aStringLen - aRange.length; buffer = NSAllocateMemoryPages(bufferSize*sizeof(unichar)); @@ -224,7 +330,7 @@ void CustomApplicationMain (argc, argv) localRange.location = 0; localRange.length = aStringLen; [aString getCharacters:(buffer+aRange.location) range:localRange]; - + /* Get last part into buffer */ localRange.location = aRange.location + aRange.length; localRange.length = selfLen - localRange.location; @@ -250,24 +356,23 @@ void CustomApplicationMain (argc, argv) /* Main entry point to executable - should *not* be SDL_main! */ int main (int argc, char **argv) { - /* Copy the arguments into a global variable */ - int i; - /* This is passed if we are launched by double-clicking */ if ( argc >= 2 && strncmp (argv[1], "-psn", 4) == 0 ) { + gArgv = (char **) SDL_malloc(sizeof (char *) * 2); + gArgv[0] = argv[0]; + gArgv[1] = NULL; gArgc = 1; - gFinderLaunch = YES; + gFinderLaunch = YES; } else { + int i; gArgc = argc; - gFinderLaunch = NO; + gArgv = (char **) SDL_malloc(sizeof (char *) * (argc+1)); + for (i = 0; i <= argc; i++) + gArgv[i] = argv[i]; + gFinderLaunch = NO; } - gArgv = (char**) malloc (sizeof(*gArgv) * (gArgc+1)); - assert (gArgv != NULL); - for (i = 0; i < gArgc; i++) - gArgv[i] = argv[i]; - gArgv[i] = NULL; - + #if SDL_USE_NIB_FILE [SDLApplication poseAsClass:[NSApplication class]]; NSApplicationMain (argc, argv); diff --git a/themanaworld.xcodeproj/garfield.mode1v3 b/themanaworld.xcodeproj/garfield.mode1v3 index 1b941b63..0076a8bc 100644 --- a/themanaworld.xcodeproj/garfield.mode1v3 +++ b/themanaworld.xcodeproj/garfield.mode1v3 @@ -267,15 +267,12 @@ 20286C29FDCF999611CA2CEA 5048396909E3304600765E4B 20286C2CFDCF999611CA2CEA - 1C37FBAC04509CD000000102 - 927F62010ED4EA4500D919E6 PBXSmartGroupTreeModuleOutlineStateSelectionKey - 16 - 15 - 14 + 1 + 0 PBXSmartGroupTreeModuleOutlineStateVisibleRectKey @@ -326,19 +323,27 @@ _historyCapacity 0 bookmark - 927F623A0ED4EBEB00D919E6 + 927F62650ED4F41700D919E6 history - 92B1EBDD0ED4E43D009AF197 92B1EBDE0ED4E43D009AF197 92B1EBF30ED4E5C5009AF197 - 92B1EC470ED4EA36009AF197 + 927F625B0ED4F41700D919E6 + 927F625C0ED4F41700D919E6 + 927F625D0ED4F41700D919E6 prevStack 92B1EBE00ED4E43D009AF197 92B1EBE10ED4E43D009AF197 92B1EBF50ED4E5C5009AF197 + 927F625E0ED4F41700D919E6 + 927F625F0ED4F41700D919E6 + 927F62600ED4F41700D919E6 + 927F62610ED4F41700D919E6 + 927F62620ED4F41700D919E6 + 927F62630ED4F41700D919E6 + 927F62640ED4F41700D919E6 SplitCount @@ -531,8 +536,8 @@ WindowOrderList 92A4CC8A0D1C5F1E00CA28FB - 1C78EAAD065D492600B07095 1CD10A99069EF8BA00B06720 + 1C78EAAD065D492600B07095 /Users/garfield/programming/tmwclient/themanaworld.xcodeproj WindowString diff --git a/themanaworld.xcodeproj/garfield.pbxuser b/themanaworld.xcodeproj/garfield.pbxuser index ada25426..42957a89 100644 --- a/themanaworld.xcodeproj/garfield.pbxuser +++ b/themanaworld.xcodeproj/garfield.pbxuser @@ -134,23 +134,26 @@ PBXFileDataSource_Warnings_ColumnID, ); }; - PBXPerProjectTemplateStateSaveDate = 248834629; - PBXWorkspaceStateSaveDate = 248834629; + PBXPerProjectTemplateStateSaveDate = 249045476; + PBXWorkspaceStateSaveDate = 249045476; }; perUserProjectItems = { - 927F62190ED4EA6A00D919E6 /* PlistBookmark */ = 927F62190ED4EA6A00D919E6 /* PlistBookmark */; - 927F621C0ED4EA6A00D919E6 /* PlistBookmark */ = 927F621C0ED4EA6A00D919E6 /* PlistBookmark */; - 927F623A0ED4EBEB00D919E6 /* PlistBookmark */ = 927F623A0ED4EBEB00D919E6 /* PlistBookmark */; - 92B1EBDD0ED4E43D009AF197 = 92B1EBDD0ED4E43D009AF197 /* PBXTextBookmark */; + 927F625B0ED4F41700D919E6 = 927F625B0ED4F41700D919E6 /* PBXTextBookmark */; + 927F625C0ED4F41700D919E6 = 927F625C0ED4F41700D919E6 /* PBXTextBookmark */; + 927F625D0ED4F41700D919E6 = 927F625D0ED4F41700D919E6 /* PlistBookmark */; + 927F625E0ED4F41700D919E6 = 927F625E0ED4F41700D919E6 /* PlistBookmark */; + 927F625F0ED4F41700D919E6 = 927F625F0ED4F41700D919E6 /* PBXTextBookmark */; + 927F62600ED4F41700D919E6 = 927F62600ED4F41700D919E6 /* PBXTextBookmark */; + 927F62610ED4F41700D919E6 = 927F62610ED4F41700D919E6 /* PlistBookmark */; + 927F62620ED4F41700D919E6 = 927F62620ED4F41700D919E6 /* PBXTextBookmark */; + 927F62630ED4F41700D919E6 = 927F62630ED4F41700D919E6 /* PlistBookmark */; + 927F62640ED4F41700D919E6 = 927F62640ED4F41700D919E6 /* PBXTextBookmark */; + 927F62650ED4F41700D919E6 = 927F62650ED4F41700D919E6 /* PlistBookmark */; 92B1EBDE0ED4E43D009AF197 = 92B1EBDE0ED4E43D009AF197 /* PBXTextBookmark */; 92B1EBE00ED4E43D009AF197 = 92B1EBE00ED4E43D009AF197 /* PBXTextBookmark */; 92B1EBE10ED4E43D009AF197 = 92B1EBE10ED4E43D009AF197 /* PBXTextBookmark */; - 92B1EBE90ED4E547009AF197 = 92B1EBE90ED4E547009AF197 /* PBXBookmark */; 92B1EBF30ED4E5C5009AF197 = 92B1EBF30ED4E5C5009AF197 /* PBXTextBookmark */; 92B1EBF50ED4E5C5009AF197 = 92B1EBF50ED4E5C5009AF197 /* PBXTextBookmark */; - 92B1EC440ED4EA36009AF197 = 92B1EC440ED4EA36009AF197 /* PlistBookmark */; - 92B1EC470ED4EA36009AF197 = 92B1EC470ED4EA36009AF197 /* PlistBookmark */; - 92B1EC480ED4EA36009AF197 = 92B1EC480ED4EA36009AF197 /* PlistBookmark */; }; sourceControlManager = 92BC3EC80BAEE3C8000DAB7F /* Source Control */; userBuildSettings = { @@ -172,9 +175,10 @@ }; 92037A190ED2035A00D3712D /* SDLMain.h */ = { uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {511, 348}}"; + sepNavIntBoundsRect = "{{0, 0}, {802, 506}}"; sepNavSelRange = "{0, 0}"; sepNavVisRange = "{0, 307}"; + sepNavWindowFrame = "{{15, 389}, {861, 634}}"; }; }; 924A42600C0874D00066885E /* Info.plist */ = { @@ -193,7 +197,38 @@ sepNavVisRange = "{1251, 209}"; }; }; - 927F62190ED4EA6A00D919E6 /* PlistBookmark */ = { + 927F625B0ED4F41700D919E6 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 92037A190ED2035A00D3712D /* SDLMain.h */; + name = "SDLMain.h: 1"; + rLen = 0; + rLoc = 0; + rType = 0; + vrLen = 307; + vrLoc = 0; + }; + 927F625C0ED4F41700D919E6 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 92BC40E50BAEF54B000DAB7F /* SDLMain.m */; + name = "SDLMain.m: 14"; + rLen = 0; + rLoc = 440; + rType = 0; + vrLen = 759; + vrLoc = 0; + }; + 927F625D0ED4F41700D919E6 /* PlistBookmark */ = { + isa = PlistBookmark; + fRef = 924A42600C0874D00066885E /* Info.plist */; + fallbackIsa = PBXBookmark; + isK = 0; + kPath = ( + ); + name = /Users/garfield/programming/tmwclient/Info.plist; + rLen = 0; + rLoc = 2147483647; + }; + 927F625E0ED4F41700D919E6 /* PlistBookmark */ = { isa = PlistBookmark; fRef = 924A42600C0874D00066885E /* Info.plist */; fallbackIsa = PBXBookmark; @@ -205,24 +240,76 @@ rLen = 0; rLoc = 2147483647; }; - 927F621C0ED4EA6A00D919E6 /* PlistBookmark */ = { + 927F625F0ED4F41700D919E6 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 92037A190ED2035A00D3712D /* SDLMain.h */; + name = "SDLMain.h: 1"; + rLen = 0; + rLoc = 0; + rType = 0; + vrLen = 307; + vrLoc = 0; + }; + 927F62600ED4F41700D919E6 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 92BC40E50BAEF54B000DAB7F /* SDLMain.m */; + name = "SDLMain.m: 14"; + rLen = 0; + rLoc = 440; + rType = 0; + vrLen = 635; + vrLoc = 124; + }; + 927F62610ED4F41700D919E6 /* PlistBookmark */ = { isa = PlistBookmark; fRef = 924A42600C0874D00066885E /* Info.plist */; fallbackIsa = PBXBookmark; isK = 0; kPath = ( + NSPrincipalClass, ); name = /Users/garfield/programming/tmwclient/Info.plist; rLen = 0; rLoc = 2147483647; }; - 927F623A0ED4EBEB00D919E6 /* PlistBookmark */ = { + 927F62620ED4F41700D919E6 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 92BC40E50BAEF54B000DAB7F /* SDLMain.m */; + name = "SDLMain.m: 14"; + rLen = 0; + rLoc = 440; + rType = 0; + vrLen = 643; + vrLoc = 7053; + }; + 927F62630ED4F41700D919E6 /* PlistBookmark */ = { isa = PlistBookmark; fRef = 924A42600C0874D00066885E /* Info.plist */; fallbackIsa = PBXBookmark; isK = 0; kPath = ( - NSPrincipleClass, + ); + name = /Users/garfield/programming/tmwclient/Info.plist; + rLen = 0; + rLoc = 2147483647; + }; + 927F62640ED4F41700D919E6 /* PBXTextBookmark */ = { + isa = PBXTextBookmark; + fRef = 92BC40E50BAEF54B000DAB7F /* SDLMain.m */; + name = "SDLMain.m: 14"; + rLen = 0; + rLoc = 440; + rType = 0; + vrLen = 759; + vrLoc = 0; + }; + 927F62650ED4F41700D919E6 /* PlistBookmark */ = { + isa = PlistBookmark; + fRef = 924A42600C0874D00066885E /* Info.plist */; + fallbackIsa = PBXBookmark; + isK = 0; + kPath = ( + CFBundleVersion, ); name = /Users/garfield/programming/tmwclient/Info.plist; rLen = 0; @@ -252,16 +339,6 @@ sepNavWindowFrame = "{{180, 8}, {627, 714}}"; }; }; - 92B1EBDD0ED4E43D009AF197 /* PBXTextBookmark */ = { - isa = PBXTextBookmark; - fRef = 92BC40E50BAEF54B000DAB7F /* SDLMain.m */; - name = "SDLMain.m: 14"; - rLen = 0; - rLoc = 440; - rType = 0; - vrLen = 759; - vrLoc = 0; - }; 92B1EBDE0ED4E43D009AF197 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 92BC3F660BAEE55B000DAB7F /* viewport.cpp */; @@ -292,10 +369,6 @@ vrLen = 780; vrLoc = 7501; }; - 92B1EBE90ED4E547009AF197 /* PBXBookmark */ = { - isa = PBXBookmark; - fRef = 924A42600C0874D00066885E /* Info.plist */; - }; 92B1EBF30ED4E5C5009AF197 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 92BC3EEF0BAEE55A000DAB7F /* graphics.h */; @@ -316,40 +389,6 @@ vrLen = 692; vrLoc = 434; }; - 92B1EC440ED4EA36009AF197 /* PlistBookmark */ = { - isa = PlistBookmark; - fRef = 924A42600C0874D00066885E /* Info.plist */; - fallbackIsa = PBXBookmark; - isK = 0; - kPath = ( - ); - name = /Users/garfield/programming/tmwclient/Info.plist; - rLen = 0; - rLoc = 2147483647; - }; - 92B1EC470ED4EA36009AF197 /* PlistBookmark */ = { - isa = PlistBookmark; - fRef = 924A42600C0874D00066885E /* Info.plist */; - fallbackIsa = PBXBookmark; - isK = 0; - kPath = ( - NSPrincipalClass, - ); - name = /Users/garfield/programming/tmwclient/Info.plist; - rLen = 0; - rLoc = 2147483647; - }; - 92B1EC480ED4EA36009AF197 /* PlistBookmark */ = { - isa = PlistBookmark; - fRef = 924A42600C0874D00066885E /* Info.plist */; - fallbackIsa = PBXBookmark; - isK = 0; - kPath = ( - ); - name = /Users/garfield/programming/tmwclient/Info.plist; - rLen = 0; - rLoc = 2147483647; - }; 92BC3EBC0BAEE3BB000DAB7F /* themanaworld */ = { isa = PBXExecutable; activeArgIndices = ( @@ -862,8 +901,8 @@ 92BC40E50BAEF54B000DAB7F /* SDLMain.m */ = { uiCtxt = { sepNavIntBoundsRect = "{{0, 0}, {726, 3906}}"; - sepNavSelRange = "{440, 0}"; - sepNavVisRange = "{7053, 643}"; + sepNavSelRange = "{3069, 0}"; + sepNavVisRange = "{2696, 949}"; sepNavWindowFrame = "{{583, 96}, {627, 714}}"; }; }; diff --git a/themanaworld.xcodeproj/project.pbxproj b/themanaworld.xcodeproj/project.pbxproj index 7bd2a8e0..5bd59f57 100644 --- a/themanaworld.xcodeproj/project.pbxproj +++ b/themanaworld.xcodeproj/project.pbxproj @@ -88,7 +88,6 @@ 926F9CF80DB005FA00AACD26 /* itemshortcut.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 926F9CF60DB005FA00AACD26 /* itemshortcut.cpp */; }; 926F9D450DB00AFC00AACD26 /* itemshortcutcontainer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 926F9D410DB00AFC00AACD26 /* itemshortcutcontainer.cpp */; }; 926F9D460DB00AFC00AACD26 /* itemshortcutwindow.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 926F9D430DB00AFC00AACD26 /* itemshortcutwindow.cpp */; }; - 927F62590ED4F1D100D919E6 /* main.nib in Resources */ = {isa = PBXBuildFile; fileRef = 927F62570ED4F1D100D919E6 /* main.nib */; }; 9294DA9B0C17E70400FCEDE9 /* physfs.c in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3FAB0BAEE55B000DAB7F /* physfs.c */; }; 9294DA9C0C17E70600FCEDE9 /* physfs_byteorder.c in Sources */ = {isa = PBXBuildFile; fileRef = 92BC3FAD0BAEE55B000DAB7F /* physfs_byteorder.c */; }; 9294DAA10C17E73200FCEDE9 /* libpng.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9294DAA00C17E73200FCEDE9 /* libpng.framework */; }; @@ -474,7 +473,6 @@ 926F9D420DB00AFC00AACD26 /* itemshortcutcontainer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = itemshortcutcontainer.h; sourceTree = ""; }; 926F9D430DB00AFC00AACD26 /* itemshortcutwindow.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = itemshortcutwindow.cpp; sourceTree = ""; }; 926F9D440DB00AFC00AACD26 /* itemshortcutwindow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = itemshortcutwindow.h; sourceTree = ""; }; - 927F62580ED4F1D100D919E6 /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = English.lproj/main.nib; sourceTree = ""; }; 9294DAA00C17E73200FCEDE9 /* libpng.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = libpng.framework; path = /Library/Frameworks/libpng.framework; sourceTree = ""; }; 92A4CC9D0D1C622E00CA28FB /* dye.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = dye.cpp; path = src/resources/dye.cpp; sourceTree = ""; }; 92A4CCE00D1DA58D00CA28FB /* dir.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = dir.c; sourceTree = ""; }; @@ -905,7 +903,6 @@ 20286C2CFDCF999611CA2CEA /* Resources */ = { isa = PBXGroup; children = ( - 927F62570ED4F1D100D919E6 /* main.nib */, 92A4CCFE0D1DA8E500CA28FB /* LICENSE.rtf */, 924A42590C0871EC0066885E /* The Mana World.icns */, 924A3E590C085ED70066885E /* data */, @@ -1405,7 +1402,6 @@ files = ( 924A425A0C0871EC0066885E /* The Mana World.icns in Resources */, 92A4CCFF0D1DA8E500CA28FB /* LICENSE.rtf in Resources */, - 927F62590ED4F1D100D919E6 /* main.nib in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1577,17 +1573,6 @@ }; /* End PBXSourcesBuildPhase section */ -/* Begin PBXVariantGroup section */ - 927F62570ED4F1D100D919E6 /* main.nib */ = { - isa = PBXVariantGroup; - children = ( - 927F62580ED4F1D100D919E6 /* English */, - ); - name = main.nib; - sourceTree = ""; - }; -/* End PBXVariantGroup section */ - /* Begin XCBuildConfiguration section */ C0E91AC608A95435008D54AB /* Debug */ = { isa = XCBuildConfiguration; -- cgit v1.2.3-60-g2f50 From 124aef95eff5b9fe3692d847d288e6470f33f812 Mon Sep 17 00:00:00 2001 From: Nikos Giagtzoglou Date: Sat, 22 Nov 2008 11:43:53 +0100 Subject: Added ability to add equipment to the shurtcut bar Patch by Nikos, with some improvements. --- NEWS | 1 + src/gui/itemcontainer.cpp | 25 ++++++++----------------- src/gui/itemshortcutcontainer.cpp | 6 ++++-- src/itemshortcut.cpp | 22 +++++++++++++--------- 4 files changed, 26 insertions(+), 28 deletions(-) (limited to 'src') diff --git a/NEWS b/NEWS index c93575b5..a07a681b 100644 --- a/NEWS +++ b/NEWS @@ -4,6 +4,7 @@ - Added --data parameter for developers - Added particle effect for critical hits - Added support for dynamic skill names and hair colors +- Added ability to add equipment to the shurtcut bar - Inventory window now displays amount of slots used - Center minimap on player when it is larger than the minimap window - Extended particle emitters with properties that can change over time diff --git a/src/gui/itemcontainer.cpp b/src/gui/itemcontainer.cpp index 68978db2..5342e3fe 100644 --- a/src/gui/itemcontainer.cpp +++ b/src/gui/itemcontainer.cpp @@ -59,8 +59,7 @@ ItemContainer::~ItemContainer() mSelImg->decRef(); } -void -ItemContainer::logic() +void ItemContainer::logic() { gcn::Widget::logic(); @@ -73,8 +72,7 @@ ItemContainer::logic() } } -void -ItemContainer::draw(gcn::Graphics *graphics) +void ItemContainer::draw(gcn::Graphics *graphics) { int columns = getWidth() / gridWidth; @@ -147,20 +145,17 @@ void ItemContainer::recalculateHeight() setHeight(height); } -Item* -ItemContainer::getSelectedItem() const +Item *ItemContainer::getSelectedItem() const { return mSelectedItem; } -void -ItemContainer::selectNone() +void ItemContainer::selectNone() { setSelectedItem(NULL); } -void -ItemContainer::setSelectedItem(Item *item) +void ItemContainer::setSelectedItem(Item *item) { if (mSelectedItem != item) { @@ -169,8 +164,7 @@ ItemContainer::setSelectedItem(Item *item) } } -void -ItemContainer::distributeValueChangedEvent() +void ItemContainer::distributeValueChangedEvent() { gcn::SelectionEvent event(this); std::list::iterator i_end = mListeners.end(); @@ -182,8 +176,7 @@ ItemContainer::distributeValueChangedEvent() } } -void -ItemContainer::mousePressed(gcn::MouseEvent &event) +void ItemContainer::mousePressed(gcn::MouseEvent &event) { int button = event.getButton(); @@ -203,9 +196,7 @@ ItemContainer::mousePressed(gcn::MouseEvent &event) } Item *item = mInventory->getItem(index); setSelectedItem(item); - if (item && !item->isEquipment()) - { + if (item) itemShortcut->setItemSelected(item->getId()); - } } } diff --git a/src/gui/itemshortcutcontainer.cpp b/src/gui/itemshortcutcontainer.cpp index 687f8d16..2ea5d584 100644 --- a/src/gui/itemshortcutcontainer.cpp +++ b/src/gui/itemshortcutcontainer.cpp @@ -86,7 +86,7 @@ ItemShortcutContainer::draw(gcn::Graphics *graphics) // Draw item keyboard shortcut. const char *key = SDL_GetKeyName( - (SDLKey) keyboard.getKeyValue(keyboard.KEY_SHORTCUT_0+i)); + (SDLKey) keyboard.getKeyValue(keyboard.KEY_SHORTCUT_0 + i)); g->drawText(key, itemX + 2, itemY + 2, gcn::Graphics::LEFT); if (itemShortcut->getItem(i) < 0) @@ -98,9 +98,11 @@ ItemShortcutContainer::draw(gcn::Graphics *graphics) // Draw item icon. Image* image = item->getImage(); if (image) { + const std::string label = + item->isEquipped() ? "Eq." : toString(item->getQuantity()); g->drawImage(image, itemX, itemY); g->drawText( - toString(item->getQuantity()), + label, itemX + mBoxWidth / 2, itemY + mBoxHeight - 14, gcn::Graphics::CENTER); diff --git a/src/itemshortcut.cpp b/src/itemshortcut.cpp index 5a92e216..babe3dfb 100644 --- a/src/itemshortcut.cpp +++ b/src/itemshortcut.cpp @@ -62,14 +62,8 @@ void ItemShortcut::save() { for (int i = 0; i < SHORTCUT_ITEMS; i++) { - if (mItems[i]) - { - config.setValue("shortcut" + toString(i), mItems[i]); - } - else - { - config.setValue("shortcut" + toString(i), -1); - } + const int itemId = mItems[i] ? mItems[i] : -1; + config.setValue("shortcut" + toString(i), itemId); } } @@ -79,6 +73,16 @@ void ItemShortcut::useItem(int index) { Item *item = player_node->getInventory()->findItem(mItems[index]); if (item && item->getQuantity()) - player_node->useItem(item); + { + if (item->isEquipment()) { + if (item->isEquipped()) { + player_node->unequipItem(item); + } else { + player_node->equipItem(item); + } + } else { + player_node->useItem(item); + } + } } } -- cgit v1.2.3-60-g2f50 From 1c392d41f9004c3bf0b8455465ec62fe89109a63 Mon Sep 17 00:00:00 2001 From: Bjørn Lindeijer Date: Sat, 22 Nov 2008 18:47:48 +0100 Subject: Fixed non-virtual destructor The class had virtual methods, in which case it's good practice to also make the destructor virtual. Otherwise you can end up with destructors of subclasses not being called on deletion. --- src/text.h | 47 ++++++++++++++++++++++------------------------- 1 file changed, 22 insertions(+), 25 deletions(-) (limited to 'src') diff --git a/src/text.h b/src/text.h index e57fc06a..995b9a58 100644 --- a/src/text.h +++ b/src/text.h @@ -30,43 +30,41 @@ class TextManager; class Text { - friend class TextManager; + friend class TextManager; + public: /** - * Constructor creates a text object to display on the screen + * Constructor creates a text object to display on the screen. */ Text(const std::string &text, int x, int y, gcn::Graphics::Alignment alignment, gcn::Font *font, gcn::Color colour); /** - * Allows the originator of the text to specify the ideal coordinates + * Destructor. The text is removed from the screen. */ - void - adviseXY(int x, int y); + virtual ~Text(); /** - * Remove the text from the screen + * Allows the originator of the text to specify the ideal coordinates. */ - ~Text(); + void adviseXY(int x, int y); /** - * Draws the text + * Draws the text. */ - virtual void - draw(Graphics *graphics, int xOff, int yOff); + virtual void draw(Graphics *graphics, int xOff, int yOff); private: - - int mX; /**< Actual x-value of left of text written */ - int mY; /**< Actual y-value of top of text written */ - int mWidth; /**< The width of the text */ - int mHeight; /**< The height of the text */ - int mXOffset; /**< The offset of mX from the desired x */ - static int mInstances; /**< Instances of text */ - gcn::Font *mFont; /**< The font used */ - std::string mText; /**< The text to display */ - gcn::Color mColour; /**< The colour of the text */ + int mX; /**< Actual x-value of left of text written. */ + int mY; /**< Actual y-value of top of text written. */ + int mWidth; /**< The width of the text. */ + int mHeight; /**< The height of the text. */ + int mXOffset; /**< The offset of mX from the desired x. */ + static int mInstances; /**< Instances of text. */ + gcn::Font *mFont; /**< The font used. */ + std::string mText; /**< The text to display. */ + gcn::Color mColour; /**< The colour of the text. */ }; class FlashText : public Text @@ -77,18 +75,17 @@ class FlashText : public Text gcn::Color colour); /** - * Flash the text for so many refreshes + * Flash the text for so many refreshes. */ void flash(int time) {mTime = time; } /** - * Draws the text + * Draws the text. */ - virtual void - draw(Graphics *graphics, int xOff, int yOff); + virtual void draw(Graphics *graphics, int xOff, int yOff); private: - int mTime; /**< Time left for flashing */ + int mTime; /**< Time left for flashing. */ }; #endif // _TMW_TEXT_H -- cgit v1.2.3-60-g2f50 From e97d5a38f868202b409b36acccd92676dbac86df Mon Sep 17 00:00:00 2001 From: Bjørn Lindeijer Date: Sat, 22 Nov 2008 18:53:56 +0100 Subject: Fixed warning about passing NULL for a non-pointer Encountered by z0ro. --- src/equipment.h | 14 +++++--------- src/net/equipmenthandler.cpp | 2 +- 2 files changed, 6 insertions(+), 10 deletions(-) (limited to 'src') diff --git a/src/equipment.h b/src/equipment.h index 4993e4df..28a96baa 100644 --- a/src/equipment.h +++ b/src/equipment.h @@ -43,26 +43,22 @@ class Equipment /** * Set equipment at the given slot. */ - void - setEquipment(int index, int inventoryIndex); + void setEquipment(int index, int inventoryIndex); /** * Remove equipment from the given slot. */ - void - removeEquipment(int index) { mEquipment[index] = 0; } + void removeEquipment(int index) { mEquipment[index] = 0; } /** - * Get the item used in the arrow slot. + * Returns the item used in the arrow slot. */ - int - getArrows() { return mArrows; } + int getArrows() const { return mArrows; } /** * Set the item used in the arrow slot. */ - void - setArrows(int arrows) { mArrows = arrows; } + void setArrows(int arrows) { mArrows = arrows; } private: int mEquipment[EQUIPMENT_SIZE]; diff --git a/src/net/equipmenthandler.cpp b/src/net/equipmenthandler.cpp index 39b6e8cd..580cef6b 100644 --- a/src/net/equipmenthandler.cpp +++ b/src/net/equipmenthandler.cpp @@ -155,7 +155,7 @@ void EquipmentHandler::handleMessage(MessageIn *msg) switch (item->getId()) { case 529: case 1199: - player_node->mEquipment->setArrows(NULL); + player_node->mEquipment->setArrows(0); break; case 521: case 522: -- cgit v1.2.3-60-g2f50 From d011f8f984f454a76adaf04142df0daa03dd00a8 Mon Sep 17 00:00:00 2001 From: Fate Date: Sun, 23 Nov 2008 11:32:07 -0700 Subject: Grey out magic bar if matk negative, update F2 window magic bar --- src/gui/ministatus.cpp | 5 +++++ src/gui/status.cpp | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/gui/ministatus.cpp b/src/gui/ministatus.cpp index 077e2331..388b5fbf 100644 --- a/src/gui/ministatus.cpp +++ b/src/gui/ministatus.cpp @@ -99,6 +99,11 @@ void MiniStatusWindow::update() mHpBar->setProgress((float) player_node->mHp / player_node->mMaxHp); mMpBar->setProgress((float) player_node->mMp / player_node->mMaxMp); + if (player_node->MATK <= 0) + mMpBar->setColor(100, 100, 100); // grey, to indicate that we lack magic + else + mMpBar->setColor(143, 192, 211); // blue, to indicate that we have magic + mXpBar->setProgress( (float) player_node->getXp() / player_node->mXpForNextLevel); diff --git a/src/gui/status.cpp b/src/gui/status.cpp index 927b3554..eebd0a21 100644 --- a/src/gui/status.cpp +++ b/src/gui/status.cpp @@ -265,7 +265,7 @@ void StatusWindow::update() } mHpBar->setProgress((float) mPlayer->mHp / (float) mPlayer->mMaxHp); - // mMpBar->setProgress((float)mPlayer->mp / (float)mPlayer->maxMp); + mMpBar->setProgress((float) mPlayer->mMp / (float) mPlayer->mMaxMp); mXpBar->setProgress( (float) mPlayer->getXp() / (float) mPlayer->mXpForNextLevel); -- cgit v1.2.3-60-g2f50 From 90e6af7dfc4e88e5a2a0d4a7f9c26b158eb7820e Mon Sep 17 00:00:00 2001 From: Fate Date: Sun, 23 Nov 2008 15:14:06 -0700 Subject: Fixed MP bar colour --- src/gui/ministatus.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/gui/ministatus.cpp b/src/gui/ministatus.cpp index d074808f..baae14a7 100644 --- a/src/gui/ministatus.cpp +++ b/src/gui/ministatus.cpp @@ -100,7 +100,7 @@ void MiniStatusWindow::update() if (player_node->MATK <= 0) mMpBar->setColor(100, 100, 100); // grey, to indicate that we lack magic else - mMpBar->setColor(143, 192, 211); // blue, to indicate that we have magic + mMpBar->setColor(26, 102, 230); // blue, to indicate that we have magic mXpBar->setProgress( (float) player_node->getXp() / player_node->mXpForNextLevel); -- cgit v1.2.3-60-g2f50 From b4b6187aaa21e702bac7c9562b449c5de50e5460 Mon Sep 17 00:00:00 2001 From: Fate Date: Sun, 23 Nov 2008 18:47:38 -0700 Subject: Delete resources after removing from the orphan list, to avoid double frees during recursion --- src/resources/resourcemanager.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/resources/resourcemanager.cpp b/src/resources/resourcemanager.cpp index 073e41c4..90b29374 100644 --- a/src/resources/resourcemanager.cpp +++ b/src/resources/resourcemanager.cpp @@ -130,10 +130,10 @@ void ResourceManager::cleanOrphans() else { logger->log("ResourceManager::release(%s)", res->mIdPath.c_str()); - delete res; ResourceIterator toErase = iter; ++iter; mOrphanedResources.erase(toErase); + delete res; // delete only after removal from list, to avoid issues in recursion } } -- cgit v1.2.3-60-g2f50 From 9018b65a681d41866b1e12ffb687e427c8ca76b1 Mon Sep 17 00:00:00 2001 From: Bjørn Lindeijer Date: Mon, 24 Nov 2008 09:34:30 +0100 Subject: Converted some DOS newlines to UNIX --- src/tmw.rc | 46 +++++++++++++++++++++++----------------------- src/winver.h | 12 ++++++------ tools/tmxcopy/Makefile | 36 ++++++++++++++++++------------------ 3 files changed, 47 insertions(+), 47 deletions(-) (limited to 'src') diff --git a/src/tmw.rc b/src/tmw.rc index 673b2387..9661ac6b 100644 --- a/src/tmw.rc +++ b/src/tmw.rc @@ -1,23 +1,23 @@ -#include // include for version info constants - -#include "winver.h" - -A ICON MOVEABLE PURE LOADONCALL DISCARDABLE "data/icons/tmw.ico" - -1 VERSIONINFO -FILEVERSION VER_MAJOR,VER_MINOR,VER_RELEASE,VER_BUILD -PRODUCTVERSION VER_MAJOR,VER_MINOR,VER_RELEASE,VER_BUILD -FILETYPE VFT_APP { - BLOCK "StringFileInfo" { - BLOCK "040904E4" { - VALUE "CompanyName", "The Mana World Development Team" - VALUE "FileVersion", PACKAGE_VERSION - VALUE "FileDescription", "The Mana World" - VALUE "LegalCopyright", "2004-2006 (C)" - VALUE "OriginalFilename", "tmw.exe" - VALUE "ProductName", "The Mana World MMORPG" - VALUE "ProductVersion", PACKAGE_VERSION - } - } -} - +#include // include for version info constants + +#include "winver.h" + +A ICON MOVEABLE PURE LOADONCALL DISCARDABLE "data/icons/tmw.ico" + +1 VERSIONINFO +FILEVERSION VER_MAJOR,VER_MINOR,VER_RELEASE,VER_BUILD +PRODUCTVERSION VER_MAJOR,VER_MINOR,VER_RELEASE,VER_BUILD +FILETYPE VFT_APP { + BLOCK "StringFileInfo" { + BLOCK "040904E4" { + VALUE "CompanyName", "The Mana World Development Team" + VALUE "FileVersion", PACKAGE_VERSION + VALUE "FileDescription", "The Mana World" + VALUE "LegalCopyright", "2004-2006 (C)" + VALUE "OriginalFilename", "tmw.exe" + VALUE "ProductName", "The Mana World MMORPG" + VALUE "ProductVersion", PACKAGE_VERSION + } + } +} + diff --git a/src/winver.h b/src/winver.h index 4de9bbe5..4452784e 100644 --- a/src/winver.h +++ b/src/winver.h @@ -1,6 +1,6 @@ -/* VERSION DEFINITIONS */ -#define VER_MAJOR 0 -#define VER_MINOR 0 -#define VER_RELEASE 26 -#define VER_BUILD 0 -#define PACKAGE_VERSION "0.0.26" +/* VERSION DEFINITIONS */ +#define VER_MAJOR 0 +#define VER_MINOR 0 +#define VER_RELEASE 26 +#define VER_BUILD 0 +#define PACKAGE_VERSION "0.0.26" diff --git a/tools/tmxcopy/Makefile b/tools/tmxcopy/Makefile index 732dec36..84aa9fc6 100644 --- a/tools/tmxcopy/Makefile +++ b/tools/tmxcopy/Makefile @@ -1,18 +1,18 @@ -CC=g++ -CFLAGS=-c `pkg-config --cflags libxml-2.0` -LDFLAGS=`pkg-config --libs libxml-2.0` -SOURCES=base64.cpp main.cpp map.cpp xmlutils.cpp zlibutils.cpp -OBJECTS=$(SOURCES:.cpp=.o) -EXECUTABLE=tmxcopy - -all: $(SOURCES) $(EXECUTABLE) - make clean - -$(EXECUTABLE): $(OBJECTS) - $(CC) $(LDFLAGS) $(OBJECTS) -o $@ - -.cpp.o: - $(CC) $(CFLAGS) $< -o $@ - -clean: - rm -f *.o +CC=g++ +CFLAGS=-c `pkg-config --cflags libxml-2.0` +LDFLAGS=`pkg-config --libs libxml-2.0` +SOURCES=base64.cpp main.cpp map.cpp xmlutils.cpp zlibutils.cpp +OBJECTS=$(SOURCES:.cpp=.o) +EXECUTABLE=tmxcopy + +all: $(SOURCES) $(EXECUTABLE) + make clean + +$(EXECUTABLE): $(OBJECTS) + $(CC) $(LDFLAGS) $(OBJECTS) -o $@ + +.cpp.o: + $(CC) $(CFLAGS) $< -o $@ + +clean: + rm -f *.o -- cgit v1.2.3-60-g2f50 From 65e94b56c9b7b0f69911ba37fe1a22f22e9ba09e Mon Sep 17 00:00:00 2001 From: Bjørn Lindeijer Date: Thu, 27 Nov 2008 21:46:48 +0100 Subject: Make sure to initialize joystick enabled state Joystick enabled state could end up uninitialized on unsuccesfully trying to open a joystick. In addition, the enabled state wasn't actually used in the accessor methods for the joystick buttons. --- src/game.cpp | 2 -- src/joystick.cpp | 42 ++++++++++++++---------------------------- src/joystick.h | 35 +++++++++++++++++------------------ 3 files changed, 31 insertions(+), 48 deletions(-) (limited to 'src') diff --git a/src/game.cpp b/src/game.cpp index 245e711e..9fa0129e 100644 --- a/src/game.cpp +++ b/src/game.cpp @@ -297,9 +297,7 @@ Game::Game(Network *network): // TODO: The user should be able to choose which one to use // Open the first device if (Joystick::getNumberOfJoysticks() > 0) - { joystick = new Joystick(0); - } network->registerHandler(mBeingHandler.get()); network->registerHandler(mBuySellHandler.get()); diff --git a/src/joystick.cpp b/src/joystick.cpp index b69537cf..b05e9b5f 100644 --- a/src/joystick.cpp +++ b/src/joystick.cpp @@ -24,12 +24,17 @@ #include "configuration.h" #include "log.h" +#include + int Joystick::joystickCount = 0; void Joystick::init() { SDL_InitSubSystem(SDL_INIT_JOYSTICK); - //SDL_JoystickEventState(SDL_ENABLE); + + // Have SDL call SDL_JoystickUpdate() automatically + SDL_JoystickEventState(SDL_ENABLE); + joystickCount = SDL_NumJoysticks(); logger->log("%i joysticks/gamepads found", joystickCount); for (int i = 0; i < joystickCount; i++) @@ -37,11 +42,11 @@ void Joystick::init() } Joystick::Joystick(int no): - mDirection(0), mCalibrating(false) + mDirection(0), + mCalibrating(false), + mEnabled(false) { - // TODO Bail out here? - if (no > joystickCount) - return; + assert(no < joystickCount); mJoystick = SDL_JoystickOpen(no); @@ -66,50 +71,39 @@ Joystick::Joystick(int no): Joystick::~Joystick() { - SDL_JoystickClose(mJoystick); + SDL_JoystickClose(mJoystick); } void Joystick::update() { mDirection = 0; - SDL_JoystickUpdate(); - // When calibrating, don't bother the outside with our state if (mCalibrating) { doCalibration(); return; }; - if (!mEnabled) return; + if (!mEnabled) + return; // X-Axis int position = SDL_JoystickGetAxis(mJoystick, 0); if (position >= mRightTolerance) - { mDirection |= RIGHT; - } else if (position <= mLeftTolerance) - { mDirection |= LEFT; - } // Y-Axis position = SDL_JoystickGetAxis(mJoystick, 1); if (position <= mUpTolerance) - { mDirection |= UP; - } else if (position >= mDownTolerance) - { mDirection |= DOWN; - } // Buttons for (int i = 0; i < MAX_BUTTONS; i++) - { mButtons[i] = (SDL_JoystickGetButton(mJoystick, i) == 1); - } } void Joystick::startCalibration() @@ -126,24 +120,16 @@ void Joystick::doCalibration() // X-Axis int position = SDL_JoystickGetAxis(mJoystick, 0); if (position > mRightTolerance) - { mRightTolerance = position; - } else if (position < mLeftTolerance) - { mLeftTolerance = position; - } // Y-Axis position = SDL_JoystickGetAxis(mJoystick, 1); if (position > mDownTolerance) - { mDownTolerance = position; - } else if (position < mUpTolerance) - { mUpTolerance = position; - } } void Joystick::finishCalibration() @@ -157,5 +143,5 @@ void Joystick::finishCalibration() bool Joystick::buttonPressed(unsigned char no) const { - return (no < MAX_BUTTONS) ? mButtons[no] : false; + return (mEnabled && no < MAX_BUTTONS) ? mButtons[no] : false; } diff --git a/src/joystick.h b/src/joystick.h index 4cc1babd..ee029915 100644 --- a/src/joystick.h +++ b/src/joystick.h @@ -35,7 +35,12 @@ class Joystick /** * Directions, to be used as bitmask values. */ - enum { UP = 1, DOWN = 2, LEFT = 4, RIGHT = 8 }; + enum { + UP = 1, + DOWN = 2, + LEFT = 4, + RIGHT = 8 + }; /** * Initializes the joystick subsystem. @@ -55,33 +60,27 @@ class Joystick ~Joystick(); - bool - isEnabled() const { return mEnabled; } + bool isEnabled() const { return mEnabled; } - void - setEnabled(bool enabled) { mEnabled = enabled; } + void setEnabled(bool enabled) { mEnabled = enabled; } /** * Updates the direction and button information. */ - void - update(); + void update(); - void - startCalibration(); + void startCalibration(); - void - finishCalibration(); + void finishCalibration(); - bool - isCalibrating() const { return mCalibrating; } + bool isCalibrating() const { return mCalibrating; } bool buttonPressed(unsigned char no) const; - bool isUp() const { return mDirection & UP; }; - bool isDown() const { return mDirection & DOWN; }; - bool isLeft() const { return mDirection & LEFT; }; - bool isRight() const { return mDirection & RIGHT; }; + bool isUp() const { return mEnabled && (mDirection & UP); }; + bool isDown() const { return mEnabled && (mDirection & DOWN); }; + bool isLeft() const { return mEnabled && (mDirection & LEFT); }; + bool isRight() const { return mEnabled && (mDirection & RIGHT); }; protected: unsigned char mDirection; @@ -97,4 +96,4 @@ class Joystick void doCalibration(); }; -#endif +#endif // _TMW_JOYSTICK_H -- cgit v1.2.3-60-g2f50 From b5ef3811e697a6a4dc963399424115c53502a4e5 Mon Sep 17 00:00:00 2001 From: Fate Date: Fri, 28 Nov 2008 21:21:27 -0700 Subject: Initialise mSkillPoint variable to avoid erroneous skill point displays during game startup --- src/localplayer.cpp | 1 + 1 file changed, 1 insertion(+) (limited to 'src') diff --git a/src/localplayer.cpp b/src/localplayer.cpp index f67b3185..bcb4820f 100644 --- a/src/localplayer.cpp +++ b/src/localplayer.cpp @@ -42,6 +42,7 @@ LocalPlayer *player_node = NULL; LocalPlayer::LocalPlayer(Uint32 id, Uint16 job, Map *map): Player(id, job, map), + mSkillPoint(0), mXpForNextLevel(0), mAttackRange(0), mXp(0), mNetwork(0), -- cgit v1.2.3-60-g2f50 From 4aeedb10f22d0dc307c9f733d0f1c79b70b9c200 Mon Sep 17 00:00:00 2001 From: Fate Date: Fri, 28 Nov 2008 21:22:10 -0700 Subject: Sanity-check index for Equipment::removeEquipment(int) --- src/equipment.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/equipment.h b/src/equipment.h index 28a96baa..e6145d12 100644 --- a/src/equipment.h +++ b/src/equipment.h @@ -48,7 +48,7 @@ class Equipment /** * Remove equipment from the given slot. */ - void removeEquipment(int index) { mEquipment[index] = 0; } + void removeEquipment(int index) { if (index >= 0 && index < EQUIPMENT_SIZE) mEquipment[index] = 0; } /** * Returns the item used in the arrow slot. -- cgit v1.2.3-60-g2f50 From b08958152524cb5c26bab8b8a9943f71acfbded3 Mon Sep 17 00:00:00 2001 From: Fate Date: Fri, 28 Nov 2008 21:49:25 -0700 Subject: Changed inventory container protocol to guarantee that we have no stale item references lying around --- src/gui/itemcontainer.cpp | 43 +++++++++++++++++++++++-------------------- src/gui/itemcontainer.h | 6 +++--- src/inventory.cpp | 2 +- 3 files changed, 27 insertions(+), 24 deletions(-) (limited to 'src') diff --git a/src/gui/itemcontainer.cpp b/src/gui/itemcontainer.cpp index 5342e3fe..1e12a1ae 100644 --- a/src/gui/itemcontainer.cpp +++ b/src/gui/itemcontainer.cpp @@ -39,9 +39,11 @@ const int ItemContainer::gridWidth = 36; // item icon width + 4 const int ItemContainer::gridHeight = 42; // item icon height + 10 +static const int NO_ITEM = -1; + ItemContainer::ItemContainer(Inventory *inventory): mInventory(inventory), - mSelectedItem(NULL) + mSelectedItemIndex(NO_ITEM) { ResourceManager *resman = ResourceManager::getInstance(); @@ -82,13 +84,6 @@ void ItemContainer::draw(gcn::Graphics *graphics) columns = 1; } - // Reset selected item when quantity not above 0 (should probably be made - // sure somewhere else) - if (mSelectedItem && mSelectedItem->getQuantity() <= 0) - { - selectNone(); - } - /* * eAthena seems to start inventory from the 3rd slot. Still a mystery to * us why, make sure not to copy this oddity to our own server. @@ -104,7 +99,7 @@ void ItemContainer::draw(gcn::Graphics *graphics) int itemY = ((i - 2) / columns) * gridHeight; // Draw selection image below selected item - if (mSelectedItem == item) + if (mSelectedItemIndex == i) { static_cast(graphics)->drawImage( mSelImg, itemX, itemY); @@ -147,19 +142,30 @@ void ItemContainer::recalculateHeight() Item *ItemContainer::getSelectedItem() const { - return mSelectedItem; + if (mSelectedItemIndex == NO_ITEM) + return NULL; + return mInventory->getItem(mSelectedItemIndex); } void ItemContainer::selectNone() { - setSelectedItem(NULL); + setSelectedItemIndex(NO_ITEM); } -void ItemContainer::setSelectedItem(Item *item) +void ItemContainer::setSelectedItemIndex(int index) { - if (mSelectedItem != item) + int newSelectedItemIndex; + + // mMaxItems is broken because of eAthena's odd inventory layout and the client's refusal + // to handle it properly, so we work around the issue right here. + if (index < 0 || index > mMaxItems + 1) + newSelectedItemIndex = NO_ITEM; + else + newSelectedItemIndex = index; + + if (mSelectedItemIndex != newSelectedItemIndex) { - mSelectedItem = item; + mSelectedItemIndex = newSelectedItemIndex; distributeValueChangedEvent(); } } @@ -189,13 +195,10 @@ void ItemContainer::mousePressed(gcn::MouseEvent &event) itemShortcut->setItemSelected(-1); // Fix for old server, it should be: if (index >= mMaxItems) - if (index > mMaxItems + 1) - { - setSelectedItem(NULL); - return; - } + setSelectedItemIndex(index); + Item *item = mInventory->getItem(index); - setSelectedItem(item); + if (item) itemShortcut->setItemSelected(item->getId()); } diff --git a/src/gui/itemcontainer.h b/src/gui/itemcontainer.h index 60b62f08..fd77fea2 100644 --- a/src/gui/itemcontainer.h +++ b/src/gui/itemcontainer.h @@ -105,9 +105,9 @@ class ItemContainer : public gcn::Widget, public gcn::MouseListener, private: /** - * Sets the currently selected item. + * Sets the currently selected item. Invalid (e.g., negative) indices set `no item'. */ - void setSelectedItem(Item *item); + void setSelectedItemIndex(int index); /** * Determine and set the height of the container. @@ -121,7 +121,7 @@ class ItemContainer : public gcn::Widget, public gcn::MouseListener, Inventory *mInventory; Image *mSelImg; - Item *mSelectedItem; + int mSelectedItemIndex; int mMaxItems; diff --git a/src/inventory.cpp b/src/inventory.cpp index 938d23d3..859213fe 100644 --- a/src/inventory.cpp +++ b/src/inventory.cpp @@ -50,7 +50,7 @@ Inventory::~Inventory() Item* Inventory::getItem(int index) const { - if (index < 0 || index >= INVENTORY_SIZE) + if (index < 0 || index >= INVENTORY_SIZE || mItems[index]->getQuantity() <= 0) return 0; return mItems[index]; -- cgit v1.2.3-60-g2f50 From 5147a78f18990c037e66dd056ef99d63395a2746 Mon Sep 17 00:00:00 2001 From: Fate Date: Fri, 28 Nov 2008 21:51:11 -0700 Subject: Eliminated silly C++ warning --- src/localplayer.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/localplayer.cpp b/src/localplayer.cpp index bcb4820f..3550b092 100644 --- a/src/localplayer.cpp +++ b/src/localplayer.cpp @@ -42,9 +42,9 @@ LocalPlayer *player_node = NULL; LocalPlayer::LocalPlayer(Uint32 id, Uint16 job, Map *map): Player(id, job, map), - mSkillPoint(0), mXpForNextLevel(0), mAttackRange(0), + mSkillPoint(0), mXp(0), mNetwork(0), mTarget(NULL), mPickUpTarget(NULL), mTrading(false), mGoingToTarget(false), -- cgit v1.2.3-60-g2f50 From 84069b54947b3916329cbacf3211d1a68dfcfefa Mon Sep 17 00:00:00 2001 From: Fate Date: Fri, 28 Nov 2008 21:58:11 -0700 Subject: Fixed potential segfault introduced while adding extra checks to inventory --- src/inventory.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/inventory.cpp b/src/inventory.cpp index 859213fe..58c75f2c 100644 --- a/src/inventory.cpp +++ b/src/inventory.cpp @@ -50,7 +50,7 @@ Inventory::~Inventory() Item* Inventory::getItem(int index) const { - if (index < 0 || index >= INVENTORY_SIZE || mItems[index]->getQuantity() <= 0) + if (index < 0 || index >= INVENTORY_SIZE || !mItems[index] || mItems[index]->getQuantity() <= 0) return 0; return mItems[index]; -- cgit v1.2.3-60-g2f50 From 53ee2ec3a7efd6ff62bff3abdb87eccec6fbe5c9 Mon Sep 17 00:00:00 2001 From: Fate Date: Fri, 28 Nov 2008 22:45:22 -0700 Subject: Remember last equipped item ID so that we jump to/re-find an item of the same ID whenever we lose the current one --- src/gui/itemcontainer.cpp | 40 ++++++++++++++++++++++++++++++++++++---- src/gui/itemcontainer.h | 12 +++++++++--- 2 files changed, 45 insertions(+), 7 deletions(-) (limited to 'src') diff --git a/src/gui/itemcontainer.cpp b/src/gui/itemcontainer.cpp index 1e12a1ae..9115b1fb 100644 --- a/src/gui/itemcontainer.cpp +++ b/src/gui/itemcontainer.cpp @@ -43,7 +43,8 @@ static const int NO_ITEM = -1; ItemContainer::ItemContainer(Inventory *inventory): mInventory(inventory), - mSelectedItemIndex(NO_ITEM) + mSelectedItemIndex(NO_ITEM), + mLastSelectedItemId(NO_ITEM) { ResourceManager *resman = ResourceManager::getInstance(); @@ -140,10 +141,13 @@ void ItemContainer::recalculateHeight() setHeight(height); } -Item *ItemContainer::getSelectedItem() const +Item *ItemContainer::getSelectedItem() { + refindSelectedItem(); // Make sure that we're still current + if (mSelectedItemIndex == NO_ITEM) return NULL; + return mInventory->getItem(mSelectedItemIndex); } @@ -152,13 +156,36 @@ void ItemContainer::selectNone() setSelectedItemIndex(NO_ITEM); } +void ItemContainer::refindSelectedItem() +{ + if (mSelectedItemIndex != NO_ITEM) { + + if (mInventory->getItem(mSelectedItemIndex) && + mInventory->getItem(mSelectedItemIndex)->getId() == mLastSelectedItemId) + return; // we're already fine + + // Otherwise ensure the invariant: we must point to an item of the specified last ID, + // or nowhere at all. + + for (int i = 0; i <= mMaxItems + 1; i++) + if (mInventory->getItem(i) && + mInventory->getItem(i)->getId() == mLastSelectedItemId) { + mSelectedItemIndex = i; + return; + } + } + + mLastSelectedItemId = mSelectedItemIndex = NO_ITEM; +} + + void ItemContainer::setSelectedItemIndex(int index) { int newSelectedItemIndex; // mMaxItems is broken because of eAthena's odd inventory layout and the client's refusal // to handle it properly, so we work around the issue right here. - if (index < 0 || index > mMaxItems + 1) + if (index < 0 || index > mMaxItems + 1 || mInventory->getItem(index) == NULL) newSelectedItemIndex = NO_ITEM; else newSelectedItemIndex = index; @@ -166,6 +193,12 @@ void ItemContainer::setSelectedItemIndex(int index) if (mSelectedItemIndex != newSelectedItemIndex) { mSelectedItemIndex = newSelectedItemIndex; + + if (mSelectedItemIndex == NO_ITEM) + mLastSelectedItemId = NO_ITEM; + else + mLastSelectedItemId = mInventory->getItem(index)->getId(); + distributeValueChangedEvent(); } } @@ -194,7 +227,6 @@ void ItemContainer::mousePressed(gcn::MouseEvent &event) int index = mx / gridWidth + ((my / gridHeight) * columns) + 2; itemShortcut->setItemSelected(-1); - // Fix for old server, it should be: if (index >= mMaxItems) setSelectedItemIndex(index); Item *item = mInventory->getItem(index); diff --git a/src/gui/itemcontainer.h b/src/gui/itemcontainer.h index fd77fea2..34545df8 100644 --- a/src/gui/itemcontainer.h +++ b/src/gui/itemcontainer.h @@ -78,7 +78,7 @@ class ItemContainer : public gcn::Widget, public gcn::MouseListener, /** * Returns the selected item. */ - Item* getSelectedItem() const; + Item* getSelectedItem(); /** * Sets selected item to NULL. @@ -109,19 +109,25 @@ class ItemContainer : public gcn::Widget, public gcn::MouseListener, */ void setSelectedItemIndex(int index); + /** + * Find the current item index by the most recently used item ID + */ + void refindSelectedItem(void); + /** * Determine and set the height of the container. */ - void recalculateHeight(); + void recalculateHeight(void); /** * Sends out selection events to the list of selection listeners. */ - void distributeValueChangedEvent(); + void distributeValueChangedEvent(void); Inventory *mInventory; Image *mSelImg; int mSelectedItemIndex; + int mLastSelectedItemId; // last selected item ID. If we lose the item, find again by ID. int mMaxItems; -- cgit v1.2.3-60-g2f50 From 017e5dd93498dd3dcf168bec95725423564c177c Mon Sep 17 00:00:00 2001 From: Philipp Sehmisch Date: Mon, 1 Dec 2008 22:26:20 +0100 Subject: Fixed a compilation error caused by path relevance. --- src/gui/inventorywindow.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/gui/inventorywindow.cpp b/src/gui/inventorywindow.cpp index 6a5a8b37..3eae6c60 100644 --- a/src/gui/inventorywindow.cpp +++ b/src/gui/inventorywindow.cpp @@ -28,12 +28,13 @@ #include "button.h" #include "gui.h" -#include "inventory.h" #include "item_amount.h" #include "itemcontainer.h" #include "scrollarea.h" #include "viewport.h" - + + +#include "../inventory.h" #include "../item.h" #include "../localplayer.h" -- cgit v1.2.3-60-g2f50 From 07c2da75b7d994ab097e7c50d865bee929623685 Mon Sep 17 00:00:00 2001 From: Bjørn Lindeijer Date: Tue, 2 Dec 2008 20:28:22 +0100 Subject: Fix background on resolutions other than 800x600 The image is now centered and a gray background is drawn behind it so that parts that are not covered by the image don't show redrawing issues. --- src/main.cpp | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/main.cpp b/src/main.cpp index 91ba4d53..7da504ec 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -758,7 +758,16 @@ int main(int argc, char *argv[]) progressBar->setProgress(0.0f); } - graphics->drawImage(login_wallpaper, 0, 0); + if (graphics->getWidth() > login_wallpaper->getWidth() || + graphics->getHeight() > login_wallpaper->getHeight()) + { + graphics->setColor(gcn::Color(64, 64, 64)); + graphics->fillRectangle(gcn::Rectangle( + 0, 0, graphics->getWidth(), graphics->getHeight())); + } + graphics->drawImage(login_wallpaper, + (graphics->getWidth() - login_wallpaper->getWidth()) / 2, + (graphics->getHeight() - login_wallpaper->getHeight()) / 2); gui->draw(); graphics->updateScreen(); -- cgit v1.2.3-60-g2f50 From a9fd68ab999119bf9c2b42718a715009894d0102 Mon Sep 17 00:00:00 2001 From: Bjørn Lindeijer Date: Wed, 3 Dec 2008 15:12:27 +0100 Subject: Converted DOS to UNIX newlines --- src/gui/inventorywindow.cpp | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'src') diff --git a/src/gui/inventorywindow.cpp b/src/gui/inventorywindow.cpp index 3eae6c60..f38c118e 100644 --- a/src/gui/inventorywindow.cpp +++ b/src/gui/inventorywindow.cpp @@ -32,8 +32,7 @@ #include "itemcontainer.h" #include "scrollarea.h" #include "viewport.h" - - + #include "../inventory.h" #include "../item.h" #include "../localplayer.h" -- cgit v1.2.3-60-g2f50 From e95578fcdd9c6af250f84d8a368c10764039349e Mon Sep 17 00:00:00 2001 From: Ira Rice Date: Tue, 2 Dec 2008 16:17:42 -0700 Subject: Fixed status window so that the job level is displayed next to the level, as well as making the job level bar more consistent. Signed-off-by: Ira Rice --- src/gui/status.cpp | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) (limited to 'src') diff --git a/src/gui/status.cpp b/src/gui/status.cpp index 56c36e0a..b9f28562 100644 --- a/src/gui/status.cpp +++ b/src/gui/status.cpp @@ -48,6 +48,7 @@ StatusWindow::StatusWindow(LocalPlayer *player): mLvlLabel = new gcn::Label("Level:"); mGpLabel = new gcn::Label("Money:"); + mJobLvlLabel = new gcn::Label("Job:"); mHpLabel = new gcn::Label("HP:"); mHpBar = new ProgressBar(1.0f, 80, 15, 0, 171, 34); @@ -62,7 +63,7 @@ StatusWindow::StatusWindow(LocalPlayer *player): mMpValueLabel = new gcn::Label(""); mJobXpLabel = new gcn::Label("Job:"); - mJobXpBar = new ProgressBar(1.0f, 60, 15, 220, 135, 203); + mJobXpBar = new ProgressBar(1.0f, 80, 15, 220, 135, 203); mJobValueLabel = new gcn::Label(""); int y = 3; @@ -70,6 +71,8 @@ StatusWindow::StatusWindow(LocalPlayer *player): mLvlLabel->setPosition(x, y); x += mLvlLabel->getWidth() + 40; + mJobLvlLabel->setPosition(x, y); + x += mJobLvlLabel->getWidth() + 40; mGpLabel->setPosition(x, y); y += mLvlLabel->getHeight() + 5; // Next Row @@ -95,10 +98,11 @@ StatusWindow::StatusWindow(LocalPlayer *player): mMpValueLabel->setPosition(x, y); mJobXpLabel->setPosition(175, y); - mJobXpBar->setPosition(225, y); + mJobXpBar->setPosition(205, y); mJobValueLabel->setPosition(290, y); add(mLvlLabel); + add(mJobLvlLabel); add(mGpLabel); add(mHpLabel); add(mHpValueLabel); @@ -226,12 +230,12 @@ void StatusWindow::update() mLvlLabel->setCaption("Level: " + toString(mPlayer->mLevel)); mLvlLabel->adjustSize(); + mJobLvlLabel->setCaption("Job: " + toString(mPlayer->mJobLevel)); + mJobLvlLabel->adjustSize(); + mGpLabel->setCaption("Money: " + toString(mPlayer->mGp) + " GP"); mGpLabel->adjustSize(); - mJobXpLabel->setCaption("Job: " + toString(mPlayer->mJobLevel)); - mJobXpLabel->adjustSize(); - mHpValueLabel->setCaption(toString(mPlayer->mHp) + "/" + toString(mPlayer->mMaxHp)); mHpValueLabel->adjustSize(); @@ -334,8 +338,10 @@ void StatusWindow::update() mStatsReflexPoints->adjustSize(); // Update Second column widgets position - mGpLabel->setPosition(mLvlLabel->getX() + mLvlLabel->getWidth() + 20, - mLvlLabel->getY()); + mJobLvlLabel->setPosition(mLvlLabel->getX() + mLvlLabel->getWidth() + 20, + mLvlLabel->getY()); + mGpLabel->setPosition(mJobLvlLabel->getX() + mJobLvlLabel->getWidth() + 20, + mJobLvlLabel->getY()); mXpLabel->setPosition( mHpValueLabel->getX() + mHpValueLabel->getWidth() + 10, @@ -347,11 +353,13 @@ void StatusWindow::update() mXpBar->getX() + mXpBar->getWidth() + 5, mXpLabel->getY()); - mJobXpLabel->setPosition(mXpLabel->getX(), mMpLabel->getY()); + mJobXpLabel->setPosition(mXpBar->getX() - mJobXpLabel->getWidth() - 5, + mMpLabel->getY()); mJobXpBar->setPosition( - mXpBar->getX() + mXpBar->getWidth() - mJobXpBar->getWidth(), + mJobXpLabel->getX() + mJobXpLabel->getWidth() + 5, mJobXpLabel->getY()); - mJobValueLabel->setPosition(290, mJobXpLabel->getY()); + mJobValueLabel->setPosition(mJobXpBar->getX() + mJobXpBar->getWidth() + 5, + mJobXpLabel->getY()); } void StatusWindow::draw(gcn::Graphics *g) -- cgit v1.2.3-60-g2f50 From 56de3bcc125fe6fd184e56b6e83a168d59c2d9c9 Mon Sep 17 00:00:00 2001 From: Bjørn Lindeijer Date: Wed, 3 Dec 2008 23:20:14 +0100 Subject: Adding missing mJobLvlLabel from last commit --- src/gui/status.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/gui/status.h b/src/gui/status.h index 55ed393e..eb4171c9 100644 --- a/src/gui/status.h +++ b/src/gui/status.h @@ -68,7 +68,9 @@ class StatusWindow : public Window, public gcn::ActionListener /** * Status Part */ - gcn::Label *mLvlLabel, *mGpLabel, *mHpLabel, *mHpValueLabel; + gcn::Label *mLvlLabel, *mJobLvlLabel; + gcn::Label *mGpLabel; + gcn::Label *mHpLabel, *mHpValueLabel; gcn::Label *mMpLabel, *mMpValueLabel; gcn::Label *mXpLabel, *mXpValueLabel, *mJobXpLabel, *mJobValueLabel; ProgressBar *mHpBar, *mMpBar; -- cgit v1.2.3-60-g2f50 From 074236254a3e648914142e21a53b41fbc35e58d8 Mon Sep 17 00:00:00 2001 From: Ira Rice Date: Sat, 22 Nov 2008 01:56:05 +0000 Subject: While there is still a small visual artifact, this patch fixes the buy window so that it properly reports how much money you have. --- src/net/buysellhandler.cpp | 3 +++ 1 file changed, 3 insertions(+) (limited to 'src') diff --git a/src/net/buysellhandler.cpp b/src/net/buysellhandler.cpp index 5eb76a46..16cfdc06 100644 --- a/src/net/buysellhandler.cpp +++ b/src/net/buysellhandler.cpp @@ -114,6 +114,9 @@ void BuySellHandler::handleMessage(MessageIn *msg) if (msg->readInt8() == 0) { chatWindow->chatLog("Thanks for buying", BY_SERVER); } else { + // Reset player money since buy dialog already assumed purchase + // would go fine + buyDialog->setMoney(player_node->mGp); chatWindow->chatLog("Unable to buy", BY_SERVER); } break; -- cgit v1.2.3-60-g2f50 From 0f2eef4278b258bb59968686b48f7de0ecd923e3 Mon Sep 17 00:00:00 2001 From: Ira Rice Date: Fri, 21 Nov 2008 03:38:52 +0000 Subject: Added the setup button to show when the client is loaded, since all of the settings in it can be changed on client startup and aren't game specific. --- src/main.cpp | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) (limited to 'src') diff --git a/src/main.cpp b/src/main.cpp index 7da504ec..c192b041 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -64,6 +64,7 @@ #include "gui/ok_dialog.h" #include "gui/progressbar.h" #include "gui/register.h" +#include "gui/setup.h" #include "gui/updatewindow.h" #include "gui/textfield.h" @@ -86,6 +87,16 @@ #include #endif +namespace { + struct SetupListener : public gcn::ActionListener + { + /** + * Called when receiving actions from widget. + */ + void action(const gcn::ActionEvent &event); + } listener; +} + // Account infos char n_server, n_character; @@ -111,6 +122,8 @@ LoginData loginData; LockedArray charInfo(MAX_SLOT + 1); +extern Window *setupWindow; + // This anonymous namespace hides whatever is inside from other modules. namespace { @@ -408,6 +421,7 @@ void exit_engine() delete gui; delete graphics; + delete setupWindow; // Shutdown libxml xmlCleanupParser(); @@ -675,6 +689,7 @@ int main(int argc, char *argv[]) Game *game = NULL; Window *currentDialog = NULL; Image *login_wallpaper = NULL; + setupWindow = new Setup(); gcn::Container *top = static_cast(gui->getTop()); #ifdef PACKAGE_VERSION @@ -687,6 +702,9 @@ int main(int argc, char *argv[]) top->add(progressLabel, 15 + progressBar->getWidth(), progressBar->getY() + 4); progressBar->setVisible(false); + gcn::Button *setup = new Button("Setup", "Setup", &listener); + setup->setPosition(top->getWidth() - setup->getWidth() - 3, 3); + top->add(setup); sound.playMusic("Magick - Real.ogg"); @@ -964,3 +982,22 @@ int main(int argc, char *argv[]) PHYSFS_deinit(); return 0; } + +void SetupListener::action(const gcn::ActionEvent &event) +{ + Window *window = NULL; + + if (event.getId() == "Setup") + { + window = setupWindow; + } + + if (window) + { + window->setVisible(!window->isVisible()); + if (window->isVisible()) + { + window->requestMoveToTop(); + } + } +} -- cgit v1.2.3-60-g2f50 From f9cb8f4bab6ab4552b6197d433a267cb4b7941b0 Mon Sep 17 00:00:00 2001 From: Bjørn Lindeijer Date: Wed, 3 Dec 2008 23:51:01 +0100 Subject: Disabled "Reset Windows" button when appropriate You shouldn't be able to press "Reset Windows" before the in-game windows have been created. Previously this would crash. --- src/gui/setup.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'src') diff --git a/src/gui/setup.cpp b/src/gui/setup.cpp index 6be0399c..4fae514f 100644 --- a/src/gui/setup.cpp +++ b/src/gui/setup.cpp @@ -59,6 +59,10 @@ Setup::Setup(): x -= btn->getWidth() + 5; btn->setPosition(x, height - btn->getHeight() - 5); add(btn); + + // Disable this button when the windows aren't created yet + if (!strcmp(*curBtn, "Reset Windows")) + btn->setEnabled(statusWindow != NULL); } TabbedContainer *panel = new TabbedContainer(); @@ -111,6 +115,11 @@ void Setup::action(const gcn::ActionEvent &event) } else if (event.getId() == "Reset Windows") { + // Bail out if this action happens to be activated before the windows + // are created (though it should be disabled then) + if (!statusWindow) + return; + statusWindow->resetToDefaultSize(); minimap->resetToDefaultSize(); chatWindow->resetToDefaultSize(); -- cgit v1.2.3-60-g2f50 From a4e1725ff13dfe72dc83611e014cc5bf2f213fa8 Mon Sep 17 00:00:00 2001 From: Ira Rice Date: Thu, 4 Dec 2008 00:40:48 +0100 Subject: Deleted a few dangling pointers noticed by Bjorn. Signed-off-by: Ira Rice --- src/main.cpp | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/main.cpp b/src/main.cpp index c192b041..8371c941 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -421,7 +421,6 @@ void exit_engine() delete gui; delete graphics; - delete setupWindow; // Shutdown libxml xmlCleanupParser(); @@ -898,9 +897,13 @@ int main(int argc, char *argv[]) #endif delete progressBar; delete progressLabel; + delete setup; + delete setupWindow; progressBar = NULL; progressLabel = NULL; currentDialog = NULL; + setup = NULL; + setupWindow = NULL; login_wallpaper->decRef(); login_wallpaper = NULL; @@ -969,6 +972,8 @@ int main(int argc, char *argv[]) #endif delete progressBar; delete progressLabel; + delete setup; + delete setupWindow; delete network; SDLNet_Quit(); -- cgit v1.2.3-60-g2f50 From 36ae10688b870c4d6029e20ef9a063a2db120e6a Mon Sep 17 00:00:00 2001 From: Bjørn Lindeijer Date: Thu, 4 Dec 2008 00:47:20 +0100 Subject: Don't reuse the setupWindow variable from the game Fixes crash on exit caused by double deletion. --- src/main.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/main.cpp b/src/main.cpp index 8371c941..e246b6a9 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -88,6 +88,8 @@ #endif namespace { + Window *setupWindow = 0; + struct SetupListener : public gcn::ActionListener { /** @@ -122,8 +124,6 @@ LoginData loginData; LockedArray charInfo(MAX_SLOT + 1); -extern Window *setupWindow; - // This anonymous namespace hides whatever is inside from other modules. namespace { -- cgit v1.2.3-60-g2f50 From 6ac9c3bce62a8fc79e23477417188108f0ad9fa6 Mon Sep 17 00:00:00 2001 From: Bjørn Lindeijer Date: Fri, 5 Dec 2008 21:38:31 +0100 Subject: Fix race condition with a std::string access The downloading thread was writing to a std::string while the main thread was trying to draw it, for example. Now access to the label caption is guarded with a mutex. Should fix crashes while downloading updates. --- src/Makefile.am | 1 + src/gui/updatewindow.cpp | 31 +++++++++------- src/gui/updatewindow.h | 13 +++++-- src/utils/mutex.h | 94 ++++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 124 insertions(+), 15 deletions(-) create mode 100644 src/utils/mutex.h (limited to 'src') diff --git a/src/Makefile.am b/src/Makefile.am index 867953ab..3387690a 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -219,6 +219,7 @@ tmw_SOURCES = gui/widgets/resizegrip.cpp \ utils/strprintf.h \ utils/tostring.h \ utils/trim.h \ + utils/mutex.h \ utils/xml.cpp \ utils/xml.h \ animatedsprite.cpp \ diff --git a/src/gui/updatewindow.cpp b/src/gui/updatewindow.cpp index ea0f86cd..6083725e 100644 --- a/src/gui/updatewindow.cpp +++ b/src/gui/updatewindow.cpp @@ -47,7 +47,7 @@ /** * Calculates the Alder-32 checksum for the given file. */ -unsigned long fadler32(FILE *file) +static unsigned long fadler32(FILE *file) { // Obtain file size fseek(file, 0, SEEK_END); @@ -146,15 +146,9 @@ UpdaterWindow::UpdaterWindow(const std::string &updateHost, UpdaterWindow::~UpdaterWindow() { if (mThread) - { - SDL_WaitThread(mThread, NULL); - mThread = NULL; - } + SDL_WaitThread(mThread, NULL); - if (mMemoryBuffer) - { - free(mMemoryBuffer); - } + free(mMemoryBuffer); // Remove possibly leftover temporary download ::remove((mUpdatesDir + "/download.temp").c_str()); @@ -169,8 +163,9 @@ void UpdaterWindow::setProgress(float p) void UpdaterWindow::setLabel(const std::string &str) { - mLabel->setCaption(str); - mLabel->adjustSize(); + // Do delayed label text update, since Guichan isn't thread-safe + MutexLocker lock(mLabelMutex); + mNewLabelCaption = str; } void UpdaterWindow::enable() @@ -413,6 +408,17 @@ void UpdaterWindow::logic() // Update Scroll logic mScrollArea->logic(); + // Synchronize label caption when necessary + { + MutexLocker lock(mLabelMutex); + + if (mLabel->getCaption() != mNewLabelCaption) + { + mLabel->setCaption(mNewLabelCaption); + mLabel->adjustSize(); + } + } + switch (mDownloadStatus) { case UPDATE_ERROR: @@ -434,7 +440,8 @@ void UpdaterWindow::logic() mBrowserBox->addRow("##1 It is strongly recommended that"); mBrowserBox->addRow("##1 you try again later"); mBrowserBox->addRow(mCurlError); - mScrollArea->setVerticalScrollAmount(mScrollArea->getVerticalMaxScroll()); + mScrollArea->setVerticalScrollAmount( + mScrollArea->getVerticalMaxScroll()); mDownloadStatus = UPDATE_COMPLETE; break; case UPDATE_NEWS: diff --git a/src/gui/updatewindow.h b/src/gui/updatewindow.h index d7e3c4c7..a7dfe2cb 100644 --- a/src/gui/updatewindow.h +++ b/src/gui/updatewindow.h @@ -30,12 +30,13 @@ #include "../guichanfwd.h" +#include "../utils/mutex.h" + class BrowserBox; class Button; class ProgressBar; class ScrollArea; -struct SDL_mutex; struct SDL_Thread; /** @@ -88,7 +89,7 @@ class UpdaterWindow : public Window, public gcn::ActionListener int updateState; - protected: +private: void download(); /** @@ -133,6 +134,12 @@ class UpdaterWindow : public Window, public gcn::ActionListener /** The file currently downloading. */ std::string mCurrentFile; + /** The new label caption to be set in the logic method. */ + std::string mNewLabelCaption; + + /** The mutex used to guard access to mNewLabelCaption. */ + Mutex mLabelMutex; + /** The Adler32 checksum of the file currently downloading. */ unsigned long mCurrentChecksum; @@ -164,7 +171,7 @@ class UpdaterWindow : public Window, public gcn::ActionListener Button *mCancelButton; /**< Button to stop the update process. */ Button *mPlayButton; /**< Button to start playing. */ ProgressBar *mProgressBar; /**< Update progress bar. */ - BrowserBox* mBrowserBox; /**< Box to display news. */ + BrowserBox *mBrowserBox; /**< Box to display news. */ ScrollArea *mScrollArea; /**< Used to scroll news box. */ }; diff --git a/src/utils/mutex.h b/src/utils/mutex.h new file mode 100644 index 00000000..6c35987c --- /dev/null +++ b/src/utils/mutex.h @@ -0,0 +1,94 @@ +/* + * The Mana World + * Copyright 2008 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 + */ + +#ifndef TMW_MUTEX_H +#define TMW_MUTEX_H + +#include + +#include "../log.h" + +/** + * A mutex provides mutual exclusion of access to certain data that is + * accessed by multiple threads. + */ +class Mutex +{ +public: + Mutex(); + ~Mutex(); + + void lock(); + void unlock(); + +private: + SDL_mutex *mMutex; +}; + +/** + * A convenience class for locking a mutex. + */ +class MutexLocker +{ +public: + MutexLocker(Mutex mutex); + ~MutexLocker(); + +private: + Mutex mMutex; +}; + + +inline Mutex::Mutex() +{ + mMutex = SDL_CreateMutex(); +} + +inline Mutex::~Mutex() +{ + SDL_DestroyMutex(mMutex); +} + +inline void Mutex::lock() +{ + if (SDL_mutexP(mMutex) == -1) + logger->log("Mutex locking failed: %s", SDL_GetError()); +} + +inline void Mutex::unlock() +{ + if (SDL_mutexV(mMutex) == -1) + logger->log("Mutex unlocking failed: %s", SDL_GetError()); +} + + +inline MutexLocker::MutexLocker(Mutex mutex): + mMutex(mutex) +{ + mMutex.lock(); +} + +inline MutexLocker::~MutexLocker() +{ + mMutex.unlock(); +} + +#endif // TMW_MUTEX_H -- cgit v1.2.3-60-g2f50 From 06d0205bab253ec5d01e8483ab639a092fe117c5 Mon Sep 17 00:00:00 2001 From: Bjørn Lindeijer Date: Fri, 5 Dec 2008 22:26:38 +0100 Subject: Fixed MutexLocker to not work on a copy The Mutex class wasn't meant to be copied around. Silly last minute refactorings leading to untested code... --- src/gui/updatewindow.cpp | 4 ++-- src/utils/mutex.h | 13 ++++++++----- 2 files changed, 10 insertions(+), 7 deletions(-) (limited to 'src') diff --git a/src/gui/updatewindow.cpp b/src/gui/updatewindow.cpp index 6083725e..c0344b72 100644 --- a/src/gui/updatewindow.cpp +++ b/src/gui/updatewindow.cpp @@ -164,7 +164,7 @@ void UpdaterWindow::setProgress(float p) void UpdaterWindow::setLabel(const std::string &str) { // Do delayed label text update, since Guichan isn't thread-safe - MutexLocker lock(mLabelMutex); + MutexLocker lock(&mLabelMutex); mNewLabelCaption = str; } @@ -410,7 +410,7 @@ void UpdaterWindow::logic() // Synchronize label caption when necessary { - MutexLocker lock(mLabelMutex); + MutexLocker lock(&mLabelMutex); if (mLabel->getCaption() != mNewLabelCaption) { diff --git a/src/utils/mutex.h b/src/utils/mutex.h index 6c35987c..62c6b4e1 100644 --- a/src/utils/mutex.h +++ b/src/utils/mutex.h @@ -40,6 +40,9 @@ public: void unlock(); private: + Mutex(const Mutex&); // prevent copying + Mutex& operator=(const Mutex&); + SDL_mutex *mMutex; }; @@ -49,11 +52,11 @@ private: class MutexLocker { public: - MutexLocker(Mutex mutex); + MutexLocker(Mutex *mutex); ~MutexLocker(); private: - Mutex mMutex; + Mutex *mMutex; }; @@ -80,15 +83,15 @@ inline void Mutex::unlock() } -inline MutexLocker::MutexLocker(Mutex mutex): +inline MutexLocker::MutexLocker(Mutex *mutex): mMutex(mutex) { - mMutex.lock(); + mMutex->lock(); } inline MutexLocker::~MutexLocker() { - mMutex.unlock(); + mMutex->unlock(); } #endif // TMW_MUTEX_H -- cgit v1.2.3-60-g2f50 From 9559fdb347054e945940980efdbbe83615ce9733 Mon Sep 17 00:00:00 2001 From: Bjørn Lindeijer Date: Fri, 5 Dec 2008 23:01:54 +0100 Subject: Fade out mouse cursor when not used for some time The mouse cursor will now disappear when not used for 15 seconds. When using OpenGL it will even fade. Requested by doorsman. --- src/gui/gui.cpp | 47 +++++++++++++++++++++++++++++++++++------------ src/gui/gui.h | 11 +++++++++++ 2 files changed, 46 insertions(+), 12 deletions(-) (limited to 'src') diff --git a/src/gui/gui.cpp b/src/gui/gui.cpp index 691cfe2b..96415298 100644 --- a/src/gui/gui.cpp +++ b/src/gui/gui.cpp @@ -38,6 +38,7 @@ #include "../graphics.h" #include "../log.h" +#include "../resources/image.h" #include "../resources/imageset.h" #include "../resources/resourcemanager.h" #include "../resources/imageloader.h" @@ -75,6 +76,8 @@ class GuiConfigListener : public ConfigListener Gui::Gui(Graphics *graphics): mCustomCursor(false), mMouseCursors(NULL), + mMouseCursorAlpha(1.0f), + mMouseInactivityTimer(0), mCursorType(CURSOR_POINTER) { logger->log("Initializing GUI..."); @@ -174,32 +177,47 @@ Gui::~Gui() delete hitBlueFont; delete hitYellowFont; - if (mMouseCursors) { + if (mMouseCursors) mMouseCursors->decRef(); - } delete mGuiFont; delete speechFont; delete viewport; - delete mTop; + delete getTop(); delete guiInput; } -void -Gui::draw() +void Gui::logic() +{ + // Fade out mouse cursor after extended inactivity + if (mMouseInactivityTimer < 100 * 15) { + ++mMouseInactivityTimer; + mMouseCursorAlpha = std::min(1.0f, mMouseCursorAlpha + 0.05f); + } else { + mMouseCursorAlpha = std::max(0.0f, mMouseCursorAlpha - 0.005f); + } + + gcn::Gui::logic(); +} + +void Gui::draw() { - mGraphics->pushClipArea(mTop->getDimension()); - mTop->draw(mGraphics); + mGraphics->pushClipArea(getTop()->getDimension()); + getTop()->draw(mGraphics); int mouseX, mouseY; Uint8 button = SDL_GetMouseState(&mouseX, &mouseY); - if ((SDL_GetAppState() & SDL_APPMOUSEFOCUS || button & SDL_BUTTON(1)) && - mCustomCursor) + if ((SDL_GetAppState() & SDL_APPMOUSEFOCUS || button & SDL_BUTTON(1)) + && mCustomCursor + && mMouseCursorAlpha > 0.0f) { + Image *mouseCursor = mMouseCursors->get(mCursorType); + mouseCursor->setAlpha(mMouseCursorAlpha); + static_cast(mGraphics)->drawImage( - mMouseCursors->get(mCursorType), + mouseCursor, mouseX - 15, mouseY - 17); } @@ -207,8 +225,7 @@ Gui::draw() mGraphics->popClipArea(); } -void -Gui::setUseCustomCursor(bool customCursor) +void Gui::setUseCustomCursor(bool customCursor) { if (customCursor != mCustomCursor) { @@ -241,3 +258,9 @@ Gui::setUseCustomCursor(bool customCursor) } } } + +void Gui::handleMouseMoved(const gcn::MouseInput &mouseInput) +{ + gcn::Gui::handleMouseMoved(mouseInput); + mMouseInactivityTimer = 0; +} diff --git a/src/gui/gui.h b/src/gui/gui.h index f31b98c3..15d5d99c 100644 --- a/src/gui/gui.h +++ b/src/gui/gui.h @@ -57,6 +57,12 @@ class Gui : public gcn::Gui */ ~Gui(); + /** + * Performs logic of the GUI. Overridden to track mouse pointer + * activity. + */ + void logic(); + /** * Draws the whole Gui by calling draw functions down in the * Gui hierarchy. It also draws the mouse pointer. @@ -94,11 +100,16 @@ class Gui : public gcn::Gui CURSOR_TOTAL }; + protected: + void handleMouseMoved(const gcn::MouseInput &mouseInput); + private: GuiConfigListener *mConfigListener; gcn::Font *mGuiFont; /**< The global GUI font */ bool mCustomCursor; /**< Show custom cursor */ ImageSet *mMouseCursors; /**< Mouse cursor images */ + float mMouseCursorAlpha; + int mMouseInactivityTimer; int mCursorType; }; -- cgit v1.2.3-60-g2f50 From 369e540d6cb78874c4951b66b1668468168f496b Mon Sep 17 00:00:00 2001 From: Fate Date: Fri, 5 Dec 2008 23:35:35 -0700 Subject: added /w shortcut for whispering --- src/gui/chat.cpp | 64 +++++++++++++++++++++++++++++++------------------------- src/gui/chat.h | 29 ++++++++++++++----------- 2 files changed, 52 insertions(+), 41 deletions(-) (limited to 'src') diff --git a/src/gui/chat.cpp b/src/gui/chat.cpp index 71d36e97..5817adbd 100644 --- a/src/gui/chat.cpp +++ b/src/gui/chat.cpp @@ -246,6 +246,38 @@ ChatWindow::isInputFocused() return mChatInput->isFocused(); } +void +ChatWindow::whisper(const std::string &nick, std::string msg, int prefixlen) +{ + std::string recvnick = ""; + msg.erase(0, prefixlen + 1); + + if (msg.substr(0,1) == "\"") + { + const std::string::size_type pos = msg.find('"', 1); + if (pos != std::string::npos) { + recvnick = msg.substr(1, pos - 1); + msg.erase(0, pos + 2); + } + } + else + { + const std::string::size_type pos = msg.find(" "); + if (pos != std::string::npos) { + recvnick = msg.substr(0, pos); + msg.erase(0, pos + 1); + } + } + + MessageOut outMsg(mNetwork); + outMsg.writeInt16(CMSG_CHAT_WHISPER); + outMsg.writeInt16(msg.length() + 28); + outMsg.writeString(recvnick, 24); + outMsg.writeString(msg, msg.length()); + + chatLog("Whispering to " + recvnick + " : " + msg, BY_PLAYER); +} + void ChatWindow::chatSend(const std::string &nick, std::string msg) { @@ -307,35 +339,9 @@ ChatWindow::chatSend(const std::string &nick, std::string msg) mTextOutput->clearRows(); } else if (msg.substr(0, IS_WHISPER_LENGTH) == IS_WHISPER) - { - std::string recvnick = ""; - msg.erase(0, IS_WHISPER_LENGTH + 1); - - if (msg.substr(0,1) == "\"") - { - const std::string::size_type pos = msg.find('"', 1); - if (pos != std::string::npos) { - recvnick = msg.substr(1, pos - 1); - msg.erase(0, pos + 2); - } - } - else - { - const std::string::size_type pos = msg.find(" "); - if (pos != std::string::npos) { - recvnick = msg.substr(0, pos); - msg.erase(0, pos + 1); - } - } - - MessageOut outMsg(mNetwork); - outMsg.writeInt16(CMSG_CHAT_WHISPER); - outMsg.writeInt16(msg.length() + 28); - outMsg.writeString(recvnick, 24); - outMsg.writeString(msg, msg.length()); - - chatLog("Whispering to " + recvnick + " : " + msg, BY_PLAYER); - } + whisper(nick, msg, IS_WHISPER_LENGTH + 1); + else if (msg.substr(0, IS_SHORT_WHISPER_LENGTH) == IS_SHORT_WHISPER) + whisper(nick, msg, IS_SHORT_WHISPER_LENGTH + 1); else { chatLog("Unknown command", BY_SERVER); diff --git a/src/gui/chat.h b/src/gui/chat.h index 6e412bf6..76a8146c 100644 --- a/src/gui/chat.h +++ b/src/gui/chat.h @@ -46,18 +46,20 @@ class ScrollArea; #define BY_LOGGER 6 -#define IS_ANNOUNCE "/announce " -#define IS_ANNOUNCE_LENGTH 10 -#define IS_HELP "/help" -#define IS_HELP_LENGTH 5 -#define IS_WHERE "/where" -#define IS_WHERE_LENGTH 6 -#define IS_WHO "/who" -#define IS_WHO_LENGTH 4 -#define IS_CLEAR "/clear" -#define IS_CLEAR_LENGTH 6 -#define IS_WHISPER "/whisper" -#define IS_WHISPER_LENGTH 8 +#define IS_ANNOUNCE "/announce " +#define IS_ANNOUNCE_LENGTH 10 +#define IS_HELP "/help" +#define IS_HELP_LENGTH 5 +#define IS_WHERE "/where" +#define IS_WHERE_LENGTH 6 +#define IS_WHO "/who" +#define IS_WHO_LENGTH 4 +#define IS_CLEAR "/clear" +#define IS_CLEAR_LENGTH 6 +#define IS_WHISPER "/whisper" +#define IS_WHISPER_LENGTH 8 +#define IS_SHORT_WHISPER "/w" +#define IS_SHORT_WHISPER_LENGTH 2 /** * gets in between usernick and message text depending on @@ -219,6 +221,9 @@ class ChatWindow : public Window, public gcn::ActionListener, Network *mNetwork; bool mTmpVisible; + void + whisper(const std::string &nick, std::string msg, int prefixlen); + /** One item in the chat log */ struct CHATLOG { -- cgit v1.2.3-60-g2f50 From bb7c5ce187c0d6c555fbc390859b054e6c8dfcd2 Mon Sep 17 00:00:00 2001 From: Jared Adams Date: Sat, 6 Dec 2008 15:16:42 +0000 Subject: Fix whispering --- src/gui/chat.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/gui/chat.cpp b/src/gui/chat.cpp index 5817adbd..66f6600f 100644 --- a/src/gui/chat.cpp +++ b/src/gui/chat.cpp @@ -339,9 +339,9 @@ ChatWindow::chatSend(const std::string &nick, std::string msg) mTextOutput->clearRows(); } else if (msg.substr(0, IS_WHISPER_LENGTH) == IS_WHISPER) - whisper(nick, msg, IS_WHISPER_LENGTH + 1); + whisper(nick, msg, IS_WHISPER_LENGTH); else if (msg.substr(0, IS_SHORT_WHISPER_LENGTH) == IS_SHORT_WHISPER) - whisper(nick, msg, IS_SHORT_WHISPER_LENGTH + 1); + whisper(nick, msg, IS_SHORT_WHISPER_LENGTH); else { chatLog("Unknown command", BY_SERVER); -- cgit v1.2.3-60-g2f50 From 704f58c9033599c871c176df68ffe7ac3bc8c969 Mon Sep 17 00:00:00 2001 From: Fate Date: Sat, 6 Dec 2008 12:20:16 -0700 Subject: Added particle containers and refactored beings to use them (to clean up responsibilities a little) --- src/Makefile.am | 2 + src/being.cpp | 34 ++-------- src/being.h | 12 +++- src/particlecontainer.cpp | 158 ++++++++++++++++++++++++++++++++++++++++++++++ src/particlecontainer.h | 106 +++++++++++++++++++++++++++++++ 5 files changed, 281 insertions(+), 31 deletions(-) create mode 100644 src/particlecontainer.cpp create mode 100644 src/particlecontainer.h (limited to 'src') diff --git a/src/Makefile.am b/src/Makefile.am index 3387690a..e9d69b5e 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -279,6 +279,8 @@ tmw_SOURCES = gui/widgets/resizegrip.cpp \ particleemitter.cpp \ particleemitter.h \ particleemitterprop.h \ + particlecontainer.cpp \ + particlecontainer.h \ player.cpp \ player.h \ player_relations.cpp \ diff --git a/src/being.cpp b/src/being.cpp index ef257f43..7c6d91e7 100644 --- a/src/being.cpp +++ b/src/being.cpp @@ -74,7 +74,9 @@ Being::Being(int id, int job, Map *map): mPx(0), mPy(0), mSprites(VECTOREND_SPRITE, NULL), mSpriteIDs(VECTOREND_SPRITE, 0), - mSpriteColors(VECTOREND_SPRITE, "") + mSpriteColors(VECTOREND_SPRITE, ""), + mStatusParticleEffects(&mStunParticleEffects, false), + mChildParticleEffects(&mStatusParticleEffects, false) { setMap(map); @@ -95,13 +97,6 @@ Being::~Being() std::for_each(mSprites.begin(), mSprites.end(), make_dtor(mSprites)); clearPath(); - for ( std::list::iterator i = mChildParticleEffects.begin(); - i != mChildParticleEffects.end(); - i++) - { - (*i)->kill(); - } - setMap(NULL); instances--; @@ -233,12 +228,7 @@ Being::setMap(Map *map) void Being::controlParticle(Particle *particle) { - if (particle) - { - // The effect may not die without the beings permission or we segfault - particle->disableAutoDelete(); - mChildParticleEffects.push_back(particle); - } + mChildParticleEffects.addLocally(particle); } void @@ -413,21 +403,7 @@ Being::logic() } //Update particle effects - for ( std::list::iterator i = mChildParticleEffects.begin(); - i != mChildParticleEffects.end(); - - ) - { - (*i)->setPosition((float)mPx + 16.0f, (float)mPy + 32.0f); - if ((*i)->isExtinct()) - { - (*i)->kill(); - i = mChildParticleEffects.erase(i); - } - else { - i++; - } - } + mChildParticleEffects.setPositions((float)mPx + 16.0f, (float)mPy + 32.0f); } void diff --git a/src/being.h b/src/being.h index 0dbc41db..568d51c7 100644 --- a/src/being.h +++ b/src/being.h @@ -26,13 +26,15 @@ #include #include #include -#include +#include #include "sprite.h" #include "map.h" #include "animatedsprite.h" +#include "particlecontainer.h" #define FIRST_IGNORE_EMOTE 14 +#define STATUS_EFFECTS 32 class AnimatedSprite; class Equipment; @@ -405,6 +407,8 @@ class Being : public Sprite std::string mName; /**< Name of character */ SpriteIterator mSpriteIterator; + typedef std::bitset StatusEffects; + /** Engine-related infos about weapon. */ const ItemInfo* mEquippedWeapon; @@ -414,11 +418,15 @@ class Being : public Sprite Uint8 mGender; Uint32 mSpeechTime; Sint32 mPx, mPy; /**< Pixel coordinates */ + Uint16 mStunMode; /**< Stun mode; zero if not stunned */ + StatusEffects mStatusEffects; /**< Bitset of active status effects */ std::vector mSprites; std::vector mSpriteIDs; std::vector mSpriteColors; - std::list mChildParticleEffects; + ParticleContainer mStunParticleEffects; + ParticleVector mStatusParticleEffects; + ParticleContainer mChildParticleEffects; private: /** diff --git a/src/particlecontainer.cpp b/src/particlecontainer.cpp new file mode 100644 index 00000000..4df45b26 --- /dev/null +++ b/src/particlecontainer.cpp @@ -0,0 +1,158 @@ +/* + * The Mana World + * Copyright 2008 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 + */ + +#include + +#include "particlecontainer.h" + + +ParticleContainer::ParticleContainer(ParticleContainer *parent, bool delParent) : + mDelParent(delParent), + mNext(parent) +{}; + +ParticleContainer::~ParticleContainer() +{ + clearLocally(); + if (mNext && mDelParent) + delete mNext; +} + +void +ParticleContainer::addLocally(Particle *particle) +{ + if (particle) + { + // The effect may not die without the beings permission or we segfault + particle->disableAutoDelete(); + mElements.push_back(particle); + } +} + +void +ParticleContainer::removeLocally(Particle *particle) +{ + for (std::list::iterator it = mElements.begin(); + it != mElements.end(); it++) + if (*it == particle) { + (*it)->kill(); + mElements.erase(it); + } +} + +void +ParticleContainer::clear() +{ + clearLocally(); + if (mNext) + mNext->clear(); +} + +void +ParticleContainer::clearLocally() +{ + for (std::list::iterator it = mElements.begin(); + it != mElements.end(); it++) + (*it)->kill(); + + mElements.clear(); +} + +void +ParticleContainer::setPositions(float x, float y) +{ + for (std::list::iterator it = mElements.begin(); + it != mElements.end();) + { + (*it)->setPosition(x, y); + if ((*it)->isExtinct()) + { + (*it)->kill(); + it = mElements.erase(it); + } + else + it++; + } +} + + + + +ParticleVector::ParticleVector(ParticleContainer *next, bool delParent) +{ + ParticleContainer::ParticleContainer(next, delParent); +} + +void +ParticleVector::setLocally(int index, Particle *particle) +{ + assert(index >= 0); + + delLocally(index); + + if (mIndexedElements.size() <= (unsigned) index) + mIndexedElements.resize(index + 1, NULL); + + mIndexedElements[index] = particle; +} + +void +ParticleVector::delLocally(int index) +{ + assert(index >= 0); + + if (mIndexedElements.size() <= (unsigned) index) + return; + + Particle *p = mIndexedElements[index]; + if (p) + { + mIndexedElements[index] = NULL; + p->kill(); + } +} + +void +ParticleVector::clearLocally() +{ + for (unsigned int i = 0; i < mIndexedElements.size(); i++) + delLocally(i); +} + +void +ParticleVector::setPositions(float x, float y) +{ + ParticleContainer::setPositions(x, y); + + for (std::vector::iterator it = mIndexedElements.begin(); + it != mIndexedElements.end(); it++) + if (*it) + { + (*it)->setPosition(x, y); + + if ((*it)->isExtinct()) + { + (*it)->kill(); + *it = NULL; + } + } +} + diff --git a/src/particlecontainer.h b/src/particlecontainer.h new file mode 100644 index 00000000..a6a1b1c8 --- /dev/null +++ b/src/particlecontainer.h @@ -0,0 +1,106 @@ +/* + * The Mana World + * Copyright 2008 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 + */ + +#ifndef _PARTICLE_CONTAINER_H +#define _PARTICLE_CONTAINER_H + +#include +#include + +#include "particle.h" + + +/** + * Set of particle effects. May be stacked with other ParticleContainers. All + * operations herein affect such stacked containers, unless the operations end + * in `Locally'. + */ +class ParticleContainer +{ +public: + /** + * Constructs a new particle container and assumes responsibility for + * its parent (for all operations defined herein, except when ending in `Locally') + * + * delParent means that the destructor should also free the parent. + */ + ParticleContainer(ParticleContainer *parent = NULL, bool delParent = true); + ~ParticleContainer(); + + /** + * Takes control of and adds a particle + */ + void addLocally(Particle *); + + /** + * `kills' and removes a particle + */ + void removeLocally(Particle *); + + /** + * Kills and removes all particle effects + */ + void clear(); + + /** + * Kills and removes all particle effects (only in this container) + */ + virtual void clearLocally(); + + /** + * Sets the positions of all elements + */ + virtual void setPositions(float x, float y); + +protected: + bool mDelParent; /**< Delete mNext in destructor */ + std::list mElements; /**< Contained particle effects */ + ParticleContainer *mNext; /**< Contained container, if any */ +}; + + +/** + * Particle container with indexing facilities + */ +class ParticleVector : public ParticleContainer +{ +public: + ParticleVector(ParticleContainer *parent = NULL, bool delParent = true); + + /** + * Sets a particle at a specified index. Kills the previous particle + * there, if needed. + */ + virtual void setLocally(int index, Particle *particle); + + /** + * Removes a particle at a specified index + */ + virtual void delLocally(int index); + + virtual void clearLocally(); + virtual void setPositions(float x, float y); + +protected: + std::vector mIndexedElements; +}; + +#endif -- cgit v1.2.3-60-g2f50 From e149248f3de912b6cef0d4f342d47e4063f26716 Mon Sep 17 00:00:00 2001 From: Lloyd Bryant Date: Sat, 19 Jul 2008 07:43:43 +0000 Subject: Removed unnecessary weight check in itemdb loader (cherry picked from Aethyra commit e3fef730b69e4edc328e6105ea48b9774631563d) --- src/resources/itemdb.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/resources/itemdb.cpp b/src/resources/itemdb.cpp index 5ee40014..e6f2fd1f 100644 --- a/src/resources/itemdb.cpp +++ b/src/resources/itemdb.cpp @@ -125,10 +125,10 @@ void ItemDB::load() CHECK_PARAM(name, ""); CHECK_PARAM(image, ""); - // CHECK_PARAM(description, ""); - // CHECK_PARAM(effect, ""); + CHECK_PARAM(description, ""); + CHECK_PARAM(effect, ""); // CHECK_PARAM(type, 0); - CHECK_PARAM(weight, 0); + // CHECK_PARAM(weight, 0); // CHECK_PARAM(slot, 0); #undef CHECK_PARAM -- cgit v1.2.3-60-g2f50 From 3b7d0af6f0c61e1087838c14519e099dbbe47ec2 Mon Sep 17 00:00:00 2001 From: Bjørn Lindeijer Date: Sat, 6 Dec 2008 23:44:17 +0100 Subject: Made /where response include position information Change ported from Aethyra. --- src/gui/chat.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/gui/chat.cpp b/src/gui/chat.cpp index 66f6600f..1c7629ae 100644 --- a/src/gui/chat.cpp +++ b/src/gui/chat.cpp @@ -327,7 +327,10 @@ ChatWindow::chatSend(const std::string &nick, std::string msg) } else if (msg.substr(0, IS_WHERE_LENGTH) == IS_WHERE) { - chatLog(map_path, BY_SERVER); + // Display the current map, X, and Y + std::ostringstream where; + where << map_path << " " << player_node->mX << "," << player_node->mY; + chatLog(where.str(), BY_SERVER); } else if (msg.substr(0, IS_WHO_LENGTH) == IS_WHO) { -- cgit v1.2.3-60-g2f50 From 84cfc5ac9929d2190d9fb19fa411b72d90bb2185 Mon Sep 17 00:00:00 2001 From: Bjørn Lindeijer Date: Sat, 6 Dec 2008 23:48:15 +0100 Subject: Some code formatting --- src/animatedsprite.cpp | 57 +++++++++++--------------------------------------- 1 file changed, 12 insertions(+), 45 deletions(-) (limited to 'src') diff --git a/src/animatedsprite.cpp b/src/animatedsprite.cpp index 840fb1e8..203a82af 100644 --- a/src/animatedsprite.cpp +++ b/src/animatedsprite.cpp @@ -56,7 +56,8 @@ AnimatedSprite *AnimatedSprite::load(const std::string& filename, int variant) { ResourceManager *resman = ResourceManager::getInstance(); SpriteDef *s = resman->getSprite(filename, variant); - if (!s) return NULL; + if (!s) + return NULL; AnimatedSprite *as = new AnimatedSprite(s); s->decRef(); return as; @@ -67,22 +68,18 @@ AnimatedSprite::~AnimatedSprite() mSprite->decRef(); } -void -AnimatedSprite::reset() +void AnimatedSprite::reset() { mFrameIndex = 0; mFrameTime = 0; mLastTime = 0; } -void -AnimatedSprite::play(SpriteAction spriteAction) +void AnimatedSprite::play(SpriteAction spriteAction) { Action *action = mSprite->getAction(spriteAction); if (!action) - { return; - } mAction = action; Animation *animation = mAction->getAnimation(mDirection); @@ -96,20 +93,15 @@ AnimatedSprite::play(SpriteAction spriteAction) } } -void -AnimatedSprite::update(int time) +void AnimatedSprite::update(int time) { // Avoid freaking out at first frame or when tick_time overflows if (time < mLastTime || mLastTime == 0) - { mLastTime = time; - } // If not enough time has passed yet, do nothing if (time <= mLastTime || !mAnimation) - { return; - } unsigned int dt = time - mLastTime; mLastTime = time; @@ -121,13 +113,10 @@ AnimatedSprite::update(int time) } } -bool -AnimatedSprite::updateCurrentAnimation(unsigned int time) +bool AnimatedSprite::updateCurrentAnimation(unsigned int time) { if (!mFrame || Animation::isTerminator(*mFrame)) - { return false; - } mFrameTime += time; @@ -137,9 +126,7 @@ AnimatedSprite::updateCurrentAnimation(unsigned int time) mFrameIndex++; if (mFrameIndex == mAnimation->getLength()) - { mFrameIndex = 0; - } mFrame = mAnimation->getFrame(mFrameIndex); @@ -154,30 +141,24 @@ AnimatedSprite::updateCurrentAnimation(unsigned int time) return true; } -bool -AnimatedSprite::draw(Graphics* graphics, int posX, int posY) const +bool AnimatedSprite::draw(Graphics* graphics, int posX, int posY) const { if (!mFrame || !mFrame->image) - { return false; - } return graphics->drawImage(mFrame->image, posX + mFrame->offsetX, posY + mFrame->offsetY); } -void -AnimatedSprite::setDirection(SpriteDirection direction) +void AnimatedSprite::setDirection(SpriteDirection direction) { if (mDirection != direction) { mDirection = direction; if (!mAction) - { return; - } Animation *animation = mAction->getAnimation(mDirection); @@ -190,26 +171,12 @@ AnimatedSprite::setDirection(SpriteDirection direction) } } -int -AnimatedSprite::getWidth() const +int AnimatedSprite::getWidth() const { - if (mFrame) - { - return mFrame->image->getWidth(); - } - else { - return 0; - } + return mFrame ? mFrame->image->getWidth() : 0; } -int -AnimatedSprite::getHeight() const +int AnimatedSprite::getHeight() const { - if (mFrame) - { - return mFrame->image->getHeight(); - } - else { - return 0; - } + return mFrame ? mFrame->image->getHeight() : 0; } -- cgit v1.2.3-60-g2f50 From 523eed88816298b1660ecb9e67db80776e4007bb Mon Sep 17 00:00:00 2001 From: Ira Rice Date: Sat, 1 Nov 2008 03:36:47 +0000 Subject: Made NPC dialogues resizeable. (cherry picked from Aethyra commit 81299ca9acc39dec62e1e504781721ad0db0d471) Conflicts: src/gui/inventorywindow.cpp src/gui/npc_text.cpp --- src/gui/npc_text.cpp | 37 +++++++++++++++++++++++++++++++++---- src/gui/npc_text.h | 16 ++++++++++++++++ src/gui/npclistdialog.cpp | 33 ++++++++++++++++++++++++++++++--- src/gui/npclistdialog.h | 15 +++++++++++++++ 4 files changed, 94 insertions(+), 7 deletions(-) (limited to 'src') diff --git a/src/gui/npc_text.cpp b/src/gui/npc_text.cpp index 3c4beaf3..ad2ccdce 100644 --- a/src/gui/npc_text.cpp +++ b/src/gui/npc_text.cpp @@ -32,10 +32,16 @@ NpcTextDialog::NpcTextDialog(): Window("NPC") { + setResizable(true); + + setMinWidth(200); + setMinHeight(150); + mTextBox = new TextBox; mTextBox->setEditable(false); - gcn::ScrollArea *scrollArea = new ScrollArea(mTextBox); - Button *okButton = new Button("OK", "ok", this); + + scrollArea = new ScrollArea(mTextBox); + okButton = new Button("OK", "ok", this); setContentSize(260, 175); scrollArea->setHorizontalScrollPolicy(gcn::ScrollArea::SHOW_NEVER); @@ -55,13 +61,36 @@ NpcTextDialog::NpcTextDialog(): void NpcTextDialog::setText(const std::string &text) { - mTextBox->setTextWrapped(text); + mText = text; + draw(); } void NpcTextDialog::addText(const std::string &text) { - mTextBox->setTextWrapped(mTextBox->getText() + text + "\n"); + mText = mTextBox->getText() + text + "\n"; + draw(); +} + +void NpcTextDialog::widgetResized(const gcn::Event &event) +{ + Window::widgetResized(event); + draw(); +} + +void NpcTextDialog::draw() +{ + const gcn::Rectangle &area = getChildrenArea(); + const int width = area.width; + const int height = area.height; + + mTextBox->setTextWrapped(mText); + + scrollArea->setDimension(gcn::Rectangle( + 5, 5, width - 10, height - 15 - okButton->getHeight())); + okButton->setPosition( + width - 5 - okButton->getWidth(), + height - 5 - okButton->getHeight()); } void diff --git a/src/gui/npc_text.h b/src/gui/npc_text.h index 2c9771d3..939fb8fa 100644 --- a/src/gui/npc_text.h +++ b/src/gui/npc_text.h @@ -44,6 +44,18 @@ class NpcTextDialog : public Window, public gcn::ActionListener */ NpcTextDialog(); + /** + * Called when resizing the window + * + * @param event The calling event + */ + void widgetResized(const gcn::Event &event); + + /** + * Redraws the window + */ + void draw(); + /** * Called when receiving actions from the widgets. */ @@ -68,7 +80,11 @@ class NpcTextDialog : public Window, public gcn::ActionListener addText(const std::string &string); private: + gcn::Button *okButton; + gcn::ScrollArea *scrollArea; TextBox *mTextBox; + + std::string mText; }; #endif diff --git a/src/gui/npclistdialog.cpp b/src/gui/npclistdialog.cpp index 90444f1a..4f3bc893 100644 --- a/src/gui/npclistdialog.cpp +++ b/src/gui/npclistdialog.cpp @@ -32,10 +32,15 @@ NpcListDialog::NpcListDialog(): Window("NPC") { + setResizable(true); + + setMinWidth(200); + setMinHeight(150); + mItemList = new ListBox(this); - ScrollArea *scrollArea = new ScrollArea(mItemList); - Button *okButton = new Button("OK", "ok", this); - Button *cancelButton = new Button("Cancel", "cancel", this); + scrollArea = new ScrollArea(mItemList); + okButton = new Button("OK", "ok", this); + cancelButton = new Button("Cancel", "cancel", this); setContentSize(260, 175); scrollArea->setHorizontalScrollPolicy(gcn::ScrollArea::SHOW_NEVER); @@ -88,6 +93,28 @@ NpcListDialog::reset() mItems.clear(); } +void NpcListDialog::widgetResized(const gcn::Event &event) +{ + Window::widgetResized(event); + draw(); +} + +void NpcListDialog::draw() +{ + const gcn::Rectangle &area = getChildrenArea(); + const int width = area.width; + const int height = area.height; + + scrollArea->setDimension(gcn::Rectangle( + 5, 5, width - 10, height - 15 - okButton->getHeight())); + cancelButton->setPosition( + width - 5 - cancelButton->getWidth(), + height - 5 - cancelButton->getHeight()); + okButton->setPosition( + cancelButton->getX() - 5 - okButton->getWidth(), + cancelButton->getY()); +} + void NpcListDialog::action(const gcn::ActionEvent &event) { diff --git a/src/gui/npclistdialog.h b/src/gui/npclistdialog.h index 0e6760f1..0c9ca495 100644 --- a/src/gui/npclistdialog.h +++ b/src/gui/npclistdialog.h @@ -48,6 +48,18 @@ class NpcListDialog : public Window, public gcn::ActionListener, */ NpcListDialog(); + /** + * Called when resizing the window + * + * @param event The calling event + */ + void widgetResized(const gcn::Event &event); + + /** + * Redraws the window + */ + void draw(); + /** * Called when receiving actions from the widgets. */ @@ -82,6 +94,9 @@ class NpcListDialog : public Window, public gcn::ActionListener, private: gcn::ListBox *mItemList; + gcn::ScrollArea *scrollArea; + gcn::Button *okButton; + gcn::Button *cancelButton; std::vector mItems; }; -- cgit v1.2.3-60-g2f50 From 43eb6ba950dd8bf978e539c7c7460ef5096438de Mon Sep 17 00:00:00 2001 From: Bjørn Lindeijer Date: Sun, 7 Dec 2008 00:23:59 +0100 Subject: Fixed wrapping in some cases, removed draw method MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The 'draw' method was confusingly named, and was actually for updating the GUI after a resize. Its functionality has been merged into 'widgetResized'. The wrapping was broken in the case where text was added to the NPC dialog, cause it was added to an already wrapped string, causing the wrapping to become permanent. Sorry for all the reformatting. Signed-off-by: Bjørn Lindeijer --- src/gui/npc_text.cpp | 23 ++++++++--------------- src/gui/npc_text.h | 16 ++++------------ src/gui/npclistdialog.cpp | 22 ++++++---------------- src/gui/npclistdialog.h | 22 ++++++---------------- 4 files changed, 24 insertions(+), 59 deletions(-) (limited to 'src') diff --git a/src/gui/npc_text.cpp b/src/gui/npc_text.cpp index ad2ccdce..34c9cce1 100644 --- a/src/gui/npc_text.cpp +++ b/src/gui/npc_text.cpp @@ -58,43 +58,36 @@ NpcTextDialog::NpcTextDialog(): setLocationRelativeTo(getParent()); } -void -NpcTextDialog::setText(const std::string &text) +void NpcTextDialog::setText(const std::string &text) { mText = text; - draw(); + mTextBox->setTextWrapped(mText); } -void -NpcTextDialog::addText(const std::string &text) +void NpcTextDialog::addText(const std::string &text) { - mText = mTextBox->getText() + text + "\n"; - draw(); + setText(mText + text + "\n"); } void NpcTextDialog::widgetResized(const gcn::Event &event) { Window::widgetResized(event); - draw(); -} -void NpcTextDialog::draw() -{ const gcn::Rectangle &area = getChildrenArea(); const int width = area.width; const int height = area.height; - mTextBox->setTextWrapped(mText); - scrollArea->setDimension(gcn::Rectangle( 5, 5, width - 10, height - 15 - okButton->getHeight())); okButton->setPosition( width - 5 - okButton->getWidth(), height - 5 - okButton->getHeight()); + + // Set the text again so that it gets wrapped according to the new size + mTextBox->setTextWrapped(mText); } -void -NpcTextDialog::action(const gcn::ActionEvent &event) +void NpcTextDialog::action(const gcn::ActionEvent &event) { if (event.getId() == "ok") { diff --git a/src/gui/npc_text.h b/src/gui/npc_text.h index 939fb8fa..76161f88 100644 --- a/src/gui/npc_text.h +++ b/src/gui/npc_text.h @@ -51,24 +51,17 @@ class NpcTextDialog : public Window, public gcn::ActionListener */ void widgetResized(const gcn::Event &event); - /** - * Redraws the window - */ - void draw(); - /** * Called when receiving actions from the widgets. */ - void - action(const gcn::ActionEvent &event); + void action(const gcn::ActionEvent &event); /** * Sets the text shows in the dialog. * * @param string The new text. */ - void - setText(const std::string &string); + void setText(const std::string &string); /** * Adds the text to the text shows in the dialog. Also adds a newline @@ -76,8 +69,7 @@ class NpcTextDialog : public Window, public gcn::ActionListener * * @param string The text to add. */ - void - addText(const std::string &string); + void addText(const std::string &string); private: gcn::Button *okButton; @@ -87,4 +79,4 @@ class NpcTextDialog : public Window, public gcn::ActionListener std::string mText; }; -#endif +#endif // _TMW_NPC_TEXT_H diff --git a/src/gui/npclistdialog.cpp b/src/gui/npclistdialog.cpp index 4f3bc893..cdd38312 100644 --- a/src/gui/npclistdialog.cpp +++ b/src/gui/npclistdialog.cpp @@ -64,31 +64,26 @@ NpcListDialog::NpcListDialog(): setLocationRelativeTo(getParent()); } -int -NpcListDialog::getNumberOfElements() +int NpcListDialog::getNumberOfElements() { return mItems.size(); } -std::string -NpcListDialog::getElementAt(int i) +std::string NpcListDialog::getElementAt(int i) { return mItems[i]; } -void -NpcListDialog::parseItems(const std::string &itemString) +void NpcListDialog::parseItems(const std::string &itemString) { std::istringstream iss(itemString); std::string tmp; - while(getline(iss, tmp, ':')) { + while (getline(iss, tmp, ':')) mItems.push_back(tmp); - } } -void -NpcListDialog::reset() +void NpcListDialog::reset() { mItems.clear(); } @@ -96,11 +91,7 @@ NpcListDialog::reset() void NpcListDialog::widgetResized(const gcn::Event &event) { Window::widgetResized(event); - draw(); -} -void NpcListDialog::draw() -{ const gcn::Rectangle &area = getChildrenArea(); const int width = area.width; const int height = area.height; @@ -115,8 +106,7 @@ void NpcListDialog::draw() cancelButton->getY()); } -void -NpcListDialog::action(const gcn::ActionEvent &event) +void NpcListDialog::action(const gcn::ActionEvent &event) { int choice = 0; diff --git a/src/gui/npclistdialog.h b/src/gui/npclistdialog.h index 0c9ca495..f548dbba 100644 --- a/src/gui/npclistdialog.h +++ b/src/gui/npclistdialog.h @@ -55,42 +55,32 @@ class NpcListDialog : public Window, public gcn::ActionListener, */ void widgetResized(const gcn::Event &event); - /** - * Redraws the window - */ - void draw(); - /** * Called when receiving actions from the widgets. */ - void - action(const gcn::ActionEvent &event); + void action(const gcn::ActionEvent &event); /** * Returns the number of items in the choices list. */ - int - getNumberOfElements(); + int getNumberOfElements(); /** * Returns the name of item number i of the choices list. */ - std::string - getElementAt(int i); + std::string getElementAt(int i); /** * Fills the options list for an NPC dialog. * * @param itemString A string with the options separated with colons. */ - void - parseItems(const std::string &itemString); + void parseItems(const std::string &itemString); /** * Resets the list by removing all items. */ - void - reset(); + void reset(); private: gcn::ListBox *mItemList; @@ -101,4 +91,4 @@ class NpcListDialog : public Window, public gcn::ActionListener, std::vector mItems; }; -#endif +#endif // _TMW_GUI_NPCLISTDIALOG_H -- cgit v1.2.3-60-g2f50 From ad8b5f6389562a1f68f2821753317ea7c22bf2ea Mon Sep 17 00:00:00 2001 From: Douglas Boffey Date: Fri, 8 Aug 2008 09:05:28 +0000 Subject: Changed the status window so that all the information appears by default (cherry picked from Aethyra commit 0f033c073c7ae630c9359da358128f5f425f01a6) --- src/gui/status.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/gui/status.cpp b/src/gui/status.cpp index b9f28562..1a257ae8 100644 --- a/src/gui/status.cpp +++ b/src/gui/status.cpp @@ -39,7 +39,7 @@ StatusWindow::StatusWindow(LocalPlayer *player): setResizable(true); setCloseButton(true); setDefaultSize((windowContainer->getWidth() - 365) / 2, - (windowContainer->getHeight() - 255) / 2, 365, 255); + (windowContainer->getHeight() - 255) / 2, 365, 275); loadWindowState(); // ---------------------- -- cgit v1.2.3-60-g2f50 From 047f598be826dd57dd1124db914e8367256112be Mon Sep 17 00:00:00 2001 From: Kraant Date: Sun, 10 Aug 2008 10:56:58 +0000 Subject: Set headers for CURL so that proxies won't cache files to fix bug that causes resources2.txt to be old and out of sync with the files in the directory. (cherry picked from Aethyra commit ccacde4192268fbf5250e9bd6894d158f957922c) --- src/gui/updatewindow.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'src') diff --git a/src/gui/updatewindow.cpp b/src/gui/updatewindow.cpp index c0344b72..d453e22a 100644 --- a/src/gui/updatewindow.cpp +++ b/src/gui/updatewindow.cpp @@ -310,6 +310,13 @@ int UpdaterWindow::downloadThread(void *ptr) curl_easy_setopt(curl, CURLOPT_NOSIGNAL, 1); curl_easy_setopt(curl, CURLOPT_CONNECTTIMEOUT, 15); + /*caching breaks things when resources2.txt is cached + *so caching is turned off on the proxy with this header + *change*/ + struct curl_slist *pHeaders=NULL; + pHeaders = curl_slist_append(pHeaders, "pragma: no-cache"); + curl_easy_setopt(curl, CURLOPT_HTTPHEADER, pHeaders); + if ((res = curl_easy_perform(curl)) != 0) { uw->mDownloadStatus = UPDATE_ERROR; @@ -334,6 +341,8 @@ int UpdaterWindow::downloadThread(void *ptr) curl_easy_cleanup(curl); + curl_slist_free_all(pHeaders); + if (!uw->mStoreInMemory) { // Don't check resources2.txt checksum -- cgit v1.2.3-60-g2f50 From cabf8905526b6601813573d049f6afaf364e1cac Mon Sep 17 00:00:00 2001 From: Kraant Date: Sun, 10 Aug 2008 13:00:33 +0000 Subject: Changed proxy fix to only tell the proxy to no-cache for news.txt and resources2.txt. (cherry picked from Aethyra commit 3206b3254a1a9b90bbdbd1a7178e4df043a5ee26) --- src/gui/updatewindow.cpp | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/gui/updatewindow.cpp b/src/gui/updatewindow.cpp index d453e22a..2edb1a9a 100644 --- a/src/gui/updatewindow.cpp +++ b/src/gui/updatewindow.cpp @@ -310,12 +310,15 @@ int UpdaterWindow::downloadThread(void *ptr) curl_easy_setopt(curl, CURLOPT_NOSIGNAL, 1); curl_easy_setopt(curl, CURLOPT_CONNECTTIMEOUT, 15); - /*caching breaks things when resources2.txt is cached - *so caching is turned off on the proxy with this header - *change*/ struct curl_slist *pHeaders=NULL; - pHeaders = curl_slist_append(pHeaders, "pragma: no-cache"); - curl_easy_setopt(curl, CURLOPT_HTTPHEADER, pHeaders); + if(uw->mDownloadStatus != UPDATE_RESOURCES){ + /*caching breaks things when resources2.txt is cached + *so caching is turned off on the proxy with this header + *change*/ + pHeaders = curl_slist_append(pHeaders, "pragma: no-cache"); + pHeaders = curl_slist_append(pHeaders, "Cache-Control: no-cache"); + curl_easy_setopt(curl, CURLOPT_HTTPHEADER, pHeaders); + } if ((res = curl_easy_perform(curl)) != 0) { @@ -341,7 +344,9 @@ int UpdaterWindow::downloadThread(void *ptr) curl_easy_cleanup(curl); - curl_slist_free_all(pHeaders); + if(uw->mDownloadStatus != UPDATE_RESOURCES){ + curl_slist_free_all(pHeaders); + } if (!uw->mStoreInMemory) { -- cgit v1.2.3-60-g2f50 From 416e28057f5a6073a2ef44f296ed1c8bc1280bf6 Mon Sep 17 00:00:00 2001 From: Bjørn Lindeijer Date: Sun, 7 Dec 2008 00:59:09 +0100 Subject: Some code reformatting and updated NEWS --- NEWS | 2 ++ src/gui/updatewindow.cpp | 22 ++++++++++++---------- 2 files changed, 14 insertions(+), 10 deletions(-) (limited to 'src') diff --git a/NEWS b/NEWS index 56beff06..52dbf700 100644 --- a/NEWS +++ b/NEWS @@ -12,6 +12,8 @@ - Extended particle emitters with properties that can change over time - Extended the GUI font to support more characters - Only require a restart to switch to full screen with OpenGL on Windows +- Make sure news and update file list aren't cached (from Aethyra) +- Made NPC dialogs resizable (from Aethyra) - Fixed visibility of trade window on startup - Fixed a client input freeze when closing NPC script from server - Fixed dead players to lie on the ground instead of standing around diff --git a/src/gui/updatewindow.cpp b/src/gui/updatewindow.cpp index 2edb1a9a..7f7d45fc 100644 --- a/src/gui/updatewindow.cpp +++ b/src/gui/updatewindow.cpp @@ -310,14 +310,15 @@ int UpdaterWindow::downloadThread(void *ptr) curl_easy_setopt(curl, CURLOPT_NOSIGNAL, 1); curl_easy_setopt(curl, CURLOPT_CONNECTTIMEOUT, 15); - struct curl_slist *pHeaders=NULL; - if(uw->mDownloadStatus != UPDATE_RESOURCES){ - /*caching breaks things when resources2.txt is cached - *so caching is turned off on the proxy with this header - *change*/ - pHeaders = curl_slist_append(pHeaders, "pragma: no-cache"); - pHeaders = curl_slist_append(pHeaders, "Cache-Control: no-cache"); - curl_easy_setopt(curl, CURLOPT_HTTPHEADER, pHeaders); + struct curl_slist *pHeaders = NULL; + if (uw->mDownloadStatus != UPDATE_RESOURCES) + { + // Make sure the resources2.txt and news.txt aren't cached, + // in order to always get the latest version. + pHeaders = curl_slist_append(pHeaders, "pragma: no-cache"); + pHeaders = + curl_slist_append(pHeaders, "Cache-Control: no-cache"); + curl_easy_setopt(curl, CURLOPT_HTTPHEADER, pHeaders); } if ((res = curl_easy_perform(curl)) != 0) @@ -344,8 +345,9 @@ int UpdaterWindow::downloadThread(void *ptr) curl_easy_cleanup(curl); - if(uw->mDownloadStatus != UPDATE_RESOURCES){ - curl_slist_free_all(pHeaders); + if (uw->mDownloadStatus != UPDATE_RESOURCES) + { + curl_slist_free_all(pHeaders); } if (!uw->mStoreInMemory) -- cgit v1.2.3-60-g2f50 From 617fb41e21710856c1451058481e5df3756fb355 Mon Sep 17 00:00:00 2001 From: Fate Date: Sat, 6 Dec 2008 19:50:49 -0700 Subject: Fixes to the /w command --- src/gui/chat.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/gui/chat.cpp b/src/gui/chat.cpp index 5817adbd..a96c2eda 100644 --- a/src/gui/chat.cpp +++ b/src/gui/chat.cpp @@ -250,7 +250,7 @@ void ChatWindow::whisper(const std::string &nick, std::string msg, int prefixlen) { std::string recvnick = ""; - msg.erase(0, prefixlen + 1); + msg.erase(0, prefixlen); if (msg.substr(0,1) == "\"") { @@ -496,6 +496,7 @@ void ChatWindow::help(const std::string &msg1, const std::string &msg2) chatLog("/where: Display map name", BY_SERVER); chatLog("/whisper : Sends a private " " to ", BY_SERVER); + chatLog("/w : Short form for /whisper", BY_SERVER); chatLog("/who: Display number of online users", BY_SERVER); chatLog("For more information, type /help ", BY_SERVER); return; @@ -531,9 +532,10 @@ void ChatWindow::help(const std::string &msg1, const std::string &msg2) BY_SERVER); return; } - if (msg1 == "whisper") + if (msg1 == "whisper" || msg1 == "w") { chatLog("Command: /whisper ", BY_SERVER); + chatLog("Command: /w ", BY_SERVER); chatLog("This command sends the message to has spaces in it, enclose it in " "double quotes (\").", BY_SERVER); -- cgit v1.2.3-60-g2f50 From 7b11d719316e84d97e95a32de2a74803aa18e5da Mon Sep 17 00:00:00 2001 From: Fate Date: Sat, 6 Dec 2008 19:55:22 -0700 Subject: Minor punctuation fix, merged earlier /whisper fix/help update with separate fix for same issue --- src/gui/chat.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/gui/chat.cpp b/src/gui/chat.cpp index b9e11dad..1e22772b 100644 --- a/src/gui/chat.cpp +++ b/src/gui/chat.cpp @@ -250,7 +250,7 @@ void ChatWindow::whisper(const std::string &nick, std::string msg, int prefixlen) { std::string recvnick = ""; - msg.erase(0, prefixlen); + msg.erase(0, prefixlen + 1); if (msg.substr(0,1) == "\"") { @@ -539,7 +539,7 @@ void ChatWindow::help(const std::string &msg1, const std::string &msg2) { chatLog("Command: /whisper ", BY_SERVER); chatLog("Command: /w ", BY_SERVER); - chatLog("This command sends the message to to .", BY_SERVER); chatLog("If the has spaces in it, enclose it in " "double quotes (\").", BY_SERVER); return; -- cgit v1.2.3-60-g2f50 From a7c21e6f8add37af7412449742ec55c8daa8571a Mon Sep 17 00:00:00 2001 From: Fate Date: Sat, 6 Dec 2008 21:00:46 -0700 Subject: Defrobnicated ParticleContainer inheritance hierarchy --- src/being.h | 4 ++-- src/particlecontainer.cpp | 51 ++++++++++++++++++++++++++++++++--------------- src/particlecontainer.h | 45 +++++++++++++++++++++++++++++------------ 3 files changed, 69 insertions(+), 31 deletions(-) (limited to 'src') diff --git a/src/being.h b/src/being.h index 568d51c7..15e1e6f9 100644 --- a/src/being.h +++ b/src/being.h @@ -424,9 +424,9 @@ class Being : public Sprite std::vector mSprites; std::vector mSpriteIDs; std::vector mSpriteColors; - ParticleContainer mStunParticleEffects; + ParticleList mStunParticleEffects; ParticleVector mStatusParticleEffects; - ParticleContainer mChildParticleEffects; + ParticleList mChildParticleEffects; private: /** diff --git a/src/particlecontainer.cpp b/src/particlecontainer.cpp index 4df45b26..12ef5733 100644 --- a/src/particlecontainer.cpp +++ b/src/particlecontainer.cpp @@ -37,7 +37,30 @@ ParticleContainer::~ParticleContainer() } void -ParticleContainer::addLocally(Particle *particle) +ParticleContainer::clear() +{ + clearLocally(); + if (mNext) + mNext->clear(); +} + + +void +ParticleContainer::setPositions(float x, float y) +{ + if (mNext) + mNext->setPositions(x, y); +} + +// -- particle list ---------------------------------------- + +ParticleList::ParticleList(ParticleContainer *parent, bool delParent) : + ParticleContainer(parent, delParent) {}; + +ParticleList::~ParticleList() {} + +void +ParticleList::addLocally(Particle *particle) { if (particle) { @@ -48,7 +71,7 @@ ParticleContainer::addLocally(Particle *particle) } void -ParticleContainer::removeLocally(Particle *particle) +ParticleList::removeLocally(Particle *particle) { for (std::list::iterator it = mElements.begin(); it != mElements.end(); it++) @@ -59,15 +82,7 @@ ParticleContainer::removeLocally(Particle *particle) } void -ParticleContainer::clear() -{ - clearLocally(); - if (mNext) - mNext->clear(); -} - -void -ParticleContainer::clearLocally() +ParticleList::clearLocally() { for (std::list::iterator it = mElements.begin(); it != mElements.end(); it++) @@ -77,8 +92,10 @@ ParticleContainer::clearLocally() } void -ParticleContainer::setPositions(float x, float y) +ParticleList::setPositions(float x, float y) { + ParticleContainer::setPositions(x, y); + for (std::list::iterator it = mElements.begin(); it != mElements.end();) { @@ -96,10 +113,12 @@ ParticleContainer::setPositions(float x, float y) -ParticleVector::ParticleVector(ParticleContainer *next, bool delParent) -{ - ParticleContainer::ParticleContainer(next, delParent); -} +// -- particle vector ---------------------------------------- + +ParticleVector::ParticleVector(ParticleContainer *parent, bool delParent) : + ParticleContainer(parent, delParent) {}; + +ParticleVector::~ParticleVector() {}; void ParticleVector::setLocally(int index, Particle *particle) diff --git a/src/particlecontainer.h b/src/particlecontainer.h index a6a1b1c8..cf002fbc 100644 --- a/src/particlecontainer.h +++ b/src/particlecontainer.h @@ -42,38 +42,56 @@ public: * * delParent means that the destructor should also free the parent. */ - ParticleContainer(ParticleContainer *parent = NULL, bool delParent = true); - ~ParticleContainer(); + ParticleContainer(ParticleContainer *parent = NULL, bool delParent = true); + virtual ~ParticleContainer(); /** - * Takes control of and adds a particle + * Kills and removes all particle effects */ - void addLocally(Particle *); + void clear(); /** - * `kills' and removes a particle + * Kills and removes all particle effects (only in this container) */ - void removeLocally(Particle *); + virtual void clearLocally() {}; /** - * Kills and removes all particle effects + * Sets the positions of all elements */ - void clear(); + virtual void setPositions(float x, float y); + +protected: + bool mDelParent; /**< Delete mNext in destructor */ + ParticleContainer *mNext; /**< Contained container, if any */ +}; + + + +/** + * Linked list of particle effects. + */ +class ParticleList : public ParticleContainer +{ +public: + ParticleList(ParticleContainer *parent = NULL, bool delParent = true); + virtual ~ParticleList(); /** - * Kills and removes all particle effects (only in this container) + * Takes control of and adds a particle */ - virtual void clearLocally(); + void addLocally(Particle *); /** - * Sets the positions of all elements + * `kills' and removes a particle */ + void removeLocally(Particle *); + + virtual void clearLocally(); + virtual void setPositions(float x, float y); protected: - bool mDelParent; /**< Delete mNext in destructor */ std::list mElements; /**< Contained particle effects */ - ParticleContainer *mNext; /**< Contained container, if any */ }; @@ -84,6 +102,7 @@ class ParticleVector : public ParticleContainer { public: ParticleVector(ParticleContainer *parent = NULL, bool delParent = true); + virtual ~ParticleVector(); /** * Sets a particle at a specified index. Kills the previous particle -- cgit v1.2.3-60-g2f50