Files
reallife-gamemode/ReallifeGamemode.Server/Managers/InteractionManager.cs

89 lines
3.7 KiB
C#

using GTANetworkAPI;
using Newtonsoft.Json;
using ReallifeGamemode.Server.Extensions;
using ReallifeGamemode.Server.Models;
using ReallifeGamemode.Server.Services;
using System;
using System.Collections.Generic;
using System.Text;
using System.Linq;
/**
* @overview Life of German Reallife - Managers Interaction (InteractionManager.cs)
* @author VegaZ
* @copyright (c) 2008 - 2018 Life of German
*/
namespace ReallifeGamemode.Server.Managers
{
public class InteractionManager : Script
{
#region Umgebungsinteraktionen PFEILTASTE-HOCH
#endregion
#region Eigeninteraktionen PFEILTASTE-RUNTER
#endregion
#region Spielerinteraktionen PFEILTASTE-LINKS
[RemoteEvent("openTradeInventory")]
public void OpenTradeInventory(Client player, string targetPlayer)
{
InventoryManager.GetUserItems(player);
player.TriggerEvent("openTradeMenu", targetPlayer);
}
[RemoteEvent("sendTradeItemsToPartner")]
public void SendTradeItemsToPartner(Client player, string tradeItemArray, int tradePrize, string tradePartnerName)
{
var tradeItems = JsonConvert.DeserializeObject<string[][]>(tradeItemArray);
Client tradePartner = ClientService.GetClientByNameOrId(tradePartnerName);
InventoryManager.GetUserItems(player);
tradePartner.TriggerEvent("showTradeRequest", player.Name, tradeItems, tradePrize);
player.TriggerEvent("startTradeRequestTimer");
}
[RemoteEvent("tradeDecision")]
public void TradeDecision(Client player, string tradeSelection, string tradeItemArray, string tradeRequesterName, int tradePrize)
{
var tradeItems = JsonConvert.DeserializeObject<string[][]>(tradeItemArray);
Client tradeRequester = ClientService.GetClientByNameOrId(tradeRequesterName);
if (tradeSelection == "accept")
{
if(player.GetUser().Handmoney < tradePrize)
{
tradeRequester.TriggerEvent("unlockTradeItems");
tradeRequester.SendNotification("~y~" + player.Name + " ~r~hat nicht genügend Bargeld! ~s~Handel abgebrochen.");
player.SendNotification("~r~Du hast nicht genügend Bargeld! ~s~Handel abgebrochen.");
}
else
{
InventoryManager.GetUserItems(player);
tradeRequester.TriggerEvent("clearTradeItems");
player.TriggerEvent("showTradeItems", tradeItemArray);
using (var dbContext = new DatabaseContext())
{
var playerUserId = player.GetUser().Id;
var tradeRUserId = tradeRequester.GetUser().Id;
var playerUser = dbContext.Users.FirstOrDefault(u => u.Id == playerUserId);
var tradeRequesterUser = dbContext.Users.FirstOrDefault(u => u.Id == tradeRUserId);
playerUser.Handmoney -= tradePrize;
player.TriggerEvent("SERVER:WORLD_INTERACTION:UPDATE_HANDMONEY", tradePrize * -1);
tradeRequesterUser.Handmoney += tradePrize;
tradeRequester.TriggerEvent("SERVER:WORLD_INTERACTION:UPDATE_HANDMONEY", tradePrize);
dbContext.SaveChanges();
}
}
}
else
{
tradeRequester.TriggerEvent("unlockTradeItems");
}
}
#endregion
#region Fraktionsinteraktionen / Jobinteraktionen PFEILTASTE-RECHTS
#endregion
}
}