Skip to content

Commit e825c33

Browse files
committed
Fix game socket checking, add tooltip and server-already-open warning.
1 parent f64c42d commit e825c33

8 files changed

Lines changed: 223 additions & 117 deletions

File tree

Controls/ModInfos.xaml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,20 +13,20 @@
1313
</Grid.Background>
1414
<Grid Margin="30">
1515
<Grid Height="64" VerticalAlignment="Top">
16-
<controls:MyToggleButton ImageSource="/Resources/Sprites/open.png" Click="Open_Click">
16+
<controls:MyToggleButton ImageSource="/Resources/Sprites/open.png" Click="Open_Click" ToolTip="Open Data File">
1717
<controls:MyToggleButton.Resources>
1818
<ImageBrush x:Key="DownSource" ImageSource="/Resources/Sprites/open_down.png"/>
1919
<ImageBrush x:Key="OverSource" ImageSource="/Resources/Sprites/open_over.png"/>
2020
</controls:MyToggleButton.Resources>
2121
</controls:MyToggleButton>
22-
<controls:MyToggleButton ImageSource="/Resources/Sprites/save.png" Click="Save_Click"
22+
<controls:MyToggleButton ImageSource="/Resources/Sprites/save.png" Click="Save_Click" ToolTip="Save Data File"
2323
Margin="64,0,0,0">
2424
<controls:MyToggleButton.Resources>
2525
<ImageBrush x:Key="DownSource" ImageSource="/Resources/Sprites/save_down.png"/>
2626
<ImageBrush x:Key="OverSource" ImageSource="/Resources/Sprites/save_over.png"/>
2727
</controls:MyToggleButton.Resources>
2828
</controls:MyToggleButton>
29-
<controls:MyToggleButton ImageSource="/Resources/Sprites/server.png" Click="Server_Click"
29+
<controls:MyToggleButton ImageSource="/Resources/Sprites/server.png" Click="Server_Click" ToolTip="Open Mod Server"
3030
Margin="128,0,0,0">
3131
<controls:MyToggleButton.Resources>
3232
<ImageBrush x:Key="DownSource" ImageSource="/Resources/Sprites/server_down.png"/>

Controls/ModSourceInfos.xaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,13 +13,13 @@
1313
</Grid.Background>
1414
<Grid Margin="30">
1515
<Grid Height="64" VerticalAlignment="Top">
16-
<controls:MyToggleButton ImageSource="/Resources/Sprites/open.png" Click="Open_Click">
16+
<controls:MyToggleButton ImageSource="/Resources/Sprites/open.png" Click="Open_Click" ToolTip="Open Data File">
1717
<controls:MyToggleButton.Resources>
1818
<ImageBrush x:Key="DownSource" ImageSource="/Resources/Sprites/open_down.png"/>
1919
<ImageBrush x:Key="OverSource" ImageSource="/Resources/Sprites/open_over.png"/>
2020
</controls:MyToggleButton.Resources>
2121
</controls:MyToggleButton>
22-
<controls:MyToggleButton ImageSource="/Resources/Sprites/save.png" Click="Save_Click"
22+
<controls:MyToggleButton ImageSource="/Resources/Sprites/save.png" Click="Save_Click" ToolTip="Save Data File"
2323
Margin="64,0,0,0">
2424
<controls:MyToggleButton.Resources>
2525
<ImageBrush x:Key="DownSource" ImageSource="/Resources/Sprites/save_down.png"/>

Controls/ScriptEnginePage.xaml.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ private void ScriptBox_KeyDown(object sender, KeyEventArgs e)
3535
private void Window_Closed(object sender, EventArgs e)
3636
{
3737
ModInterfaceServer.Server.Close();
38+
ModInterfaceServer.Server = null;
3839
}
3940
}
4041
}

Main.xaml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@
113113
IsEnabled="False"/>
114114
<Grid Height="40"/>
115115
<local:MyToggleButton ImageSource="/Resources/Sprites/mod.png" Text="{DynamicResource Mod}"
116-
Checked="MyToggleButton_Checked"
116+
Checked="MyToggleButton_Checked" ToolTip="Mod Page"
117117
Click="MyToggleButton_Click_1">
118118
<local:MyToggleButton.Resources>
119119
<ImageBrush x:Key="DownSource" ImageSource="/Resources/Sprites/mod_down.png"/>
@@ -122,7 +122,7 @@
122122
</local:MyToggleButton>
123123
<Grid Height="30"/>
124124
<local:MyToggleButton ImageSource="/Resources/Sprites/source.png" Text="{DynamicResource ModSource}"
125-
Checked="MyToggleButton_Checked"
125+
Checked="MyToggleButton_Checked" ToolTip="ModSource Page"
126126
Click="MyToggleButton_Click_2">
127127
<local:MyToggleButton.Resources>
128128
<ImageBrush x:Key="DownSource" ImageSource="/Resources/Sprites/source_down.png"/>
@@ -131,7 +131,7 @@
131131
</local:MyToggleButton>
132132
<Grid Height="30"/>
133133
<local:MyToggleButton ImageSource="/Resources/Sprites/settings.png" Text="{DynamicResource Settings}"
134-
Checked="MyToggleButton_Checked"
134+
Checked="MyToggleButton_Checked" ToolTip="Settings Page"
135135
Click="MyToggleButton_Click_4">
136136
<local:MyToggleButton.Resources>
137137
<ImageBrush x:Key="DownSource" ImageSource="/Resources/Sprites/settings_down.png"/>

Mods/ModInterfaceEngine.cs

Lines changed: 19 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,10 @@ public ModInterfaceEngine()
3030
public void Initalize()
3131
{
3232
HookDelegates.Add("OnGameStart", new ModDelegate());
33+
HookDelegates["OnGameStart"] += (object[] paras) =>
34+
{
35+
ModInterfaceServer.Window.MsgBox.AppendText("[Client]: StoneShard connect successfully.");
36+
};
3337
}
3438

3539
public Dictionary<string, EngineObject> Variables;
@@ -45,11 +49,9 @@ public void Execute(string script, params object[] objects)
4549
objects.ToList().ForEach(o => code += " " + o.ToString());
4650
ModInterfaceServer.SendScript(code);
4751
}
48-
public void DoHook(string hook)
52+
public void DoHook(string name, object[] parameters)
4953
{
50-
var data = hook.Split(" ");
51-
var parameters = data.Length > 1 ? data.Skip(1).ToArray() : new object[] { };
52-
if (HookDelegates.ContainsKey(data[0])) HookDelegates[data[0]].Invoke(parameters);
54+
if (HookDelegates.ContainsKey(name)) HookDelegates[name].Invoke(parameters);
5355
}
5456
public void AddHook(string hook, Action<object[]> action)
5557
{
@@ -120,14 +122,20 @@ public override bool TryInvokeMember(InvokeMemberBinder binder, object?[]? args,
120122

121123
public class ModInterfaceServer
122124
{
123-
public static Socket Server { get; private set; }
125+
public static Socket Server { get; internal set; }
124126

125-
public static Socket Client { get; private set; }
127+
public static Socket Client { get; internal set; }
126128

127129
internal static ScriptEnginePage Window;
128130

129131
public static void StartServer(int port)
130132
{
133+
if (Server != null)
134+
{
135+
MessageBox.Show("Mod Interface Server already open.");
136+
return;
137+
}
138+
131139
string host = "127.0.0.1";
132140
IPAddress ip = IPAddress.Parse(host);
133141
IPEndPoint ipe = new IPEndPoint(ip, port);
@@ -145,7 +153,7 @@ public static void StartServer(int port)
145153

146154
Server.BeginAccept(new AsyncCallback((IAsyncResult ar) =>
147155
{
148-
if (ar.AsyncState as Socket == null || !(ar.AsyncState as Socket).Connected) return;
156+
if (ar.AsyncState as Socket == null) return;
149157

150158
Client = Server.EndAccept(ar);
151159

@@ -170,10 +178,10 @@ public static void StartServer(int port)
170178
}
171179
else if (message.StartsWith("[HOK]"))
172180
{
173-
var data = message.Replace("[HOK]", "").Split("<EXTRAMSG>");
174-
var extra = data[1].Split("<BUILTIN>");
175-
var param = data.Length > 1 ? data.Skip(1).ToArray() : new string[] { };
176-
if (extra[1] == "true") ModInterfaceEngine.Instance.DoHook(data[0], param);
181+
var data = message.Replace("[HOK]", "").Split("<BUILTIN>");
182+
var hokInfo = data[0].Split("<EXTRAMSG>");
183+
var param = hokInfo.Length > 1 ? hokInfo[1].Split(" ") : new string[] { };
184+
if (data[1] == "1") ModInterfaceEngine.Instance.DoHook(data[0], param);
177185
}
178186
});
179187
}

Resources/Codes/CodeResources.Designer.cs

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

0 commit comments

Comments
 (0)