parent
427dd91d79
commit
e69a6d1140
@ -1,227 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2010-2011 OTClient <https://github.com/edubart/otclient>
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#include "datmanager.h"
|
||||
#include "spritemanager.h"
|
||||
#include "thing.h"
|
||||
#include <framework/core/resourcemanager.h>
|
||||
|
||||
DatManager g_dat;
|
||||
|
||||
bool DatManager::load(const std::string& file)
|
||||
{
|
||||
try {
|
||||
std::stringstream fin;
|
||||
g_resources.loadFile(file, fin);
|
||||
|
||||
m_signature = Fw::getU32(fin);
|
||||
int numItems = Fw::getU16(fin);
|
||||
int numCreatures = Fw::getU16(fin);
|
||||
int numEffects = Fw::getU16(fin);
|
||||
int numShots = Fw::getU16(fin);
|
||||
|
||||
m_itemsAttributes.resize(numItems);
|
||||
for(int id = 100; id < numItems; ++id)
|
||||
parseThingAttributes(fin, m_itemsAttributes[id - 100]);
|
||||
|
||||
m_creaturesAttributes.resize(numItems);
|
||||
for(int id = 0; id < numCreatures; ++id)
|
||||
parseThingAttributes(fin, m_creaturesAttributes[id]);
|
||||
|
||||
m_effectsAttributes.resize(numItems);
|
||||
for(int id = 0; id < numEffects; ++id)
|
||||
parseThingAttributes(fin, m_effectsAttributes[id]);
|
||||
|
||||
m_shotsAttributes.resize(numItems);
|
||||
for(int id = 0; id < numShots; ++id)
|
||||
parseThingAttributes(fin, m_shotsAttributes[id]);
|
||||
|
||||
return true;
|
||||
} catch(std::exception& e) {
|
||||
logError("failed to load dat from '", file, "': ", e.what());
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
void DatManager::unload()
|
||||
{
|
||||
m_itemsAttributes.clear();
|
||||
m_creaturesAttributes.clear();
|
||||
m_effectsAttributes.clear();
|
||||
m_shotsAttributes.clear();
|
||||
}
|
||||
|
||||
void DatManager::parseThingAttributes(std::stringstream& fin, ThingAttributes& thingAttributes)
|
||||
{
|
||||
assert(fin.good());
|
||||
|
||||
while(true) {
|
||||
uint8 opt;
|
||||
fin.read((char*)&opt, 1);
|
||||
|
||||
if(opt == Otc::LastDatFlag)
|
||||
break;
|
||||
|
||||
parseThingAttributesOpt(fin, thingAttributes, opt);
|
||||
}
|
||||
|
||||
thingAttributes.width = Fw::getU8(fin);
|
||||
thingAttributes.height = Fw::getU8(fin);
|
||||
|
||||
if(thingAttributes.width > 1 || thingAttributes.height > 1)
|
||||
thingAttributes.exactSize = Fw::getU8(fin);
|
||||
else
|
||||
thingAttributes.exactSize = 32;
|
||||
|
||||
thingAttributes.layers = Fw::getU8(fin);
|
||||
thingAttributes.xPattern = Fw::getU8(fin);
|
||||
thingAttributes.yPattern = Fw::getU8(fin);
|
||||
thingAttributes.zPattern = Fw::getU8(fin);
|
||||
thingAttributes.animationPhases = Fw::getU8(fin);
|
||||
|
||||
int totalSprites = thingAttributes.width
|
||||
* thingAttributes.height
|
||||
* thingAttributes.layers
|
||||
* thingAttributes.xPattern
|
||||
* thingAttributes.yPattern
|
||||
* thingAttributes.zPattern
|
||||
* thingAttributes.animationPhases;
|
||||
|
||||
thingAttributes.sprites.resize(totalSprites);
|
||||
for(uint16 i = 0; i < totalSprites; i++)
|
||||
thingAttributes.sprites[i] = Fw::getU16(fin);
|
||||
}
|
||||
|
||||
void DatManager::parseThingAttributesOpt(std::stringstream& fin, ThingAttributes& thingAttributes, uint8 opt)
|
||||
{
|
||||
switch(opt) {
|
||||
case Otc::DatGround: // Grounds, must be drawn first
|
||||
thingAttributes.groundSpeed = Fw::getU16(fin);
|
||||
thingAttributes.isGround = true;
|
||||
break;
|
||||
case Otc::DatGroundClip: // Objects that clips (has transparent pixels) and must be drawn just after ground (e.g: ground borders)
|
||||
thingAttributes.isGroundClip = true;
|
||||
break;
|
||||
case Otc::DatOnBottom: // Bottom items, must be drawn above general items and below creatures (e.g: stairs)
|
||||
thingAttributes.isOnBottom = true;
|
||||
break;
|
||||
case Otc::DatOnTop: // Top items, must be drawn above creatures (e.g: doors)
|
||||
thingAttributes.isOnTop = true;
|
||||
break;
|
||||
case Otc::DatContainer: // Containers
|
||||
thingAttributes.isContainer = true;
|
||||
break;
|
||||
case Otc::DatStackable: // Stackable
|
||||
thingAttributes.isStackable = true;
|
||||
break;
|
||||
case Otc::DatForceUse: // Items that are automatically used when step over?
|
||||
thingAttributes.isForceUse = true;
|
||||
break;
|
||||
case Otc::DatMultiUse: // Usable items
|
||||
thingAttributes.isMultiUse = true;
|
||||
break;
|
||||
case Otc::DatWritable: // Writable
|
||||
thingAttributes.isWritable = true;
|
||||
thingAttributes.maxTextLength = Fw::getU16(fin);
|
||||
break;
|
||||
case Otc::DatWritableOnce: // Writable once. objects that can't be edited by players
|
||||
thingAttributes.isWritableOnce = true;
|
||||
thingAttributes.maxTextLength = Fw::getU16(fin);
|
||||
break;
|
||||
case Otc::DatFluidContainer: // Fluid containers
|
||||
thingAttributes.fluidParam = Fw::getU8(fin);
|
||||
break;
|
||||
case Otc::DatSplash: // Splashes
|
||||
thingAttributes.isStackable = true;
|
||||
break;
|
||||
case Otc::DatBlockWalk: // Blocks solid objects (creatures, walls etc)
|
||||
thingAttributes.isNotWalkable = true;
|
||||
break;
|
||||
case Otc::DatNotMovable: // Not movable
|
||||
thingAttributes.isNotMoveable = true;
|
||||
break;
|
||||
case Otc::DatBlockProjectile: // Blocks missiles (walls, magic wall etc)
|
||||
thingAttributes.isNotProjectable = true;
|
||||
break;
|
||||
case Otc::DatBlockPathFind: // Blocks pathfind algorithms (monsters)
|
||||
thingAttributes.isNotPathable = true;
|
||||
break;
|
||||
case Otc::DatPickupable: // Pickupable
|
||||
thingAttributes.isPickupable = true;
|
||||
break;
|
||||
case Otc::DatHangable: // Hangable objects (wallpaper etc)
|
||||
thingAttributes.isHangable = true;
|
||||
break;
|
||||
case Otc::DatHookSouth: // Horizontal walls
|
||||
thingAttributes.isHookSouth = true;
|
||||
break;
|
||||
case Otc::DatHookEast: // Vertical walls
|
||||
thingAttributes.isHookEast = true;
|
||||
break;
|
||||
case Otc::DatRotable: // Rotable
|
||||
thingAttributes.isRotable = true;
|
||||
break;
|
||||
case Otc::DatLight: // Light info
|
||||
thingAttributes.hasLight = true;
|
||||
thingAttributes.lightLevel = Fw::getU16(fin);
|
||||
thingAttributes.lightColor = Fw::getU16(fin);
|
||||
break;
|
||||
case Otc::DatDontHide: // A few monuments that are not supposed to be hidden by floors
|
||||
break;
|
||||
case Otc::DatTranslucent: // Grounds that are translucent
|
||||
thingAttributes.isTranslucent = true;
|
||||
break;
|
||||
case Otc::DatDisplacment: // Must shift draw
|
||||
thingAttributes.xDisplacment = Fw::getU16(fin);
|
||||
thingAttributes.yDisplacment = Fw::getU16(fin);
|
||||
break;
|
||||
case Otc::DatElevation: // Must elevate draw
|
||||
thingAttributes.elevation = Fw::getU16(fin);
|
||||
break;
|
||||
case Otc::DatLyingCorpse: // Some corpses
|
||||
thingAttributes.isLyingCorpse = true;
|
||||
break;
|
||||
case Otc::DatAnimateAlways: // Unknown, check if firesword is a kind of AnimateAlways.
|
||||
thingAttributes.isAnimatedAlways = true;
|
||||
break;
|
||||
case Otc::DatMinimapColor: // Minimap color
|
||||
thingAttributes.hasMiniMapColor = true;
|
||||
thingAttributes.miniMapColor = Fw::getU16(fin);
|
||||
break;
|
||||
case Otc::DatLensHelp: // Used for giving players tips?
|
||||
thingAttributes.isLensHelp = true;
|
||||
thingAttributes.lensHelpParam = Fw::getU16(fin);
|
||||
break;
|
||||
case Otc::DatFullGround: // Grounds that has no transparent pixels
|
||||
thingAttributes.isFullGround = true;
|
||||
break;
|
||||
case Otc::DatIgnoreLook: // Ignore look, then looks at the item on the bottom of it
|
||||
thingAttributes.isIgnoreLook = true;
|
||||
break;
|
||||
case Otc::DatClothe: // Clothes
|
||||
break;
|
||||
case Otc::DatAnimation: // Not used in 8.62
|
||||
break;
|
||||
default:
|
||||
throw std::runtime_error(Fw::mkstr("unknown .dat byte code: ", (int)opt));
|
||||
}
|
||||
}
|
@ -0,0 +1,222 @@
|
||||
/*
|
||||
* Copyright (c) 2010-2011 OTClient <https://github.com/edubart/otclient>
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#include "thingstype.h"
|
||||
#include "spritemanager.h"
|
||||
#include "thing.h"
|
||||
#include <framework/core/resourcemanager.h>
|
||||
|
||||
ThingsType g_thingsType;
|
||||
|
||||
bool ThingsType::load(const std::string& file)
|
||||
{
|
||||
try {
|
||||
std::stringstream fin;
|
||||
g_resources.loadFile(file, fin);
|
||||
|
||||
m_signature = Fw::getU32(fin);
|
||||
int numItems = Fw::getU16(fin);
|
||||
int numCreatures = Fw::getU16(fin);
|
||||
int numEffects = Fw::getU16(fin);
|
||||
int numShots = Fw::getU16(fin);
|
||||
|
||||
m_itemsType.resize(numItems);
|
||||
for(int id = 100; id < numItems; ++id)
|
||||
parseThingType(fin, m_itemsType[id - 100]);
|
||||
|
||||
m_creaturesType.resize(numItems);
|
||||
for(int id = 0; id < numCreatures; ++id)
|
||||
parseThingType(fin, m_creaturesType[id]);
|
||||
|
||||
m_effectsType.resize(numItems);
|
||||
for(int id = 0; id < numEffects; ++id)
|
||||
parseThingType(fin, m_effectsType[id]);
|
||||
|
||||
m_shotsType.resize(numItems);
|
||||
for(int id = 0; id < numShots; ++id)
|
||||
parseThingType(fin, m_shotsType[id]);
|
||||
|
||||
return true;
|
||||
} catch(std::exception& e) {
|
||||
logError("failed to load dat from '", file, "': ", e.what());
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
void ThingsType::unload()
|
||||
{
|
||||
m_itemsType.clear();
|
||||
m_creaturesType.clear();
|
||||
m_effectsType.clear();
|
||||
m_shotsType.clear();
|
||||
}
|
||||
|
||||
void ThingsType::parseThingType(std::stringstream& fin, ThingType& thingType)
|
||||
{
|
||||
assert(fin.good());
|
||||
|
||||
bool done = false;
|
||||
while(!done) {
|
||||
uint8 opt = Fw::getU8(fin);
|
||||
|
||||
switch(opt) {
|
||||
case Otc::DatGround: // Grounds, must be drawn first
|
||||
thingType.groundSpeed = Fw::getU16(fin);
|
||||
thingType.isGround = true;
|
||||
break;
|
||||
case Otc::DatGroundClip: // Objects that clips (has transparent pixels) and must be drawn just after ground (e.g: ground borders)
|
||||
thingType.isGroundClip = true;
|
||||
break;
|
||||
case Otc::DatOnBottom: // Bottom items, must be drawn above general items and below creatures (e.g: stairs)
|
||||
thingType.isOnBottom = true;
|
||||
break;
|
||||
case Otc::DatOnTop: // Top items, must be drawn above creatures (e.g: doors)
|
||||
thingType.isOnTop = true;
|
||||
break;
|
||||
case Otc::DatContainer: // Containers
|
||||
thingType.isContainer = true;
|
||||
break;
|
||||
case Otc::DatStackable: // Stackable
|
||||
thingType.isStackable = true;
|
||||
break;
|
||||
case Otc::DatForceUse: // Items that are automatically used when step over?
|
||||
thingType.isForceUse = true;
|
||||
break;
|
||||
case Otc::DatMultiUse: // Usable items
|
||||
thingType.isMultiUse = true;
|
||||
break;
|
||||
case Otc::DatWritable: // Writable
|
||||
thingType.isWritable = true;
|
||||
thingType.maxTextLength = Fw::getU16(fin);
|
||||
break;
|
||||
case Otc::DatWritableOnce: // Writable once. objects that can't be edited by players
|
||||
thingType.isWritableOnce = true;
|
||||
thingType.maxTextLength = Fw::getU16(fin);
|
||||
break;
|
||||
case Otc::DatFluidContainer: // Fluid containers
|
||||
thingType.isFluidContainer = true;
|
||||
break;
|
||||
case Otc::DatSplash: // Splashes
|
||||
thingType.isStackable = true;
|
||||
break;
|
||||
case Otc::DatBlockWalk: // Blocks solid objects (creatures, walls etc)
|
||||
thingType.isNotWalkable = true;
|
||||
break;
|
||||
case Otc::DatNotMovable: // Not movable
|
||||
thingType.isNotMoveable = true;
|
||||
break;
|
||||
case Otc::DatBlockProjectile: // Blocks missiles (walls, magic wall etc)
|
||||
thingType.isNotProjectable = true;
|
||||
break;
|
||||
case Otc::DatBlockPathFind: // Blocks pathfind algorithms (monsters)
|
||||
thingType.isNotPathable = true;
|
||||
break;
|
||||
case Otc::DatPickupable: // Pickupable
|
||||
thingType.isPickupable = true;
|
||||
break;
|
||||
case Otc::DatHangable: // Hangable objects (wallpaper etc)
|
||||
thingType.isHangable = true;
|
||||
break;
|
||||
case Otc::DatHookSouth: // Horizontal walls
|
||||
thingType.isHookSouth = true;
|
||||
break;
|
||||
case Otc::DatHookEast: // Vertical walls
|
||||
thingType.isHookEast = true;
|
||||
break;
|
||||
case Otc::DatRotable: // Rotable
|
||||
thingType.isRotable = true;
|
||||
break;
|
||||
case Otc::DatLight: // Light info
|
||||
thingType.hasLight = true;
|
||||
thingType.lightLevel = Fw::getU16(fin);
|
||||
thingType.lightColor = Fw::getU16(fin);
|
||||
break;
|
||||
case Otc::DatDontHide: // A few monuments that are not supposed to be hidden by floors
|
||||
break;
|
||||
case Otc::DatTranslucent: // Grounds that are translucent
|
||||
thingType.isTranslucent = true;
|
||||
break;
|
||||
case Otc::DatDisplacment: // Must shift draw
|
||||
thingType.xDisplacment = Fw::getU16(fin);
|
||||
thingType.yDisplacment = Fw::getU16(fin);
|
||||
break;
|
||||
case Otc::DatElevation: // Must elevate draw
|
||||
thingType.elevation = Fw::getU16(fin);
|
||||
break;
|
||||
case Otc::DatLyingCorpse: // Some corpses
|
||||
thingType.isLyingCorpse = true;
|
||||
break;
|
||||
case Otc::DatAnimateAlways: // Unknown, check if firesword is a kind of AnimateAlways.
|
||||
thingType.isAnimatedAlways = true;
|
||||
break;
|
||||
case Otc::DatMinimapColor: // Minimap color
|
||||
thingType.hasMiniMapColor = true;
|
||||
thingType.miniMapColor = Fw::getU16(fin);
|
||||
break;
|
||||
case Otc::DatLensHelp: // Used for giving players tips?
|
||||
thingType.isLensHelp = true;
|
||||
thingType.lensHelpParam = Fw::getU16(fin);
|
||||
break;
|
||||
case Otc::DatFullGround: // Grounds that has no transparent pixels
|
||||
thingType.isFullGround = true;
|
||||
break;
|
||||
case Otc::DatIgnoreLook: // Ignore look, then looks at the item on the bottom of it
|
||||
thingType.isIgnoreLook = true;
|
||||
break;
|
||||
case Otc::DatClothe: // Clothes
|
||||
break;
|
||||
case Otc::DatAnimation: // Not used in 8.62
|
||||
break;
|
||||
case Otc::LastDatFlag:
|
||||
done = true;
|
||||
break;
|
||||
default:
|
||||
throw std::runtime_error(Fw::mkstr("unknown .dat byte code: ", (int)opt));
|
||||
}
|
||||
}
|
||||
|
||||
thingType.width = Fw::getU8(fin);
|
||||
thingType.height = Fw::getU8(fin);
|
||||
|
||||
if(thingType.width > 1 || thingType.height > 1)
|
||||
thingType.exactSize = Fw::getU8(fin);
|
||||
else
|
||||
thingType.exactSize = 32;
|
||||
|
||||
thingType.layers = Fw::getU8(fin);
|
||||
thingType.xPattern = Fw::getU8(fin);
|
||||
thingType.yPattern = Fw::getU8(fin);
|
||||
thingType.zPattern = Fw::getU8(fin);
|
||||
thingType.animationPhases = Fw::getU8(fin);
|
||||
|
||||
int totalSprites = thingType.width
|
||||
* thingType.height
|
||||
* thingType.layers
|
||||
* thingType.xPattern
|
||||
* thingType.yPattern
|
||||
* thingType.zPattern
|
||||
* thingType.animationPhases;
|
||||
|
||||
thingType.sprites.resize(totalSprites);
|
||||
for(uint16 i = 0; i < totalSprites; i++)
|
||||
thingType.sprites[i] = Fw::getU16(fin);
|
||||
}
|
@ -0,0 +1,130 @@
|
||||
/*
|
||||
* Copyright (c) 2010-2011 OTClient <https://github.com/edubart/otclient>
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#ifndef THINGATTRIBUTES_H
|
||||
#define THINGATTRIBUTES_H
|
||||
|
||||
#include "declarations.h"
|
||||
|
||||
struct ThingType
|
||||
{
|
||||
ThingType() {
|
||||
layers = 0;
|
||||
width = height = 0;
|
||||
exactSize = 0;
|
||||
xPattern = yPattern = zPattern = 0;
|
||||
animationPhases = 0;
|
||||
xDisplacment = yDisplacment = 0;
|
||||
elevation = 0;
|
||||
|
||||
isGround = false;
|
||||
isGroundClip = false;
|
||||
isOnBottom = false;
|
||||
isOnTop = false;
|
||||
isContainer = false;
|
||||
isStackable = false;
|
||||
isForceUse = false;
|
||||
isMultiUse = false;
|
||||
isWritable = false;
|
||||
isWritableOnce = false;
|
||||
isFluidContainer = false;
|
||||
isSplash = false;
|
||||
isNotWalkable = false;
|
||||
isNotMoveable = false;
|
||||
isNotProjectable = false;
|
||||
isNotPathable = false;
|
||||
isPickupable = false;
|
||||
isHangable = false;
|
||||
isHookSouth = false;
|
||||
isHookEast = false;
|
||||
isRotable = false;
|
||||
isDontHide = false;
|
||||
isTranslucent = false;
|
||||
isLyingCorpse = false;
|
||||
isAnimatedAlways = false;
|
||||
isLensHelp = false;
|
||||
isFullGround = false;
|
||||
isIgnoreLook = false;
|
||||
isClothe = false;
|
||||
hasLight = false;
|
||||
hasMiniMapColor = false;
|
||||
|
||||
groundSpeed = 0;
|
||||
fluidParam = 0;
|
||||
maxTextLength = 0;
|
||||
lightLevel = lightColor = 0;
|
||||
miniMapColor = 0;
|
||||
lensHelpParam = 0;
|
||||
}
|
||||
|
||||
uint8 layers;
|
||||
uint8 width, height;
|
||||
uint8 exactSize;
|
||||
uint8 xPattern, yPattern, zPattern;
|
||||
uint8 animationPhases;
|
||||
uint16 xDisplacment, yDisplacment;
|
||||
uint16 elevation;
|
||||
std::vector<int> sprites;
|
||||
|
||||
bool isGround;
|
||||
bool isGroundClip;
|
||||
bool isOnBottom;
|
||||
bool isOnTop;
|
||||
bool isContainer;
|
||||
bool isStackable;
|
||||
bool isForceUse;
|
||||
bool isMultiUse;
|
||||
bool isWritable;
|
||||
bool isWritableOnce;
|
||||
bool isFluidContainer;
|
||||
bool isSplash;
|
||||
bool isNotWalkable;
|
||||
bool isNotMoveable;
|
||||
bool isNotProjectable;
|
||||
bool isNotPathable;
|
||||
bool isPickupable;
|
||||
bool isHangable;
|
||||
bool isHookSouth;
|
||||
bool isHookEast;
|
||||
bool isRotable;
|
||||
bool isDontHide;
|
||||
bool isTranslucent;
|
||||
bool isLyingCorpse;
|
||||
bool isAnimatedAlways;
|
||||
bool isLensHelp;
|
||||
bool isFullGround;
|
||||
bool isIgnoreLook;
|
||||
bool isClothe;
|
||||
bool hasLight;
|
||||
bool hasMiniMapColor;
|
||||
|
||||
uint16 groundSpeed;
|
||||
uint8 fluidParam;
|
||||
uint16 maxTextLength;
|
||||
uint16 lightLevel, lightColor;
|
||||
uint16 miniMapColor;
|
||||
uint16 lensHelpParam;
|
||||
};
|
||||
|
||||
typedef std::vector<ThingType> ThingTypeList;
|
||||
|
||||
#endif
|
Loading…
Reference in new issue