Files
reallife-gamemode/ReallifeGamemode.Server/Util/CheckPointHandle.cs
2020-04-28 18:53:22 +02:00

145 lines
4.1 KiB
C#

using System.Collections.Generic;
using ReallifeGamemode.Server.Services;
using GTANetworkAPI;
using System.Linq;
using ReallifeGamemode.Server.Extensions;
using ReallifeGamemode.Server.Job;
namespace ReallifeGamemode.Server.Util
{
public class CheckPointHandle : Script
{
public static List<CheckPointListForPlayer> listHandle = new List<CheckPointListForPlayer>();
public static void DeleteCheckpoints(Player player)
{
RemovePlayerHandlerFromList(player);
player.TriggerEvent("destroyCP");
}
public static void StartCheckPointRoute(Player player, IEnumerable<Vector3> nListCps, int delay, int markerID, int markerSize, int markerDist, string nEvent)
{
RemovePlayerHandlerFromList(player);
CheckPointListForPlayer playerHandle = new CheckPointListForPlayer(player, nListCps, delay, markerID, markerSize, markerDist, nEvent);
playerHandle.DeleteCheckpoints();
listHandle.Add(playerHandle);
playerHandle.StartRoute();
/*if(player.GetUser().BusSkill >= 1000)
{
playerHandle.LastCheckpoint = 2;
}*/
}
public static void RemovePlayerHandlerFromList(Player player)
{
CheckPointListForPlayer temp = null;
for (int a = 0; a < listHandle.Count; a++)
{
temp = listHandle[a];
if (temp.player == player)
{
listHandle.Remove(temp);
}
}
}
[RemoteEvent("playerInCheckpoint")]
public void PlayerInCheckpoint(Player user)
{
CheckPointListForPlayer temp = null;
for (int a = 0; a < listHandle.Count; a++)
{
temp = listHandle[a];
if (temp.player == user)
{
break;
}
}
if (temp.LastCheckpoint != 1)
{
if (user.GetUser().JobId == 3)
{
PilotJob.payWage(user, 100);
}
if (user.GetUser().JobId == 4)
{
BusDriverJob.payWage(user, 100);
}
}
else
{
}
temp.NextCheckpoint();
}
}
public class CheckPointListForPlayer
{
public int LastCheckpoint;
public IEnumerable<Vector3> list = new List<Vector3>();
public Player player;
public int delay = 0;
public int markerID;
public int markerSize;
public int markerDist;
public string eventInCheckpoint = "";
int checkPointsDone = 0;
public CheckPointListForPlayer(Player nPlayer, IEnumerable<Vector3> nList, int nDelay, int nMarkerID, int nMarkerSize, int nMarkerDist, string nEvent)
{
this.player = nPlayer;
this.list = nList;
this.delay = nDelay;
this.markerID = nMarkerID;
this.markerSize = nMarkerSize;
this.markerDist = nMarkerDist;
this.eventInCheckpoint = nEvent;
this.checkPointsDone = 0;
}
public void StartRoute()
{
player.TriggerEvent("setCheckPoint", this.list.ElementAt(0), player, 0, this.delay, this.markerID, this.markerSize, this.markerDist, this.eventInCheckpoint);
}
public void NextCheckpoint()
{
this.checkPointsDone++;
if (this.list.Count() > checkPointsDone)
{
LastCheckpoint = 0;
Vector3 nextCp = list.ElementAt(checkPointsDone);
this.player.TriggerEvent("setCheckPoint", nextCp, player, this.checkPointsDone, delay, this.markerID, this.markerSize, this.markerDist, this.eventInCheckpoint);
}
if (checkPointsDone == this.list.Count()-1)
{
LastCheckpoint = 1;
}
if (this.list.Count() == checkPointsDone)
{
LastCheckpoint = 0;
CheckPointHandle.RemovePlayerHandlerFromList(this.player);
DeleteCheckpoints();
if (player.GetUser().JobId == 3)
{
PilotJob.payWage(player, 200);
PilotJob.PilotLetzterCheckpoint(player);
}
if (player.GetUser().JobId == 4)
{
BusDriverJob.payWage(player, 200);
BusDriverJob.BusLetzterCheckpoint(player);
}
}
//NAPI.Chat.SendChatMessageToAll($"this.list.Count() = {this.list.Count()}, checkPointsDone = {checkPointsDone}, LastCheckpoint = {LastCheckpoint}");
}
public void DeleteCheckpoints()
{
this.player.TriggerEvent("destroyCP");
}
}
}