Disconnected the RemoteReader values from the DF enums.

develop
JapaMala 2014-07-17 17:46:00 +05:30
parent 48e714b65b
commit 216019e5af
2 changed files with 396 additions and 141 deletions

@ -20,10 +20,13 @@ enum TiletypeShape
RAMP_TOP = 10;
BROOK_BED = 11;
BROOK_TOP = 12;
TREE = 13;
TREE_SHAPE = 13;
SAPLING = 14;
SHRUB = 15;
ENDLESS_PIT = 16;
BRANCH = 17;
TRUNK_BRANCH = 18;
TWIG = 19;
}
enum TiletypeSpecial
@ -40,6 +43,7 @@ enum TiletypeSpecial
WORN_2 = 8;
WORN_3 = 9;
TRACK = 10;
SMOOTH_DEAD = 11;
};
enum TiletypeMaterial
{
@ -66,14 +70,18 @@ enum TiletypeMaterial
POOL = 19;
BROOK = 20;
RIVER = 21;
ROOT = 22;
TREE_MATERIAL = 23;
MUSHROOM = 24;
UNDERWORLD_GATE = 25;
}
enum TiletypeVariant
{
NO_VARIANT = -1;
VAR_1 = 0;
VAR_2 = 1;
VAR_3 = 3;
VAR_4 = 4;
VAR_3 = 2;
VAR_4 = 3;
};
message Tiletype

@ -1,4 +1,7 @@
// This is a generic plugin that does nothing useful apart from acting as an example... of a plugin that does nothing :D
//define which version of DF this is being built for.
#define DF_VER_040
//#define DF_VER_034
// some headers required for a plugin. Nothing special, just the basics.
#include "Core.h"
@ -119,6 +122,250 @@ uint16_t fletcher16(uint8_t const *data, size_t bytes)
return sum2 << 8 | sum1;
}
RemoteFortressReader::TiletypeMaterial TranslateMaterial(df::tiletype_material material)
{
switch (material)
{
case df::enums::tiletype_material::NONE:
return RemoteFortressReader::NO_MATERIAL;
break;
case df::enums::tiletype_material::AIR:
return RemoteFortressReader::AIR;
break;
case df::enums::tiletype_material::SOIL:
return RemoteFortressReader::SOIL;
break;
case df::enums::tiletype_material::STONE:
return RemoteFortressReader::STONE;
break;
case df::enums::tiletype_material::FEATURE:
return RemoteFortressReader::FEATURE;
break;
case df::enums::tiletype_material::LAVA_STONE:
return RemoteFortressReader::LAVA_STONE;
break;
case df::enums::tiletype_material::MINERAL:
return RemoteFortressReader::MINERAL;
break;
case df::enums::tiletype_material::FROZEN_LIQUID:
return RemoteFortressReader::FROZEN_LIQUID;
break;
case df::enums::tiletype_material::CONSTRUCTION:
return RemoteFortressReader::CONSTRUCTION;
break;
case df::enums::tiletype_material::GRASS_LIGHT:
return RemoteFortressReader::GRASS_LIGHT;
break;
case df::enums::tiletype_material::GRASS_DARK:
return RemoteFortressReader::GRASS_DARK;
break;
case df::enums::tiletype_material::GRASS_DRY:
return RemoteFortressReader::GRASS_DRY;
break;
case df::enums::tiletype_material::GRASS_DEAD:
return RemoteFortressReader::GRASS_DEAD;
break;
case df::enums::tiletype_material::PLANT:
return RemoteFortressReader::PLANT;
break;
case df::enums::tiletype_material::HFS:
return RemoteFortressReader::HFS;
break;
case df::enums::tiletype_material::CAMPFIRE:
return RemoteFortressReader::CAMPFIRE;
break;
case df::enums::tiletype_material::FIRE:
return RemoteFortressReader::FIRE;
break;
case df::enums::tiletype_material::ASHES:
return RemoteFortressReader::ASHES;
break;
case df::enums::tiletype_material::MAGMA:
return RemoteFortressReader::MAGMA;
break;
case df::enums::tiletype_material::DRIFTWOOD:
return RemoteFortressReader::DRIFTWOOD;
break;
case df::enums::tiletype_material::POOL:
return RemoteFortressReader::POOL;
break;
case df::enums::tiletype_material::BROOK:
return RemoteFortressReader::BROOK;
break;
case df::enums::tiletype_material::RIVER:
return RemoteFortressReader::RIVER;
break;
case df::enums::tiletype_material::ROOT:
return RemoteFortressReader::ROOT;
break;
case df::enums::tiletype_material::TREE:
return RemoteFortressReader::TREE_MATERIAL;
break;
case df::enums::tiletype_material::MUSHROOM:
return RemoteFortressReader::MUSHROOM;
break;
case df::enums::tiletype_material::UNDERWORLD_GATE:
return RemoteFortressReader::UNDERWORLD_GATE;
break;
default:
return RemoteFortressReader::NO_MATERIAL;
break;
}
return RemoteFortressReader::NO_MATERIAL;
}
RemoteFortressReader::TiletypeSpecial TranslateSpecial(df::tiletype_special special)
{
switch (special)
{
case df::enums::tiletype_special::NONE:
return RemoteFortressReader::NO_SPECIAL;
break;
case df::enums::tiletype_special::NORMAL:
return RemoteFortressReader::NORMAL;
break;
case df::enums::tiletype_special::RIVER_SOURCE:
return RemoteFortressReader::RIVER_SOURCE;
break;
case df::enums::tiletype_special::WATERFALL:
return RemoteFortressReader::WATERFALL;
break;
case df::enums::tiletype_special::SMOOTH:
return RemoteFortressReader::SMOOTH;
break;
case df::enums::tiletype_special::FURROWED:
return RemoteFortressReader::FURROWED;
break;
case df::enums::tiletype_special::WET:
return RemoteFortressReader::WET;
break;
case df::enums::tiletype_special::DEAD:
return RemoteFortressReader::DEAD;
break;
case df::enums::tiletype_special::WORN_1:
return RemoteFortressReader::WORN_1;
break;
case df::enums::tiletype_special::WORN_2:
return RemoteFortressReader::WORN_2;
break;
case df::enums::tiletype_special::WORN_3:
return RemoteFortressReader::WORN_3;
break;
case df::enums::tiletype_special::TRACK:
return RemoteFortressReader::TRACK;
break;
case df::enums::tiletype_special::SMOOTH_DEAD:
return RemoteFortressReader::SMOOTH_DEAD;
break;
default:
return RemoteFortressReader::NO_SPECIAL;
break;
}
return RemoteFortressReader::NO_SPECIAL;
}
RemoteFortressReader::TiletypeShape TranslateShape(df::tiletype_shape shape)
{
switch (shape)
{
case df::enums::tiletype_shape::NONE:
return RemoteFortressReader::NO_SHAPE;
break;
case df::enums::tiletype_shape::EMPTY:
return RemoteFortressReader::EMPTY;
break;
case df::enums::tiletype_shape::FLOOR:
return RemoteFortressReader::FLOOR;
break;
case df::enums::tiletype_shape::BOULDER:
return RemoteFortressReader::BOULDER;
break;
case df::enums::tiletype_shape::PEBBLES:
return RemoteFortressReader::PEBBLES;
break;
case df::enums::tiletype_shape::WALL:
return RemoteFortressReader::WALL;
break;
case df::enums::tiletype_shape::FORTIFICATION:
return RemoteFortressReader::FORTIFICATION;
break;
case df::enums::tiletype_shape::STAIR_UP:
return RemoteFortressReader::STAIR_UP;
break;
case df::enums::tiletype_shape::STAIR_DOWN:
return RemoteFortressReader::STAIR_DOWN;
break;
case df::enums::tiletype_shape::STAIR_UPDOWN:
return RemoteFortressReader::STAIR_UPDOWN;
break;
case df::enums::tiletype_shape::RAMP:
return RemoteFortressReader::RAMP;
break;
case df::enums::tiletype_shape::RAMP_TOP:
return RemoteFortressReader::RAMP_TOP;
break;
case df::enums::tiletype_shape::BROOK_BED:
return RemoteFortressReader::BROOK_BED;
break;
case df::enums::tiletype_shape::BROOK_TOP:
return RemoteFortressReader::BROOK_TOP;
break;
case df::enums::tiletype_shape::BRANCH:
return RemoteFortressReader::BRANCH;
break;
#ifdef DF_VER_034
case df::enums::tiletype_shape::TREE:
return RemoteFortressReader::TREE;
break;
#endif
case df::enums::tiletype_shape::TRUNK_BRANCH:
return RemoteFortressReader::TRUNK_BRANCH;
break;
case df::enums::tiletype_shape::TWIG:
return RemoteFortressReader::TWIG;
break;
case df::enums::tiletype_shape::SAPLING:
return RemoteFortressReader::SAPLING;
break;
case df::enums::tiletype_shape::SHRUB:
return RemoteFortressReader::SHRUB;
break;
case df::enums::tiletype_shape::ENDLESS_PIT:
return RemoteFortressReader::EMPTY;
break;
default:
return RemoteFortressReader::NO_SHAPE;
break;
}
return RemoteFortressReader::NO_SHAPE;
}
RemoteFortressReader::TiletypeVariant TranslateVariant(df::tiletype_variant variant)
{
switch (variant)
{
case df::enums::tiletype_variant::NONE:
return RemoteFortressReader::NO_VARIANT;
break;
case df::enums::tiletype_variant::VAR_1:
return RemoteFortressReader::VAR_1;
break;
case df::enums::tiletype_variant::VAR_2:
return RemoteFortressReader::VAR_2;
break;
case df::enums::tiletype_variant::VAR_3:
return RemoteFortressReader::VAR_3;
break;
case df::enums::tiletype_variant::VAR_4:
return RemoteFortressReader::VAR_4;
break;
default:
return RemoteFortressReader::NO_VARIANT;
break;
}
return RemoteFortressReader::NO_VARIANT;
}
static command_result CheckHashes(color_ostream &stream, const EmptyMessage *in)
{
clock_t start = clock();
@ -165,9 +412,9 @@ static command_result GetMaterialList(color_ostream &stream, const EmptyMessage
if (raws->inorganics[i]->material.state_color[GetState(&raws->inorganics[i]->material)] < raws->language.colors.size())
{
df::descriptor_color *color = raws->language.colors[raws->inorganics[i]->material.state_color[GetState(&raws->inorganics[i]->material)]];
mat_def->mutable_state_color()->set_red(color->red);
mat_def->mutable_state_color()->set_green(color->green);
mat_def->mutable_state_color()->set_blue(color->blue);
mat_def->mutable_state_color()->set_red(color->red * 255);
mat_def->mutable_state_color()->set_green(color->green * 255);
mat_def->mutable_state_color()->set_blue(color->blue * 255);
}
}
for (int i = 1; i < 19; i++)
@ -206,9 +453,9 @@ static command_result GetMaterialList(color_ostream &stream, const EmptyMessage
if (creature->material[j]->state_color[GetState(creature->material[j])] < raws->language.colors.size())
{
df::descriptor_color *color = raws->language.colors[creature->material[j]->state_color[GetState(creature->material[j])]];
mat_def->mutable_state_color()->set_red(color->red);
mat_def->mutable_state_color()->set_green(color->green);
mat_def->mutable_state_color()->set_blue(color->blue);
mat_def->mutable_state_color()->set_red(color->red * 255);
mat_def->mutable_state_color()->set_green(color->green * 255);
mat_def->mutable_state_color()->set_blue(color->blue * 255);
}
}
}
@ -226,9 +473,9 @@ static command_result GetMaterialList(color_ostream &stream, const EmptyMessage
if (plant->material[j]->state_color[GetState(plant->material[j])] < raws->language.colors.size())
{
df::descriptor_color *color = raws->language.colors[plant->material[j]->state_color[GetState(plant->material[j])]];
mat_def->mutable_state_color()->set_red(color->red);
mat_def->mutable_state_color()->set_green(color->green);
mat_def->mutable_state_color()->set_blue(color->blue);
mat_def->mutable_state_color()->set_red(color->red * 255);
mat_def->mutable_state_color()->set_green(color->green * 255);
mat_def->mutable_state_color()->set_blue(color->blue * 255);
}
}
}
@ -281,10 +528,10 @@ static command_result GetTiletypeList(color_ostream &stream, const EmptyMessage
const char * name = tileName(tt);
if (name != NULL && name[0] != 0)
type->set_caption(name);
type->set_shape((RemoteFortressReader::TiletypeShape)tileShape(tt));
type->set_special((RemoteFortressReader::TiletypeSpecial)tileSpecial(tt));
type->set_material((RemoteFortressReader::TiletypeMaterial)tileMaterial(tt));
type->set_variant((RemoteFortressReader::TiletypeVariant)tileVariant(tt));
type->set_shape(TranslateShape(tileShape(tt)));
type->set_special(TranslateSpecial(tileSpecial(tt)));
type->set_material(TranslateMaterial(tileMaterial(tt)));
type->set_variant(TranslateVariant(tileVariant(tt)));
type->set_direction(tileDirection(tt).whole);
count++;
}