Skip to content

Commit 5262533

Browse files
authored
Merge pull request #8 from generalwrex/networkController-#2
Added spawns to the console and in game to let server owners and othe…
2 parents c156379 + 3256905 commit 5262533

File tree

6 files changed

+218
-27
lines changed

6 files changed

+218
-27
lines changed

HellionExtendedServer/Controllers/NetworkController.cs

Lines changed: 43 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -22,42 +22,74 @@ public NetworkController(ZeroGravity.Network.NetworkController networkController
2222
networkController.EventSystem.AddListener(typeof(TextChatMessage), new EventSystem.NetworkDataDelegate(this.TextChatMessageListener));
2323
Console.WriteLine("Chat Message Listener Added.");
2424

25+
networkController.EventSystem.AddListener(typeof(PlayerSpawnRequest), new EventSystem.NetworkDataDelegate(this.PlayerSpawnRequestListener));
26+
Console.WriteLine("Player Spawns Listener Added.");
27+
2528
m_network = networkController;
2629
Console.WriteLine("Network Controller Loaded!");
2730

2831

2932
}
3033

31-
private void TextChatMessageListener(NetworkData data)
34+
private void PlayerSpawnRequestListener(NetworkData data)
3235
{
3336
try
3437
{
35-
TextChatMessage textChatMessage = data as TextChatMessage;
36-
Player player1 = Server.Instance.GetPlayer(textChatMessage.Sender);
37-
textChatMessage.GUID = player1.FakeGuid;
38-
textChatMessage.Name = player1.Name;
38+
PlayerSpawnRequest playerSpawnRequest = data as PlayerSpawnRequest;
3939

40-
Console.WriteLine(textChatMessage.Name + ": " + textChatMessage.MessageText);
40+
if (playerSpawnRequest == null)
41+
return;
42+
43+
Player ply;
44+
if (m_network.clientList.ContainsKey(playerSpawnRequest.Sender))
45+
ply = m_network.clientList[playerSpawnRequest.Sender].Player;
46+
else
47+
return;
48+
49+
Console.WriteLine(ply.Name + " spawned ("+ ply.SteamId +") ");
50+
MessageAllClients(ply.Name + " has spawned!", false);
51+
4152
}
4253
catch (Exception ex)
4354
{
44-
Console.WriteLine("[ERROR] Hellion Extended Server[Chat]:" + ex.InnerException.ToString());
55+
Console.WriteLine("[ERROR] Hellion Extended Server[SpawnRequest]:" + ex.InnerException.ToString());
4556

4657
}
47-
58+
59+
}
60+
61+
private void TextChatMessageListener(NetworkData data)
62+
{
63+
try
64+
{
65+
TextChatMessage textChatMessage = data as TextChatMessage;
66+
67+
Console.WriteLine("(" +textChatMessage.Sender+ ")" + textChatMessage.Name + ": " + textChatMessage.MessageText);
68+
69+
}
70+
catch (Exception ex)
71+
{
72+
Console.WriteLine("[ERROR] Hellion Extended Server[Chat]:" + ex.InnerException.ToString());
73+
74+
}
4875
}
4976

50-
public void MessageAllClients(string msg)
77+
public void MessageAllClients(string msg, bool sendAsServer = true)
5178
{
79+
if (String.IsNullOrEmpty(msg))
80+
return;
81+
5282
byte[] guid = Guid.NewGuid().ToByteArray();
5383

5484
TextChatMessage textChatMessage = new TextChatMessage();
5585

5686
textChatMessage.GUID = BitConverter.ToInt64(guid, 0);
57-
textChatMessage.Name = "Server";
87+
textChatMessage.Name = (sendAsServer ? "Server :" : "");
5888
textChatMessage.MessageText = msg;
5989
m_network.SendToAllClients((NetworkData)textChatMessage, textChatMessage.Sender);
60-
Console.WriteLine("Server: " + msg);
90+
Console.WriteLine(textChatMessage.Name + ": " + msg);
6191
}
92+
93+
6294
}
6395
}

HellionExtendedServer/Form1.Designer.cs

Lines changed: 133 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

HellionExtendedServer/Form1.resx

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,4 +117,10 @@
117117
<resheader name="writer">
118118
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
119119
</resheader>
120+
<metadata name="statusStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
121+
<value>17, 17</value>
122+
</metadata>
123+
<metadata name="tabPage2.Locked" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
124+
<value>True</value>
125+
</metadata>
120126
</root>

HellionExtendedServer/Managers/ServerInstance.cs

Lines changed: 27 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
using System;
22
using System.Reflection;
33
using System.Threading;
4+
using System.Threading.Tasks;
45
using System.IO;
56
using System.Diagnostics;
67

@@ -42,27 +43,43 @@ public ServerInstance()
4243

4344
}
4445

46+
private bool isSaving = false;
4547
public void Save()
4648
{
49+
4750
if (!Server.IsRunning)
4851
return;
52+
53+
if (isSaving)
54+
{
55+
Console.WriteLine("Save is already in progress!");
56+
return;
57+
}
4958

5059
try
5160
{
52-
Stopwatch saveTime = new Stopwatch();
53-
saveTime.Start();
54-
Console.WriteLine("Saving Universe...");
55-
Persistence.Save();
56-
saveTime.Stop();
57-
58-
Console.WriteLine("Universe Saved in "+ saveTime.Elapsed.Milliseconds+"ms to "
59-
+ String.Format(Persistence.PersistanceFileName,
60-
DateTime.UtcNow.ToString("yyyy-MM-dd-HH-mm-ss")));
61+
new TaskFactory().StartNew(() => {
62+
63+
isSaving = true;
64+
Stopwatch saveTime = new Stopwatch();
65+
saveTime.Start();
66+
Console.WriteLine("Saving Universe...");
67+
Persistence.Save();
68+
saveTime.Stop();
69+
70+
Console.WriteLine("Universe Saved in " + saveTime.Elapsed.Milliseconds + "ms to "
71+
+ String.Format(Persistence.PersistanceFileName,
72+
DateTime.UtcNow.ToString("yyyy-MM-dd-HH-mm-ss")));
73+
isSaving = false;
74+
75+
});
76+
77+
6178
}
6279
catch (Exception ex)
6380
{
6481
Console.WriteLine("Hellion Extended Server [SAVE ERROR] " + ex.ToString());
65-
82+
isSaving = false;
6683
}
6784
}
6885

HellionExtendedServer/Program.cs

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ static void Main(string[] args)
5858

5959
Thread uiThread = new Thread(LoadGUI);
6060
uiThread.SetApartmentState(ApartmentState.STA);
61-
//uiThread.Start(); //form disabled for now
61+
//uiThread.Start();
6262

6363
Console.Title = String.Format("HELLION EXTENDED SERVER V{0}) - Game Patch Version: {1} ", Version, "0.1.4");
6464

@@ -124,12 +124,17 @@ public void ReadConsoleCommands()
124124
[STAThread]
125125
static void LoadGUI()
126126
{
127+
Console.WriteLine("Loading GUI (WIP)");
127128
Application.EnableVisualStyles();
128129
Application.SetCompatibleTextRenderingDefault(false);
129130
if (m_form == null || m_form.IsDisposed)
130-
m_form = new Form1();
131+
{
132+
m_form = new Form1();
133+
}
131134
else if (m_form.Visible)
132-
return;
135+
return;
136+
137+
Application.Run(m_form);
133138
}
134139

135140
private enum CtrlType

HellionExtendedServer/ServerWrappers/Hellion.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ public Thread StartServer(Object args)
9090
}
9191

9292

93-
Console.WriteLine("Hellion Extended Server: Waiting for server to start. This may take at least 10 seconds.");
93+
Console.WriteLine("Hellion Extended Server: Waiting for server to start. This may take at least 10 seconds or longer depending on the size of the current save.");
9494

9595
try
9696
{

0 commit comments

Comments
 (0)