Skip to content

Commit

Permalink
Refactor sprint's copy-pasted functions
Browse files Browse the repository at this point in the history
  • Loading branch information
Vincent-P committed Jul 27, 2019
1 parent 5d83156 commit 88e778e
Show file tree
Hide file tree
Showing 3 changed files with 224 additions and 328 deletions.
54 changes: 32 additions & 22 deletions Scripts/Libs/smokegun/ObstacleLib.Script.txt
Original file line number Diff line number Diff line change
Expand Up @@ -388,8 +388,9 @@ Void RespawnPlayer(CSmPlayer _Player, Boolean _forceRestart) {
if (_Player.RequestsSpectate)
return;

if (!Player::isInitialized(_Player))
if (!Player::isInitialized(_Player)) {
NewPlayer(_Player);
}

declare shouldRestart = Player::wantsRestart(_Player, _forceRestart);
declare LastCP = Player::getLastCheckpoint(_Player);
Expand Down Expand Up @@ -526,15 +527,15 @@ Void JumpToCheckpoint(CSmPlayer _Player, Integer _Target) {
* Ident _GoalId Goal
*/
Void Private_HandleFinish(CSmPlayer _Player, Ident _GoalId) {
declare Goal <=> MapLandmarks[_GoalId];

declare LastCPTimes = Player::getLastCPTimes(_Player);
declare BestCPTimes = Player::getBestCPTimes(_Player);
declare Goal <=> MapLandmarks[_GoalId];
declare BestRun = Player::getBestRun(_Player);
declare Time = Player::getTime(_Player);

declare time = Player::getTime(_Player);
declare LastRun = Player::setLastRun(_Player, time);

LastCPTimes = Player::setLastCPTimes(_Player, _GoalId, time);
declare LastRun = Player::setLastRun(_Player, Time);
LastCPTimes = Player::setLastCPTimes(_Player, _GoalId, Time);

// Update time diff before updating best run
TimeDiff::UpdateLayer(_Player, LastRun, BestRun);
Expand All @@ -545,15 +546,13 @@ Void Private_HandleFinish(CSmPlayer _Player, Ident _GoalId) {
BestCPTimes = Player::setBestCPTimes(_Player, LastCPTimes);

CPTimes::UpdateLayer(_Player);

Private_UpdatePlayerRsCounter(_Player);
}

// Send score
Private_SendFinishedRun(_Player, LastRun, _GoalId);
XmlRpc.SendCallback("Obstacle_OnFinish", Player::ToJSON(_Player));

// BELOW IS OBSTACLE ONLY
//Update UI
declare UI <=> UIManager.GetUI(_Player);
if (UI != Null) {
Expand All @@ -572,8 +571,6 @@ Void Private_HandleFinish(CSmPlayer _Player, Ident _GoalId) {
CUIConfig::ENoticeLevel::PlayerInfo, _Player.User, CUIConfig::EAvatarVariant::Default,
CUIConfig::EUISound::Finish, Variant);
}

RespawnPlayer(_Player, True);
}

/* TODO: Make a separate checkpoint lib ?
Expand Down Expand Up @@ -666,40 +663,50 @@ Void Private_HandleCheckpoint(CSmPlayer _Player, Ident _CheckpointId) {
* Manage interactions between player and landmarks (checkpoints, goals, portals, more?)
*
* Arguments: CSmPlayer _Player Player who captured a landmark
* Returns: True if the player captured a goal
*/
Void HandleCapture(CSmPlayer _Player) {
Boolean HandleCapture(CSmPlayer _Player) {
declare HasCapturedGoal = False;

declare Landmark <=> _Player.CapturedLandmark;
declare MapVersion = Map::GetMapTypeVersion();
declare CpProgress = Player::getCpProgress(_Player);
declare HasJumped = Player::usedJump(_Player);
declare MessageToShow = "";

if (!Tools::IsEnabled(Landmark))
return;
if (!Tools::IsEnabled(Landmark)) {
return HasCapturedGoal;
}

declare time = Player::getTime(_Player);
if (time < 0) {
declare Time = Player::getTime(_Player);
if (Time < 0) {
RespawnPlayer(_Player, True);
return;
return HasCapturedGoal;
}

if (Tools::IsGoal(Landmark)) {
if (HasJumped) {
MessageToShow = _("You used a Jump! Your Time is invalid.");
} else {
}
else {
declare CpMissing = G_CheckpointsTotal - CpProgress;
if (CpMissing == 0)
if (CpMissing == 0) {
Private_HandleFinish(_Player, Landmark.Id);
else
HasCapturedGoal = True;
}
else {
MessageToShow = "Missing "^CpMissing^" checkpoint(s)!";
}
}
} else if (Tools::IsCheckpoint(Landmark)) {
}
else if (Tools::IsCheckpoint(Landmark)) {
// Take any checkpoints if player jumped
if (HasJumped) {
if (Landmark.Order != CpProgress) {
Private_HandleCheckpoint(_Player, Landmark.Id);
}
} else {
}
else {
declare LastCpTimes = Player::getLastCPTimes(_Player);
declare LastCheckpoint = Player::getLastCheckpoint(_Player);

Expand All @@ -711,8 +718,9 @@ Void HandleCapture(CSmPlayer _Player) {
isNextCp = Landmark.Order == CpProgress + 1;
}

if (isNextCp)
if (isNextCp) {
Private_HandleCheckpoint(_Player, Landmark.Id);
}
}
} else if (Tools::IsPortal(Landmark)) {
Private_UsePortal(_Player, Landmark.Id);
Expand All @@ -724,4 +732,6 @@ Void HandleCapture(CSmPlayer _Player) {
LastStatusMessage = Now;
Message::SendBigMessage(_Player, MessageToShow, 2000, 0, CUIConfig::EUISound::Warning, 1);
}

return HasCapturedGoal;
}
5 changes: 4 additions & 1 deletion Scripts/Modes/ShootMania/Obstacle.Script.txt
Original file line number Diff line number Diff line change
Expand Up @@ -277,7 +277,10 @@ foreach (Event in PendingEvents) {
}

case CSmModeEvent::EType::OnPlayerTriggersSector: {
Obstacle::HandleCapture(Event.Player);
declare TookGoal = Obstacle::HandleCapture(Event.Player);
if (TookGoal) {
Obstacle::RespawnPlayer(Event.Player, True);
}
PassOn(Event);
}

Expand Down
Loading

0 comments on commit 88e778e

Please sign in to comment.