2017-11-25 20:29:58 -05:00
|
|
|
|
using System;
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using System.ComponentModel.DataAnnotations.Schema;
|
|
|
|
|
using System.Linq;
|
|
|
|
|
using System.Threading.Tasks;
|
|
|
|
|
|
2018-04-08 02:44:42 -04:00
|
|
|
|
namespace SharedLibraryCore.Objects
|
2017-11-29 19:35:50 -05:00
|
|
|
|
{
|
2017-11-25 20:29:58 -05:00
|
|
|
|
public class Player : Database.Models.EFClient
|
|
|
|
|
{
|
|
|
|
|
public enum Permission
|
|
|
|
|
{
|
|
|
|
|
Banned = -1,
|
|
|
|
|
User = 0,
|
|
|
|
|
Flagged = 1,
|
|
|
|
|
Trusted = 2,
|
|
|
|
|
Moderator = 3,
|
|
|
|
|
Administrator = 4,
|
|
|
|
|
SeniorAdmin = 5,
|
|
|
|
|
Owner = 6,
|
|
|
|
|
Creator = 7,
|
|
|
|
|
Console = 8,
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public Player()
|
|
|
|
|
{
|
|
|
|
|
ConnectionTime = DateTime.UtcNow;
|
2017-11-29 19:35:50 -05:00
|
|
|
|
ClientNumber = -1;
|
2017-11-25 20:29:58 -05:00
|
|
|
|
}
|
2017-11-29 19:35:50 -05:00
|
|
|
|
|
2017-11-25 20:29:58 -05:00
|
|
|
|
public override string ToString()
|
|
|
|
|
{
|
|
|
|
|
return $"{Name}::{NetworkId}";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public String GetLastConnection()
|
|
|
|
|
{
|
|
|
|
|
return Utilities.GetTimePassed(LastConnection);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public async Task Tell(String Message)
|
|
|
|
|
{
|
2018-05-10 01:34:29 -04:00
|
|
|
|
// this is console or remote so send immediately
|
|
|
|
|
if (ClientNumber < 0)
|
|
|
|
|
{
|
|
|
|
|
await CurrentServer.Tell(Message, this);
|
|
|
|
|
}
|
2018-05-08 00:58:46 -04:00
|
|
|
|
|
2018-05-10 01:34:29 -04:00
|
|
|
|
else
|
2018-05-04 00:22:10 -04:00
|
|
|
|
{
|
2018-05-10 01:34:29 -04:00
|
|
|
|
var e = new GameEvent()
|
|
|
|
|
{
|
|
|
|
|
Message = Message,
|
|
|
|
|
Target = this,
|
|
|
|
|
Owner = CurrentServer,
|
|
|
|
|
Type = GameEvent.EventType.Tell,
|
|
|
|
|
Data = Message
|
|
|
|
|
};
|
2018-05-04 00:22:10 -04:00
|
|
|
|
|
2018-05-10 01:34:29 -04:00
|
|
|
|
CurrentServer.Manager.GetEventHandler().AddEvent(e);
|
|
|
|
|
}
|
2017-11-25 20:29:58 -05:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public async Task Kick(String Message, Player Sender)
|
|
|
|
|
{
|
|
|
|
|
await CurrentServer.Kick(Message, this, Sender);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public async Task TempBan(String Message, TimeSpan Length, Player Sender)
|
|
|
|
|
{
|
|
|
|
|
await CurrentServer.TempBan(Message, Length, this, Sender);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public async Task Warn(String Message, Player Sender)
|
|
|
|
|
{
|
|
|
|
|
await CurrentServer.Warn(Message, this, Sender);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public async Task Ban(String Message, Player Sender)
|
|
|
|
|
{
|
|
|
|
|
await CurrentServer.Ban(Message, this, Sender);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
[NotMapped]
|
2017-11-29 19:35:50 -05:00
|
|
|
|
public int ClientNumber { get; set; }
|
2017-11-25 20:29:58 -05:00
|
|
|
|
[NotMapped]
|
|
|
|
|
public int Ping { get; set; }
|
|
|
|
|
[NotMapped]
|
|
|
|
|
public int Warnings { get; set; }
|
|
|
|
|
[NotMapped]
|
|
|
|
|
public DateTime ConnectionTime { get; set; }
|
|
|
|
|
[NotMapped]
|
|
|
|
|
public Server CurrentServer { get; set; }
|
2018-02-09 02:21:25 -05:00
|
|
|
|
[NotMapped]
|
|
|
|
|
public int Score { get; set; }
|
2018-02-14 14:01:26 -05:00
|
|
|
|
[NotMapped]
|
|
|
|
|
public IList<Dtos.ProfileMeta> Meta { get; set; }
|
2018-04-15 21:27:43 -04:00
|
|
|
|
[NotMapped]
|
|
|
|
|
public bool IsBot { get; set; }
|
2018-02-10 23:33:42 -05:00
|
|
|
|
private int _ipaddress;
|
|
|
|
|
public override int IPAddress
|
2017-11-29 19:35:50 -05:00
|
|
|
|
{
|
|
|
|
|
get { return _ipaddress; }
|
|
|
|
|
set { _ipaddress = value; }
|
|
|
|
|
}
|
|
|
|
|
private string _name;
|
|
|
|
|
public override string Name
|
|
|
|
|
{
|
|
|
|
|
get { return _name; }
|
|
|
|
|
set { _name = value; }
|
|
|
|
|
}
|
2018-02-10 23:33:42 -05:00
|
|
|
|
|
|
|
|
|
public override bool Equals(object obj)
|
|
|
|
|
{
|
|
|
|
|
return ((Player)obj).NetworkId == NetworkId;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public override int GetHashCode()
|
|
|
|
|
{
|
|
|
|
|
return NetworkId.GetHashCode();
|
|
|
|
|
}
|
2017-11-25 20:29:58 -05:00
|
|
|
|
}
|
|
|
|
|
}
|