diff --git a/.gitattributes b/.gitattributes
index 1ff0c42..e2a0d78 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -22,18 +22,18 @@
# these files as binary and thus will always conflict and require user
# intervention with every merge. To do so, just uncomment the entries below
###############################################################################
-#*.sln merge=binary
-#*.csproj merge=binary
-#*.vbproj merge=binary
-#*.vcxproj merge=binary
-#*.vcproj merge=binary
-#*.dbproj merge=binary
-#*.fsproj merge=binary
-#*.lsproj merge=binary
-#*.wixproj merge=binary
-#*.modelproj merge=binary
-#*.sqlproj merge=binary
-#*.wwaproj merge=binary
+*.sln merge=binary
+*.csproj merge=binary
+*.vbproj merge=binary
+*.vcxproj merge=binary
+*.vcproj merge=binary
+*.dbproj merge=binary
+*.fsproj merge=binary
+*.lsproj merge=binary
+*.wixproj merge=binary
+*.modelproj merge=binary
+*.sqlproj merge=binary
+*.wwaproj merge=binary
###############################################################################
# behavior for image files
diff --git a/Feature/RaceSystem/Client/Client.csproj b/Feature/RaceSystem/Client/Client.csproj
index 5eb16e8..d44b942 100644
--- a/Feature/RaceSystem/Client/Client.csproj
+++ b/Feature/RaceSystem/Client/Client.csproj
@@ -21,7 +21,7 @@
DEBUG;TRACE
prompt
4
- latest
+ latest
pdbonly
@@ -30,15 +30,18 @@
TRACE
prompt
4
- latest
+ latest
- ..\..\..\RS\RaceSystem\packages\CitizenFX.Core.Client.1.0.1188\lib\net45\CitizenFX.Core.Client.dll
+ ..\..\..\packages\CitizenFX.Core.Client.1.0.1188\lib\net45\CitizenFX.Core.Client.dll
True
-
- ..\..\MenuAPI.dll
+
+ ..\..\..\lib\client\MenuAPI.dll
+
+
+ ..\..\..\lib\shared\Newtonsoft.Json.dll
diff --git a/Feature/RaceSystem/Client/Main.cs b/Feature/RaceSystem/Client/Main.cs
index c791d7b..212c4b8 100644
--- a/Feature/RaceSystem/Client/Main.cs
+++ b/Feature/RaceSystem/Client/Main.cs
@@ -4,6 +4,9 @@
using System.Text;
using System.Threading.Tasks;
using System.Xml.Linq;
+
+using Newtonsoft.Json;
+
using CitizenFX.Core;
using CitizenFX.Core.Native;
using CitizenFX.Core.NaturalMotion;
@@ -24,6 +27,16 @@ public class Main : BaseScript
private int creatorIndex = -1;
private List creatorCheckpointPos;
+ ///
+ /// creatorCheckpointPos:JsonFormat
+ ///
+ private string creatorCheckpointPosJson
+ {
+ get
+ {
+ return JsonConvert.SerializeObject(creatorCheckpointPos);
+ }
+ }
private List creatorBlips;
private List creatorCheckpoints;
@@ -49,6 +62,7 @@ public Main()
API.RegisterCommand("race", new Action, string>(RaceCommand), false);
EventHandlers["rs:Received"] += new Action(Received);
EventHandlers["rs:SetRaces"] += new Action>>(SetRaces);
+ EventHandlers["rs:SetRacesJson"] += new Action(SetRacesJson);
}
private void SetRaces(List> races)
@@ -56,6 +70,15 @@ private void SetRaces(List> races)
mainMenu.SetRaces(races);
}
+ ///
+ /// Set races as json format
+ ///
+ ///
+ private void SetRacesJson(string racesAsJson)
+ {
+ mainMenu.SetRacesJson(racesAsJson);
+ }
+
private void Received(string resp)
{
response = resp;
@@ -209,7 +232,8 @@ private async Task CheckSave()
if (mainMenu.requestSave)
{
mainMenu.requestSave = false;
- TriggerServerEvent("rs:SaveRace", mainMenu.raceName, creatorCheckpointPos);
+ TriggerServerEvent("rs:SaveRaceJson", mainMenu.raceName, creatorCheckpointPosJson);
+ //TriggerServerEvent("rs:SaveRace", mainMenu.raceName, creatorCheckpointPos);
while (!isReceived)
{
await Delay(100);
diff --git a/Feature/RaceSystem/Client/Menus/MainMenu.cs b/Feature/RaceSystem/Client/Menus/MainMenu.cs
index 9d7ecef..0225916 100644
--- a/Feature/RaceSystem/Client/Menus/MainMenu.cs
+++ b/Feature/RaceSystem/Client/Menus/MainMenu.cs
@@ -3,6 +3,9 @@
using System.Linq;
using System.Text;
using System.Threading.Tasks;
+
+using Newtonsoft.Json;
+
using CitizenFX.Core;
using MenuAPI;
@@ -38,6 +41,16 @@ public void SetRaces(List> races)
raceSelectionMenu.GetMenu().RefreshIndex();
}
+ ///
+ /// Set races from json format
+ ///
+ ///
+ public void SetRacesJson(string racesAsJson)
+ {
+ var races = JsonConvert.DeserializeObject>>(racesAsJson);
+ SetRaces(races);
+ }
+
private void CreateMenu()
{
// Menu align with left side
@@ -73,7 +86,8 @@ private void CreateMenu()
menu.CloseMenu();
if(_item.Text == "Start Race")
- BaseScript.TriggerServerEvent("rs:GetRaces");
+ //BaseScript.TriggerServerEvent("rs:GetRaces");
+ BaseScript.TriggerServerEvent("rs:GetRacesJson");
};
}
}
diff --git a/Feature/RaceSystem/Server/Database.cs b/Feature/RaceSystem/Server/Database.cs
index 7cdc44a..3666a7c 100644
--- a/Feature/RaceSystem/Server/Database.cs
+++ b/Feature/RaceSystem/Server/Database.cs
@@ -5,6 +5,8 @@
using ServiceStack.OrmLite;
using ServiceStack.Text.Common;
+using Newtonsoft.Json;
+
namespace Server
{
public class Database
@@ -134,5 +136,27 @@ public List> GetRaces()
return results;
}
+
+ ///
+ /// Insert race from json format
+ ///
+ ///
+ ///
+ ///
+ ///
+ public bool InsertRaceJson(string _name, string _author, string posAsJson)
+ {
+ var pos = JsonConvert.DeserializeObject>(posAsJson);
+ return InsertRace(_name, _author, pos);
+ }
+
+ ///
+ /// ·µ»ØJson¸ñʽµÄRacesÐÅÏ¢
+ ///
+ ///
+ public string GetRacesJson()
+ {
+ return JsonConvert.SerializeObject(GetRaces());
+ }
}
}
\ No newline at end of file
diff --git a/Feature/RaceSystem/Server/Main.cs b/Feature/RaceSystem/Server/Main.cs
index 28b422b..624af5e 100644
--- a/Feature/RaceSystem/Server/Main.cs
+++ b/Feature/RaceSystem/Server/Main.cs
@@ -5,6 +5,8 @@
using System.Text;
using System.Threading.Tasks;
+using Newtonsoft.Json;
+
using CitizenFX.Core;
namespace Server
@@ -19,7 +21,9 @@ public Main()
{
db = new Database();
EventHandlers["rs:SaveRace"] += new Action>(SaveRace);
+ EventHandlers["rs:SaveRaceJson"] += new Action(SaveRaceJson);
EventHandlers["rs:GetRaces"] += new Action(GetRaces);
+ EventHandlers["rs:GetRacesJson"] += new Action(GetRacesJson);
}
private void SaveRace([FromSource] Player source, string name, List pos)
@@ -29,10 +33,33 @@ private void SaveRace([FromSource] Player source, string name, List pos
TriggerClientEvent(source, "rs:Received", response);
}
+ ///
+ /// Save race from json format
+ ///
+ ///
+ ///
+ ///
+ private void SaveRaceJson([FromSource] Player source, string name, string posAsJson)
+ {
+ bool result = db.InsertRaceJson(name, source.Name, posAsJson);
+ string response = result ? "OK" : "Bad";
+ TriggerClientEvent(source, "rs:Received", response);
+ }
+
private void GetRaces([FromSource] Player source)
{
TriggerClientEvent(source, "rs:SetRaces", db.GetRaces());
}
+
+ ///
+ /// Get races as json format
+ ///
+ ///
+ private void GetRacesJson([FromSource]Player source)
+ {
+ TriggerClientEvent(source, "rs:SetRacesJson", db.GetRacesJson());
+ }
+
}
}
diff --git a/Feature/RaceSystem/Server/Server.csproj b/Feature/RaceSystem/Server/Server.csproj
index e5e62aa..087c185 100644
--- a/Feature/RaceSystem/Server/Server.csproj
+++ b/Feature/RaceSystem/Server/Server.csproj
@@ -21,7 +21,7 @@
DEBUG;TRACE
prompt
4
- latest
+ latest
pdbonly
@@ -30,53 +30,56 @@
TRACE
prompt
4
- latest
+ latest
- ..\..\..\RS\RaceSystem\packages\CitizenFX.Core.Server.1.0.1188\lib\net45\CitizenFX.Core.Server.dll
+ ..\..\..\packages\CitizenFX.Core.Server.1.0.1188\lib\net45\CitizenFX.Core.Server.dll
True
+
+ ..\..\..\..\wl-playground-imckl\src\Lib\Shared\Newtonsoft.Json.dll
+
- ..\..\..\RS\RaceSystem\packages\ServiceStack.Common.5.5.0\lib\net45\ServiceStack.Common.dll
+ ..\..\..\packages\ServiceStack.Common.5.5.0\lib\net45\ServiceStack.Common.dll
True
- ..\..\..\RS\RaceSystem\packages\ServiceStack.Interfaces.5.5.0\lib\net45\ServiceStack.Interfaces.dll
+ ..\..\..\packages\ServiceStack.Interfaces.5.5.0\lib\net45\ServiceStack.Interfaces.dll
True
- ..\..\..\RS\RaceSystem\packages\ServiceStack.OrmLite.5.5.0\lib\net45\ServiceStack.OrmLite.dll
+ ..\..\..\packages\ServiceStack.OrmLite.5.5.0\lib\net45\ServiceStack.OrmLite.dll
True
-
- ..\..\..\RS\RaceSystem\packages\ServiceStack.OrmLite.Sqlite.5.5.0\lib\net45\ServiceStack.OrmLite.Sqlite.dll
+
+ ..\..\..\packages\ServiceStack.OrmLite.Sqlite.5.5.0\lib\net45\ServiceStack.OrmLite.Sqlite.dll
True
- ..\..\..\RS\RaceSystem\packages\ServiceStack.Text.5.5.0\lib\net45\ServiceStack.Text.dll
+ ..\..\..\packages\ServiceStack.Text.5.5.0\lib\net45\ServiceStack.Text.dll
True
- ..\..\..\RS\RaceSystem\packages\System.Buffers.4.5.0\lib\netstandard1.1\System.Buffers.dll
+ ..\..\..\packages\System.Buffers.4.5.0\lib\netstandard1.1\System.Buffers.dll
True
- ..\..\..\RS\RaceSystem\packages\System.Data.SQLite.Core.1.0.110.0\lib\net451\System.Data.SQLite.dll
+ ..\..\..\packages\System.Data.SQLite.Core.1.0.110.0\lib\net451\System.Data.SQLite.dll
True
- ..\..\..\RS\RaceSystem\packages\System.Memory.4.5.2\lib\netstandard1.1\System.Memory.dll
+ ..\..\..\packages\System.Memory.4.5.2\lib\netstandard1.1\System.Memory.dll
True
- ..\..\..\RS\RaceSystem\packages\System.Runtime.CompilerServices.Unsafe.4.6.0-preview3.19128.7\lib\netstandard1.0\System.Runtime.CompilerServices.Unsafe.dll
+ ..\..\..\packages\System.Runtime.CompilerServices.Unsafe.4.6.0-preview3.19128.7\lib\netstandard1.0\System.Runtime.CompilerServices.Unsafe.dll
True
@@ -94,15 +97,14 @@
-
-
+
This project references NuGet package(s) that are missing on this computer. Enable NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105.The missing file is {0}.
-
+
\ No newline at end of file
diff --git a/lib/shared/Newtonsoft.Json.dll b/lib/shared/Newtonsoft.Json.dll
new file mode 100644
index 0000000..6afafb8
Binary files /dev/null and b/lib/shared/Newtonsoft.Json.dll differ
diff --git a/lib/shared/System.Numerics.dll b/lib/shared/System.Numerics.dll
new file mode 100644
index 0000000..fa4310c
Binary files /dev/null and b/lib/shared/System.Numerics.dll differ
diff --git a/src.sln b/src.sln
index fe545a0..d452332 100644
--- a/src.sln
+++ b/src.sln
@@ -1,7 +1,7 @@

Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio Version 16
-VisualStudioVersion = 16.0.28803.156
+# Visual Studio 15
+VisualStudioVersion = 15.0.28307.539
MinimumVisualStudioVersion = 10.0.40219.1
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Mission", "Mission", "{5D5A822B-AF58-42A1-8E81-D50C819AD7AA}"
EndProject
@@ -29,6 +29,10 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "client", "client", "{97C687
EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "shared", "shared", "{71569242-6268-4E47-A8C8-D5DFA97814A5}"
+ ProjectSection(SolutionItems) = preProject
+ lib\shared\Newtonsoft.Json.dll = lib\shared\Newtonsoft.Json.dll
+ lib\shared\System.Numerics.dll = lib\shared\System.Numerics.dll
+ EndProjectSection
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "server", "server", "{FE3580A3-1109-4145-8537-3E2856826EE7}"
ProjectSection(SolutionItems) = preProject