Files
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

512 lines
12 KiB
C++

// MW4GameEd.h : main header file for the MW4GAMEED application
//
#if !defined(AFX_MW4GAMEED_H__808CF88A_6E5A_11D2_8455_00105A17BC83__INCLUDED_)
#define AFX_MW4GAMEED_H__808CF88A_6E5A_11D2_8455_00105A17BC83__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#ifndef __AFXWIN_H__
#error include 'stdafx.h' before including this file for PCH
#endif
#include "resource.h" // main symbols
#include <MW4\MW4.hpp>
using namespace MechWarrior4;
using namespace Adept;
using namespace Stuff;
#include <Adept\Entity.hpp>
#include "MissionData.h"
//#include "EditorWaypoint.h"
#include "EditorEntityData.h"
#define CAMERA_FOLLOW_GROUND 0
#define CAMERA_FOLLOW_HIGHESTPOINT 1
#define CAMERA_FOLLOW_NONE 2
class Command;
class CEditWnd;
class CLightWnd;
class FogDlg;
class EditorMovementPath;
class EditorPathNode;
class EditorBoundaryNode;
class EditorLatticeNode;
/////////////////////////////////////////////////////////////////////////////
// CMW4GameEdApp:
// See MW4GameEd.cpp for the implementation of this class
//
extern char Working_Directory[128];
class MissionNamePlug :
public Plug
{
public:
MissionNamePlug() :
Plug(Plug::DefaultData)
{
name = NULL;
}
~MissionNamePlug()
{
if (name)
delete [] name;
}
char* name;
};
//
//-----------
// Class ID's
//-----------
//
enum
{
MW4GameEdApplicationClassID = MechWarrior4::FirstFreeMW4ClassID,
EditorWaypointClassID,
EditorLatticeNodeClassID,
EditorPathNodeClassID,
EditorBoundaryNodeClassID,
FirstFreeMW4GameEdClassID,
EditorDropNodeClassID,
EditorDropZonePointClassID,
EditorObjectiveMarkerClassID,
EditorMovementPathClassID,
EditorAmbientLightClassID,
EditorInfiniteLightClassID,
EditorPointLightClassID,
EditorSpotLightClassID,
EditorLightClassID,
EditorCameraShipClassID
};
class CDisplayWindow;
class COverviewWindow;
class CResourceWindow;
class CInstanceWindow;
class MW4GameEdApplication;
class CMainFrame;
class CMW4GameEdApp : public CWinApp
{
friend class MW4GameEdApplication;
friend class CMainFrame;
public:
CMW4GameEdApp();
~CMW4GameEdApp();
bool CreateNewScenario(char* missionName, char* mapPath, char* skyPath);
CDisplayWindow
*displayWindow;
COverviewWindow
*overviewWindow;
CResourceWindow
*resourceWindow;
CInstanceWindow
*instanceWindow;
CToolBarCtrl
*toolBar;
CString
missionFileName;
CString
lightFileName;
CString
audioFileName;
CString
m_graphName,m_moveGridName,m_rectGridName,m_airMoveGridName;
Command
*currentCommand;
Stuff::Scalar
cameraHeight;
int
cameraSpeed;
int
cameraFollowing;
int
ambientLightIndex;
int
keyLightIndex;
int
fillLightIndex;
int
m_nDefaultAlignmentForPlacedObjects;
bool
gridOn;
int
gridValue;
bool
didIdle;
bool
needsToSave;
bool
m_showLattice;
bool
m_showLatticeLinks;
bool
m_showRadii;
bool
m_showPaths;
bool
m_showBoundary;
bool
m_showDropZones;
bool
m_showTileBorder;
bool
m_showAI;
bool
m_MechLabActive;
bool
m_MissionSaved;
int
m_NumLinks;
int
m_NumObjectives;
CString
briefingPath;
CString m_ScriptName;
char
m_title[256];
bool
m_MultiDrop;
Stuff::ChainOf<Entity *>
culturalList;
void DisperseCulturals();
void RemoveCulturals();
CEditorEntityData *
GetEntityData(Entity *entity);
bool
CreateMissionInstanceFile(char* missionName, char* mapPath, char* skyPath, bool create_new);
bool
SaveMissionContentsFile(char *prop_name);
bool
SaveMissionDataFile(char* filename);
bool
SaveLightFile(char* fname = NULL);
bool
SaveAudioFile(char *fname = NULL);
void
CreateMissionResource(char* missionInstance);
void
GetGridCoords(Point3D& point);
void RemoveEditorObjects (void);
void
StopMultiPlace();
void
CreateLightDlg();
int
nextDamageFileID;
int
nextSubsystemFileID;
void
LoadLattice();
void
RemoveLattice();
void
LoadPaths();
void
LoadLights();
void
LoadBoundary();
void
DeleteBoundaryNodes();
void
LoadDropZones();
void
LoadObjectives();
void
LoadCameras();
void
VerifyObjectPlacement(bool feedback = false);
void RotateSel90CCW();
void RotateSel90CW();
Stuff::DynamicArrayOf<CEditorEntityData *> m_ExtraDataList;
bool
m_AllLoaded;
enum EditorStateType
{
InitializingState = 0,
NoGameIdleState,
AddingObjectState,
IdleState,
SelectingObjectState,
DragSelectState,
ReadyToMoveObjectState,
MovingObjectState,
ReadyToStartNavState,
PlacingNavPointState,
RotateState,
RevolveState,
AddingLinkState,
SprayingState,
WaitingToAddState,
WaitingToSprayState,
AfterMovingState
};
EditorStateType
m_editorState;
Stuff::ChainOf<Command *>
undoChain;
CString
m_VersionString;
bool
m_AutoBackupOnSave;
EditorMovementPath*
m_CurPath;
EditorPathNode*
m_LastPathNode;
int
m_CurPathNodeCount;
Stuff::LinearMatrix4D
m_DefCameraPos[10];
char m_DefCameraName[10][16];
CEditWnd*
briefingWnd;
HCURSOR m_WaitCursor;
CMissionData m_MissionData;
ChainOf<PlugOf<Resource*>*> dirtyGameModelResources;
CLightWnd* lightDlg;
FogDlg* fogDlg;
// Overrides
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CMW4GameEdApp)
public:
virtual BOOL InitInstance();
virtual int ExitInstance();
virtual BOOL OnIdle(LONG lCount);
virtual int Run();
//}}AFX_VIRTUAL
// Implementation
protected:
HMENU m_hMDIMenu;
HACCEL m_hMDIAccel;
int m_VideoResolution;
DynamicArrayOf<Stuff::Vector2DOf<Stuff::Scalar> > missionBoundary,warningBoundary;
// Stuff::SortedChainOf<LatticeLinkListNode*,int>
// LatticeLinkChain;
private:
// Redundant camera position data/code
LinearMatrix4D m_4DCameraBookmark[10];
char m_szCameraBookmarkNames[10][16];
public:
virtual BOOL PreTranslateMessage(MSG* pMsg);
void LoadWindowStates();
void SaveWindowStates();
void OpenFile(char* filename);
void WriteDirtyGameModels();
void VerifyWaypointRadius();
void InitMovementLatticeData() ;
void CreateLatticeNodeRadius(Entity* entity);
void CreateLatticeNodeRadius(EditorLatticeNode* node);
void EditorConstructMissionCreateMessage();
void FixPaths();
void MakeObjectsTileBased();
void MakeObjectsZoneBased();
void MakeObjectNamesUnique();
bool IsNameUnique(char *name,Entity *ignore=NULL);
void MakeNameUnique(MString *str);
int GetDefaultAlignmentForPlacedObjects() { return m_nDefaultAlignmentForPlacedObjects;};
//{{AFX_MSG(CMW4GameEdApp)
afx_msg void OnAppAbout();
afx_msg void OnFileNew();
afx_msg void OnToggleOverviewWindow();
afx_msg void OnToggleResourceWindow();
afx_msg void OnEditUndo();
afx_msg void OnAdjustGrid();
afx_msg void OnFileOpen();
afx_msg void OnUpdateViewOverviewwindow(CCmdUI* pCmdUI);
afx_msg void OnUpdateViewResourcewindow(CCmdUI* pCmdUI);
afx_msg void OnViewDisplaywindow();
afx_msg void OnUpdateViewDisplaywindow(CCmdUI* pCmdUI);
afx_msg void OnFileSaveAs();
afx_msg void OnToolsCameraheightFourtimesmechheight40m();
afx_msg void OnToolsCameraheightGround();
afx_msg void OnToolsCameraheightMechheight10m();
afx_msg void OnToolsCameraheightTwicemechheight20m();
afx_msg void OnToolsCameraspeedSlow();
afx_msg void OnToolsCameraspeedRegular();
afx_msg void OnToolsCameraspeedFast();
afx_msg void OnViewInstancewindow();
afx_msg void OnUpdateViewInstancewindow(CCmdUI* pCmdUI);
afx_msg void OnToolsBriefingfile();
afx_msg void OnFileSave();
afx_msg void OnToolsCamerafollowingGround();
afx_msg void OnToolsCamerafollowingHighestpoint();
afx_msg void OnToolsCamerafollowingNone();
afx_msg void OnUpdateToolsCamerafollowingGround(CCmdUI* pCmdUI);
afx_msg void OnUpdateToolsCamerafollowingHighestpoint(CCmdUI* pCmdUI);
afx_msg void OnUpdateToolsCamerafollowingNone(CCmdUI* pCmdUI);
afx_msg void OnToolsCameraheightUserdefined();
afx_msg void OnViewResize1024();
afx_msg void OnUpdateViewResize1024(CCmdUI* pCmdUI);
afx_msg void OnViewResize1152();
afx_msg void OnUpdateViewResize1152(CCmdUI* pCmdUI);
afx_msg void OnViewResize1280();
afx_msg void OnUpdateViewResize1280(CCmdUI* pCmdUI);
afx_msg void OnViewResize1600();
afx_msg void OnUpdateViewResize1600(CCmdUI* pCmdUI);
afx_msg void OnViewResize640();
afx_msg void OnUpdateViewResize640(CCmdUI* pCmdUI);
afx_msg void OnViewResize800();
afx_msg void OnUpdateViewResize800(CCmdUI* pCmdUI);
afx_msg void OnFileAutobackuponsave();
afx_msg void OnUpdateFileAutobackuponsave(CCmdUI* pCmdUI);
afx_msg void OnFileClose();
afx_msg void OnUpdateFileSave(CCmdUI* pCmdUI);
afx_msg void OnUpdateFileSaveAs(CCmdUI* pCmdUI);
afx_msg void OnFileDelete();
afx_msg void OnToolsMovementlattice();
afx_msg void OnUpdateToolsMovementlattice(CCmdUI* pCmdUI);
afx_msg void OnToolsMovmentlayerShowlatticelinks();
afx_msg void OnUpdateToolsMovmentlayerShowlatticelinks(CCmdUI* pCmdUI);
afx_msg void OnToolsMovmentlayerRecalclatticelinks();
afx_msg void OnEditCut();
afx_msg void OnEditPaste();
afx_msg void OnToolsMovmentlayerShowall();
afx_msg void OnToolsMovmentlayerShownoderadii();
afx_msg void OnToolsMovmentlayerShowpaths();
afx_msg void OnUpdateToolsMovmentlayerShowall(CCmdUI* pCmdUI);
afx_msg void OnUpdateToolsMovmentlayerShownoderadii(CCmdUI* pCmdUI);
afx_msg void OnUpdateToolsMovmentlayerShowpaths(CCmdUI* pCmdUI);
afx_msg void OnToolsMechlab();
afx_msg void OnToolsMovmentlayerShowmissionboundary();
afx_msg void OnUpdateToolsMovmentlayerShowmissionboundary(CCmdUI* pCmdUI);
afx_msg void OnToolsVerifyobjectplacement();
afx_msg void OnToolsMovmentlayerShowdropzones();
afx_msg void OnUpdateToolsMovmentlayerShowdropzones(CCmdUI* pCmdUI);
afx_msg void OnToolsEditmissionscript();
afx_msg void OnToolsMovmentlayerShowobjectives();
afx_msg void OnUpdateToolsMovmentlayerShowobjectives(CCmdUI* pCmdUI);
afx_msg void OnViewShowtileborders();
afx_msg void OnUpdateViewShowtileborders(CCmdUI* pCmdUI);
afx_msg void OnToolsSpecifymissionscript();
afx_msg void OnToolsCheckscripts ();
afx_msg void OnToolsMovmentlayerCreatelattice();
afx_msg void OnToolsMovmentlayerCreateRects();
afx_msg void OnToolsMissionparametersEditfog();
afx_msg void OnUpdateToolsCameraspeedFast(CCmdUI* pCmdUI);
afx_msg void OnUpdateToolsCameraspeedRegular(CCmdUI* pCmdUI);
afx_msg void OnUpdateToolsCameraspeedSlow(CCmdUI* pCmdUI);
afx_msg void OnToolsSnapobjectstoterrain();
afx_msg void OnEditCopy();
afx_msg void OnToolsWeaponsProperties();
afx_msg void OnUpdateToolsMechProperties(CCmdUI* pCmdUI);
afx_msg void OnToolsMechProperties();
afx_msg void OnUpdateToolsWeaponsProperties(CCmdUI* pCmdUI);
afx_msg void OnToolsWeaponsBalancing();
afx_msg void OnUpdateToolsWeaponsBalancing(CCmdUI* pCmdUI);
afx_msg void OnToolsArmorBalancing();
afx_msg void OnUpdateToolsArmorBalancing(CCmdUI* pCmdUI);
afx_msg void OnToolsPlacewithmap();
afx_msg void OnToolsDisperseculturalwithbitmap();
afx_msg void OnToolsRemoveculturals();
//}}AFX_MSG
afx_msg void OnUpdateDefaultAlignmentMenu(CCmdUI* pCmdUI);
afx_msg void OnDefaultAlignmentMenu(UINT uiID);
DECLARE_MESSAGE_MAP()
public:
afx_msg void OnNameNumberedCameraPosition (UINT nID);
afx_msg void OnSetNumberedCameraPosition (UINT nID);
afx_msg void OnGotoNumberedCameraPosition(UINT nID);
afx_msg void OnMenuAvailableNumberedCameraPosition(CCmdUI* pCmdUI );
void UpdateCameraMenus(int index);
/*
afx_msg void OnToolsLightingAmbient();
afx_msg void OnToolsLightingFill();
afx_msg void OnToolsLightingKey();
*/
private:
void ShowTipAtStartup(void);
private:
void ShowTipOfTheDay(void);
void LoadInSavedCameraPositions(char * filename);
void SaveEditCameraInfo();
};
/////////////////////////////////////////////////////////////////////////////
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_MW4GAMEED_H__808CF88A_6E5A_11D2_8455_00105A17BC83__INCLUDED_)