Skip to content

Commit 1ff3886

Browse files
committed
Loading characters from database works now
1 parent 7f08347 commit 1ff3886

12 files changed

+93
-20
lines changed

MySql.Data/MySql.Data.csproj

+1-1
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@
5050
<ErrorReport>prompt</ErrorReport>
5151
<WarningLevel>4</WarningLevel>
5252
<CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
53-
<UseVSHostingProcess>true</UseVSHostingProcess>
53+
<UseVSHostingProcess>false</UseVSHostingProcess>
5454
<Prefer32Bit>false</Prefer32Bit>
5555
</PropertyGroup>
5656
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">

Renci.SshNet/Renci.SshNet.csproj

+1
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
<ErrorReport>prompt</ErrorReport>
2424
<WarningLevel>0</WarningLevel>
2525
<DocumentationFile>..\bin\Debug\Renci.SshNet.xml</DocumentationFile>
26+
<UseVSHostingProcess>false</UseVSHostingProcess>
2627
</PropertyGroup>
2728
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
2829
<DebugType>pdbonly</DebugType>

TrinityCoreAdmin/Account.cs

+2
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,7 @@ public static async Task LoadAccountsFromDB()
8181
foreach (DataRow row in dt.Rows)
8282
{
8383
var acc = new Account(row[0], row[1], row[2], row[3], row[4], row[5], row[6], row[7], row[8], row[9], row[10]);
84+
await acc.LoadCharacters();
8485
accounts.Add(acc);
8586
}
8687

@@ -94,6 +95,7 @@ public static async Task LoadAccountsFromDB()
9495
private async Task LoadCharacters()
9596
{
9697
var stmt = ServerManager.charDB.GetPreparedStatement(CharDatabase.CharDatabaseStatements.CHAR_SEL_CHARS_BY_ACCOUNT_ID);
98+
stmt.Parameters.AddWithValue("@account", this.id);
9799
var dt = await ServerManager.charDB.Execute(stmt);
98100

99101
foreach (DataRow row in dt.Rows)

TrinityCoreAdmin/Database/MySQLConnection.cs

+20-2
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ public ConnectionState connState
2424

2525
private string connStr;
2626
private MySqlConnection sqlConn;
27-
27+
2828
private static bool isPrepared = false;
2929

3030
/// <summary>
@@ -189,14 +189,32 @@ public DataTable Execute(string sql)
189189
/// </summary>
190190
/// <param name="stmt"></param>
191191
/// <returns></returns>
192-
public async Task<DataTable> Execute(MySqlCommand stmt)
192+
public async Task<DataTable> Execute(MySqlCommand stmt, bool enforceConstraints = true, string[] pKeys = null)
193193
{
194194
DataTable result = null;
195195
if (connState == ConnectionState.Open)
196196
{
197197
using (MySqlDataReader reader = await stmt.ExecuteReaderAsync())
198198
{
199199
var dt = new DataTable();
200+
if (!enforceConstraints)
201+
{
202+
var ds = new DataSet();
203+
ds.EnforceConstraints = false;
204+
ds.Tables.Add(dt);
205+
}
206+
207+
if (pKeys != null)
208+
{
209+
DataColumn[] keys = new DataColumn[pKeys.Length];
210+
for (int i = 0; i < pKeys.Length; i++)
211+
{
212+
dt.Columns.Add(pKeys[i]);
213+
keys[i] = dt.Columns[pKeys[i]];
214+
}
215+
dt.PrimaryKey = keys;
216+
}
217+
200218
dt.Load(reader);
201219
result = dt;
202220
}

TrinityCoreAdmin/Enums/PublicEnums.cs

+3-3
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,13 @@ public enum Expansion : int
77
WOTLK = 2
88
}
99

10-
public enum Gender
10+
public enum Gender : int
1111
{
1212
MALE = 0,
1313
FEMALE = 1
1414
}
1515

16-
public enum Race
16+
public enum Race : int
1717
{
1818
NONE = 0,
1919
HUMAN = 1,
@@ -28,7 +28,7 @@ public enum Race
2828
DRAENEI = 11
2929
}
3030

31-
public enum Class
31+
public enum Class : int
3232
{
3333
NONE = 0,
3434
WARRIOR = 1,

TrinityCoreAdmin/Forms/MainForm.cs

+22
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,28 @@ public void authDBConn_OnToggleConnectionStateHandler(object sender, OnConnectio
121121
}
122122
}
123123

124+
public void charDBConn_OnToggleConnectionStateHandler(object sender, OnConnectionStateEventArgs e)
125+
{
126+
if (this.InvokeRequired)
127+
{
128+
this.Invoke((Action<object, OnConnectionStateEventArgs>)charDBConn_OnToggleConnectionStateHandler, sender, e);
129+
return;
130+
}
131+
132+
if (e.connState == ConnectionState.Open)
133+
{
134+
this.statusStripChar.ForeColor = Color.Green;
135+
//toolStripBtnAdd.Enabled = true;
136+
//toolStripBtnDelete.Enabled = true;
137+
}
138+
else if (e.connState == ConnectionState.Closed)
139+
{
140+
this.statusStripChar.ForeColor = Color.Red;
141+
//toolStripBtnAdd.Enabled = false;
142+
//toolStripBtnDelete.Enabled = false;
143+
}
144+
}
145+
124146
public void sshConn_OnToggleConnectionStateHandler(object sender, OnConnectionStateEventArgs e)
125147
{
126148
if (e.connState == ConnectionState.Open)

TrinityCoreAdmin/Forms/RealmManagerForm.cs

+21-7
Original file line numberDiff line numberDiff line change
@@ -329,20 +329,34 @@ private async void Connect()
329329
MySqlConnectionStringBuilder authString = new MySql.Data.MySqlClient.MySqlConnectionStringBuilder();
330330
authString.Server = selectedServer.sqlHost;
331331

332-
if (ServerManager.sshConn != null)
333-
{
334-
if (ServerManager.sshConn.isConnected)
335-
authString.Port = selectedServer.sshForwardedPort;
336-
else
337-
authString.Port = selectedServer.sqlPort;
338-
}
332+
if (ServerManager.sshConn != null && ServerManager.sshConn.isConnected)
333+
authString.Port = selectedServer.sshForwardedPort;
334+
else
335+
authString.Port = selectedServer.sqlPort;
339336

340337
authString.UserID = selectedServer.sqlUser;
341338
authString.Password = selectedServer.sqlPassword;
342339
authString.Database = selectedServer.authdb;
343340

344341
connSuccess = ServerManager.InitDB(new AuthDatabase(authString));
345342
}
343+
344+
if (selectedRealm.chardb != String.Empty)
345+
{
346+
MySqlConnectionStringBuilder charString = new MySql.Data.MySqlClient.MySqlConnectionStringBuilder();
347+
charString.Server = selectedServer.sqlHost;
348+
349+
if (ServerManager.sshConn != null && ServerManager.sshConn.isConnected)
350+
charString.Port = selectedServer.sshForwardedPort;
351+
else
352+
charString.Port = selectedServer.sqlPort;
353+
354+
charString.UserID = selectedServer.sqlUser;
355+
charString.Password = selectedServer.sqlPassword;
356+
charString.Database = selectedRealm.chardb;
357+
358+
connSuccess = ServerManager.InitDB(new CharDatabase(charString));
359+
}
346360
}
347361
}
348362
if (connSuccess)

TrinityCoreAdmin/Player.cs

+7-4
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
using System.Threading.Tasks;
2+
using System.Data;
3+
using System;
24

35
namespace TrinityCoreAdmin
46
{
@@ -38,7 +40,8 @@ public static async Task<Player> LoadPlayer(int guid)
3840
private async Task LoadFromDB(int guid)
3941
{
4042
var stmt = ServerManager.charDB.GetPreparedStatement(CharDatabase.CharDatabaseStatements.CHAR_SEL_CHARACTER);
41-
var dt = await ServerManager.charDB.Execute(stmt);
43+
stmt.Parameters.AddWithValue("@guid", guid);
44+
var dt = await ServerManager.charDB.Execute(stmt, false);
4245

4346
if (dt.Rows.Count == 0)
4447
{
@@ -55,9 +58,9 @@ private async Task LoadFromDB(int guid)
5558
this.guid = XConverter.ToUInt32(dt.Rows[0][0]);
5659
this.acccountId = XConverter.ToUInt32(dt.Rows[0][1]);
5760
this.name = dt.Rows[0][2].ToString();
58-
this.race = (Race)dt.Rows[0][2];
59-
this._class = (Class)dt.Rows[0][3];
60-
this.gender = (Gender)dt.Rows[0][4];
61+
this.race = (Race)Enum.ToObject(typeof(Race), XConverter.ToInt32(dt.Rows[0][3]));
62+
this._class = (Class)Enum.ToObject(typeof(Class), dt.Rows[0][4]);
63+
this.gender = (Gender)Enum.ToObject(typeof(Gender), dt.Rows[0][5]);
6164
this.money = XConverter.ToInt32(dt.Rows[0][8]);
6265
}
6366
}

TrinityCoreAdmin/Server.cs

+8
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,14 @@ public string sqlUser
9292
public string authdb
9393
{ get; set; }
9494

95+
[DataMember]
96+
public string chardb
97+
{ get; set; }
98+
99+
[DataMember]
100+
public string worlddb
101+
{ get; set; }
102+
95103
[DataMember]
96104
public string sshHost
97105
{ get; set; }

TrinityCoreAdmin/ServerManager.cs

+6-3
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,6 @@ public static bool InitDB<T>(T db)
107107
where T : MySQLConnection
108108
{
109109
bool connSucess = true;
110-
MySQLConnection.CloseConnections();
111110

112111
if (db is AuthDatabase)
113112
{
@@ -117,10 +116,14 @@ public static bool InitDB<T>(T db)
117116
authDB.DoPrepareStatments();
118117
}
119118

120-
121119
if (db is CharDatabase)
120+
{
122121
charDB = db as CharDatabase;
123-
122+
charDB.OnToggleConnectionStateHandler += MainForm.GetInstance().charDBConn_OnToggleConnectionStateHandler;
123+
connSucess = charDB.Open() && connSucess;
124+
charDB.DoPrepareStatments();
125+
}
126+
124127
if (db is WorldDatabase)
125128
worldDB = db as WorldDatabase;
126129

TrinityCoreAdmin/TrinityCoreAdmin.csproj

+1
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@
4242
<Prefer32Bit>false</Prefer32Bit>
4343
<DocumentationFile>
4444
</DocumentationFile>
45+
<UseVSHostingProcess>false</UseVSHostingProcess>
4546
</PropertyGroup>
4647
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
4748
<PlatformTarget>x86</PlatformTarget>

log4net/log4net.csproj

+1
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,7 @@
8484
<DebugType>full</DebugType>
8585
<ErrorReport>prompt</ErrorReport>
8686
<CodeAnalysisRuleSet>SecurityRules.ruleset</CodeAnalysisRuleSet>
87+
<UseVSHostingProcess>false</UseVSHostingProcess>
8788
</PropertyGroup>
8889
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
8990
<OutputPath>..\bin\Release\</OutputPath>

0 commit comments

Comments
 (0)