1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341
|
/****************************************************************
**
** Attal : Lords of Doom
**
** attalSocket.h
** socket for Attal over network
**
** Version : $Id: attalSocket.h,v 1.39 2008/03/03 22:50:10 lusum Exp $
**
** Author(s) : Pascal Audoux - Sardi Carlo
**
** Date : 31/10/2000
**
** Licence :
** This program 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, or (at your option)
** any later version.
**
** This program 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.
**
****************************************************************/
#ifndef ATTALSOCKET_H
#define ATTALSOCKET_H
// generic include files
// include files for QT
#include <QList>
#include <QTcpSocket>
// application specific include
#include "libCommon/attalSocketData.h"
#include "libCommon/fightResultStatus.h"
#include "libCommon/genericLord.h"
class Creature;
class Calendar;
class GenericArtefact;
class GenericBase;
class GenericBuilding;
class GenericCell;
class GenericEvent;
class GenericFightCell;
class GenericFightUnit;
class GenericInsideBuilding;
class GenericLord;
class GenericLordArtefact;
class GenericMapCreature;
class GenericPlayer;
/* ------------------------------
* AttalSocket
* ------------------------------ */
class AttalSocket : public QTcpSocket,public AttalSocketData
{
public:
/** Constructor */
AttalSocket();
~AttalSocket();
/** Send message trough socket */
void sendMessage( QString msg );
void sendFightMessage( QString msg );
void sendConnMessage( QString msg );
/** Send connection ok */
void sendConnectionOk();
/** Send connection id */
void sendConnectionId( char id );
/** Send connection name */
void sendConnectionName( QString name );
/** Send connection player */
void sendConnectionPlayer( GenericPlayer * player );
void sendConnectionVersion( QString name );
/** Start exchange between lords */
void sendExchangeStart( GenericLord * lord1, GenericLord * lord2 );
/** Exchange 2 units between one or two lords */
void sendExchangeUnit( GenericLord * lord1, int unit1, GenericLord * lord2, int unit2 );
/** Exchange 2 artefacts between one or two lords */
void sendExchangeArtefact( GenericLord * lord1, int item, GenericLord * lord2 );
/** Exchange 2 units inside a base */
void sendExchangeBaseUnit( GenericBase * base, int unit1, GenericLord * lord2, int unit2 );
/** Split unit */
void sendExchangeUnitSplit( GenericLord * lord, int unit, int num1, int pos2, int num2 );
/** Exchange 2 units between one base and a lord */
void sendExchangeBaseLordUnit( GenericLord * lord1, int unit1, GenericLord * lord2, int unit2, uchar direction );
void sendExchangeBaseUnitCl( GenericBase * base, int unit1, GenericLord * lord2, int unit2 );
/** Send ressources of a player */
void sendPlayerResource( char res, int nb );
/** Send prices of a player */
void sendPlayerPrice( char res, int price );
//void sendPlayerPopulation( uint population );
/** Send 'Game begins' info */
void sendBegGame( char nb );
/** XXX: */
void askTavernInfo( GenericBase * base );
void sendTavernInfo( uchar nb );
void askTavernLord( GenericBase * base, uchar numLord );
void sendTavernLord( GenericLord * lord );
/** Send the 'Player lost' info */
void sendLostGame( GenericPlayer * player );
/** Send the 'Player win' info */
void sendWinGame( GenericPlayer * player );
/** Send the 'Game ends' info */
void sendEndGame();
void sendGameInfoPlayerName( GenericPlayer * player );
void sendGameInfoPlayerTeam( GenericPlayer * player );
void sendGameCalendar( Calendar * calendar);
/** Send info about who's playing */
void sendTurnPlaying( GenericPlayer * player );
/** Send 'Turn ends' info */
void sendTurnEnd();
void sendLordPlTurn(int count);
void sendLordTurn(int flag);
/** Send the size of the map */
void sendSizeMap( int h, int w );
/** Send a cell */
void sendCell( GenericCell * cell );
/** Send a movement of a lord */
void sendMvt( int lord, int cell_i, int cell_j );
/** Send all the movements of a lord */
void sendMvts( int lord, QList<GenericCell *> & list );
/** A lord is using a technic */
void sendTechnic( int lord, int numTechnic );
/** Fight is starting */
void sendFightInit( CLASS_FIGHTER fighter, GenericLord * lord );
void sendFightCreature();
/** Send a fight cell */
void sendFightCell( GenericFightCell * cell );
void sendFightLord( CLASS_FIGHTER fighter, GenericLord * lord );
void sendFightNewUnit( CLASS_FIGHTER fighter, char num, GenericFightUnit * unit );
void sendFightModifyUnit( CLASS_FIGHTER fighter, char num, GenericFightUnit * unit );
void sendFightDamageUnit( CLASS_FIGHTER attacker,
char numAttacker,
CLASS_ATTACK_TYPE attackType,
CLASS_FIGHTER defender,
char numDefender,
uint damage );
void sendFightUnitMove( CLASS_FIGHTER fighter, int num, GenericFightCell * cell );
/** End of a movement */
void sendFightUnitEndMove();
/** Activate a unit for fighting */
void sendFightActivate( CLASS_FIGHTER fighter, char unit );
/** Damages for the unit */
void sendFightUnitDamage( CLASS_FIGHTER fighter, char unit, int damage );
void sendFightDistAttack( CLASS_FIGHTER fighter, char unit );
void sendFightWait();
void sendFightFlee();
void sendFightDefend();
/** Fight ends */
void sendFightEnd( FightResultStatus result );
/** Send message of info */
void sendAskNone( const QString & msg, uchar type );
void sendAskChest();
void sendAskCreatureJoin( GenericMapCreature * creature );
void sendAskCreatureMercenary( GenericMapCreature * creature );
void sendAskCreatureFlee( GenericMapCreature * creature );
/** Ask skill when level upgrade */
void sendAskLevel( char lord, char level, char primSkill, char skill1, char skill2 );
/** Send answer to question */
void sendAnswer( char resp );
/** Send answer to enum question */
void sendAnswerYesNo( bool answer );
/** Send answer to enum question */
void sendAnswerEnum( char answer );
/** Lord is visiting */
void sendLordVisit( GenericLord * lord, bool state = true );
/** New lord */
void sendLordNew( GenericLord * lord );
/** Buy lord */
void sendLordBuy( GenericLord * lord , uint row, uint col );
void sendLordBaseCharac( GenericLord * lord, LordCharac charac );
/** Send units */
void sendLordUnits( GenericLord * lord );
/** Send unit 'num' */
void sendLordUnit( GenericLord * lord, int num );
/** Send unit 'num' */
void sendLordUnit( GenericLord * lord, int num , int value);
void sendLordRemove( GenericLord * lord );
void sendLordGarrison( GenericLord * lord, bool state );
void sendLordMachine( GenericLord * lord, int id );
/** New base */
void sendBaseNew( GenericBase * base );
/** Base name */
void sendBaseName( GenericBase * base );
/** New owner for the base */
void sendBaseOwner( GenericBase * base, GenericPlayer * player );
void sendBaseBuilding( GenericBase * base, GenericInsideBuilding * building, bool create );
/** New building */
void sendBuildingNew( GenericBuilding * build );
void sendBuildingResource( GenericBuilding * build, char res, int nb );
/** New unit to base */
void sendBaseUnit( GenericBase * base, GenericFightUnit * unit, int pos );
/** New unit to base */
void sendBaseUnit( GenericBase * base, Creature * creature, int number, int pos );
/** Request to buy new unit */
void sendBaseUnitBuy( GenericBase * base, Creature * creature, int number );
/** Request to buy new unit */
void sendBaseUnitBuy( GenericBase * base, GenericFightUnit * unit );
/** Update population of a base */
void sendBasePopulation( GenericBase * base );
void sendBaseResource( GenericBase * base, char res, int nb );
/** Update production of a base */
void sendBaseProduction( GenericBase * base , Creature * creature);
/** Marker value */
void sendBaseMarket( int ownRes, int otherRes, int valueFirstRes );
/** New owner for the building */
void sendBuildingOwner( GenericBuilding * build, GenericPlayer * player );
/** New artefact */
//void sendNewLordArtefact( GenericLordArtefact * artefact );
void sendArtefactLord( GenericLordArtefact * artefact, bool state );
/** new creature on map */
void sendNewCreature( GenericMapCreature * creature );
/** updates creature on map */
void sendUpdateCreature( GenericMapCreature * creature );
/** delete creature of map */
void sendDelCreature( GenericCell * cell );
void sendCreatureResource( GenericMapCreature * creature, char res, int nb );
/** new event on map */
void sendNewEvent( GenericEvent * event );
/** delete event on map */
void sendDelEvent( GenericEvent * event );
// Request client -> server
void requestBuilding( GenericBase * base, int building, bool isBuy);
void readData();
AttalSocketData readBufferData();
protected:
virtual void send();
private:
void internalSendMessage( QString msg );
};
#endif // ATTALSOCKET_H
|