summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorBjørn Lindeijer <bjorn@lindeijer.nl>2005-09-19 12:34:18 +0000
committerBjørn Lindeijer <bjorn@lindeijer.nl>2005-09-19 12:34:18 +0000
commit27d5346e9faf183f5bf9c8a92a47897998c9d60c (patch)
tree514bbdc7cdf07cde8ed50160226c776e360d270e /src
parent2c4d4ecc19fc8308b2772e4ffe6570ca362264d1 (diff)
downloadmana-client-27d5346e9faf183f5bf9c8a92a47897998c9d60c.tar.gz
mana-client-27d5346e9faf183f5bf9c8a92a47897998c9d60c.tar.bz2
mana-client-27d5346e9faf183f5bf9c8a92a47897998c9d60c.tar.xz
mana-client-27d5346e9faf183f5bf9c8a92a47897998c9d60c.zip
Mostly code cleanups related to commits in past two days.
* Replaced custom function FIND_PATH with AC_PATH_PROG, used for finding sdl-config. * Removed -lphysfs from Makefile.am which should be added automatically already. * Actually show the overweight message, and only show it once for each time weight goes above half the max weight. * Surfaces passed to SDL_BlitSurface shouldn't be locked according to the manual. * Minimal fps limit is now 10 fps. * Reverted change by Bertram that hardcoded the updatehost value.
Diffstat (limited to 'src')
-rw-r--r--src/Makefile.am2
-rw-r--r--src/engine.cpp13
-rw-r--r--src/game.cpp184
-rw-r--r--src/game.h1
-rw-r--r--src/graphics.cpp6
-rw-r--r--src/graphics.h4
-rw-r--r--src/gui/popupmenu.cpp11
-rw-r--r--src/gui/updatewindow.cpp6
-rw-r--r--src/main.cpp2
-rw-r--r--src/net/messagein.cpp2
-rw-r--r--src/net/messageout.cpp6
-rw-r--r--src/net/win2mac.cpp12
-rw-r--r--src/net/win2mac.h1
-rw-r--r--src/openglgraphics.h17
14 files changed, 110 insertions, 157 deletions
diff --git a/src/Makefile.am b/src/Makefile.am
index ca96c88d..48ab6e02 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -182,5 +182,5 @@ INCLUDES = \
# the library search path.
tmw_LDFLAGS = $(all_libraries) $(LIBSDL_RPATH) `pkg-config --libs libxml-2.0`
tmw_CXXFLAGS = -Wall $(OPENGL_CFLAGS) $(LIBSDL_CFLAGS) `pkg-config --cflags libxml-2.0` $(CURL_CFLAGS)
-tmw_LDADD = $(LIBSDL_LIBS) -lguichan_sdl -lguichan $(OPENGL_LIBS) -lphysfs $(CURL_LIBS)
+tmw_LDADD = $(LIBSDL_LIBS) -lguichan_sdl -lguichan $(OPENGL_LIBS) $(CURL_LIBS)
tmw_TARGET = tmw
diff --git a/src/engine.cpp b/src/engine.cpp
index 8194e00b..0209fbbc 100644
--- a/src/engine.cpp
+++ b/src/engine.cpp
@@ -467,16 +467,17 @@ void Engine::draw()
being->drawSpeech(graphics);
}
- if (autoTarget) {
+ if (autoTarget)
+ {
if (autoTarget->getType() == Being::PLAYER)
{
graphics->drawText("[TARGET]",
- autoTarget->text_x+15,
- autoTarget->text_y-60,
+ autoTarget->text_x + 15,
+ autoTarget->text_y - 60,
gcn::Graphics::CENTER);
-
- } else {
-
+ }
+ else
+ {
graphics->drawText("[TARGET]",
autoTarget->text_x + 60,
autoTarget->text_y,
diff --git a/src/game.cpp b/src/game.cpp
index dac21cb8..0748d65b 100644
--- a/src/game.cpp
+++ b/src/game.cpp
@@ -354,9 +354,9 @@ bool saveScreenshot(SDL_Surface *screenshot)
do {
screenshotCount++;
filename.str("");
- #ifdef __USE_UNIX98
- filename << PHYSFS_getUserDir() << "/";
- #endif
+#ifdef __USE_UNIX98
+ filename << PHYSFS_getUserDir() << "/";
+#endif
filename << "TMW_Screenshot_" << screenshotCount << ".png";
testExists.open(filename.str().c_str(), std::ios::in);
found = !testExists.is_open();
@@ -405,7 +405,7 @@ void game()
do_parse();
flush();
}
-
+
do_exit();
}
@@ -431,7 +431,7 @@ void do_input()
// TODO: Only <= 6 buttons joypads are allowed
bool joy[10];
memset(joy, 0, 10 * sizeof(bool));
-
+
// Get the state of the joypad axis/buttons
if (joypad != NULL)
{
@@ -548,12 +548,14 @@ void do_input()
// Picking up items on the floor
case SDLK_g:
case SDLK_z:
- if (!chatWindow->isFocused()) {
+ if (!chatWindow->isFocused())
+ {
unsigned short x = player_node->x;
unsigned short y = player_node->y;
int id = find_floor_item_by_cor(x, y);
- // If none below the player, try the tile in front of the player
+ // If none below the player, try the tile in front of
+ // the player
if (!id) {
switch (player_node->direction)
{
@@ -719,21 +721,8 @@ void do_input()
{
switch (target->getType())
{
- // Player default: attack
- case Being::PLAYER:
- if (target != player_node)
- {
- autoTarget = target;
- attack(target);
- /*MessageOut outMsg;
- outMsg.writeShort(CMSG_TRADE_REQUEST);
- outMsg.writeLong(target->getId());
- tradePartnerName = target->getName();*/
- }
- break;
-
- // NPC default: talk
case Being::NPC:
+ // NPC default: talk
if (!current_npc)
{
MessageOut outMsg;
@@ -744,21 +733,21 @@ void do_input()
}
break;
- // Monster default: attack
case Being::MONSTER:
+ case Being::PLAYER:
+ // Monster and player default: attack
/**
* TODO: Move player to mouse click position before
* attack the monster (maybe using follow mode).
*/
if (target->action != Being::MONSTER_DEAD &&
- player_node->action == Being::STAND)
+ player_node->action == Being::STAND &&
+ target != player_node)
{
- attack(target);
// Autotarget by default with mouse
- //if (keys[SDLK_LSHIFT])
- //{
autoTarget = target;
- //}
+
+ attack(target);
}
break;
@@ -917,8 +906,11 @@ void do_input()
tiledMap = engine->getCurrentMap();
// Allow keyboard control to interrupt an existing path
- if ((xDirection != 0 || yDirection != 0) && player_node->action == Being::WALK)
+ if ((xDirection != 0 || yDirection != 0) &&
+ player_node->action == Being::WALK)
+ {
player_node->setDestination(x, y);
+ }
if (player_node->action != Being::WALK)
{
@@ -954,7 +946,8 @@ void do_input()
if (keys[SDLK_LCTRL] || keys[SDLK_RCTRL] || joy[JOY_BTN0])
{
Being *monster = attack(x, y, player_node->direction);
- if (monster == NULL && autoTarget != NULL && monster != player_node)
+ if (monster == NULL && autoTarget != NULL &&
+ monster != player_node)
{
attack(autoTarget);
}
@@ -1540,79 +1533,59 @@ void do_parse()
break;
case SMSG_PLAYER_STAT_UPDATE_1:
- switch (msg.readShort())
{
- //case 0x0000:
- // player_node->speed = msg.readLong();
- // break;
- case 0x0005:
- player_info->hp = msg.readLong();
- break;
- case 0x0006:
- player_info->maxHp = msg.readLong();
- break;
- case 0x0007:
- player_info->mp = msg.readLong();
- break;
- case 0x0008:
- player_info->maxMp = msg.readLong();
- break;
- case 0x000b:
- player_info->lvl = msg.readLong();
- break;
- case 0x000c:
- player_info->skillPoint = msg.readLong();
- skillDialog->setPoints(player_info->skillPoint);
- break;
- case 0x0018:
- player_info->totalWeight = msg.readLong();
- if (player_info->totalWeight >= player_info->maxWeight)
- {
- weightNotice = new OkDialog("Message",
- "You are carrying more then half your weight. You are unable to regain health.",
- &weightNoticeListener);
- weightNotice->releaseModalFocus();
- }
- break;
- case 0x0019:
- player_info->maxWeight = msg.readLong();
- break;
- case 0x0037:
- player_info->jobLvl = msg.readLong();
- break;
- case 0x0009:
- player_info->statsPointsToAttribute = msg.readLong();
- break;
- case 0x0029:
- player_info->ATK = msg.readLong();
- break;
- case 0x002b:
- player_info->MATK = msg.readLong();
- break;
- case 0x002d:
- player_info->DEF = msg.readLong();
- break;
- case 0x002f:
- player_info->MDEF = msg.readLong();
- break;
- case 0x0031:
- player_info->HIT = msg.readLong();
- break;
- case 0x0032:
- player_info->FLEE = msg.readLong();
- break;
- case 0x0035:
- player_node->aspd = msg.readLong();
- break;
- }
+ short type = msg.readShort();
+ long value = msg.readLong();
- if (player_info->hp == 0 && deathNotice == NULL)
- {
- deathNotice = new OkDialog("Message",
- "You're now dead, press ok to restart",
- &deathNoticeListener);
- deathNotice->releaseModalFocus();
- player_node->action = Being::DEAD;
+ switch (type)
+ {
+ //case 0x0000:
+ // player_node->speed = msg.readLong();
+ // break;
+ case 0x0005: player_info->hp = value; break;
+ case 0x0006: player_info->maxHp = value; break;
+ case 0x0007: player_info->mp = value; break;
+ case 0x0008: player_info->maxMp = value; break;
+ case 0x000b: player_info->lvl = value; break;
+ case 0x000c:
+ player_info->skillPoint = value;
+ skillDialog->setPoints(player_info->skillPoint);
+ break;
+ case 0x0018:
+ if (value >= player_info->maxWeight / 2 &&
+ player_info->totalWeight <
+ player_info->maxWeight / 2)
+ {
+ weightNotice = new OkDialog("Message",
+ "You are carrying more then half your "
+ "weight. You are unable to regain "
+ "health.",
+ &weightNoticeListener);
+ }
+ player_info->totalWeight = value;
+ break;
+ case 0x0019: player_info->maxWeight = value; break;
+ case 0x0037: player_info->jobLvl = value; break;
+ case 0x0009:
+ player_info->statsPointsToAttribute = value;
+ break;
+ case 0x0029: player_info->ATK = value; break;
+ case 0x002b: player_info->MATK = value; break;
+ case 0x002d: player_info->DEF = value; break;
+ case 0x002f: player_info->MDEF = value; break;
+ case 0x0031: player_info->HIT = value; break;
+ case 0x0032: player_info->FLEE = value; break;
+ case 0x0035: player_node->aspd = value; break;
+ }
+
+ if (player_info->hp == 0 && deathNotice == NULL)
+ {
+ deathNotice = new OkDialog("Message",
+ "You're now dead, press ok to restart",
+ &deathNoticeListener);
+ deathNotice->releaseModalFocus();
+ player_node->action = Being::DEAD;
+ }
}
break;
@@ -1633,14 +1606,13 @@ void do_parse()
{
Being *srcBeing = findNode(msg.readLong());
Being *dstBeing = findNode(msg.readLong());
-// msg.readLong(); // server tick
-// msg.readLong(); // src speed
-// msg.readLong(); // dst speed
- msg.skip(12);
+ msg.readLong(); // server tick
+ msg.readLong(); // src speed
+ msg.readLong(); // dst speed
short param1 = msg.readShort();
- msg.skip(2); // param 2
+ msg.readShort(); // param 2
char type = msg.readByte();
- msg.skip(2); // param 3
+ msg.readShort(); // param 3
switch (type)
{
diff --git a/src/game.h b/src/game.h
index 9ff8bc9b..8b72d508 100644
--- a/src/game.h
+++ b/src/game.h
@@ -39,7 +39,6 @@ extern std::string tradePartnerName;
extern int fps, frame, current_npc;
extern volatile int tick_time;
extern int server_tick;
-extern Being* autoTarget;
extern bool displayPathToMouse;
extern unsigned short startX, startY;
diff --git a/src/graphics.cpp b/src/graphics.cpp
index 33f25468..74b71888 100644
--- a/src/graphics.cpp
+++ b/src/graphics.cpp
@@ -256,13 +256,7 @@ SDL_Surface* Graphics::getScreenshot()
SDL_Surface *screenshot = SDL_CreateRGBSurface(SDL_SWSURFACE, mScreen->w,
mScreen->h, 24, rmask, gmask, bmask, amask);
- if (SDL_MUSTLOCK(mScreen)) {
- SDL_LockSurface(mScreen);
- }
SDL_BlitSurface(mScreen, NULL, screenshot, NULL);
- if (SDL_MUSTLOCK(mScreen)) {
- SDL_UnlockSurface(mScreen);
- }
return screenshot;
}
diff --git a/src/graphics.h b/src/graphics.h
index a0749795..6a69a7ef 100644
--- a/src/graphics.h
+++ b/src/graphics.h
@@ -120,8 +120,8 @@ class Graphics : public gcn::SDLGraphics {
int getHeight();
/**
- * takes a screenshot and returns it as SDL surface
- */
+ * Takes a screenshot and returns it as SDL surface.
+ */
virtual SDL_Surface* getScreenshot();
protected:
diff --git a/src/gui/popupmenu.cpp b/src/gui/popupmenu.cpp
index 7f72702e..feb287eb 100644
--- a/src/gui/popupmenu.cpp
+++ b/src/gui/popupmenu.cpp
@@ -46,6 +46,7 @@
#include "../resources/iteminfo.h"
#include "../resources/itemmanager.h"
+extern Being* autoTarget;
PopupMenu::PopupMenu():
Window()
@@ -148,15 +149,14 @@ void PopupMenu::handleLink(const std::string& link)
//tradePartner << "Trade: You and " << being->name<< "";
tradePartnerName = being->getName();
}
-
+
// Attack action
else if ((link == "attack") && being && being->getType() == Being::PLAYER)
{
-
- autoTarget = being;
+ autoTarget = being;
attack(being);
- }
-
+ }
+
/*
// Follow Player action
else if (link == "follow")
@@ -215,7 +215,6 @@ void PopupMenu::handleLink(const std::string& link)
{
// do nothing for now, I need to write
// a window for the description first
- ;
}
// Unknown actions
diff --git a/src/gui/updatewindow.cpp b/src/gui/updatewindow.cpp
index fe410ece..cd26aca9 100644
--- a/src/gui/updatewindow.cpp
+++ b/src/gui/updatewindow.cpp
@@ -85,11 +85,7 @@ UpdaterWindow::UpdaterWindow():
mCancelButton->requestFocus();
setLocationRelativeTo(getParent());
- // That commented line causes problems if the client had a false value for an update host
- // in its config file.
- // The update host, unlike the home dir, isn't dynamically set at the start of the client.
- // mUpdateHost = config.getValue("updatehost", "themanaworld.org/files");
- mUpdateHost = "themanaworld.org/files";
+ mUpdateHost = config.getValue("updatehost", "themanaworld.org/files");
mBasePath = config.getValue("homeDir", ".");
// Try to download the updates list
diff --git a/src/main.cpp b/src/main.cpp
index ad60bbaf..79e2a767 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -290,7 +290,7 @@ void init_engine()
int fpsLimit = (int)config.getValue("fpslimit", 0);
if (fpsLimit)
{
- if (fpsLimit < 20) fpsLimit = 20;
+ if (fpsLimit < 10) fpsLimit = 10;
if (fpsLimit > 200) fpsLimit = 200;
SDL_AddTimer(1000 / fpsLimit, nextFrame, NULL);
}
diff --git a/src/net/messagein.cpp b/src/net/messagein.cpp
index 9ea6f12e..c599a453 100644
--- a/src/net/messagein.cpp
+++ b/src/net/messagein.cpp
@@ -24,7 +24,7 @@
#include "messagein.h"
#include <cassert>
-#include <SDL_net.h>
+#include <SDL.h>
#if SDL_BYTEORDER == SDL_BIG_ENDIAN
#include "win2mac.h"
#endif
diff --git a/src/net/messageout.cpp b/src/net/messageout.cpp
index e7928a4d..77819b63 100644
--- a/src/net/messageout.cpp
+++ b/src/net/messageout.cpp
@@ -24,8 +24,10 @@
#include "messageout.h"
#include <string>
-#include <SDL_net.h>
+#include <SDL.h>
+#if SDL_BYTEORDER == SDL_BIG_ENDIAN
#include "win2mac.h"
+#endif
#include "network.h"
#include "packet.h"
@@ -73,7 +75,6 @@ void MessageOut::writeShort(short value)
#else
(*(short *)(mData + mPos)) = value;
#endif
- //SDLNet_Write16(value, &mData[mPos]);
mPos += sizeof(short);
out_size += sizeof(short);
}
@@ -86,7 +87,6 @@ void MessageOut::writeLong(long value)
#else
(*(long *)(mData + mPos)) = value;
#endif
- //SDLNet_Write32(value, &mData[mPos]);
mPos += sizeof(long);
out_size += sizeof(long);
}
diff --git a/src/net/win2mac.cpp b/src/net/win2mac.cpp
index d6da2cf2..020b808b 100644
--- a/src/net/win2mac.cpp
+++ b/src/net/win2mac.cpp
@@ -1,7 +1,5 @@
#include "win2mac.h"
-#define SWAP( a, b ) { char c; c=a; a=b; b=c; }
-
UInt32 DR_SwapFourBytes(UInt32 dw)
{
UInt32 tmp;
@@ -19,13 +17,3 @@ UInt16 DR_SwapTwoBytes(UInt16 w)
tmp = ((w & 0xFF00) >> 0x08) | (tmp << 0x08);
return(tmp);
}
-
-char* SwapChar(char charlist[])
-{
- for (int i = 0; i < 24 / 2; i++)
- {
- SWAP(charlist[i], charlist[24 - i]);
- }
-
- return charlist;
-}
diff --git a/src/net/win2mac.h b/src/net/win2mac.h
index 29102fae..d0a99dad 100644
--- a/src/net/win2mac.h
+++ b/src/net/win2mac.h
@@ -8,6 +8,5 @@
UInt32 DR_SwapFourBytes(UInt32 dw);
UInt16 DR_SwapTwoBytes(UInt16 w);
-char* SwapChar(char charlist[]);
#endif
diff --git a/src/openglgraphics.h b/src/openglgraphics.h
index cd99e6a6..c61ae66c 100644
--- a/src/openglgraphics.h
+++ b/src/openglgraphics.h
@@ -35,7 +35,10 @@ class OpenGLGraphics : public Graphics
bool setVideoMode(int w, int h, int bpp, bool fs, bool hwaccel);
- bool drawImage(Image *image, int srcX, int srcY, int dstX, int dstY, int width, int height);
+ bool drawImage(Image *image,
+ int srcX, int srcY,
+ int dstX, int dstY,
+ int width, int height);
void updateScreen();
@@ -47,8 +50,10 @@ class OpenGLGraphics : public Graphics
void setColor(const gcn::Color &color);
- void drawImage(const gcn::Image* image, int srcX, int srcY,
- int dstX, int dstY, int width, int height);
+ void drawImage(const gcn::Image* image,
+ int srcX, int srcY,
+ int dstX, int dstY,
+ int width, int height);
void drawPoint(int x, int y);
@@ -63,14 +68,14 @@ class OpenGLGraphics : public Graphics
void setTargetPlane(int width, int height);
/**
- * takes a screenshot and returns it as SDL surface
- */
+ * Takes a screenshot and returns it as SDL surface.
+ */
SDL_Surface* getScreenshot();
protected:
void setTexturingAndBlending(bool enable);
void drawTexedQuad(int x, int y, int w, int h,
- float texX1, float texY1, float texX2, float texY2);
+ float texX1, float texY1, float texX2, float texY2);
private:
bool mAlpha, mTexture;