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