mirror of
https://github.com/electronicarts/CnC_Renegade.git
synced 2025-12-16 23:51:41 -05:00
Initial commit of Command & Conquer Renegade source code.
This commit is contained in:
193
Code/Tools/RenegadeGR/rengameres.h
Normal file
193
Code/Tools/RenegadeGR/rengameres.h
Normal file
@@ -0,0 +1,193 @@
|
||||
/*
|
||||
** Command & Conquer Renegade(tm)
|
||||
** Copyright 2025 Electronic Arts Inc.
|
||||
**
|
||||
** 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 3 of the License, 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.
|
||||
**
|
||||
** You should have received a copy of the GNU General Public License
|
||||
** along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/****************************************************************************\
|
||||
* C O N F I D E N T I A L --- W E S T W O O D S T U D I O S *
|
||||
******************************************************************************
|
||||
Project Name: Generic Game Results Server
|
||||
File Name : rengameres.h
|
||||
Author : Joe Howes (jhowes@westwood.com)
|
||||
Start Date : Apr 5, 2000
|
||||
Last Update :
|
||||
------------------------------------------------------------------------------
|
||||
|
||||
Wraps game results for a game of multiplayer Renegade and provides method
|
||||
for sending to a WOL game results server.
|
||||
|
||||
\****************************************************************************/
|
||||
|
||||
#ifndef __RENGAMERES_H_
|
||||
#define __RENGAMERES_H_
|
||||
|
||||
|
||||
/*----------------------------------------------------------------------.
|
||||
| MACROS |
|
||||
`----------------------------------------------------------------------*/
|
||||
//#define GRSETTING_USING_WOLAPI // Uncomment if the class is
|
||||
// being used with the game
|
||||
// (as opposed to the test applet)
|
||||
static unsigned long GR_SCORE_SCALE = 10000000;
|
||||
static unsigned int GR_BASE_SKU = 8704;
|
||||
|
||||
// Errors
|
||||
static const int GR_ERROR_BIND_FAILED = -100;
|
||||
static const int GR_ERROR_CONNECT_FAILED = -101;
|
||||
|
||||
// Game Specific
|
||||
static char GR_GAME_ID[5] = { "IDNO" };
|
||||
static char GR_PLAYER_COUNT[5] = { "PLRS" };
|
||||
static char GR_CLAN_GAME[5] = { "CLGM" };
|
||||
static char GR_DURATION[5] = { "DURA" };
|
||||
static char GR_MAP_NAME[5] = { "MPNM" };
|
||||
static char GR_SKU[5] = { "GSKU" };
|
||||
static char GR_STYLE[5] = { "GSTY" };
|
||||
static char GR_NUM_CLANS[5] = { "NTMS" };
|
||||
static char GR_START_TIME[5] = { "TIME" };
|
||||
static char GR_TOURNAMENT[5] = { "TRNY" };
|
||||
|
||||
// Player Specific
|
||||
static char GR_LOGINS[5] = { "LGL?" };
|
||||
static char GR_SCORES[5] = { "SCO?" };
|
||||
static char GR_CLANIDS[5] = { "CLN?" };
|
||||
static char GR_DURATIONS[5] = { "DUR?" };
|
||||
static char GR_IPS[5] = { "IPL?" };
|
||||
static char GR_DEATHS[5] = { "DTH?" };
|
||||
static char GR_KILLS[5] = { "KIL?" };
|
||||
static char GR_SELFKILLS[5] = { "SKL?" };
|
||||
static char GR_DAMAGEPOINTS[5] = { "DMP?" };
|
||||
|
||||
|
||||
/*----------------------------------------------------------------------.
|
||||
| DATATYPES |
|
||||
`----------------------------------------------------------------------*/
|
||||
typedef enum gamestyle
|
||||
{
|
||||
GR_DEATHMATCH = 0,
|
||||
GR_CAPTUREFLAG,
|
||||
GR_FLAGBALL,
|
||||
GR_KINGREALM,
|
||||
GR_HIGHLANDER,
|
||||
GR_GAUNTLET,
|
||||
|
||||
GR_NUM_GAMESTYLES
|
||||
} GameStyle;
|
||||
|
||||
typedef enum language
|
||||
{
|
||||
GR_ENGLISH = 0,
|
||||
GR_UK_ENGLISH,
|
||||
GR_GERMAN,
|
||||
GR_FRENCH,
|
||||
GR_DUTCH,
|
||||
GR_ITALIAN,
|
||||
GR_JAPANESE,
|
||||
GR_SPANISH,
|
||||
GR_SCANDINAVIAN,
|
||||
GR_KOREAN,
|
||||
|
||||
NUM_LANGUAGES
|
||||
} Language;
|
||||
|
||||
|
||||
class RenegadeGameRes
|
||||
{
|
||||
public:
|
||||
// METHODS
|
||||
RenegadeGameRes(const char* host = NULL, int port = 0) :
|
||||
_host(NULL), _port(0),
|
||||
_myplayercount(0), _game_id(0), _player_count(0), _clan_game(0),
|
||||
_duration(0), _map_name(NULL), _sku(0), _style(GR_DEATHMATCH),
|
||||
_num_clans(0), _start_time(0), _tournament(0), _logins(NULL),
|
||||
_scores(NULL), _clan_ids(NULL), _durations(NULL), _ips(NULL),
|
||||
_deaths(NULL), _kills(NULL), _selfkills(NULL), _damagepoints(NULL)
|
||||
{
|
||||
if( host != NULL )
|
||||
{
|
||||
setHost(host);
|
||||
setPort(port);
|
||||
}
|
||||
}
|
||||
|
||||
~RenegadeGameRes();
|
||||
|
||||
|
||||
void setHost(const char* host)
|
||||
{
|
||||
if( _host != NULL )
|
||||
delete[] _host;
|
||||
_host = new char[strlen(host)+1];
|
||||
strcpy(_host, host);
|
||||
}
|
||||
void setPort(int val) { _port = val; }
|
||||
void setGameID(long unsigned int val) { _game_id = val; }
|
||||
void setPlayerCount(unsigned char val) { _player_count = val; }
|
||||
void setClanGame(unsigned char val) { _clan_game = val; }
|
||||
void setDuration(long unsigned int val) { _duration = val; }
|
||||
void setMapName(const char* val);
|
||||
void setSKU(Language lang) { _sku = GR_BASE_SKU | lang; }
|
||||
void setStyle(GameStyle val) { _style = (unsigned char)val; }
|
||||
void setNumClans(unsigned char val) { _num_clans = val; }
|
||||
void setStartTime(long unsigned int val) { _start_time = val; }
|
||||
void setTournament(unsigned char val) { _tournament = val; }
|
||||
|
||||
void addPlayer(const char* login = "INVALID", double score = 0.0, long unsigned int clan_id = 0,
|
||||
long unsigned int duration = 0, long unsigned int ip = 0,
|
||||
long unsigned int deaths = 0, long unsigned int kills = 0,
|
||||
long unsigned int selfkills = 0, long unsigned int damagepoints = 0);
|
||||
|
||||
int sendResults();
|
||||
|
||||
|
||||
|
||||
private:
|
||||
// METHODS
|
||||
char** _addToArr(char** arr, const char* item);
|
||||
long unsigned int* _addToArr(long unsigned int* arr, long unsigned int item);
|
||||
|
||||
|
||||
// MEMBERS
|
||||
char* _host;
|
||||
int _port;
|
||||
int _myplayercount;
|
||||
|
||||
// Game Specific
|
||||
long unsigned int _game_id;
|
||||
unsigned char _player_count;
|
||||
unsigned char _clan_game; // Boolean
|
||||
long unsigned int _duration; // Secs since epoch
|
||||
char* _map_name; // Must be NULL terminated
|
||||
long unsigned int _sku;
|
||||
unsigned char _style; // Will be converted to an unsigned char
|
||||
unsigned char _num_clans;
|
||||
long unsigned int _start_time; // Secs since epoch
|
||||
unsigned char _tournament; // Boolean
|
||||
|
||||
// Player Specific (These are all arrays)
|
||||
char** _logins; // Must be NULL terminated
|
||||
long unsigned int* _scores;
|
||||
long unsigned int* _clan_ids;
|
||||
long unsigned int* _durations; // Secs since epoch
|
||||
long unsigned int* _ips; // As integers, not dotted quads
|
||||
long unsigned int* _deaths;
|
||||
long unsigned int* _kills;
|
||||
long unsigned int* _selfkills;
|
||||
long unsigned int* _damagepoints;
|
||||
};
|
||||
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user