首页 > 代码库 > 多人即时战斗游戏服务端系列[3]--日志类及Config类以及Excel生成类

多人即时战斗游戏服务端系列[3]--日志类及Config类以及Excel生成类

这里说一些辅助类的设计及介绍.

依然上类图先:

首先是日志类和Config,这个库以及Config库取自暗黑3的民间模拟器mooege, 当时看了写的简短小巧就直接拿过来用了.

后来虽然发现一些问题,进行简单修改和优化之后,在项目中进行使用了.

首先是日志类,看了下类图也就没几行,简单的就是一些输出层级,带有可外部加载的扩展方法,ExtensionLogTarget,通过反射加载,然后进行一些扩展目标的输出.

修改部分的话,比较简单,原先日志是同步输出,这样会导致卡掉一些时间比较敏感的运算,这边采用了独立线程和队列模式,异步写出,问题就是当心写入数据太多,吃大量内存问题.


Config采用Nini库进行Ini文件读写,这个也没什么好说的.

这边比较简单的扩展就是,允许进行继承.

比如类似这样配置

[ConfigA]
Fps=60
MaxHp=100
[ConifgB]
Fps=30
BHP = 100
ConfigB继承于ConfigA,共享2个配置Fps,MaxHp,ConfigB多一个配置BHP,

但是ConfigB中的Fps值=30,用于控制多个模式和扩展,用起来还是比较方便的.

关于Excel使用,一般策划都比较喜欢用Excel,一般情况下都会采用Excel导出成XML后.手工匹配进行信息字段处理.

这里采用VS插件模式,直接把Excel考入程序库,类似这样



生成之类代码,类似这样

//Code Gen By FileGenLoaderDomain, Version=1.0.0.0, Culture=neutral, PublicKeyToken=febbd3066b495fa3
//Start Run:
//CodeBase file:///D:/Windows/Microsoft.Net/assembly/GAC_MSIL/FileGenLoaderDomain/v4.0_1.0.0.0__febbd3066b495fa3/FileGenLoaderDomain.exe
//wszInputFilePath:E:\TankApp\TankApp\Config\得分难度.xlsx
//wszDefaultNamespace:TankApp.Config
//BasePath:D:\Windows\Microsoft.Net\assembly\GAC_MSIL\FileGenLoaderDomain\v4.0_1.0.0.0__febbd3066b495fa3

//Code Gen By ExcelCodeBuilder...

using System;
using CsvCodeGen;



namespace TankApp.Config 
{

    [Serializable]
    public partial class 得分难度 
    {
		[Config(Index = 0, IsKey = true)]
		public Double 分值 { get;set; }
		[Config(Index = 1)]
		public Double 得分难度分 { get;set; }
		[Config(Index = 2)]
		public String 说明 { get;set; }

public void Parse(Double 分值,Double 得分难度分,String 说明)
{
   this.分值 = 分值;
this.得分难度分 = 得分难度分;
this.说明 = 说明;

}



    }

    public partial class ConfigList : CsvCodeGen.CfsConfig
    {

             [ConfigAutoParse(File = "得分难度.xlsx", ParseType = "CsvCodeGen.ExcelParse")]
             public static Config<Double, 得分难度> 得分难度 = new Config<Double, 得分难度>();

    }
}

//User Plug:CsvCodeGen.dll Type:CsvCodeGen.ExcelCodeBuilder

VS支持中文字段,用起来还是比较爽的,如果不支持中文,我们需要一些翻译,或者要求他们提供英文表格.

比较麻烦的地方,改了字段之后,都要重新拷贝编译一遍.

多人即时战斗游戏服务端系列[3]--日志类及Config类以及Excel生成类