protocol 860 fixes

This commit is contained in:
Eduardo Bart
2012-01-08 18:11:50 -02:00
parent e46f5fcb69
commit 23ebcd9048
7 changed files with 88 additions and 60 deletions

View File

@@ -105,7 +105,7 @@ void Game::processDeath()
void Game::processCreatureSpeak(const std::string& name, int level, const std::string& type, const std::string& message, int channelId, const Position& creaturePos)
{
if(creaturePos.isValid()) {
if(creaturePos.isValid() && (type == "say" || type == "whisper" || type == "yell" || type == "monsterSay" || type == "monsterYell")) {
StaticTextPtr staticText = StaticTextPtr(new StaticText);
staticText->addMessage(name, type, message);
g_map.addThing(staticText, creaturePos);

View File

@@ -228,7 +228,13 @@ namespace Proto {
SpeakPrivateRed,
SpeakChannelOrange,
SpeakMonsterSay,
SpeakMonsterYell
SpeakMonsterYell,
// removed
SpeakRVRChannel = 255,
SpeakRVRAnswer,
SpeakRVRContinue,
SpeakChannelRed2
#elif PROTOCOL==860
SpeakSay = 1,
SpeakWhisper,
@@ -238,17 +244,15 @@ namespace Proto {
SpeakPrivate,
SpeakChannelYellow,
SpeakChannelWhite,
SpeakReportChannel,
SpeakReportAnswer,
SpeakReportContinue,
SpeakRVRChannel,
SpeakRVRAnswer,
SpeakRVRContinue,
SpeakBroadcast,
SpeakChannelRed,
SpeakPrivateRed,
SpeakChannelOrange,
SpeakUnk1,
SpeakUnk2,
SpeakUnk3,
SpeakMonsterSay,
SpeakChannelRed2 = 17,
SpeakMonsterSay = 19,
SpeakMonsterYell
#endif
};
@@ -256,18 +260,18 @@ namespace Proto {
enum MessageTypes {
#if PROTOCOL==860
MessageConsoleRed = 18,
MessageConsoleOrange1,
MessageConsoleOrange2,
MessageEventOrange,
MessageConsoleOrange,
MessageWarning,
MessageEventAdvance,
MessageEventDefault,
MessageStatusDefault,
MessageInfoDescription,
MessageInfoDescription ,
MessageStatusSmall,
MessageConsoleBlue
#elif PROTOCOL==862
MessageConsoleOrange1 = 12,
MessageConsoleOrange2,
MessageEventOrange = 12,
MessageConsoleOrange,
MessageWarning,
MessageEventAdvance,
MessageEventDefault,
@@ -302,12 +306,12 @@ namespace Proto {
return "monsterYell";
case Proto::SpeakPrivateNpcToPlayer:
return "npcToPlayer";
break;
case Proto::SpeakChannelYellow:
return "channelYellow";
case Proto::SpeakChannelWhite:
return "channelWhite";
case Proto::SpeakChannelRed:
case Proto::SpeakChannelRed2:
return "channelRed";
case Proto::SpeakChannelOrange:
return "channelOrange";
@@ -320,18 +324,17 @@ namespace Proto {
case Proto::SpeakPrivateRed:
return "privateRed";
default:
logError("unknown protocol speak type ", type);
return "unknown";
}
}
inline std::string translateMessageType(int type) {
inline std::string translateTextMessageType(int type) {
switch(type) {
case Proto::MessageConsoleRed:
return "consoleRed";
case Proto::MessageConsoleOrange1:
return "consoleOrange";
case Proto::MessageConsoleOrange2:
case Proto::MessageConsoleOrange:
return "consoleOrange";
case Proto::MessageEventOrange:
return "eventOrange";
case Proto::MessageWarning:
return "warning";
case Proto::MessageEventAdvance:
@@ -346,7 +349,10 @@ namespace Proto {
return "statusSmall";
case Proto::MessageConsoleBlue:
return "consoleBlue";
case Proto::MessageConsoleRed:
return "consoleRed";
default:
logError("unknown protocol text message type ", type);
return "unknown";
}
}

View File

@@ -755,9 +755,7 @@ void ProtocolGame::parseCreatureSpeak(InputMessage& msg)
case Proto::SpeakChannelYellow:
case Proto::SpeakChannelWhite:
case Proto::SpeakChannelRed:
#if PROTOCOL==860
case Proto::SpeakUnk2:
#endif
case Proto::SpeakChannelRed2:
case Proto::SpeakChannelOrange:
channelId = msg.getU16();
break;
@@ -766,11 +764,9 @@ void ProtocolGame::parseCreatureSpeak(InputMessage& msg)
case Proto::SpeakBroadcast:
case Proto::SpeakPrivateRed:
break;
#if PROTOCOL==860
case Proto::SpeakReportChannel:
case Proto::SpeakRVRChannel:
msg.getU32();
break;
#endif
default:
logTraceError("unknown speak type ", type);
break;
@@ -834,7 +830,7 @@ void ProtocolGame::parseTextMessage(InputMessage& msg)
{
uint8 type = msg.getU8();
std::string typeDesc = Proto::translateMessageType(type);
std::string typeDesc = Proto::translateTextMessageType(type);
std::string message = msg.getString();
g_dispatcher.addEvent(std::bind(&Game::processTextMessage, &g_game, typeDesc, message));

View File

@@ -96,7 +96,6 @@ bool UIMap::onMousePress(const Point& mousePos, Fw::MouseButton button)
EffectPtr effect = EffectPtr(new Effect);
static int id = 0;
effect->setId(id++);
dump << id;
g_map.addThing(effect, tilePos);
}
else if(button == Fw::MouseRightButton) {