Files
firestorm/Gameleap/code/mw4/Code/MW4/MissionReview.hpp
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

152 lines
3.2 KiB
C++

//===========================================================================//
// File: MissionReview.hpp
//---------------------------------------------------------------------------//
// Date Who Modification //
// -------- --- ---------------------------------------------------------- //
// 07/11/2000 JSE Inital coding
//---------------------------------------------------------------------------//
// Copyright (C) 2000, Microsoft Corp. //
// All Rights reserved worldwide //
// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL //
//===========================================================================//
#pragma once
#include "MW4.hpp"
#include <Adept\Application.hpp>
#if !defined(NO_MR)
namespace MechWarrior4
{
struct MRPlayerData
{
public:
MRPlayerData();
void Reset();
enum {
OutToken = 0,
InToken = 1,
NoChange = 2
};
int m_playerStatus;
const char *m_playerName;
Point3D m_position;
Scalar m_yawRotation;
int m_scoreBucket1;
int m_scoreBucket2;
int m_scoreBucket3;
enum {
Damage_Zones = 12
};
Scalar m_damageLevel[Damage_Zones];
bool m_takenDamage;
bool m_firedWeapon;
bool m_alive;
};
class MissionReview :
public Stuff::Plug
{
public:
MissionReview();
~MissionReview();
void ClearLog(void);
enum {
XBitDepth = 12,
YBitDepth = 12,
RotationBitDepth = 8,
DamageBitDepth = 4,
};
enum {
RemoveToken = 0,
AddToken = 1,
DoneToken = 2,
ToBeContinuedToken = 3
};
// ---------------Record---------------
void ReadyRecord(void);
void StartRecordingLog(Scalar frequency);
void StopRecordingLog(void);
void AddPlayer(const char *player_name, int id);
void RemovePlayer(int id);
void TakeSnapShot();
void SaveLog(const char *file_name);
void GetHeader(DynamicMemoryStream *stream);
void GetDataLog(DynamicMemoryStream *stream);
// ---------------Playback---------------
bool HaveLog(void);
void StartLogBuffer(void);
void LoadLog(const char *file_name);
bool ReadNames(MemoryStream *stream);
void AddPartToLogBuffer(MemoryStream *log_part_stream);
char *GetMissionName();
void GetMapExtents(Point3D &min_extents, Point3D &max_extents);
void GetLogTimes(Scalar &buffered_time, Scalar &total_time, Scalar &sample_rate);
void GetPlayerData(MRPlayerData *data, Scalar time, int player);
enum {
NoMode = 0,
PlayBackMode,
RecordMode
};
Time timeSinceLastSnapShot;
Scalar m_snapShotFrequency;
int m_mode;
int m_totalSnapShots;
int m_bufferedSnapShots;
int m_playersInGame;
bool haveHeaderInfo;
bool m_recording;
DynamicMemoryStream *m_missionLog;
DynamicMemoryStream *m_nameLog;
MRPlayerData m_playerData[Maximum_Players];
MRPlayerData *m_playBackLog[Maximum_Players];
MString missionName;
Point3D minExtents;
Point3D maxExtents;
int lastReadSnapShot;
int lastReadPlayer;
int lastByteRead;
int totalLogSize;
};
}
#endif // !defined(NO_MR)