source: binary-improvements/7dtd-server-fixes/src/PersistentData/Player.cs @ 161

Last change on this file since 161 was 161, checked in by alloc, 6 years ago

fixes

File size: 2.5 KB
Line 
1using System;
2using System.Runtime.Serialization;
3using UnityEngine;
4
5namespace AllocsFixes.PersistentData
6{
7        [Serializable]
8        public class Player
9        {
10                private readonly string steamId;
11                private int entityId;
12                private string name;
13                private string ip;
14                private long totalPlayTime;
15                [OptionalField]
16                private DateTime
17                        lastOnline;
18                private Inventory inventory;
19                [OptionalField]
20                private int
21                        lastPositionX, lastPositionY, lastPositionZ;
22                [NonSerialized]
23                private ClientInfo
24                        clientInfo;
25
26                public string SteamID {
27                        get { return steamId; }
28                }
29
30                public int EntityID {
31                        get { return entityId; }
32                }
33
34                public string Name {
35                        get { return name == null ? string.Empty : name; }
36                }
37
38                public string IP {
39                        get { return ip == null ? string.Empty : ip; }
40                }
41
42                public Inventory Inventory {
43                        get {
44                                if (inventory == null)
45                                        inventory = new Inventory ();
46                                return inventory;
47                        }
48                }
49
50                public bool IsOnline {
51                        get { return clientInfo != null; }
52                }
53
54                public ClientInfo ClientInfo {
55                        get { return clientInfo; }
56                }
57
58                public EntityPlayer Entity {
59                        get {
60                                if (IsOnline) {
61                                        return CommonMappingFunctions.GetEntityPlayer (clientInfo);
62                                } else {
63                                        return null;
64                                }
65                        }
66                }
67
68                public long TotalPlayTime {
69                        get {
70                                if (IsOnline) {
71                                        return totalPlayTime + (long)(Time.timeSinceLevelLoad - Entity.CreationTimeSinceLevelLoad);
72                                } else {
73                                        return totalPlayTime;
74                                }
75                        }
76                }
77
78                public DateTime LastOnline {
79                        get {
80                                if (IsOnline)
81                                        return DateTime.Now;
82                                else
83                                        return lastOnline;
84                        }
85                }
86
87                public Vector3i LastPosition {
88                        get {
89                                if (IsOnline)
90                                        return new Vector3i (Entity.GetPosition ());
91                                else
92                                        return new Vector3i (lastPositionX, lastPositionY, lastPositionZ);
93                        }
94                }
95
96                public void SetOffline ()
97                {
98                        if (clientInfo != null) {
99                                Log.Out ("Player set to offline: " + steamId);
100                                Vector3i lastPos = new Vector3i (Entity.GetPosition ());
101                                lastPositionX = lastPos.x;
102                                lastPositionY = lastPos.y;
103                                lastPositionZ = lastPos.z;
104                                totalPlayTime += (long)(Time.timeSinceLevelLoad - Entity.CreationTimeSinceLevelLoad);
105                                lastOnline = DateTime.Now;
106                                clientInfo = null;
107                        }
108                }
109
110                public void SetOnline (ClientInfo ci)
111                {
112                        Log.Out ("Player set to online: " + steamId);
113                        clientInfo = ci;
114                        entityId = CommonMappingFunctions.GetEntityID (ci);
115                        name = CommonMappingFunctions.GetPlayerName (ci);
116                        ip = ci.networkPlayer.ipAddress;
117                }
118
119                public Player (string steamId)
120                {
121                        this.steamId = steamId;
122                        this.inventory = new Inventory ();
123                }
124
125
126        }
127}
Note: See TracBrowser for help on using the repository browser.