Просмотр исходного кода

entity类改成object类,object是所有游戏对象的基类,提供一个key value支持

tanghai 12 лет назад
Родитель
Сommit
254997737e

+ 7 - 3
CSharp/Game/Component/Component.csproj

@@ -32,9 +32,13 @@
     <WarningLevel>4</WarningLevel>
   </PropertyGroup>
   <ItemGroup>
-    <Reference Include="Newtonsoft.Json, Version=4.5.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
+    <Reference Include="MongoDB.Bson, Version=1.8.2.34, Culture=neutral, PublicKeyToken=f686731cfb9cc103, processorArchitecture=MSIL">
       <SpecificVersion>False</SpecificVersion>
-      <HintPath>..\..\packages\Newtonsoft.Json.5.0.6\lib\net45\Newtonsoft.Json.dll</HintPath>
+      <HintPath>..\..\packages\mongocsharpdriver.1.8.2\lib\net35\MongoDB.Bson.dll</HintPath>
+    </Reference>
+    <Reference Include="MongoDB.Driver, Version=1.8.2.34, Culture=neutral, PublicKeyToken=f686731cfb9cc103, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\..\packages\mongocsharpdriver.1.8.2\lib\net35\MongoDB.Driver.dll</HintPath>
     </Reference>
     <Reference Include="System" />
     <Reference Include="System.Core" />
@@ -46,7 +50,7 @@
     <Reference Include="System.Xml" />
   </ItemGroup>
   <ItemGroup>
-    <Compile Include="Entity.cs" />
+    <Compile Include="Object.cs" />
     <Compile Include="Properties\AssemblyInfo.cs" />
   </ItemGroup>
   <ItemGroup>

+ 5 - 4
CSharp/Game/Component/Entity.cs → CSharp/Game/Component/Object.cs

@@ -1,16 +1,17 @@
 using System.Collections.Generic;
-using Newtonsoft.Json;
+using MongoDB.Bson;
 
 namespace Component
 {
-	public class Entity
+	public class Object
 	{
-		public int Id { get; set; }
+		public ObjectId Id { get; set; }
 
 		public Dictionary<string, object> Values { get; private set; }
 
-		public Entity()
+		protected Object()
 		{
+			this.Id = ObjectId.GenerateNewId();
 			this.Values = new Dictionary<string, object>();
 		}
 

+ 1 - 1
CSharp/Game/Component/Packages.config

@@ -1,4 +1,4 @@
 <?xml version="1.0" encoding="utf-8"?>
 <packages>
-  <package id="Newtonsoft.Json" version="5.0.6" targetFramework="net45" />
+  <package id="mongocsharpdriver" version="1.8.2" targetFramework="net45" />
 </packages>

+ 15 - 1
CSharp/Game/ComponentTest/ComponentTest.csproj

@@ -16,6 +16,8 @@
     <ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\$(VisualStudioVersion)\UITestExtensionPackages</ReferencePath>
     <IsCodedUITest>False</IsCodedUITest>
     <TestProjectType>UnitTest</TestProjectType>
+    <SolutionDir Condition="$(SolutionDir) == '' Or $(SolutionDir) == '*Undefined*'">..\..\</SolutionDir>
+    <RestorePackages>true</RestorePackages>
   </PropertyGroup>
   <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
     <DebugSymbols>true</DebugSymbols>
@@ -35,6 +37,14 @@
     <WarningLevel>4</WarningLevel>
   </PropertyGroup>
   <ItemGroup>
+    <Reference Include="MongoDB.Bson, Version=1.8.2.34, Culture=neutral, PublicKeyToken=f686731cfb9cc103, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\..\packages\mongocsharpdriver.1.8.2\lib\net35\MongoDB.Bson.dll</HintPath>
+    </Reference>
+    <Reference Include="MongoDB.Driver, Version=1.8.2.34, Culture=neutral, PublicKeyToken=f686731cfb9cc103, processorArchitecture=MSIL">
+      <SpecificVersion>False</SpecificVersion>
+      <HintPath>..\..\packages\mongocsharpdriver.1.8.2\lib\net35\MongoDB.Driver.dll</HintPath>
+    </Reference>
     <Reference Include="System" />
   </ItemGroup>
   <Choose>
@@ -50,7 +60,7 @@
     </Otherwise>
   </Choose>
   <ItemGroup>
-    <Compile Include="EntityTest.cs" />
+    <Compile Include="ObjectTest.cs" />
     <Compile Include="Properties\AssemblyInfo.cs" />
   </ItemGroup>
   <ItemGroup>
@@ -67,6 +77,9 @@
       <Name>Component</Name>
     </ProjectReference>
   </ItemGroup>
+  <ItemGroup>
+    <None Include="Packages.config" />
+  </ItemGroup>
   <Choose>
     <When Condition="'$(VisualStudioVersion)' == '10.0' And '$(IsCodedUITest)' == 'True'">
       <ItemGroup>
@@ -87,6 +100,7 @@
   </Choose>
   <Import Project="$(VSToolsPath)\TeamTest\Microsoft.TestTools.targets" Condition="Exists('$(VSToolsPath)\TeamTest\Microsoft.TestTools.targets')" />
   <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
+  <Import Project="$(SolutionDir)\.nuget\NuGet.targets" Condition="Exists('$(SolutionDir)\.nuget\NuGet.targets')" />
   <!-- To modify your build process, add your task inside one of the targets below and uncomment it. 
        Other similar extension points exist, see Microsoft.Common.targets.
   <Target Name="BeforeBuild">

+ 0 - 21
CSharp/Game/ComponentTest/EntityTest.cs

@@ -1,21 +0,0 @@
-using Component;
-using Helper;
-using Microsoft.VisualStudio.TestTools.UnitTesting;
-
-namespace ComponentTest
-{
-	[TestClass]
-	public class EntityTest
-	{
-		[TestMethod]
-		public void TestSerialize()
-		{
-			var entity = new Entity();
-			entity["health"] = 10L;
-			string entityString = MongoHelper.ToJson(entity);
-
-			var entity2 = MongoHelper.FromJson<Entity>(entityString);
-			Assert.AreEqual(10, entity2.Get<long>("health"));
-		}
-	}
-}

+ 28 - 0
CSharp/Game/ComponentTest/ObjectTest.cs

@@ -0,0 +1,28 @@
+using System;
+using Helper;
+using Microsoft.VisualStudio.TestTools.UnitTesting;
+using MongoDB.Bson.IO;
+using Object = Component.Object;
+
+namespace ObjectTest
+{
+	class Buff: Object
+	{
+	}
+
+	[TestClass]
+	public class ObjectTest
+	{
+		[TestMethod]
+		public void TestSerialize()
+		{
+			var buff = new Buff();
+			buff.Values["health"] = 10L;
+			string json = MongoHelper.ToJson(buff);
+
+			var buff2 = MongoHelper.FromJson<Buff>(json);
+
+			Assert.AreEqual(10L, buff2.Values["health"]);
+		}
+	}
+}

+ 4 - 0
CSharp/Game/ComponentTest/Packages.config

@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<packages>
+  <package id="mongocsharpdriver" version="1.8.2" targetFramework="net45" />
+</packages>

+ 2 - 2
CSharp/Game/ComponentTest/Properties/AssemblyInfo.cs

@@ -5,11 +5,11 @@ using System.Runtime.InteropServices;
 // 有关程序集的常规信息通过以下特性集 
 // 控制。更改这些特性值可修改
 // 与程序集关联的信息。
-[assembly: AssemblyTitle("ComponentTest")]
+[assembly: AssemblyTitle("ObjectTest")]
 [assembly: AssemblyDescription("")]
 [assembly: AssemblyConfiguration("")]
 [assembly: AssemblyCompany("")]
-[assembly: AssemblyProduct("ComponentTest")]
+[assembly: AssemblyProduct("ObjectTest")]
 [assembly: AssemblyCopyright("Copyright ©  2013")]
 [assembly: AssemblyTrademark("")]
 [assembly: AssemblyCulture("")]

+ 6 - 0
CSharp/Platform/Helper/MongoHelper.cs

@@ -1,4 +1,5 @@
 using MongoDB.Bson;
+using MongoDB.Bson.IO;
 using MongoDB.Bson.Serialization;
 
 namespace Helper
@@ -10,6 +11,11 @@ namespace Helper
 			return obj.ToJson();
 		}
 
+		public static string ToJson(object obj, JsonWriterSettings settings)
+		{
+			return obj.ToJson(settings);
+		}
+
 		public static T FromJson<T>(string str)
 		{
 			return BsonSerializer.Deserialize<T>(str);