Files
firestorm/Gameleap/code/mw4/Code/MW4GameEd2/ObjectManager.h
T
Cyd 2b8ca921cb Initial full mirror of c:\VWE (source + assets + toolchain + outputs) via Git LFS
Complete disaster-recovery snapshot: engine/game source, game data assets,
VC6 toolchain + DX SDKs, build outputs, deployed game, and _UNUSED archive.
Large binaries in Git LFS; text preserved byte-for-byte (core.autocrlf=false,
no eol attributes). See RECOVERY.md for the one-clone rebuild procedure.
2026-06-24 21:28:16 -05:00

249 lines
6.9 KiB
C++

// ObjectManager.h: interface for the ObjectManager class.
//
//////////////////////////////////////////////////////////////////////
#if !defined(AFX_OBJECTMANAGER_H__7B09BC09_4B1A_434D_8DF3_6A262CBEA609__INCLUDED_)
#define AFX_OBJECTMANAGER_H__7B09BC09_4B1A_434D_8DF3_6A262CBEA609__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#include"GUIObjectList.h"
#include"GUIPath.h"
#include"GUILattice.h"
#include"MissionData.h"
#include<Stuff\Stuff.hpp>
#include <ImageLib\Image.h>
class ObjCreateInfo;
class EdGameObject;
class GUILattice;
class ViewWindowInfo;
class CameraController;
class UndoManager;
class CObjPanelDlg;
class AddCommand;
class CDisperseDlg;
class GUILookUpLight;
namespace Adept
{
class Entity;
};
class MPGame
{
public:
int Team,Alignment;
bool Supported;
bool AddScenario;
int ScriptTotal;
CString ScriptPaths[256];
MPGame()
{
ScriptTotal=0; Team=2; Alignment=2; Supported=false; AddScenario=false;
}
};
class ObjectManager:public GUIObjectList
{
protected:
int DefaultAlignment;
CString SourceMission;
GUIObjectList ClipBoard;
Point3D CopyPos;
Point3D MapSize;
GUIBound *MissionBound,*WarningBound;
GUILattice *Lattice;
GUILookUpLight *LLight;
UndoManager *UndoMan;
CameraController* m_CameraController;
Image HField,SlopeMap,TerrainTexture;
CString MapName;
DWORD TagFlags;
bool MapLoaded;
ObjCreateInfo *AddInfo;
EdGUIObject *AddNode(Point3D &pnt,DWORD *show_flag,bool insert=false);
EdGUIObject *AddGameObject(ObjCreateInfo *inf,EdGameObject *gobj,DWORD *show_flag,Point3D &pnt);
EdGUIObject *AddCamera(Point3D &pnt);
EdGUIObject *AddFX(Point3D &pnt);
EdGUIObject *AddDropZone(Point3D &pnt);
EdGUIObject *AddLight(int subt,Point3D &pnt);
void MakeBounds();
void SaveInstanceTextFile();
void SaveLightsTextFile();
void SaveContentsTextFile();
void SaveDataTextFile();
void SaveBounds();
void SaveNameTable();
void SaveRailGraph();
void SaveBuildFile();
public:
void CheckScripts();
void CreateNFOFile();
void UpdateNFOFile();
void LoadNFOFile();
GUIObjectList ObjectiveList;
MissionData MisDat;
enum MPGameTypes
{
GT_SinglePlayer =0,
GT_StockDestruction ,
GT_StockTeamDestruction,
GT_StockAttrition ,
GT_StockTeamAttrition ,
GT_StockCaptureTheFlag,
GT_StockKingOfTheHill ,
GT_StockTeamKingOfTheHill ,
GT_StockTerritories ,
GT_StockStealTheBacon ,
GT_StockCaptureBase ,
GT_StockDestroyObjective,
GT_StockEscort,
GT_StockMasterTrial ,
GT_StockSiegeAssault ,
GT_StockCampaign , // [editor-build fix] used by ObjectManager.cpp (string map @1013, int map case 14) but was missing from this enum
GT_CustomDestruction ,
GT_CustomTeamDestruction ,
GT_CustomAttrition ,
GT_CustomTeamAttrition,
GT_CustomCaptureTheFlag ,
GT_CustomKingOfTheHill,
GT_CustomTeamKingOfTheHill ,
GT_CustomTerritories ,
GT_CustomStealTheBacon,
GT_CustomCaptureBase ,
GT_CustomDestroyObjective,
GT_CustomEscort ,
GT_CustomMasterTrial,
GT_CustomSiegeAssault,
GT_CustomCampaign,
GT_CustomUndefined,
GT_TOTALGAMES
};
static bool IsTeamGame(MPGameTypes type);
static CString GTEnumToType(MPGameTypes x);
static MPGameTypes GTTypeToEnum(int x);
static const char *MPGameTypeNames[];
MPGame MPGames[GT_TOTALGAMES];
bool AddEssentialObjects(CString &msg);
void CheckAlternativeScript(CString str);
void CheckAlternativeScripts();
void AddObjective();
void EditObjectives(CWnd *parent);
void SavePosForUndo();
void Undo();
void Redo();
bool CanUndo();
bool CanRedo();
void SyncToGame(ViewWindowInfo *vinf);
void SaveToReg();
void LoadFromReg();
void LoadTextInfo();
void SaveTextInfo(NotationFile *not_file);
void BuildGroup(GUIObjectList *new_list,Page *group_page);
void DeleteSelection();
void SetName( CString &name);
void BuildResources();
void SetTagFlags(unsigned long flags) {TagFlags=flags;}
void LoadTerrainTexture(Image *img);
Point3D BuildHFFromMap(Image *img);
void MakeSlopeMap(Image *img,Point3D map_scale);
unsigned long GetTagFlags() {return TagFlags;}
CameraController* GetCameraController() {return m_CameraController;}
void ResetCamera();
ObjectManager *GetMyMission() {return this;}
bool IsLoaded() {return MapLoaded;}
int GetDefaultAlignment() { return DefaultAlignment;}
void SetDefaultAlignment(int ang) { DefaultAlignment=ang;}
void CreateLattice();
void RecalcLatticeLinks();
void ResetBounds();
EdGUIObject *AttachGameObject(Adept::Entity *entity);
Image *GetHeightField() {return &HField;}
Image *GetSlopeMap() {return &SlopeMap;}
Image *GetTerrainTexture() {return &TerrainTexture;}
void AddToBuildFile();
bool InBuildFile();
void SetAddInfo(ObjCreateInfo *inf) {AddInfo=inf;}
bool AddAt(Point3D &pnt,DWORD *show_flag,bool flag=false);
EdGUIObject *AddAt(AddCommand **com,DWORD *show_flag,bool flag=false,Point3D pnt=Point3D(0,0,0),YawPitchRoll rot=YawPitchRoll(0,0,0));
EdGUIObject *AddAt(ObjCreateInfo *inf,AddCommand **com,DWORD *show_flag,bool flag=false,Point3D pnt=Point3D(0,0,0),YawPitchRoll rot=YawPitchRoll(0,0,0));
void SetProperties(Point3D &pnt,CWnd *parent=NULL);
void SetProperties(EdGUIObject *gobj,CWnd *parent=NULL);
void SetPropertiesOfSelected(CWnd *parent);
void AddPanel(CObjPanelDlg *pnl,UndoCommand **cmd);
void DeleteObject(int i);
void DeleteAllObjects();
void RotateSelection( UnitQuaternion &pnt);
void SaveUndoCommand(UndoCommand *cmd);
void DrawAllObjects(DrawInfo &dinf,bool drawTags=false)
{GUIObjectList::DrawAllObjects(dinf,drawTags,TagFlags);}
void DrawSelectedObjects(DrawInfo &dinf,bool drawTags=false)
{GUIObjectList::DrawSelectedObjects(dinf,drawTags,TagFlags);}
void DrawUnSelectedObjects(DrawInfo &dinf,bool drawTags=false)
{GUIObjectList::DrawUnSelectedObjects(dinf,drawTags,TagFlags);}
void NewMission(CString mis_name,CString map_name);
bool OpenMission(CString fname,bool night=false);
void SaveMission(bool textout=false);
void SaveMission(CString fname,bool textout=false);
bool CloseMission();
Point3D GetMapSize() const;
void SetObjectName(EdGUIObject *gobj,CString &name);
void Draw(DrawInfo &dinf);
void DrawTag(DrawInfo &dinf, unsigned long tag_flags);
int GroupSelected();
void UnGroupSelected();
void ClearSelection();
void OffsetSelection(Point3D &vct);
bool CanOffsetSelection(Point3D &vect);
void SaveOverViewMap(CString fname,CSize size);
bool CutSelection();
bool CopySelection();
void PasteClipBoard(Point3D offset=Point3D(10.0f,0.0f,10.0f));
void PasteClipBoardAt(Point3D pos);
int GetUnSelIcon() {return ICON_MISSION; }
int GetSelIcon() {return ICON_MISSION; }
ObjectManager();
virtual ~ObjectManager();
};
#endif // !defined(AFX_OBJECTMANAGER_H__7B09BC09_4B1A_434D_8DF3_6A262CBEA609__INCLUDED_)