mirror of
https://git.rip/DMCA_FUCKER/re3.git
synced 2024-12-23 02:00:01 +00:00
Fix placement of some script functions
This commit is contained in:
parent
8e45439205
commit
9a9b1e7574
|
@ -2025,3 +2025,143 @@ int8 CRunningScript::ProcessCommands900To999(int32 command)
|
|||
}
|
||||
return -1;
|
||||
}
|
||||
|
||||
int32 CTheScripts::GetNewUniqueScriptSphereIndex(int32 index)
|
||||
{
|
||||
if (ScriptSphereArray[index].m_Index >= UINT16_MAX - 1)
|
||||
ScriptSphereArray[index].m_Index = 1;
|
||||
else
|
||||
ScriptSphereArray[index].m_Index++;
|
||||
return (uint16)index | ScriptSphereArray[index].m_Index << 16;
|
||||
}
|
||||
|
||||
int32 CTheScripts::GetActualScriptSphereIndex(int32 index)
|
||||
{
|
||||
if (index == -1)
|
||||
return -1;
|
||||
uint16 check = (uint32)index >> 16;
|
||||
uint16 array_idx = index & (0xFFFF);
|
||||
script_assert(array_idx < ARRAY_SIZE(ScriptSphereArray));
|
||||
if (check != ScriptSphereArray[array_idx].m_Index)
|
||||
return -1;
|
||||
return array_idx;
|
||||
}
|
||||
|
||||
void CTheScripts::DrawScriptSpheres()
|
||||
{
|
||||
for (int i = 0; i < MAX_NUM_SCRIPT_SPHERES; i++) {
|
||||
if (ScriptSphereArray[i].m_bInUse)
|
||||
C3dMarkers::PlaceMarkerSet(ScriptSphereArray[i].m_Id, MARKERTYPE_CYLINDER, ScriptSphereArray[i].m_vecCenter, ScriptSphereArray[i].m_fRadius,
|
||||
SPHERE_MARKER_R, SPHERE_MARKER_G, SPHERE_MARKER_B, SPHERE_MARKER_A, SPHERE_MARKER_PULSE_PERIOD, SPHERE_MARKER_PULSE_FRACTION, 0);
|
||||
}
|
||||
}
|
||||
|
||||
int32 CTheScripts::AddScriptSphere(int32 id, CVector pos, float radius)
|
||||
{
|
||||
int16 i = 0;
|
||||
for (i = 0; i < MAX_NUM_SCRIPT_SPHERES; i++) {
|
||||
if (!ScriptSphereArray[i].m_bInUse)
|
||||
break;
|
||||
}
|
||||
#ifdef FIX_BUGS
|
||||
if (i == MAX_NUM_SCRIPT_SPHERES)
|
||||
return -1;
|
||||
#endif
|
||||
ScriptSphereArray[i].m_bInUse = true;
|
||||
ScriptSphereArray[i].m_Id = id;
|
||||
ScriptSphereArray[i].m_vecCenter = pos;
|
||||
ScriptSphereArray[i].m_fRadius = radius;
|
||||
return GetNewUniqueScriptSphereIndex(i);
|
||||
}
|
||||
|
||||
void CTheScripts::RemoveScriptSphere(int32 index)
|
||||
{
|
||||
index = GetActualScriptSphereIndex(index);
|
||||
if (index == -1)
|
||||
return;
|
||||
ScriptSphereArray[index].m_bInUse = false;
|
||||
ScriptSphereArray[index].m_Id = 0;
|
||||
}
|
||||
|
||||
void CTheScripts::AddToBuildingSwapArray(CBuilding* pBuilding, int32 old_model, int32 new_model)
|
||||
{
|
||||
int i = 0;
|
||||
bool found = false;
|
||||
while (i < MAX_NUM_BUILDING_SWAPS && !found) {
|
||||
if (BuildingSwapArray[i].m_pBuilding == pBuilding)
|
||||
found = true;
|
||||
else
|
||||
i++;
|
||||
}
|
||||
if (found) {
|
||||
if (BuildingSwapArray[i].m_nOldModel == new_model) {
|
||||
BuildingSwapArray[i].m_pBuilding = nil;
|
||||
BuildingSwapArray[i].m_nOldModel = BuildingSwapArray[i].m_nNewModel = -1;
|
||||
}
|
||||
else {
|
||||
BuildingSwapArray[i].m_nNewModel = new_model;
|
||||
}
|
||||
}
|
||||
else {
|
||||
i = 0;
|
||||
while (i < MAX_NUM_BUILDING_SWAPS && !found) {
|
||||
if (BuildingSwapArray[i].m_pBuilding == nil)
|
||||
found = true;
|
||||
else
|
||||
i++;
|
||||
}
|
||||
if (found) {
|
||||
BuildingSwapArray[i].m_pBuilding = pBuilding;
|
||||
BuildingSwapArray[i].m_nNewModel = new_model;
|
||||
BuildingSwapArray[i].m_nOldModel = old_model;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void CTheScripts::AddToInvisibilitySwapArray(CEntity* pEntity, bool remove)
|
||||
{
|
||||
int i = 0;
|
||||
bool found = false;
|
||||
while (i < MAX_NUM_INVISIBILITY_SETTINGS && !found) {
|
||||
if (InvisibilitySettingArray[i] == pEntity)
|
||||
found = true;
|
||||
else
|
||||
i++;
|
||||
}
|
||||
if (found) {
|
||||
if (remove)
|
||||
InvisibilitySettingArray[i] = nil;
|
||||
}
|
||||
else if (!remove) {
|
||||
i = 0;
|
||||
while (i < MAX_NUM_INVISIBILITY_SETTINGS && !found) {
|
||||
if (InvisibilitySettingArray[i] == nil)
|
||||
found = true;
|
||||
else
|
||||
i++;
|
||||
}
|
||||
if (found)
|
||||
InvisibilitySettingArray[i] = pEntity;
|
||||
}
|
||||
}
|
||||
|
||||
void CTheScripts::UndoBuildingSwaps()
|
||||
{
|
||||
for (int i = 0; i < MAX_NUM_BUILDING_SWAPS; i++) {
|
||||
if (BuildingSwapArray[i].m_pBuilding) {
|
||||
BuildingSwapArray[i].m_pBuilding->ReplaceWithNewModel(BuildingSwapArray[i].m_nOldModel);
|
||||
BuildingSwapArray[i].m_pBuilding = nil;
|
||||
BuildingSwapArray[i].m_nOldModel = BuildingSwapArray[i].m_nNewModel = -1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void CTheScripts::UndoEntityInvisibilitySettings()
|
||||
{
|
||||
for (int i = 0; i < MAX_NUM_INVISIBILITY_SETTINGS; i++) {
|
||||
if (InvisibilitySettingArray[i]) {
|
||||
InvisibilitySettingArray[i]->bIsVisible = true;
|
||||
InvisibilitySettingArray[i] = nil;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -17,147 +17,6 @@
|
|||
#include "World.h"
|
||||
#include "main.h"
|
||||
|
||||
int32 CTheScripts::GetNewUniqueScriptSphereIndex(int32 index)
|
||||
{
|
||||
if (ScriptSphereArray[index].m_Index >= UINT16_MAX - 1)
|
||||
ScriptSphereArray[index].m_Index = 1;
|
||||
else
|
||||
ScriptSphereArray[index].m_Index++;
|
||||
return (uint16)index | ScriptSphereArray[index].m_Index << 16;
|
||||
}
|
||||
|
||||
int32 CTheScripts::GetActualScriptSphereIndex(int32 index)
|
||||
{
|
||||
if (index == -1)
|
||||
return -1;
|
||||
uint16 check = (uint32)index >> 16;
|
||||
uint16 array_idx = index & (0xFFFF);
|
||||
script_assert(array_idx < ARRAY_SIZE(ScriptSphereArray));
|
||||
if (check != ScriptSphereArray[array_idx].m_Index)
|
||||
return -1;
|
||||
return array_idx;
|
||||
}
|
||||
|
||||
void CTheScripts::DrawScriptSpheres()
|
||||
{
|
||||
for (int i = 0; i < MAX_NUM_SCRIPT_SPHERES; i++) {
|
||||
if (ScriptSphereArray[i].m_bInUse)
|
||||
C3dMarkers::PlaceMarkerSet(ScriptSphereArray[i].m_Id, MARKERTYPE_CYLINDER, ScriptSphereArray[i].m_vecCenter, ScriptSphereArray[i].m_fRadius,
|
||||
SPHERE_MARKER_R, SPHERE_MARKER_G, SPHERE_MARKER_B, SPHERE_MARKER_A, SPHERE_MARKER_PULSE_PERIOD, SPHERE_MARKER_PULSE_FRACTION, 0);
|
||||
}
|
||||
}
|
||||
|
||||
int32 CTheScripts::AddScriptSphere(int32 id, CVector pos, float radius)
|
||||
{
|
||||
int16 i = 0;
|
||||
for (i = 0; i < MAX_NUM_SCRIPT_SPHERES; i++) {
|
||||
if (!ScriptSphereArray[i].m_bInUse)
|
||||
break;
|
||||
}
|
||||
#ifdef FIX_BUGS
|
||||
if (i == MAX_NUM_SCRIPT_SPHERES)
|
||||
return -1;
|
||||
#endif
|
||||
ScriptSphereArray[i].m_bInUse = true;
|
||||
ScriptSphereArray[i].m_Id = id;
|
||||
ScriptSphereArray[i].m_vecCenter = pos;
|
||||
ScriptSphereArray[i].m_fRadius = radius;
|
||||
return GetNewUniqueScriptSphereIndex(i);
|
||||
}
|
||||
|
||||
void CTheScripts::RemoveScriptSphere(int32 index)
|
||||
{
|
||||
index = GetActualScriptSphereIndex(index);
|
||||
if (index == -1)
|
||||
return;
|
||||
ScriptSphereArray[index].m_bInUse = false;
|
||||
ScriptSphereArray[index].m_Id = 0;
|
||||
}
|
||||
|
||||
void CTheScripts::AddToBuildingSwapArray(CBuilding* pBuilding, int32 old_model, int32 new_model)
|
||||
{
|
||||
int i = 0;
|
||||
bool found = false;
|
||||
while (i < MAX_NUM_BUILDING_SWAPS && !found) {
|
||||
if (BuildingSwapArray[i].m_pBuilding == pBuilding)
|
||||
found = true;
|
||||
else
|
||||
i++;
|
||||
}
|
||||
if (found) {
|
||||
if (BuildingSwapArray[i].m_nOldModel == new_model) {
|
||||
BuildingSwapArray[i].m_pBuilding = nil;
|
||||
BuildingSwapArray[i].m_nOldModel = BuildingSwapArray[i].m_nNewModel = -1;
|
||||
}
|
||||
else {
|
||||
BuildingSwapArray[i].m_nNewModel = new_model;
|
||||
}
|
||||
}
|
||||
else {
|
||||
i = 0;
|
||||
while (i < MAX_NUM_BUILDING_SWAPS && !found) {
|
||||
if (BuildingSwapArray[i].m_pBuilding == nil)
|
||||
found = true;
|
||||
else
|
||||
i++;
|
||||
}
|
||||
if (found) {
|
||||
BuildingSwapArray[i].m_pBuilding = pBuilding;
|
||||
BuildingSwapArray[i].m_nNewModel = new_model;
|
||||
BuildingSwapArray[i].m_nOldModel = old_model;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void CTheScripts::AddToInvisibilitySwapArray(CEntity* pEntity, bool remove)
|
||||
{
|
||||
int i = 0;
|
||||
bool found = false;
|
||||
while (i < MAX_NUM_INVISIBILITY_SETTINGS && !found) {
|
||||
if (InvisibilitySettingArray[i] == pEntity)
|
||||
found = true;
|
||||
else
|
||||
i++;
|
||||
}
|
||||
if (found) {
|
||||
if (remove)
|
||||
InvisibilitySettingArray[i] = nil;
|
||||
}
|
||||
else if (!remove) {
|
||||
i = 0;
|
||||
while (i < MAX_NUM_INVISIBILITY_SETTINGS && !found) {
|
||||
if (InvisibilitySettingArray[i] == nil)
|
||||
found = true;
|
||||
else
|
||||
i++;
|
||||
}
|
||||
if (found)
|
||||
InvisibilitySettingArray[i] = pEntity;
|
||||
}
|
||||
}
|
||||
|
||||
void CTheScripts::UndoBuildingSwaps()
|
||||
{
|
||||
for (int i = 0; i < MAX_NUM_BUILDING_SWAPS; i++) {
|
||||
if (BuildingSwapArray[i].m_pBuilding) {
|
||||
BuildingSwapArray[i].m_pBuilding->ReplaceWithNewModel(BuildingSwapArray[i].m_nOldModel);
|
||||
BuildingSwapArray[i].m_pBuilding = nil;
|
||||
BuildingSwapArray[i].m_nOldModel = BuildingSwapArray[i].m_nNewModel = -1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void CTheScripts::UndoEntityInvisibilitySettings()
|
||||
{
|
||||
for (int i = 0; i < MAX_NUM_INVISIBILITY_SETTINGS; i++) {
|
||||
if (InvisibilitySettingArray[i]) {
|
||||
InvisibilitySettingArray[i]->bIsVisible = true;
|
||||
InvisibilitySettingArray[i] = nil;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void CRunningScript::UpdateCompareFlag(bool flag)
|
||||
{
|
||||
if (m_bNotFlag)
|
||||
|
|
Loading…
Reference in a new issue