Initial commit of Command & Conquer Generals and Command & Conquer Generals Zero Hour source code.
This commit is contained in:
parent
2e338c00cb
commit
3d0ee53a05
6072 changed files with 2283311 additions and 0 deletions
|
@ -0,0 +1,160 @@
|
|||
/*
|
||||
** Command & Conquer Generals Zero Hour(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) 2001-2003 Electronic Arts Inc. //
|
||||
// //
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
// FILE: ChallengeGenerals.h //////////////////////////////////////////////////////////////////////
|
||||
// Author: Steve Copeland, 6/24/2003
|
||||
// Desc: This is a manager for data pertaining to the Generals' Challenge personas and related GUI.
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#pragma once
|
||||
|
||||
#ifndef __CHALLENGEGENERALS_H_
|
||||
#define __CHALLENGEGENERALS_H_
|
||||
|
||||
|
||||
// INCLUDES //////////////////////////////////////////////////////////////////////////////////
|
||||
#include "Common/GameType.h"
|
||||
#include "Common/Overridable.h"
|
||||
|
||||
// DEFINES ////////////////////////////////////////////////////////////////////////////////////////
|
||||
//static const Int NUM_GENERALS = 12; // ChallengeMenu.wnd dependent
|
||||
#define NUM_GENERALS (12)
|
||||
|
||||
// FORWARD REFERENCES /////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
// CLASS DEFINITIONS //////////////////////////////////////////////////////////////////////////////
|
||||
class GeneralPersona
|
||||
{
|
||||
friend class ChallengeGenerals;
|
||||
|
||||
private:
|
||||
Bool m_bStartsEnabled;
|
||||
AsciiString m_strBioName;
|
||||
AsciiString m_strBioDOB;
|
||||
AsciiString m_strBioBirthplace;
|
||||
AsciiString m_strBioStrategy;
|
||||
AsciiString m_strBioRank;
|
||||
AsciiString m_strBioBranch;
|
||||
AsciiString m_strBioClassNumber;
|
||||
Image *m_imageBioPortraitSmall;
|
||||
Image *m_imageBioPortraitLarge;
|
||||
AsciiString m_strCampaign;
|
||||
AsciiString m_strPlayerTemplateName;
|
||||
AsciiString m_strPortraitMovieLeftName;
|
||||
AsciiString m_strPortraitMovieRightName;
|
||||
Image *m_imageDefeated;
|
||||
Image *m_imageVictorious;
|
||||
AsciiString m_strDefeated;
|
||||
AsciiString m_strVictorious;
|
||||
AsciiString m_strSelectionSound;
|
||||
AsciiString m_strTauntSound1;
|
||||
AsciiString m_strTauntSound2;
|
||||
AsciiString m_strTauntSound3;
|
||||
AsciiString m_strWinSound;
|
||||
AsciiString m_strLossSound;
|
||||
AsciiString m_strPreviewSound;
|
||||
AsciiString m_strNameSound ;
|
||||
|
||||
|
||||
public:
|
||||
GeneralPersona( void ) :
|
||||
m_imageBioPortraitSmall(NULL),
|
||||
m_imageBioPortraitLarge(NULL)
|
||||
{
|
||||
}
|
||||
// ~GeneralPersona( void );
|
||||
|
||||
const Bool isStartingEnabled() const { return m_bStartsEnabled; }
|
||||
const AsciiString& getBioName() const { return m_strBioName; }
|
||||
const AsciiString& getBioDOB() const { return m_strBioDOB; }
|
||||
const AsciiString& getBioBirthplace() const { return m_strBioBirthplace; }
|
||||
const AsciiString& getBioStrategy() const { return m_strBioStrategy; }
|
||||
const AsciiString& getBioRank() const { return m_strBioRank; }
|
||||
const AsciiString& getBioClassNumber() const { return m_strBioClassNumber; }
|
||||
const AsciiString& getBioBranch() const { return m_strBioBranch; }
|
||||
const Image *getBioPortraitSmall() const { return m_imageBioPortraitSmall; }
|
||||
const Image *getBioPortraitLarge() const { return m_imageBioPortraitLarge; }
|
||||
const AsciiString& getPortraitMovieLeftName() const { return m_strPortraitMovieLeftName; }
|
||||
const AsciiString& getPortraitMovieRightName() const { return m_strPortraitMovieRightName; }
|
||||
const AsciiString& getCampaign() const { return m_strCampaign; }
|
||||
const AsciiString& getPlayerTemplateName() const { return m_strPlayerTemplateName; } // template name, as parsed in from ini
|
||||
const Image *getImageDefeated() const { return m_imageDefeated; }
|
||||
const Image *getImageVictorious() const { return m_imageVictorious; }
|
||||
const AsciiString& getStringDefeated() const { return m_strDefeated; }
|
||||
const AsciiString& getStringVictorious() const { return m_strVictorious; }
|
||||
const AsciiString& getSelectionSound() const { return m_strSelectionSound; }
|
||||
const AsciiString& getRandomTauntSound() const {
|
||||
switch (rand()%3) // don't care about distribution or exactly how random this is
|
||||
{
|
||||
case 0: return m_strTauntSound1;
|
||||
case 1: return m_strTauntSound2;
|
||||
}
|
||||
return m_strTauntSound3;
|
||||
}
|
||||
const AsciiString& getWinSound() const { return m_strWinSound; }
|
||||
const AsciiString& getLossSound() const { return m_strLossSound; }
|
||||
const AsciiString& getPreviewSound() const { return m_strPreviewSound; }
|
||||
const AsciiString& getNameSound() const { return m_strNameSound; }
|
||||
};
|
||||
|
||||
|
||||
class ChallengeGenerals
|
||||
{
|
||||
|
||||
private:
|
||||
/*const*/ GeneralPersona m_position[ NUM_GENERALS ];
|
||||
Int m_PlayerTemplateNum; // the template number as ThePlayerTemplateStore has it
|
||||
GameDifficulty m_currentDifficulty; // the last selected game difficulty for the challenge generals
|
||||
|
||||
static void parseGeneralPersona( INI* ini, void *instance, void *store, const void *userData );
|
||||
|
||||
public:
|
||||
ChallengeGenerals( void );
|
||||
~ChallengeGenerals( void );
|
||||
|
||||
void init( void );
|
||||
const GeneralPersona* getChallengeGenerals() const { return m_position; }
|
||||
const FieldParse* getFieldParse( void ) const { return s_fieldParseTable; } // for INI file parsing
|
||||
const GeneralPersona* getPlayerGeneralByCampaignName( AsciiString name ) const;
|
||||
const GeneralPersona* getGeneralByGeneralName( AsciiString name ) const;
|
||||
const GeneralPersona* getGeneralByTemplateName( AsciiString name ) const;
|
||||
|
||||
void setCurrentPlayerTemplateNum( Int playerTemplateNum) { m_PlayerTemplateNum = playerTemplateNum; }
|
||||
Int getCurrentPlayerTemplateNum( void ) { return m_PlayerTemplateNum; }
|
||||
|
||||
void setCurrentDifficulty( GameDifficulty diff ) { m_currentDifficulty = diff; }
|
||||
const GameDifficulty getCurrentDifficulty( void ) { return m_currentDifficulty; }
|
||||
protected:
|
||||
static const FieldParse s_fieldParseTable[];
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
// EXTERNALS //////////////////////////////////////////////////////////////////////////////////////
|
||||
extern ChallengeGenerals *TheChallengeGenerals;
|
||||
extern ChallengeGenerals *createChallengeGenerals( void );
|
||||
|
||||
#endif // end __CHALLENGEGENERALS_H_
|
Reference in a new issue