Start finance system
This commit is contained in:
180
ReallifeGamemode.Server/Finance/Economy.cs
Normal file
180
ReallifeGamemode.Server/Finance/Economy.cs
Normal file
@@ -0,0 +1,180 @@
|
||||
/***
|
||||
@overview Life of German - Economy
|
||||
@author kookroach
|
||||
@copyright (c) 2008 - 2019 Life of German
|
||||
*/
|
||||
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using GTANetworkAPI;
|
||||
using ReallifeGamemode.Server.Entities;
|
||||
using ReallifeGamemode.Server.Extensions;
|
||||
using ReallifeGamemode.Server.Models;
|
||||
using ReallifeGamemode.Server.Services;
|
||||
|
||||
namespace ReallifeGamemode.Server.Finance
|
||||
{
|
||||
public class Economy
|
||||
{
|
||||
public static Dictionary<int, Paycheck> Paychecks { get; set; } = new Dictionary<int, Paycheck>();
|
||||
|
||||
public static (int, float, float) GetEconomyClass(Client client)
|
||||
{
|
||||
int bankAccount = client.GetUser().GetBankAccount().Balance;
|
||||
float financialHelp = (float)Math.Pow(-1.0005, -bankAccount) * -1000;
|
||||
float financialInterest = 1 - (float)Math.Pow(1.00005, -bankAccount) * 1;
|
||||
|
||||
return (bankAccount, financialHelp, financialInterest);
|
||||
}
|
||||
|
||||
public static int GetVehicleTaxation(Client client)
|
||||
{
|
||||
int vehicleTaxation = 0;
|
||||
using (var dbContext = new DatabaseContext())
|
||||
{
|
||||
User user = client.GetUser(dbContext);
|
||||
foreach (VehicleHash vehHash in dbContext.UserVehicles.Where(u => u.UserId == user.Id).Select(u => u.Model))
|
||||
{
|
||||
int type = NAPI.Vehicle.GetVehicleClass(vehHash);
|
||||
switch (type)
|
||||
{
|
||||
/*
|
||||
0 Compacts
|
||||
1 Sedans
|
||||
2 SUVs
|
||||
3 Coupes
|
||||
4 Muscle
|
||||
5 Sports
|
||||
6 Sports
|
||||
7 Super
|
||||
8 Motorcycles
|
||||
9 Off-Road
|
||||
10 Industrial
|
||||
11 Utility
|
||||
12 Vans
|
||||
13 Cycles
|
||||
14 Boats
|
||||
15 Helicopters
|
||||
16 Planes
|
||||
17 Service
|
||||
18 Emergency
|
||||
19 Military
|
||||
20 Commercial
|
||||
21 Trains
|
||||
*/
|
||||
|
||||
case 0:
|
||||
vehicleTaxation += 250;
|
||||
break;
|
||||
case 1:
|
||||
vehicleTaxation += 350;
|
||||
break;
|
||||
case 2:
|
||||
vehicleTaxation += 500;
|
||||
break;
|
||||
case 3:
|
||||
vehicleTaxation += 400;
|
||||
break;
|
||||
case 4:
|
||||
vehicleTaxation += 300;
|
||||
break;
|
||||
case 5:
|
||||
vehicleTaxation += 800;
|
||||
break;
|
||||
case 6:
|
||||
vehicleTaxation += 950;
|
||||
break;
|
||||
case 7:
|
||||
vehicleTaxation += 0;
|
||||
break;
|
||||
case 8:
|
||||
vehicleTaxation += 400;
|
||||
break;
|
||||
case 9:
|
||||
vehicleTaxation += 500;
|
||||
break;
|
||||
case 10:
|
||||
vehicleTaxation += 300;
|
||||
break;
|
||||
case 11:
|
||||
vehicleTaxation += 0;
|
||||
break;
|
||||
case 12:
|
||||
vehicleTaxation += 350;
|
||||
break;
|
||||
case 13:
|
||||
vehicleTaxation += 0;
|
||||
break;
|
||||
case 14:
|
||||
vehicleTaxation += 500;
|
||||
break;
|
||||
case 15:
|
||||
vehicleTaxation += 650;
|
||||
break;
|
||||
case 16:
|
||||
vehicleTaxation += 750;
|
||||
break;
|
||||
case 17:
|
||||
vehicleTaxation += 0;
|
||||
break;
|
||||
case 18:
|
||||
vehicleTaxation += 0;
|
||||
break;
|
||||
case 19:
|
||||
vehicleTaxation += 0;
|
||||
break;
|
||||
case 20:
|
||||
vehicleTaxation += 400;
|
||||
break;
|
||||
case 21:
|
||||
vehicleTaxation += 69696969;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return vehicleTaxation;
|
||||
}
|
||||
|
||||
public static float GetPropertyTaxation(Client client)
|
||||
{
|
||||
float propertyTaxation = 0;
|
||||
User user = client.GetUser();
|
||||
if (user.HouseId != null)
|
||||
{
|
||||
propertyTaxation += user.House.Price * 0.005f;
|
||||
}
|
||||
|
||||
return propertyTaxation;
|
||||
}
|
||||
|
||||
|
||||
public static void SetPaycheck(Client client, int wage)
|
||||
{
|
||||
(int bankAccount, float financialHelp, float financialInterest) = GetEconomyClass(client);
|
||||
float propertyTax = GetPropertyTaxation(client);
|
||||
int vehicleTaxation = GetVehicleTaxation(client);
|
||||
|
||||
int amount = wage - (int)(wage * financialInterest) - vehicleTaxation - (int)propertyTax + (int)financialHelp;
|
||||
|
||||
Paycheck paycheck = new Paycheck(financialHelp, financialInterest, vehicleTaxation, propertyTax, wage, amount);
|
||||
|
||||
ReleasePayDay(client, paycheck);
|
||||
}
|
||||
|
||||
public static void ReleasePayDay(Client client, Paycheck paycheck)
|
||||
{
|
||||
using (var dbContext = new DatabaseContext())
|
||||
{
|
||||
client.GetUser().GetBankAccount(dbContext).Balance += paycheck.Amount;
|
||||
dbContext.SaveChanges();
|
||||
}
|
||||
if (paycheck.Amount > 0)
|
||||
ChatService.SendMessage(client, "~g~[PAYDAY]~s~ Du hast einen Payday von ~g~$" + paycheck.Amount + "~s~ bekommen.");
|
||||
else
|
||||
ChatService.SendMessage(client, "~g~[PAYDAY]~s~ Du hast einen Payday von ~r~$" + paycheck.Amount + "~s~ bekommen.");
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user