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

来源:互联网 发布:数据分析报告范文 编辑:程序博客网 时间:2024/06/06 16:28

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

依然上类图先:

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

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

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

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


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

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

比如类似这样配置

[ConfigA]Fps=60MaxHp=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支持中文字段,用起来还是比较爽的,如果不支持中文,我们需要一些翻译,或者要求他们提供英文表格.

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

1 0
原创粉丝点击