From 1a7a8714ce420e65cf34f65454682d202e9ba284 Mon Sep 17 00:00:00 2001 From: Ira Rice Date: Tue, 17 Feb 2009 13:11:39 -0700 Subject: Fixed closing for NPC dialogs. Signed-off-by: Ira Rice --- src/net/npchandler.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/net/npchandler.cpp b/src/net/npchandler.cpp index 8ca529c8..8425a215 100644 --- a/src/net/npchandler.cpp +++ b/src/net/npchandler.cpp @@ -79,7 +79,8 @@ void NPCHandler::handleMessage(MessageIn *msg) case SMSG_NPC_CLOSE: id = msg->readInt32(); - current_npc = dynamic_cast(beingManager->findBeing(id)); + if (current_npc == dynamic_cast(beingManager->findBeing(id))) + current_npc = NULL; break; case SMSG_NPC_NEXT: -- cgit v1.2.3-60-g2f50 From ed96706d8080049dc20d1487f6165ed9bd77306b Mon Sep 17 00:00:00 2001 From: Ira Rice Date: Tue, 17 Feb 2009 13:36:53 -0700 Subject: Fixed an error reported by m0t1k4 which caused a segmentation fault on closing when displaying your own name is turned on. Signed-off-by: Ira Rice --- src/localplayer.cpp | 1 - src/player.cpp | 45 +++++++++++++++++++++------------------------ 2 files changed, 21 insertions(+), 25 deletions(-) (limited to 'src') diff --git a/src/localplayer.cpp b/src/localplayer.cpp index a719e265..0470fefc 100644 --- a/src/localplayer.cpp +++ b/src/localplayer.cpp @@ -91,7 +91,6 @@ LocalPlayer::~LocalPlayer() { delete mInventory; delete mStorage; - delete mName; for (int i = Being::TC_SMALL; i < Being::NUM_TC; i++) { diff --git a/src/player.cpp b/src/player.cpp index 5256831b..4d5ef171 100644 --- a/src/player.cpp +++ b/src/player.cpp @@ -36,7 +36,7 @@ static const int NAME_Y_OFFSET = 30; Player::Player(int id, int job, Map *map): Being(id, job, map) { - mName = 0; + mName = NULL; } Player::~Player() @@ -46,19 +46,21 @@ Player::~Player() void Player::setName(const std::string &name) { - if (mName == 0) + if (mName == NULL) { if (mIsGM) { mNameColor = 0x009000; - mName = new FlashText("(GM) " + name, mPx + NAME_X_OFFSET, mPy + NAME_Y_OFFSET, - gcn::Graphics::CENTER, gcn::Color(0, 255, 0)); + mName = new FlashText("(GM) " + name, mPx + NAME_X_OFFSET, mPy + + NAME_Y_OFFSET, gcn::Graphics::CENTER, + gcn::Color(0, 255, 0)); } else { mNameColor = 0x202020; mName = new FlashText(name, mPx + NAME_X_OFFSET, mPy + NAME_Y_OFFSET, - gcn::Graphics::CENTER, gcn::Color(255, 255, 255)); + gcn::Graphics::CENTER, + gcn::Color(255, 255, 255)); } Being::setName(name); } @@ -66,7 +68,8 @@ void Player::setName(const std::string &name) void Player::logic() { - switch (mAction) { + switch (mAction) + { case STAND: break; @@ -81,22 +84,25 @@ void Player::logic() case WALK: mFrame = (get_elapsed_time(mWalkTime) * 6) / mWalkSpeed; - if (mFrame >= 6) { + + if (mFrame >= 6) nextStep(); - } + break; case ATTACK: int frames = 4; - if ( mEquippedWeapon - && mEquippedWeapon->getAttackType() == ACTION_ATTACK_BOW) + if (mEquippedWeapon && + mEquippedWeapon->getAttackType() == ACTION_ATTACK_BOW) { frames = 5; } + mFrame = (get_elapsed_time(mWalkTime) * frames) / mAttackSpeed; - if (mFrame >= frames) { + + if (mFrame >= frames) nextStep(); - } + break; } @@ -111,9 +117,7 @@ Being::Type Player::getType() const void Player::flash(int time) { if (mName) - { mName->flash(time); - } } void Player::setGender(Gender gender) @@ -132,9 +136,7 @@ void Player::setGender(Gender gender) for (int i = 1; i < VECTOREND_SPRITE; i++) { if (mSpriteIDs.at(i) != 0) - { setSprite(i, mSpriteIDs.at(i), mSpriteColors.at(i)); - } } } } @@ -161,9 +163,7 @@ void Player::setSprite(int slot, int id, std::string color) mSprites[slot] = NULL; if (slot == WEAPON_SPRITE) - { mEquippedWeapon = NULL; - } } else { @@ -174,8 +174,9 @@ void Player::setSprite(int slot, int id, std::string color) { if (!color.empty()) filename += "|" + color; - equipmentSprite = AnimatedSprite::load( - "graphics/sprites/" + filename); + + equipmentSprite = AnimatedSprite::load("graphics/sprites/" + + filename); } if (equipmentSprite) @@ -185,9 +186,7 @@ void Player::setSprite(int slot, int id, std::string color) mSprites[slot] = equipmentSprite; if (slot == WEAPON_SPRITE) - { mEquippedWeapon = &ItemDB::get(id); - } setAction(mAction); } @@ -198,8 +197,6 @@ void Player::setSprite(int slot, int id, std::string color) void Player::updateCoords() { if (mName) - { mName->adviseXY(mPx + NAME_X_OFFSET, mPy + NAME_Y_OFFSET); - } } -- cgit v1.2.3-60-g2f50 From dc1f3ec3ec7d27f00b39316eed1a73bcfc4bf2df Mon Sep 17 00:00:00 2001 From: Jared Adams Date: Tue, 17 Feb 2009 15:52:22 +0000 Subject: Fix segfault when canceling new character dialog --- src/being.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/being.cpp b/src/being.cpp index c944bcf9..34b042e8 100644 --- a/src/being.cpp +++ b/src/being.cpp @@ -129,7 +129,7 @@ Being::~Being() delete_all(mSprites); clearPath(); - if (player_node->getTarget() == this) + if (player_node && player_node->getTarget() == this) player_node->setTarget(NULL); setMap(NULL); -- cgit v1.2.3-60-g2f50 From 218303948fa3aa3fd139b47e303ed1f7c7cfd802 Mon Sep 17 00:00:00 2001 From: Jared Adams Date: Tue, 17 Feb 2009 16:09:36 +0000 Subject: Fix small bug in character select dialog That check can probably be removed entirely, as it's inappropriate. --- src/gui/char_select.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/gui/char_select.cpp b/src/gui/char_select.cpp index 9d5855ec..ae78b384 100644 --- a/src/gui/char_select.cpp +++ b/src/gui/char_select.cpp @@ -148,7 +148,7 @@ void CharSelectDialog::action(const gcn::ActionEvent &event) else if (event.getId() == "newdel") { // Check for a character - if (mCharInfo->getEntry() && n_character <= MAX_SLOT ) + if (mCharInfo->getEntry() && n_character <= MAX_SLOT + 1) { new CharDeleteConfirm(this); } -- cgit v1.2.3-60-g2f50