Skip to content
This repository has been archived by the owner. It is now read-only.
Permalink
Browse files
Merge pull request #1025 from Nick007J/lcs
Ferries
  • Loading branch information
Nick007J committed Jul 25, 2021
2 parents cc13e31 + dc72900 commit d86637daeaa3f0dc962edc3658688eebe27c7343
@@ -1662,7 +1662,7 @@ const tScriptCommandData commands[] = {
REGISTER_COMMAND(COMMAND_IS_CHAR_CROUCHING, INPUT_ARGUMENTS(ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), true, -1, ""), REGISTER_COMMAND(COMMAND_IS_CHAR_CROUCHING, INPUT_ARGUMENTS(ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), true, -1, ""),
REGISTER_COMMAND(COMMAND_GET_FERRY_BOARDING_SPACE, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ), OUTPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ), false, -1, ""), REGISTER_COMMAND(COMMAND_GET_FERRY_BOARDING_SPACE, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ARGTYPE_INT, ), OUTPUT_ARGUMENTS(ARGTYPE_FLOAT, ARGTYPE_FLOAT, ), false, -1, ""),
REGISTER_COMMAND(COMMAND_GET_FERRY_HEADING, INPUT_ARGUMENTS(ARGTYPE_INT, ), OUTPUT_ARGUMENTS(ARGTYPE_FLOAT, ), false, -1, ""), REGISTER_COMMAND(COMMAND_GET_FERRY_HEADING, INPUT_ARGUMENTS(ARGTYPE_INT, ), OUTPUT_ARGUMENTS(ARGTYPE_FLOAT, ), false, -1, ""),
REGISTER_COMMAND(COMMAND_SET_FERRIES_ENABLED, INPUT_ARGUMENTS(ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), false, -1, ""), REGISTER_COMMAND(COMMAND_SET_FERRIES_DISABLED, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), false, -1, ""),
REGISTER_COMMAND(COMMAND_COMPLETE_FERRY_DOOR_MOVEMENT, INPUT_ARGUMENTS(ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), false, -1, ""), REGISTER_COMMAND(COMMAND_COMPLETE_FERRY_DOOR_MOVEMENT, INPUT_ARGUMENTS(ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), false, -1, ""),
REGISTER_COMMAND(COMMAND_OVERRIDE_CAR_REMOTE_CONTROL, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), false, -1, ""), REGISTER_COMMAND(COMMAND_OVERRIDE_CAR_REMOTE_CONTROL, INPUT_ARGUMENTS(ARGTYPE_INT, ARGTYPE_INT, ), OUTPUT_ARGUMENTS(), false, -1, ""),
REGISTER_COMMAND(COMMAND_CANCEL_REMOTE_MODE, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""), REGISTER_COMMAND(COMMAND_CANCEL_REMOTE_MODE, INPUT_ARGUMENTS(), OUTPUT_ARGUMENTS(), false, -1, ""),
@@ -7,6 +7,7 @@
#include "CarCtrl.h" #include "CarCtrl.h"
#include "Camera.h" #include "Camera.h"
#include "CutsceneMgr.h" #include "CutsceneMgr.h"
#include "Ferry.h"
#include "Garages.h" #include "Garages.h"
#include "GameLogic.h" #include "GameLogic.h"
#include "Hud.h" #include "Hud.h"
@@ -29,66 +30,64 @@ int8 CRunningScript::ProcessCommands1500To1599(int32 command)
case COMMAND_DISABLE_FERRY_PATH: case COMMAND_DISABLE_FERRY_PATH:
{ {
CollectParameters(&m_nIp, 1); CollectParameters(&m_nIp, 1);
// CFerry:DissableFerryPath(GET_INTEGER_PARAM(0)); TODO CFerry::DissableFerryPath(GET_INTEGER_PARAM(0));
return 0; return 0;
} }
case COMMAND_ENABLE_FERRY_PATH: case COMMAND_ENABLE_FERRY_PATH:
{ {
CollectParameters(&m_nIp, 1); CollectParameters(&m_nIp, 1);
// CFerry::EnableFerryPath(GET_INTEGER_PARAM(0)); CFerry::EnableFerryPath(GET_INTEGER_PARAM(0));
return 0; return 0;
} }
case COMMAND_GET_CLOSEST_DOCKED_FERRY: case COMMAND_GET_CLOSEST_DOCKED_FERRY:
{ {
CollectParameters(&m_nIp, 2); CollectParameters(&m_nIp, 2);
// CFerry* pFerry = CFerry::GetClosestFerry(GET_FLOAT_PARAM(0), GET_FLOAT_PARAM(1)); CFerry* pFerry = CFerry::GetClosestFerry(GET_FLOAT_PARAM(0), GET_FLOAT_PARAM(1));
int id = -1; int id = -1;
// if (pFerry && pFerry->IsDocked() if (pFerry && pFerry->IsDocked())
// id = pFerry->GetId(); id = pFerry->m_nFerryId;
SET_INTEGER_PARAM(0, id); SET_INTEGER_PARAM(0, id);
StoreParameters(&m_nIp, 1); StoreParameters(&m_nIp, 1);
return 0; return 0;
} }
case COMMAND_OPEN_FERRY_DOOR: case COMMAND_OPEN_FERRY_DOOR:
{ {
CollectParameters(&m_nIp, 1); CollectParameters(&m_nIp, 1);
// CFerry* pFerry = CFerry::GetFerry(GET_INTEGER_PARAM(0)); CFerry* pFerry = CFerry::GetFerry(GET_INTEGER_PARAM(0));
// script_assert(pFerry); script_assert(pFerry);
// pFerry->OpenDoor(); pFerry->OpenDoor();
return 0; return 0;
} }
case COMMAND_CLOSE_FERRY_DOOR: case COMMAND_CLOSE_FERRY_DOOR:
{ {
CollectParameters(&m_nIp, 1); CollectParameters(&m_nIp, 1);
// CFerry* pFerry = CFerry::GetFerry(GET_INTEGER_PARAM(0)); CFerry* pFerry = CFerry::GetFerry(GET_INTEGER_PARAM(0));
// script_assert(pFerry); script_assert(pFerry);
// pFerry->CloseDoor(); pFerry->CloseDoor();
return 0; return 0;
} }
case COMMAND_IS_FERRY_DOOR_OPEN: case COMMAND_IS_FERRY_DOOR_OPEN:
{ {
CollectParameters(&m_nIp, 1); CollectParameters(&m_nIp, 1);
// CFerry* pFerry = CFerry::GetFerry(GET_INTEGER_PARAM(0)); CFerry* pFerry = CFerry::GetFerry(GET_INTEGER_PARAM(0));
// script_assert(pFerry); script_assert(pFerry);
// UpdateCompareFlag(pFerry->IsDoorOpen()); UpdateCompareFlag(pFerry->IsDoorOpen());
UpdateCompareFlag(false);
return 0; return 0;
} }
case COMMAND_IS_FERRY_DOOR_CLOSED: case COMMAND_IS_FERRY_DOOR_CLOSED:
{ {
CollectParameters(&m_nIp, 1); CollectParameters(&m_nIp, 1);
// CFerry* pFerry = CFerry::GetFerry(GET_INTEGER_PARAM(0)); CFerry* pFerry = CFerry::GetFerry(GET_INTEGER_PARAM(0));
// script_assert(pFerry); script_assert(pFerry);
// UpdateCompareFlag(pFerry->IsDoorClosed()); UpdateCompareFlag(pFerry->IsDoorClosed());
UpdateCompareFlag(true);
return 0; return 0;
} }
case COMMAND_SKIP_FERRY_TO_NEXT_DOCK: case COMMAND_SKIP_FERRY_TO_NEXT_DOCK:
{ {
CollectParameters(&m_nIp, 1); CollectParameters(&m_nIp, 1);
// CFerry* pFerry = CFerry::GetFerry(GET_INTEGER_PARAM(0)); CFerry* pFerry = CFerry::GetFerry(GET_INTEGER_PARAM(0));
// script_assert(pFerry); script_assert(pFerry);
// pFerry->SkipFerryToNextDock(); pFerry->SkipFerryToNextDock();
return 0; return 0;
} }
case COMMAND_SET_CHAR_DROPS_WEAPONS_ON_DEATH: case COMMAND_SET_CHAR_DROPS_WEAPONS_ON_DEATH:
@@ -110,35 +109,36 @@ int8 CRunningScript::ProcessCommands1500To1599(int32 command)
case COMMAND_GET_FERRY_BOARDING_SPACE: case COMMAND_GET_FERRY_BOARDING_SPACE:
{ {
CollectParameters(&m_nIp, 4); CollectParameters(&m_nIp, 4);
// CFerry* pFerry = CFerry::GetFerry(GET_INTEGER_PARAM(0)); CFerry* pFerry = CFerry::GetFerry(GET_INTEGER_PARAM(0));
// script_assert(pFerry); script_assert(pFerry);
// ? = pFerry->GetBoardingSpace((CFerry::eSpaceUse)GET_INTEGER_PARAMS(1), (CFerry::eSpaceStyle)GET_INTEGER_PARAMS(2), GET_INTEGER_PARAMS(3)); CVector space = pFerry->GetBoardingSpace((CFerry::eSpaceUse)GET_INTEGER_PARAM(1), (CFerry::eSpaceStyle)GET_INTEGER_PARAM(2), GET_INTEGER_PARAM(3));
SET_FLOAT_PARAM(0, 0.0f); SET_FLOAT_PARAM(0, space.x);
SET_FLOAT_PARAM(1, 0.0f); // TODO SET_FLOAT_PARAM(1, space.y);
StoreParameters(&m_nIp, 2); StoreParameters(&m_nIp, 2);
return 0; return 0;
} }
case COMMAND_GET_FERRY_HEADING: case COMMAND_GET_FERRY_HEADING:
{ {
CollectParameters(&m_nIp, 1); CollectParameters(&m_nIp, 1);
// CFerry* pFerry = CFerry::GetFerry(GET_INTEGER_PARAM(0)); CFerry* pFerry = CFerry::GetFerry(GET_INTEGER_PARAM(0));
// script_assert(pFerry); script_assert(pFerry);
// float fHeading = CGeneral::GetATanOfXY(pFerry->GetForward().x, pFerry->GetForward().y); float fHeading = Atan2(-pFerry->GetForward().x, pFerry->GetForward().y);
// SET_FLOAT_PARAM(0, fHeading); SET_FLOAT_PARAM(0, fHeading);
SET_FLOAT_PARAM(0, 0.0f);
StoreParameters(&m_nIp, 1); StoreParameters(&m_nIp, 1);
return 0; return 0;
} }
case COMMAND_SET_FERRIES_ENABLED: case COMMAND_SET_FERRIES_DISABLED:
{ {
CollectParameters(&m_nIp, 1); CollectParameters(&m_nIp, 2);
// CFerry::SetFerriesEnabled(GET_INTEGER_PARAM(0)); CFerry::SetFerriesDisabled(GET_INTEGER_PARAM(1));
return 0; return 0;
} }
case COMMAND_COMPLETE_FERRY_DOOR_MOVEMENT: case COMMAND_COMPLETE_FERRY_DOOR_MOVEMENT:
{ {
CollectParameters(&m_nIp, 1); CollectParameters(&m_nIp, 1);
// CFerry::CompleteDorrMovement(GET_INTEGER_PARAM(0)); CFerry* pFerry = CFerry::GetFerry(GET_INTEGER_PARAM(0));
script_assert(pFerry);
pFerry->CompleteDorrMovement();
return 0; return 0;
} }
case COMMAND_OVERRIDE_CAR_REMOTE_CONTROL: case COMMAND_OVERRIDE_CAR_REMOTE_CONTROL:
@@ -157,7 +157,7 @@ int8 CRunningScript::ProcessCommands1500To1599(int32 command)
else { else {
TheCamera.TakeControl(pVehicle, CCam::MODE_1STPERSON, GET_INTEGER_PARAM(1) ? INTERPOLATION : JUMP_CUT, CAMCONTROL_SCRIPT); TheCamera.TakeControl(pVehicle, CCam::MODE_1STPERSON, GET_INTEGER_PARAM(1) ? INTERPOLATION : JUMP_CUT, CAMCONTROL_SCRIPT);
script_assert(pVehicle->IsCar()); script_assert(pVehicle->IsCar());
//((CAutomobile*)pVehicle)->Damage.m_bSmashedDoorDoesntClose = true; ((CAutomobile*)pVehicle)->Damage.m_bSmashedDoorDoesntClose = true;
} }
if (m_bIsMissionScript) if (m_bIsMissionScript)
CTheScripts::MissionCleanUp.RemoveEntityFromList(GET_INTEGER_PARAM(0), CLEANUP_CAR); CTheScripts::MissionCleanUp.RemoveEntityFromList(GET_INTEGER_PARAM(0), CLEANUP_CAR);
@@ -670,7 +670,7 @@ int8 CRunningScript::ProcessCommands1500To1599(int32 command)
} }
case COMMAND_SWITCH_FERRY_COLLISION: case COMMAND_SWITCH_FERRY_COLLISION:
CollectParameters(&m_nIp, 1); CollectParameters(&m_nIp, 1);
// CFerry::SwitchFerryCollision(GET_INTEGER_PARAM(0)); CFerry::SwitchFerryCollision(GET_INTEGER_PARAM(0));
return 0; return 0;
case COMMAND_SET_CHAR_MAX_HEALTH: case COMMAND_SET_CHAR_MAX_HEALTH:
{ {
@@ -1510,7 +1510,7 @@ enum {
COMMAND_IS_CHAR_CROUCHING, COMMAND_IS_CHAR_CROUCHING,
COMMAND_GET_FERRY_BOARDING_SPACE, COMMAND_GET_FERRY_BOARDING_SPACE,
COMMAND_GET_FERRY_HEADING, COMMAND_GET_FERRY_HEADING,
COMMAND_SET_FERRIES_ENABLED, COMMAND_SET_FERRIES_DISABLED,
COMMAND_COMPLETE_FERRY_DOOR_MOVEMENT, COMMAND_COMPLETE_FERRY_DOOR_MOVEMENT,
COMMAND_OVERRIDE_CAR_REMOTE_CONTROL, COMMAND_OVERRIDE_CAR_REMOTE_CONTROL,
COMMAND_CANCEL_REMOTE_MODE, COMMAND_CANCEL_REMOTE_MODE,
@@ -22,6 +22,7 @@
#include "Darkel.h" #include "Darkel.h"
#include "Debug.h" #include "Debug.h"
#include "EventList.h" #include "EventList.h"
#include "Ferry.h"
#include "FileLoader.h" #include "FileLoader.h"
#include "FileMgr.h" #include "FileMgr.h"
#include "Fire.h" #include "Fire.h"
@@ -547,6 +548,7 @@ bool CGame::Initialise(const char* datFile)
LoadingScreen("Loading the Game", "Position dynamic objects", nil); LoadingScreen("Loading the Game", "Position dynamic objects", nil);
LoadingScreen("Loading the Game", "Initialise vehicle paths", nil); LoadingScreen("Loading the Game", "Initialise vehicle paths", nil);


CFerry::InitFerrys();
CTrain::InitTrains(); CTrain::InitTrains();
CPlane::InitPlanes(); CPlane::InitPlanes();
CCredits::Init(); CCredits::Init();
@@ -721,6 +723,7 @@ void CGame::ReInitGameObjectVariables(void)
CTheScripts::StartTestScript(); CTheScripts::StartTestScript();
CTheScripts::Process(); CTheScripts::Process();
TheCamera.Process(); TheCamera.Process();
CFerry::InitFerrys();
CTrain::InitTrains(); CTrain::InitTrains();
CPlane::InitPlanes(); CPlane::InitPlanes();
} }
@@ -806,6 +809,7 @@ void CGame::InitialiseWhenRestarting(void)
if ( GenericLoad() == true ) if ( GenericLoad() == true )
{ {
DMAudio.ResetTimers(CTimer::GetTimeInMilliseconds()); DMAudio.ResetTimers(CTimer::GetTimeInMilliseconds());
CFerry::InitFerrys();
CTrain::InitTrains(); CTrain::InitTrains();
CPlane::InitPlanes(); CPlane::InitPlanes();
} }
@@ -889,6 +893,7 @@ void CGame::Process(void)


CCollision::Update(); CCollision::Update();
CScriptPaths::Update(); CScriptPaths::Update();
CFerry::UpdateFerrys();
CTrain::UpdateTrains(); CTrain::UpdateTrains();
CPlane::UpdatePlanes(); CPlane::UpdatePlanes();
CHeli::UpdateHelis(); CHeli::UpdateHelis();
@@ -147,7 +147,9 @@ enum Config {
NUM_EXPLOSIONS = 48, NUM_EXPLOSIONS = 48,


NUM_SETPIECES = 96, NUM_SETPIECES = 96,
NUM_SHORTCUT_START_POINTS = 16 NUM_SHORTCUT_START_POINTS = 16,

NUM_FERRY_PATHS = 1
}; };


// We don't expect to compile for PS2 or Xbox // We don't expect to compile for PS2 or Xbox
@@ -24,11 +24,13 @@ enum eEntityStatus
STATUS_PHYSICS, STATUS_PHYSICS,
STATUS_ABANDONED, STATUS_ABANDONED,
STATUS_WRECKED, STATUS_WRECKED,
STATUS_TRAIN_MOVING, // these probably copied for FERRY STATUS_TRAIN_MOVING,
STATUS_TRAIN_NOT_MOVING, STATUS_TRAIN_NOT_MOVING,
STATUS_FERRY_MOVING,
STATUS_FERRY_NOT_MOVING,
STATUS_HELI, STATUS_HELI,
STATUS_PLANE, STATUS_PLANE,
STATUS_PLAYER_REMOTE, // 12 in LCS STATUS_PLAYER_REMOTE,
STATUS_PLAYER_DISABLED, STATUS_PLAYER_DISABLED,
STATUS_GHOST STATUS_GHOST
}; };
@@ -27,6 +27,7 @@
#include "Renderer.h" #include "Renderer.h"
#include "custompipes.h" #include "custompipes.h"
#include "Frontend.h" #include "Frontend.h"
#include "Ferry.h"


bool gbShowPedRoadGroups; bool gbShowPedRoadGroups;
bool gbShowCarRoadGroups; bool gbShowCarRoadGroups;
@@ -546,6 +547,8 @@ CRenderer::RenderVehicles(void)
node != &gSortedVehiclesAndPeds.head; node != &gSortedVehiclesAndPeds.head;
node = node->prev) node = node->prev)
RenderOneNonRoad(node->item.ent); RenderOneNonRoad(node->item.ent);

CFerry::RenderAllRemaning();
POP_RENDERGROUP(); POP_RENDERGROUP();
} }


0 comments on commit d86637d

Please sign in to comment.