kbengine-常用数据类型、数据类型加载

本文主要记录一下kbe常用数据类型,数据类型的加载,数据类型的操作类等。

系统定义的数据类型有:

bool DataTypes::initialize(std::string file)
{
	// 初始化一些基础类别
	addDataType("UINT8",		new IntType<uint8>);
	addDataType("UINT16",		new IntType<uint16>);
	addDataType("UINT64",		new UInt64Type);
	addDataType("UINT32",		new UInt32Type);

	addDataType("INT8",			new IntType<int8>);
	addDataType("INT16",		new IntType<int16>);
	addDataType("INT32",		new IntType<int32>);
	addDataType("INT64",		new Int64Type);

	addDataType("STRING",		new StringType);
	addDataType("UNICODE",		new UnicodeType);
	addDataType("FLOAT",		new FloatType);
	addDataType("DOUBLE",		new DoubleType);
	addDataType("PYTHON",		new PythonType);
	addDataType("PY_DICT",		new PyDictType);
	addDataType("PY_TUPLE",		new PyTupleType);
	addDataType("PY_LIST",		new PyListType);
	addDataType("ENTITYCALL",	new EntityCallType);
	addDataType("BLOB",			new BlobType);

	addDataType("VECTOR2",		new Vector2Type);
	addDataType("VECTOR3",		new Vector3Type);
	addDataType("VECTOR4",		new Vector4Type);

	_g_baseTypeEndIndex = dataTypesOrders_.size();
	return loadTypes(file);
}

用户自定义的数据类型,放在资源目录:kbengine_demos_assets-1.3.6\scripts\entity_defs\types.xml中,一般有数据别名

(就是把原有的系统类型定义一个方便记忆的别名,类似typedef),自定义数据类,以及脚本导出实例,

数据库存储长度等实现:

别名:

    如BOOL = UINT8, <SKILLID>    INT32     </SKILLID>(技能编号)

另外还有一种不定长,数组ARRAY,字典:FIXED_DICT(类)等定义。

ARRAY:

    <ENTITY_FORBID_COUNTER> ARRAY <of> INT8 </of>    </ENTITY_FORBID_COUNTER>

这里的ENTITY_FORBID_COUNTER为数组类型,每个元素为INT8,当然还可以定义数组嵌套,如:

ARRAY of ARRAY:

    <ENTITY_INFO> ARRAY <of> ARRAY <of> INT8 </of> </of> </ENTITY_INFO>

这时ENTITY_INFO为数组,其中每个元素为INT8的数组。

FIXED_DICT:

   <AVATAR_DATA>    FIXED_DICT
        <implementedBy>AVATAR_DATA.AVATAR_DATA_PICKLER</implementedBy>
        <Properties>
            <param1>
                <Type>    INT8    </Type>
            </param1>
            <param2>
                <Type>    BLOB    </Type>
            </param2>
        </Properties>
    </AVATAR_DATA>    

   AVATAR_DATA为自定义数据类型,必须在python文件中有一个导出实例(AVATAR_DATA_PICKLER,

就是implementedBy字段圆点后面的名字)。在Properties域中,记录了该类型的一些数据字段,好比类的一些成员变量:

param1=INT8, param2=BLOB,如果某个属性需要存储,可以增加<DatabaseLength> 256 </DatabaseLength>,表明字段放在数据库中需要的长度。

源码中的操作类:

#include "datatype.h" (实现了所有数据类型)
#include "datatypes.h" (静态类,管理系统中所有数据类型,包括types.xml中加载的)

发布了19 篇原创文章 · 获赞 10 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/ltk80/article/details/103641150