-
Notifications
You must be signed in to change notification settings - Fork 0
/
App.cs
135 lines (111 loc) · 4.11 KB
/
App.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
using Discord.WebSocket;
using System;
using System.Threading.Tasks;
using Discord;
using System.Text;
using VoiceOfAKingdomDiscord.Modules;
using System.Diagnostics;
namespace VoiceOfAKingdomDiscord
{
class App
{
public static DiscordSocketClient Client { get; private set; }
static void Main(string[] args)
{
Console.Title = $"{CommonScript.Title} v{CommonScript.Version}";
Config.Reload();
SendStartingMessage();
GameManager.ReloadRequests();
Console.CancelKeyPress += OnCancelKeyPress;
if (!string.IsNullOrEmpty(Config.Token))
new App().MainAsync().GetAwaiter().GetResult();
}
/// <summary>
/// No idea if this even works anymore due to VS debugger bugs
/// The debugger decides to ignore the known bug where it doesn't exit
/// and goes for another bug: exiting before the code is even over.
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private static void OnCancelKeyPress(object sender, ConsoleCancelEventArgs e)
{
CommonScript.Log("Ending running games");
if (GameManager.Games.Count > 0)
{
foreach (var game in GameManager.Games)
{
GameManager.Save(game);
GameManager.EndGame(game);
}
}
CommonScript.Log("Exiting");
// Thank you, Visual Studio,
// Really cool.
// (Had to add this due to a VS Debugger bug)
if (Debugger.IsAttached)
Environment.Exit(1);
}
public async Task MainAsync()
{
Client = new DiscordSocketClient();
DiscordEventHandler.SetEventTasks();
await Client.LoginAsync(TokenType.Bot, Config.Token);
await Client.StartAsync();
await Task.Delay(-1);
}
private static void SendStartingMessage()
{
StringBuilder thickSeparatorLine = new StringBuilder();
StringBuilder thinSeparatorLine = new StringBuilder();
for (int i = 0; i < CommonScript.Title.Length; i++)
{
thickSeparatorLine.Append("=");
thinSeparatorLine.Append("-");
}
#region Init Message Format
/*
* ==================
* Voice of a Kingdom
* ==================
* By TryphonX
* Version: {version}
* ------------------
* Collaborators:
* {names}
* ==================
* DEBUG MODE
* ==================
*/
#endregion
#region Printing Init Message
Console.WriteLine(thickSeparatorLine);
Console.ForegroundColor = ConsoleColor.Black;
Console.BackgroundColor = ConsoleColor.DarkYellow;
Console.WriteLine(CommonScript.Title);
Console.ResetColor();
Console.WriteLine(thickSeparatorLine);
Console.ForegroundColor = ConsoleColor.Blue;
Console.WriteLine($"Version: {CommonScript.Version}\nBy {CommonScript.Author}");
Console.ResetColor();
Console.WriteLine(thinSeparatorLine);
Console.ForegroundColor = ConsoleColor.DarkMagenta;
StringBuilder collabSb = new StringBuilder("Collaborators: ");
collabSb.AppendLine();
foreach (string name in CommonScript.Collaborators)
{
collabSb.AppendLine(name);
}
Console.WriteLine(collabSb.ToString().Trim());
Console.ResetColor();
Console.WriteLine(thickSeparatorLine);
if (Config.IsDebug)
{
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("DEBUG MODE");
Console.ResetColor();
Console.WriteLine(thickSeparatorLine);
}
#endregion
}
}
}