Files
reallife-gamemode/ReallifeGamemode.Server/Wanted/WantedEscapeTimer.cs
Lennart Kampshoff ed95acc24d Code formatiert
2019-12-21 14:03:06 +01:00

103 lines
2.8 KiB
C#

/***
@overview Life of German - Wanted (Wanted.cs)
@author kookroach
@copyright (c) 2008 - 2019 Life of German
*/
using System;
using System.Collections.Generic;
using System.Text;
using System.Threading;
using GTANetworkAPI;
using ReallifeGamemode.Database.Entities;
using ReallifeGamemode.Server.Extensions;
using ReallifeGamemode.Database.Models;
using ReallifeGamemode.Server.Services;
namespace ReallifeGamemode.Server.Wanted
{
public class WantedEscapeTimer
{
public static Dictionary<int, int> waTimer { get; set; } = new Dictionary<int, int>(); //zeit in ms
public static void WantedTimer()
{
System.Timers.Timer timer = new System.Timers.Timer(2500);
timer.Start();
timer.Elapsed += Timer_Elapsed;
}
public static void ResetWantedTimeToElapse(Client client)
{
User user = client.GetUser();
if (user.FactionId == 1 || user.FactionId == 3)
return;
waTimer[user.Id] = 300000;
}
private static void Timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
foreach (var player in NAPI.Pools.GetAllPlayers())
{
User user = player.GetUser();
if (user != null && user.Wanteds > 0)
{
if (!waTimer.ContainsKey(user.Id))
ResetWantedTimeToElapse(player);
bool isNearCop = false;
foreach (var playerCop in NAPI.Pools.GetAllPlayers())
{
User cop = playerCop.GetUser();
if (cop != null && (cop.FactionId == 1 || cop.FactionId == 3))
{
if (cop.GetData<bool>("duty") && playerCop.Position.DistanceTo2D(player.Position) <= 500)
{
//Schriftzug 'abgetaucht' zerstören :(
isNearCop = true;
break;
}
//Hier abgetaucht schriftzug einfügen :)
}
}
if (waTimer[user.Id] <= 0)
{
ResetWantedTimeToElapse(player);
using (var dbContext = new DatabaseContext())
{
player.GetUser(dbContext).Wanteds -= 1;
if (player.GetUser(dbContext).Wanteds == 0)
{
switch (player.GetUser(dbContext).FactionId)
{
case null:
player.SetSharedData("blipColor", 0);
break;
case 8:
player.SetSharedData("blipColor", 83);
break;
case 7:
player.SetSharedData("blipColor", 52);
break;
case 4:
player.SetSharedData("blipColor", 5);
break;
}
}
dbContext.SaveChanges();
}
}
if (!isNearCop)
waTimer[user.Id] -= 2500;
}
}
}
}
}