Rev 1 | Blame | Compare with Previous | Last modification | View Log | RSS feed
// X3Data.h: interface for the CX3Data class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_X3DATA_H__491F0DBE_1AE5_4956_B262_F2D1B0D0E9FF__INCLUDED_)
#define AFX_X3DATA_H__491F0DBE_1AE5_4956_B262_F2D1B0D0E9FF__INCLUDED_
#include <Utils/WStringList.h>
Utils::WString GetEndOfLine(FILE* id, int* line, bool upper);
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#define DATA_LOCKED m_bLocked = true;
#define DATA_UNLOCKED m_bLocked = false;
enum Rep { REP_TRADE, REP_FIGHT, REP_ARGON, REP_BORON, REP_SPLIT, REP_PARANID, REP_TELADI, REP_GONER, REP_TERRAN, REP_ATF, REP_PIRATES, REP_YAKI };
enum ShipClass { CLASS_M1, CLASS_M2, CLASS_M3, CLASS_M4, CLASS_M5, CLASS_M6, CLASS_M7, CLASS_M8, CLASS_TP, CLASS_TS, CLASS_TM, CLASS_TL };
#define MAXRACEREP 12
#define MAXSHIPCLASS 12
typedef struct SShip {
void Reset() { sName = sID = sClass = sEnv = ""; iSpeed = 0; }
Utils::WString sName;
Utils::WString sID;
Utils::WString sClass;
Utils::WString sEnv;
int iSpeed;
} SShip;
typedef struct STarget : public SShip {
void Reset() { SShip::Reset(); iShields = iHull = iDist = 0; sRelation = ""; }
int iShields;
int iHull;
Utils::WString sRelation;
int iDist;
} STarget;
typedef struct SRaceRep {
void Reset() { sRace = ""; iRep = 0; iRepPct = 0; sRank = ""; bIncludeRace = false; }
Utils::WString sRace;
Utils::WString sRank;
int iRep;
int iRepPct;
bool bIncludeRace;
} SRaceRep;
class CX3Data
{
public:
bool readFile(const Utils::WString &, const Utils::WString &);
// get strings
bool IsLocked () { return m_bLocked; }
SShip &GetShipData () { return m_shipData; }
STarget &GetTargetData () { return m_targetData; }
const Utils::WString &pilot () const { return m_sPilot; }
const Utils::WString &shipId() const { return m_shipData.sID; }
int GetShipsNum () { return m_iShips; }
int GetStations () { return m_iStations; }
const Utils::WString &credits () const { return m_sAccount; }
const Utils::WString &gameTime () const { return m_sGametime; }
const Utils::WString &shipName () const { return m_shipData.sName; }
const Utils::WString &shipEnv () const { return m_shipData.sEnv; }
int GetShipClass (int s_class) { return m_iShipClass[s_class]; }
SRaceRep &GetRaceRep (int race) { return m_Rep[race]; }
bool HasTarget () const { return (m_targetData.sName.empty()) ? false : true; }
Utils::WString target () const { return (!HasTarget()) ? L"No Target" : m_targetData.sName; }
const Utils::WString &targetRelation() { return m_targetData.sRelation; }
Utils::WString GetTargetDistanceStr()
{
int dist = m_targetData.iDist;
if ( dist > 900 )
{
float fDist = (float)dist / 1000.0f;
return Utils::WString::FromFloat(fDist, 1) + L"Km";
}
return Utils::WString::Number(dist) + L"m";
}
int GetHull () { return m_iHull; }
int GetShields () { return m_iShields; }
int GetWeaponEnergy () { return m_iLaserProgress; }
int GetMySpeed () { return m_shipData.iSpeed; }
int GetTargetSpeed () { return m_targetData.iSpeed; }
int GetTargetDistance () { return m_targetData.iDist; }
int GetTargetHull () { return m_targetData.iHull; }
int GetTargetShield () { return m_targetData.iShields; }
int GetEnemies () { return m_iEnemies; }
int GetEnemies2 () { return m_iEnemies2; }
int GetMissiles () { return m_iMissiles; }
int GetInsurance () { return m_iInsurance; }
int GetVersion () { return m_iVersion; }
Utils::WString myShip () const { return (m_shipData.sName.empty()) ? L"No Ship" : (m_shipData.sName + L" (" + m_shipData.sID + L") [" + m_shipData.sClass + L"] / " + m_shipData.sEnv); }
Utils::WString myTarget () const { return (!HasTarget()) ? L"No Target" : (m_targetData.sName + L" (" + m_targetData.sID + L") [" + m_targetData.sClass + L"]"); }
const Utils::WStringList &customFiles () const { return _lCustomFile; }
const Utils::WStringList &customList () const { return _lCustomList; }
// set strings
void Reset ();
void setGameName(const Utils::WString &name) { m_sGameName = name; }
void setGameDirectory(const Utils::WString &name) { m_sGameDir = name; }
const Utils::WString &GetGameName() const { return m_sGameName; }
const Utils::WString& GetProgDir() const { return m_sProgDir; }
const Utils::WString& GetGameDirectory() const { return m_sGameDir; }
CX3Data(const Utils::WString &progDir);
virtual ~CX3Data();
void setRaceRep(int rep, const Utils::WString &race, const Utils::WString &rest, bool old = false);
private:
Utils::WString _getRepPercentage(const Utils::WString &rank) const;
Utils::WString _getRankPercentage(const Utils::WString &rank) const;
// data locking
bool m_bLocked;
// my ship data
SShip m_shipData;
// my targets data
STarget m_targetData;
// pilot info
Utils::WString m_sPilot;
int m_iShips;
int m_iStations;
int m_iAccount;
int m_iInsurance;
int m_iShipClass[MAXSHIPCLASS];
// main ship information
int m_iHull;
int m_iShields;
int m_iLaser;
int m_iMaxLaser;
int m_iLaserProgress;
int m_iMissiles;
int m_iEnemies;
int m_iEnemies2;
int m_iVersion;
int m_iLastUpdate;
Utils::WString m_sAccount;
Utils::WString m_sGametime;
Utils::WString m_sShipEnv;
SRaceRep m_Rep[MAXRACEREP];
Utils::WString m_sGameName;
Utils::WString m_sGameDir;
Utils::WString m_sProgDir;
bool m_bLoaded;
Utils::WStringList _lCustomList;
Utils::WStringList _lCustomFile;
};
#endif // !defined(AFX_X3DATA_H__491F0DBE_1AE5_4956_B262_F2D1B0D0E9FF__INCLUDED_)