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

167 lines
3.9 KiB
C++

//===========================================================================//
// File: Missile_Tool.cpp
//---------------------------------------------------------------------------//
// Date Who Modification //
// -------- --- ---------------------------------------------------------- //
// 05/27/99 DPB Created File and Initial Functionality
//---------------------------------------------------------------------------//
// Copyright (C) 1998, Fasa Interactive //
// All Rights reserved worldwide //
// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL //
//===========================================================================//
#include "MW4Headers.hpp"
#include "Missile.hpp"
#include "MWTool.hpp"
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
void
Missile__GameModel::ConstructGameModel(Script *script)
{
Check_Object(script);
//
//--------------
// Set up stream
//--------------
//
MemoryStream *model_stream = script->modelStream;
Check_Object(model_stream);
model_stream->AllocateBytes(sizeof(Missile__GameModel));
WeaponMover__GameModel::ConstructGameModel(script);
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
bool
Missile__GameModel::ReadAndVerify(
Missile__GameModel *model,
ModelAttributeEntry *attribute_entry,
const char *data,
char **error,
int error_buffer
)
{
Check_Object(attribute_entry);
bool result = false;
bool valid_data = (*data != '\0');
//
//----------------------------------------
//Read in the values from the data entered
//----------------------------------------
//
result =
WeaponMover__GameModel::ReadAndVerify(
model,
attribute_entry,
data,
error,
error_buffer
);
//
//---------------------------
//Verify all the model values
//---------------------------
//
switch(attribute_entry->attributeID)
{
case MaxTurnAngleAttributeID:
{
if(!valid_data)
{
Scalar value = 1.00f;
attribute_entry->SetValue(model, &value);
result = true;
}
else
{
model->maxTurnAngle *= Radians_Per_Degree;
}
if(model->maxTurnAngle <= 0.0f)
{
_snprintf(
*error,
error_buffer,
"{[GameData]MaxTurnAngle=%f}: value must be > 0!",
model->maxTurnAngle
);
result = false;
}
break;
}
case ThrusterAccelerationAttributeID:
{
if(!valid_data)
{
Scalar value = 35.0f;
attribute_entry->SetValue(model, &value);
result = true;
}
if(model->thrusterAcceleration <= 0.0f)
{
_snprintf(
*error,
error_buffer,
"{[GameData]ThrusterAcceleration=%f}: value must be > 0!",
model->thrusterAcceleration
);
result = false;
}
break;
}
case MaxLiveTimeAttributeID:
{
if(!valid_data)
{
Scalar value = 7.0f;
attribute_entry->SetValue(model, &value);
result = true;
}
if(model->maxLiveTime <= 0.0f)
{
_snprintf(
*error,
error_buffer,
"{[GameData]MaxLiveTime=%f}: value must be > 0!",
model->maxLiveTime
);
result = false;
}
break;
}
case ProximityFuseDistanceAttributeID:
{
if(!valid_data)
{
Scalar value = 2.0f;
attribute_entry->SetValue(model, &value);
result = true;
}
//
// To speed the test up we use the square of this number
//
model->proximityFuseDistance *= model->proximityFuseDistance;
if(model->proximityFuseDistance <= 0.0f)
{
_snprintf(
*error,
error_buffer,
"{[GameData]ProximityFuseDistance=%f}: value must be > 0!",
model->proximityFuseDistance
);
result = false;
}
break;
}
}
return result;
}