library ObjectData
{
//2.0
//1D config
//использовать массивы размерностью более JASS_MAX_ARRAY_SIZE
#define private useExtendedArrays = false;
//размерность, не более 409550
#define private extendSize = 100000;
//2D config
// !!! typeMaxSize*objectsMaxSize not more then 409550 !!!
#define private typeMaxSize = 20;
#define private objectsMaxSize = 400;
//1D
#if (useExtendedArrays)
public integer array integerArray[extendSize]
public real array realArray[extendSize]
public string array stringArray[extendSize]
public boolean array booleanArray[extendSize]
public location array locationArray[extendSize]
public ability array abilityArray[extendSize]
public button array buttonArray[extendSize]
public handle array handleArray[extendSize]
public widget array widgetArray[extendSize]
public destructable array destructableArray[extendSize]
public fogmodifier array fogmodifierArray[extendSize]
public force array forceArray[extendSize]
public image array imageArray[extendSize]
public itempool array itempoolArray[extendSize]
public leaderboard array leaderboardArray[extendSize]
public lightning array lightningArray[extendSize]
public multiboard array multiboardArray[extendSize]
public multiboarditem array multiboarditemArray[extendSize]
public player array playerArray[extendSize]
public quest array questArray[extendSize]
public sound array soundArray[extendSize]
public texttag array texttagArray[extendSize]
public timerdialog array timerdialogArray[extendSize]
public trackable array trackableArray[extendSize]
public triggeraction array triggeractionArray[extendSize]
public triggercondition array triggerconditionArray[extendSize]
public event array eventArray[extendSize]
public trigger array triggerArray[extendSize]
public ubersplat array ubersplatArray[extendSize]
public unit array unitArray[extendSize]
public unitpool array unitpoolArray[extendSize]
#else
public integer array integerArray
public real array realArray
public string array stringArray
public boolean array booleanArray
public location array locationArray
public ability array abilityArray
public button array buttonArray
public handle array handleArray
public widget array widgetArray
public destructable array destructableArray
public fogmodifier array fogmodifierArray
public force array forceArray
public image array imageArray
public itempool array itempoolArray
public leaderboard array leaderboardArray
public lightning array lightningArray
public multiboard array multiboardArray
public multiboarditem array multiboarditemArray
public player array playerArray
public quest array questArray
public sound array soundArray
public texttag array texttagArray
public timerdialog array timerdialogArray
public trackable array trackableArray
public triggeraction array triggeractionArray
public triggercondition array triggerconditionArray
public event array eventArray
public trigger array triggerArray
public ubersplat array ubersplatArray
public unit array unitArray
public unitpool array unitpoolArray
#endif
//2D
public integer array integerArray2D[objectsMaxSize][typeMaxSize]
public real array realArray2D[objectsMaxSize][typeMaxSize]
public string array stringArray2D[objectsMaxSize][typeMaxSize]
public boolean array booleanArray2D[objectsMaxSize][typeMaxSize]
public location array locationArray2D[objectsMaxSize][typeMaxSize]
public ability array abilityArray2D[objectsMaxSize][typeMaxSize]
public button array buttonArray2D[objectsMaxSize][typeMaxSize]
public handle array handleArray2D[objectsMaxSize][typeMaxSize]
public widget array widgetArray2D[objectsMaxSize][typeMaxSize]
public destructable array destructableArray2D[objectsMaxSize][typeMaxSize]
public fogmodifier array fogmodifierArray2D[objectsMaxSize][typeMaxSize]
public force array forceArray2D[objectsMaxSize][typeMaxSize]
public image array imageArray2D[objectsMaxSize][typeMaxSize]
public itempool array itempoolArray2D[objectsMaxSize][typeMaxSize]
public leaderboard array leaderboardArray2D[objectsMaxSize][typeMaxSize]
public lightning array lightningArray2D[objectsMaxSize][typeMaxSize]
public multiboard array multiboardArray2D[objectsMaxSize][typeMaxSize]
public multiboarditem array multiboarditemArray2D[objectsMaxSize][typeMaxSize]
public player array playerArray2D[objectsMaxSize][typeMaxSize]
public quest array questArray2D[objectsMaxSize][typeMaxSize]
public sound array soundArray2D[objectsMaxSize][typeMaxSize]
public texttag array texttagArray2D[objectsMaxSize][typeMaxSize]
public timerdialog array timerdialogArray2D[objectsMaxSize][typeMaxSize]
public trackable array trackableArray2D[objectsMaxSize][typeMaxSize]
public triggeraction array triggeractionArray2D[objectsMaxSize][typeMaxSize]
public triggercondition array triggerconditionArray2D[objectsMaxSize][typeMaxSize]
public event array eventArray2D[objectsMaxSize][typeMaxSize]
public trigger array triggerArray2D[objectsMaxSize][typeMaxSize]
public ubersplat array ubersplatArray2D[objectsMaxSize][typeMaxSize]
public unit array unitArray2D[objectsMaxSize][typeMaxSize]
public unitpool array unitpoolArray2D[objectsMaxSize][typeMaxSize]
#define
{
//1D
Save(type,objectId, data) = ObjectData_##type##Array[objectId] = data;
Load(type,objectId) = ObjectData_##type##Array[objectId];
Clear(type,objectId) =
{
#if (type == int)
ObjectData_##type##Array[objectId] = 0;
#elseif (type == float)
ObjectData_##type##Array[objectId] = 0.0;
#elseif (type == bool)
ObjectData_##type##Array[objectId] = false;
#else
ObjectData_##type##Array[objectId] = null;
#endif
}
//#endif
//2D
Save(type,objectId, cellId, data) = ObjectData_##type##Array2D[objectId][cellId] = data;
Load(type,objectId, cellId) = ObjectData_##type##Array2D[objectId][cellId];
Clear(type,objectId, cellId) =
{
#if (type == int)
ObjectData_##type##Array2D[objectId][cellId] = 0;
#elseif (type == float)
ObjectData_##type##Array2D[objectId][cellId] = 0.0;
#elseif (type == bool)
ObjectData_##type##Array2D[objectId][cellId] = false;
#else
ObjectData_##type##Array2D[objectId][cellId] = null;
#endif
}
}
}
Пример использования:
//key - ключем является int рекомендуется использовать библиотеку Indexer
int key = 0;
int value = 0;
// сохраняем
Save(int,key,value);
// загружаем
Load(int,key);
// очищаем
Clear(int,key);
int key1 = 1;
int key1 = 2;
int value = 3;
Save(int, key1, key2 ,value); // Save(integer,key1, key2 ,value)) так же работает.
int i = Load(int, key1, key2);
// работает корректно:
Save(int,0,0,Load(int,0,0)++);
// данные не будут переписаны, так как фактически данные будут располагаться в разных массивах
Save(int,0,0,0)
Save(real,0,0,0.0)
Так как это обычные двумерные массивы, скорость работы превосходит скорость работы хештаблицы(на ~30%).
Миссия данной системы - сократить количество создаваемых глобалок для разных мелочей. При использовании совместо с этой библиотекой может служить заменой ХТ.
Миссия данной системы - сократить количество создаваемых глобалок для разных мелочей. При использовании совместо с этой библиотекой может служить заменой ХТ.