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.
180 lines
4.3 KiB
C++
180 lines
4.3 KiB
C++
//===========================================================================//
|
|
// File: NetWeapon.hpp
|
|
//---------------------------------------------------------------------------//
|
|
// Date Who Modification //
|
|
// -------- --- ---------------------------------------------------------- //
|
|
// 01/06/2000 JSE Inital coding
|
|
//---------------------------------------------------------------------------//
|
|
// Copyright (C) 1998, Microsoft Corp. //
|
|
// All Rights reserved worldwide //
|
|
// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL //
|
|
//===========================================================================//
|
|
|
|
|
|
|
|
|
|
#pragma once
|
|
|
|
#include "NetConstants.hpp"
|
|
|
|
//#include "Mech.hpp"
|
|
|
|
namespace MechWarrior4
|
|
{
|
|
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
//
|
|
|
|
typedef void
|
|
(*DecodeFunction)(
|
|
Entity *entity,
|
|
MemoryStream *memory_stream,
|
|
Time till,
|
|
Scalar packet_latency,
|
|
int connection,
|
|
int debug_level,
|
|
int bandwidth,
|
|
Scalar rate
|
|
);
|
|
|
|
typedef void
|
|
(*SkipFunction)(
|
|
MemoryStream *memory_stream,
|
|
int size,
|
|
Time till,
|
|
int connection,
|
|
int debug_level,
|
|
int bandwidth
|
|
);
|
|
|
|
typedef void
|
|
(*EncodeFunction)(
|
|
Entity *entity,
|
|
DynamicMemoryStream *memory_stream,
|
|
int connection,
|
|
int debug_level,
|
|
int bandwidth
|
|
);
|
|
|
|
typedef int
|
|
(*SizeFunction)(
|
|
Entity *entity
|
|
);
|
|
|
|
typedef int
|
|
(*MaxSizeFunction)(
|
|
Entity *entity,
|
|
int debug_level,
|
|
int bandwidth
|
|
);
|
|
|
|
typedef bool
|
|
(*MaintainActiveFlagFunction)(
|
|
Entity *entity,
|
|
Point3D cull_location
|
|
);
|
|
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
//
|
|
|
|
|
|
#define UPDATE_ENTRY(c) \
|
|
UpdateEntry((DecodeFunction)c::Decode, (SkipFunction)c::Skip, (EncodeFunction)c::Encode, (SizeFunction)c::SizeFunction, (MaxSizeFunction)c::MaxSize, (MaintainActiveFlagFunction)c::MaintainActiveFlagFunction, c::GetUpdateEntryType(), c::GetUpdateEntryCount())
|
|
|
|
|
|
|
|
struct UpdateEntry
|
|
{
|
|
public:
|
|
|
|
UpdateEntry(DecodeFunction dec_func, SkipFunction skip_func, EncodeFunction enc_func, SizeFunction size_func, MaxSizeFunction max_func, MaintainActiveFlagFunction active_func, int update_id, int entry_count)
|
|
{
|
|
Check_Pointer(dec_func);
|
|
Check_Pointer(skip_func);
|
|
Check_Pointer(enc_func);
|
|
|
|
m_decode = dec_func;
|
|
m_skip = skip_func;
|
|
m_encode = enc_func;
|
|
m_size = size_func;
|
|
m_maxSize = max_func;
|
|
m_maintainActiveFlag = active_func;
|
|
|
|
m_updateID = update_id;
|
|
m_entryCount = entry_count;
|
|
|
|
}
|
|
|
|
DecodeFunction m_decode;
|
|
SkipFunction m_skip;
|
|
EncodeFunction m_encode;
|
|
SizeFunction m_size;
|
|
MaxSizeFunction m_maxSize;
|
|
MaintainActiveFlagFunction m_maintainActiveFlag;
|
|
|
|
int m_updateID;
|
|
int m_entryCount;
|
|
|
|
int GetEntryCount()
|
|
{
|
|
return m_entryCount;
|
|
}
|
|
|
|
int GetUpdateID()
|
|
{
|
|
return m_updateID;
|
|
}
|
|
|
|
};
|
|
|
|
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
//
|
|
|
|
class UpdateManager
|
|
{
|
|
public:
|
|
enum {
|
|
BaseUpdateID = -1,
|
|
MechPositionUpdateID = 0,
|
|
MechAnimationUpdateID, //1
|
|
MechMovemntUpdateID, //2
|
|
MechExternalDamageUpdateID, //3
|
|
MechFirstPersonPositionUpdateID, //4
|
|
MechFirstPersonControlUpdateID, //5
|
|
WeaponCommandID, //6
|
|
MissionObjectiveUpdateID, //7
|
|
MechInternalDamageUpdateID, //8
|
|
MechInternalHeatUpdateID, //9
|
|
SubsystemUpdateID,//10
|
|
FlushUpdateID,//11
|
|
SearchLightUpdateID,//12
|
|
InternalAMSAmmoUpdateID,//13
|
|
ExternalAMSAmmoUpdateID,//14
|
|
NearBuildingExternalDamageUpdateID,//15
|
|
SecondaryBuildingExternalDamageUpdateID,//16
|
|
FarBuildingExternalDamageUpdateID,//17
|
|
ExternalJumpJetUpdateID,//18
|
|
InternalJumpJetUpdateID,//19
|
|
VehicleDamageUpdateID,//20
|
|
AirMovementUpdateID,//21
|
|
GroundMovementUpdateID,//22
|
|
TurretMovementUpdateID,//23
|
|
TorsoMovementUpdateID,//24
|
|
NavPointUpdateID,//25
|
|
FlagUpdateID,//26
|
|
TimeUpdateID,//27
|
|
SecurityQueryID,//28
|
|
SecurityResponseID,//29
|
|
PingUpdateID,//30
|
|
UpdateCount
|
|
};
|
|
|
|
static UpdateEntry
|
|
UpdateEntries[];
|
|
|
|
static int GetUpdateCount(){return UpdateCount;};
|
|
static int GetUpdateEntryCount(int type);
|
|
};
|
|
}; |