Skip to content

Commit 3d12c29

Browse files
committed
First Usable Version
1 parent 4b8bc56 commit 3d12c29

34 files changed

+1503
-84
lines changed

App.xaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,9 @@
44
xmlns:local="clr-namespace:ModShardLauncher"
55
StartupUri="MainWindow.xaml">
66
<Application.Resources>
7+
78
<ResourceDictionary>
9+
<FontFamily x:Key="ssFont">/Resources/#Mystery Font</FontFamily>
810
<ResourceDictionary.MergedDictionaries>
911
<ResourceDictionary Source="Language/zh-cn.xaml"/>
1012
<ResourceDictionary Source="Language/en-us.xaml"/>

Controls/MyToggleButton.xaml

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
<UserControl x:Class="ModShardLauncher.Controls.MyToggleButton"
2+
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
3+
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
4+
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
5+
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
6+
xmlns:local="clr-namespace:ModShardLauncher.Controls"
7+
mc:Ignorable="d"
8+
d:DesignHeight="450" d:DesignWidth="800">
9+
<Grid Height="40" Background="#1B1926" Name="MyGrid">
10+
<Grid.Triggers>
11+
<EventTrigger RoutedEvent="ToggleButton.Checked">
12+
<BeginStoryboard>
13+
<Storyboard x:Name="setBackground">
14+
<ColorAnimation BeginTime="0:0:0"
15+
Storyboard.TargetProperty="Background.Color"
16+
Storyboard.TargetName="MyGrid"
17+
From="#1B1926"
18+
To="#2C2D39"
19+
Duration="0:0:0.2"/>
20+
</Storyboard>
21+
</BeginStoryboard>
22+
</EventTrigger>
23+
<EventTrigger RoutedEvent="ToggleButton.Unchecked">
24+
<BeginStoryboard>
25+
<Storyboard x:Name="resetBackground">
26+
<ColorAnimation BeginTime="0:0:0"
27+
Storyboard.TargetProperty="Background.Color"
28+
Storyboard.TargetName="MyGrid"
29+
From="#2C2D39"
30+
To="#1B1926"
31+
Duration="0:0:0.2"/>
32+
</Storyboard>
33+
</BeginStoryboard>
34+
</EventTrigger>
35+
</Grid.Triggers>
36+
<TextBlock Grid.Row="1" Grid.Column="0" Margin="72,0,0,0"
37+
Text="{Binding Path=Text, RelativeSource={RelativeSource AncestorType=local:MyToggleButton}}"
38+
Foreground="White" FontSize="22" Background="Transparent"
39+
HorizontalAlignment="Left" VerticalAlignment="Center">
40+
</TextBlock>
41+
<ToggleButton x:Name="MyButton" Grid.Column="0" VerticalAlignment="Center"
42+
HorizontalAlignment="Left" Margin="16,0,0,0"
43+
Height="32" Width="32" BorderThickness="0"
44+
Checked="MyButton_Checked">
45+
<ToggleButton.Style>
46+
<Style TargetType="{x:Type ToggleButton}">
47+
<Setter Property="Template">
48+
<Setter.Value>
49+
<ControlTemplate TargetType="{x:Type ToggleButton}">
50+
<Border x:Name="border" BorderThickness="{TemplateBinding BorderThickness}"
51+
Background="{TemplateBinding Background}" SnapsToDevicePixels="True">
52+
53+
</Border>
54+
<ControlTemplate.Triggers>
55+
<Trigger Property="IsMouseOver" Value="True">
56+
<Setter Property="Background" TargetName="border" Value="{DynamicResource OverSource}"/>
57+
<Setter Property="BorderBrush" TargetName="border" Value="{DynamicResource OverSource}"/>
58+
</Trigger>
59+
<Trigger Property="IsPressed" Value="True">
60+
<Setter Property="Background" TargetName="border" Value="{DynamicResource DownSource}"/>
61+
<Setter Property="BorderBrush" TargetName="border" Value="{DynamicResource DownSource}"/>
62+
</Trigger>
63+
</ControlTemplate.Triggers>
64+
</ControlTemplate>
65+
</Setter.Value>
66+
</Setter>
67+
</Style>
68+
</ToggleButton.Style>
69+
<ToggleButton.Background>
70+
<ImageBrush ImageSource="{Binding Path=ImageSource, RelativeSource={RelativeSource AncestorType=local:MyToggleButton}}"/>
71+
</ToggleButton.Background>
72+
</ToggleButton>
73+
</Grid>
74+
</UserControl>

Controls/MyToggleButton.xaml.cs

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.ComponentModel;
4+
using System.Linq;
5+
using System.Text;
6+
using System.Threading.Tasks;
7+
using System.Windows;
8+
using System.Windows.Controls;
9+
using System.Windows.Data;
10+
using System.Windows.Documents;
11+
using System.Windows.Input;
12+
using System.Windows.Media;
13+
using System.Windows.Media.Imaging;
14+
using System.Windows.Navigation;
15+
using System.Windows.Shapes;
16+
17+
namespace ModShardLauncher.Controls
18+
{
19+
/// <summary>
20+
/// MyToggleButton.xaml 的交互逻辑
21+
/// </summary>
22+
public partial class MyToggleButton : UserControl
23+
{
24+
public MyToggleButton()
25+
{
26+
InitializeComponent();
27+
}
28+
public ImageSource ImageSource { get; set; }
29+
public string Text { get; set; }
30+
[Category("Behavior")]
31+
public event EventHandler Checked;
32+
private void MyButton_Checked(object sender, RoutedEventArgs e)
33+
{
34+
if(Checked != null) Checked.Invoke(this, e);
35+
}
36+
}
37+
}

DataLoader.cs

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,15 @@
1414
using UndertaleModLib.Util;
1515
using System.Linq;
1616
using Microsoft.Win32;
17+
using System.Windows.Documents;
18+
using System.Collections.Generic;
1719

1820
namespace ModShardLauncher
1921
{
2022
public class DataLoader
2123
{
22-
public static UndertaleData data = new UndertaleData();
24+
public static UndertaleData data = null;
25+
internal static string DataPath = "";
2326
public delegate void FileMessageEventHandler(string message);
2427
public static event FileMessageEventHandler FileMessageEvent;
2528
public static void ShowWarning(string warning, string title)
@@ -30,6 +33,18 @@ public static void ShowError(string error, string title)
3033
{
3134
Console.WriteLine(title + ":" + error);
3235
}
36+
public static string GetVersion()
37+
{
38+
var version = data.Strings.First(t => t.Content.EndsWith(" Build date: ")).Content;
39+
var sp = version.Replace(" Build date: ", "").Replace("Verison: ", "").Split(".").ToList();
40+
var sp2 = new List<string>();
41+
sp.ForEach(i =>
42+
{
43+
if (i.Length < 2) sp2.Add(0 + i);
44+
});
45+
version = "v" + string.Join(".", sp2);
46+
return version;
47+
}
3348
public static async Task<bool> DoOpenDialog()
3449
{
3550
OpenFileDialog dlg = new OpenFileDialog();
@@ -44,10 +59,11 @@ public static async Task<bool> DoOpenDialog()
4459
}
4560
return false;
4661
}
47-
public static async Task LoadFile(string filename)
62+
public static async Task LoadFile(string filename, bool re = false)
4863
{
49-
LoadingDialog loader = new LoadingDialog("加载中", "加载中 请稍候...");
64+
LoadingDialog loader = new LoadingDialog(re ? "重新加载中" :"加载中", "加载中 请稍候...");
5065
loader.PreventClose = true;
66+
DataPath = filename;
5167
Task t = Task.Run(() =>
5268
{
5369
bool hadWarnings = false;
@@ -74,6 +90,7 @@ public static async Task LoadFile(string filename)
7490
}
7591
catch (Exception e)
7692
{
93+
throw e;
7794
//this.ShowError("An error occured while trying to load:\n" + e.Message, "Load error");
7895
}
7996
MainWindow.Instance.Dispatcher.Invoke(async () =>
@@ -84,7 +101,7 @@ public static async Task LoadFile(string filename)
84101

85102
loader.ShowDialog();
86103
await t;
87-
await ModLoader.Initalize();
104+
ModLoader.Initalize();
88105
}
89106
public static async Task<bool> DoSaveDialog()
90107
{
@@ -174,6 +191,7 @@ public static async Task SaveFile(string filename)
174191
});
175192
dialog.ShowDialog();
176193
await t;
194+
ModLoader.LoadFiles();
177195
}
178196
}
179197
}

Extensions/ModShard.cs

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Linq;
4+
using System.Text;
5+
using System.Threading.Tasks;
6+
using UndertaleModLib;
7+
using UndertaleModLib.Models;
8+
9+
namespace ModShardLauncher.Extensions
10+
{
11+
public class ModShard : UndertaleExtensionFile
12+
{
13+
public ModShard()
14+
{
15+
Filename = DataLoader.data.Strings.MakeString("ModShard.dll");
16+
CleanupScript = DataLoader.data.Strings.MakeString("");
17+
InitScript = DataLoader.data.Strings.MakeString("");
18+
Kind = UndertaleExtensionKind.Dll;
19+
CreateFunc();
20+
}
21+
public void CreateFunc()
22+
{
23+
var ScriptThread = new UndertaleExtensionFunction()
24+
{
25+
Name = DataLoader.data.Strings.MakeString("ScriptThread"),
26+
ExtName = DataLoader.data.Strings.MakeString("ScriptThread"),
27+
RetType = UndertaleExtensionVarType.Double,
28+
Arguments = new UndertaleSimpleList<UndertaleExtensionFunctionArg>(),
29+
Kind = 11,
30+
ID = DataLoader.data.ExtensionFindLastId()
31+
};
32+
Functions.Add(ScriptThread);
33+
var GetScript = new UndertaleExtensionFunction()
34+
{
35+
Name = DataLoader.data.Strings.MakeString("GetScript"),
36+
ExtName = DataLoader.data.Strings.MakeString("GetScript"),
37+
RetType = UndertaleExtensionVarType.String,
38+
Arguments = new UndertaleSimpleList<UndertaleExtensionFunctionArg>(),
39+
Kind = 11,
40+
ID = ScriptThread.ID + 1
41+
};
42+
Functions.Add(GetScript);
43+
var PopScript = new UndertaleExtensionFunction()
44+
{
45+
Name = DataLoader.data.Strings.MakeString("PopScript"),
46+
ExtName = DataLoader.data.Strings.MakeString("PopScript"),
47+
RetType = UndertaleExtensionVarType.Double,
48+
Arguments = new UndertaleSimpleList<UndertaleExtensionFunctionArg>(),
49+
Kind = 11,
50+
ID = GetScript.ID + 1
51+
};
52+
Functions.Add(PopScript);
53+
var RunCallBack = new UndertaleExtensionFunction()
54+
{
55+
Name = DataLoader.data.Strings.MakeString("RunCallBack"),
56+
ExtName = DataLoader.data.Strings.MakeString("RunCallBack"),
57+
RetType = UndertaleExtensionVarType.Double,
58+
Arguments = new UndertaleSimpleList<UndertaleExtensionFunctionArg>()
59+
{
60+
new UndertaleExtensionFunctionArg()
61+
{
62+
Type = UndertaleExtensionVarType.String
63+
}
64+
},
65+
Kind = 11,
66+
ID = PopScript.ID + 1
67+
};
68+
Functions.Add(RunCallBack);
69+
70+
}
71+
}
72+
}

0 commit comments

Comments
 (0)