Beispiel #1
0
	GameStatus getStatus() {

		string name;
		int year;
		time_t timer, nextRound;

		wchar_t nameyearstr[MAX_CHAR_LEN];
		wchar_t timestr[MAX_CHAR_LEN];

		GetWindowText(nameyearH,nameyearstr,sizeof(nameyearstr));
		GetWindowText(timeH,timestr,sizeof(timestr));

		parseNameYear(nameyearstr, name, year);
		parseTimer(timestr, timer, nextRound);

		GameStatus gs = GameStatus(name, year, nextRound, nPlayer);


		for (int i = 0; i<nPlayer; ++i) {
			string pname;
			bool finishedTurn;
			Status status;
			int score;

			wchar_t * playerstr = new wchar_t[MAX_CHAR_LEN];
			wchar_t * pingstr = new wchar_t[MAX_CHAR_LEN];
			wchar_t * scorestr = new wchar_t[MAX_CHAR_LEN];
		
			GetWindowText(PlayerH[i].nameH,  playerstr, MAX_CHAR_LEN);
			GetWindowText(PlayerH[i].pingH,  pingstr,   MAX_CHAR_LEN);
			GetWindowText(PlayerH[i].scoreH, scorestr,  MAX_CHAR_LEN);

			parsePlayer(playerstr, pname, finishedTurn);
			parsePing(pingstr, status);
			parseScore(scorestr, score, status);

			delete[] playerstr;
			delete[] pingstr;
			delete[] scorestr;

			//Player p = new Player(pname, finishedTurn, status, score);
			gs.setPlayer(i, pname, finishedTurn, status, score);



		}

		return gs;
	}
Beispiel #2
0
//////////////////////////////
// Parse an IRC command (private)
void IRCClient::parseCommand(const IRCClient::IRCCommand &cmd)
{
	
	/*printf("IRC: sender '%s' cmd '%s'", cmd.sender.c_str(), cmd.cmd.c_str() );
	for( size_t i=0; i<cmd.params.size(); i++ )
		printf(" param %i '%s'", i, cmd.params[i].c_str());
	printf("\n");*/
	

	// Process depending on the command

	bool fail = false;
	int num_command = from_string<int>(cmd.cmd, fail);

	// String commands
	if (fail)  {
		if (cmd.cmd == "PING")
			parsePing(cmd);

		else if (cmd.cmd == "MODE")
			parseMode(cmd);

		else if (cmd.cmd == "PRIVMSG")
			parsePrivmsg(cmd);

		else if (cmd.cmd == "KICK")
			parseKicked(cmd);

		else if (cmd.cmd == "PART" || cmd.cmd == "QUIT")
			parseDropped(cmd);

		else if (cmd.cmd == "JOIN")
			parseJoin(cmd);

		else if (cmd.cmd == "NICK")
			parseNick(cmd);

		else if (cmd.cmd == "NOTICE")
			parseNotice(cmd);

		else if (cmd.cmd == "ERROR")
			parseError(cmd);

		else
			warnings("IRC: unknown command " + cmd.cmd + "\n");

	// Numeric commands
	} else {
		switch (num_command)  {

		// Nick in use
		case LIBIRC_RFC_ERR_NICKNAMEINUSE:
			parseNickInUse(cmd);
			break;

		// List of names
		case LIBIRC_RFC_RPL_NAMREPLY:
			parseNameReply(cmd);
			break;

		// End of name list
		case LIBIRC_RFC_RPL_ENDOFNAMES:
			parseEndOfNames(cmd);
			break;
			
			
		case LIBIRC_RFC_RPL_AWAY:
			parseAway(cmd);
			break;

		case LIBIRC_RFC_RPL_WHOISUSER:
			parseWhois(cmd);
			break;

		case LIBIRC_RFC_RPL_ENDOFWHOIS:
			parseEndOfWhois(cmd);
			break;
			
		case LIBIRC_RFC_RPL_TOPIC:
			parseTopic(cmd);
			break;

		// Message of the day
		case LIBIRC_RFC_RPL_MOTDSTART:
		case LIBIRC_RFC_RPL_MOTD:
		case LIBIRC_RFC_RPL_ENDOFMOTD:
			// Message of the day (ignored currently)
			break;

		// Messages sent upon a successful join
		case LIBIRC_RFC_RPL_WELCOME:
		case LIBIRC_RFC_RPL_YOURHOST:
		case LIBIRC_RFC_RPL_CREATED:
		case LIBIRC_RFC_RPL_MYINFO:
			// Quite useless stuff...
			break;

		default: {}
			// Just ignore, there are many "pro" commands that we don't need
		}
	}
}
void ProtocolGame::parseMessage(InputMessage& msg)
{
    try {
        while(!msg.eof()) {
            int opt = msg.getU8();

            switch(opt) {
            case Proto::GameServerInitGame:
                parsePlayerLogin(msg);
                break;
            case Proto::GameServerGMActions:
                parseGMActions(msg);
                break;
            case Proto::GameServerLoginError:
                parseLoginError(msg);
                break;
            case Proto::GameServerLoginAdvice:
                parseFYIMessage(msg);
                break;
            case Proto::GameServerLoginWait:
                parseWaitList(msg);
                break;
            case Proto::GameServerPing:
                parsePing(msg);
                break;
            //case Proto::GameServerChallange:
            case Proto::GameServerDead:
                parseDeath(msg);
                break;
            case Proto::GameServerFullMap:
                parseMapDescription(msg);
                break;
            case Proto::GameServerMapTopRow:
                parseMoveNorth(msg);
                break;
            case Proto::GameServerMapRightRow:
                parseMoveEast(msg);
                break;
            case Proto::GameServerMapBottomRow:
                parseMoveSouth(msg);
                break;
            case Proto::GameServerMapLeftRow:
                parseMoveWest(msg);
                break;
            case Proto::GameServerTileData:
                parseUpdateTile(msg);
                break;
            case Proto::GameServerCreateOnMap:
                parseTileAddThing(msg);
                break;
            case Proto::GameServerChangeOnMap:
                parseTileTransformThing(msg);
                break;
            case Proto::GameServerDeleteOnMap:
                parseTileRemoveThing(msg);
                break;
            case Proto::GameServerMoveCreature:
                parseCreatureMove(msg);
                break;
            case Proto::GameServerOpenContainer:
                parseOpenContainer(msg);
                break;
            case Proto::GameServerCloseContainer:
                parseCloseContainer(msg);
                break;
            case Proto::GameServerCreateContainer:
                parseContainerAddItem(msg);
                break;
            case Proto::GameServerChangeInContainer:
                parseContainerUpdateItem(msg);
                break;
            case Proto::GameServerDeleteInContainer:
                parseContainerRemoveItem(msg);
                break;
            case Proto::GameServerSetInventory:
                parseAddInventoryItem(msg);
                break;
            case Proto::GameServerDeleteInventory:
                parseRemoveInventoryItem(msg);
                break;
            case Proto::GameServerNpcOffer:
                parseOpenShopWindow(msg);
                break;
            case Proto::GameServerPlayerGoods:
                parsePlayerCash(msg);
                break;
            case Proto::GameServerCloseNpcTrade:
                parseCloseShopWindow(msg);
                break;
            case Proto::GameServerOwnOffer:
                parseSafeTradeRequest(msg);
                break;
            case Proto::GameServerCounterOffer:
                parseSafeTradeRequest(msg);
                break;
            case Proto::GameServerCloseTrade:
                parseSafeTradeClose(msg);
                break;
            case Proto::GameServerAmbient:
                parseWorldLight(msg);
                break;
            case Proto::GameServerGraphicalEffect:
                parseMagicEffect(msg);
                break;
            case Proto::GameServerTextEffect:
                parseAnimatedText(msg);
                break;
            case Proto::GameServerMissleEffect:
                parseDistanceMissile(msg);
                break;
            case Proto::GameServerMarkCreature:
                parseCreatureSquare(msg);
                break;
            //case Proto::GameServerTrappers
            case Proto::GameServerCreatureHealth:
                parseCreatureHealth(msg);
                break;
            case Proto::GameServerCreatureLight:
                parseCreatureLight(msg);
                break;
            case Proto::GameServerCreatureOutfit:
                parseCreatureOutfit(msg);
                break;
            case Proto::GameServerCreatureSpeed:
                parseCreatureSpeed(msg);
                break;
            case Proto::GameServerCreatureSkull:
                parseCreatureSkulls(msg);
                break;
            case Proto::GameServerCreatureParty:
                parseCreatureShields(msg);
                break;
            // case Proto::GameServerCreatureUnpass
            case Proto::GameServerEditText:
                parseItemTextWindow(msg);
                break;
            case Proto::GameServerEditList:
                parseHouseTextWindow(msg);
                break;
            case Proto::GameServerPlayerData:
                parsePlayerStats(msg);
                break;
            case Proto::GameServerPlayerSkills:
                parsePlayerSkills(msg);
                break;
            case Proto::GameServerPlayerState:
                parsePlayerIcons(msg);
                break;
            case Proto::GameServerClearTarget:
                parsePlayerCancelAttack(msg);
                break;
            //case Proto::GameServerSpellDelay:
            //case Proto::GameServerSpellGroupDelay:
            case Proto::GameServerTalk:
                parseCreatureSpeak(msg);
                break;
            case Proto::GameServerChannels:
                parseChannelList(msg);
                break;
            case Proto::GameServerOpenChannel:
                parseOpenChannel(msg);
                break;
            case Proto::GameServerPrivateChannel:
                parseOpenPrivatePlayerChat(msg);
                break;
            case Proto::GameServerRuleViolationChannel:
                msg.getU16();
                break;
            case Proto::GameServerRuleViolationRemove:
                msg.getString();
                break;
            case Proto::GameServerRuleViolationCancel:
                msg.getString();
                break;
            case Proto::GameServerRuleViolationLock:
                break;
            case Proto::GameServerOpenOwnChannel:
                parseCreatePrivateChannel(msg);
                break;
            case Proto::GameServerCloseChannel:
                parseClosePrivateChannel(msg);
                break;
            case Proto::GameServerMessage:
                parseTextMessage(msg);
                break;
            case Proto::GameServerSnapBack:
                parseCancelWalk(msg);
                break;
            //case Proto::GameServerWait:
            case Proto::GameServerTopFloor:
                parseFloorChangeUp(msg);
                break;
            case Proto::GameServerBottomFloor:
                parseFloorChangeDown(msg);
                break;
            case Proto::GameServerOutfit:
                parseOutfitWindow(msg);
                break;
            case Proto::GameServerBuddyData:
                parseVipState(msg);
                break;
            case Proto::GameServerBuddyLogin:
                parseVipLogin(msg);
                break;
            case Proto::GameServerBuddyLogout:
                parseVipLogout(msg);
                break;
            case Proto::GameServerTutorialHint:
                parseShowTutorial(msg);
                break;
            case Proto::GameServerAutomapFlag:
                parseAddMarker(msg);
                break;
            case Proto::GameServerQuestLog:
                parseQuestList(msg);
                break;
            case Proto::GameServerQuestLine:
                parseQuestPartList(msg);
                break;
            //case Proto::GameServerChannelEvent:
            //case Proto::GameServerObjectInfo:
            //case Proto::GameServerPlayerInventory:
            default:
                Fw::throwException("unknown opt byte ", (int)opt);
                break;
            }
        }
    } catch(Exception& e) {
        logTraceError(e.what());
    }
}