mirror of
https://github.com/GTAmodding/re3.git
synced 2021-02-19 17:49:54 +01: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;
|
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 "World.h"
|
||||||
#include "main.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)
|
void CRunningScript::UpdateCompareFlag(bool flag)
|
||||||
{
|
{
|
||||||
if (m_bNotFlag)
|
if (m_bNotFlag)
|
||||||
|
Loading…
Reference in New Issue
Block a user