Enumify terrain blockage and generalize the line of sight function

This should probably be two separate commits, but they're tangled together and I don't want to spend the effort to disentangle them.
This commit is contained in:
2014-12-01 19:50:19 -05:00
parent afd45b3774
commit d900c7edef
19 changed files with 150 additions and 300 deletions

View File

@@ -133,12 +133,12 @@ bool save_ter_info(cDialog& me, cTerrain& store_ter) {
// TODO: Should somehow verify the pict number is valid
std::string blockage = dynamic_cast<cLedGroup&>(me["blockage"]).getSelected();
if(blockage == "clear") store_ter.blockage = 0;
else if(blockage == "curtain") store_ter.blockage = 1;
else if(blockage == "special") store_ter.blockage = 2;
else if(blockage == "window") store_ter.blockage = 3;
else if(blockage == "obstructed") store_ter.blockage = 4;
else if(blockage == "opaque") store_ter.blockage = 5;
if(blockage == "clear") store_ter.blockage = eTerObstruct::CLEAR;
else if(blockage == "curtain") store_ter.blockage = eTerObstruct::BLOCK_SIGHT;
else if(blockage == "special") store_ter.blockage = eTerObstruct::BLOCK_MONSTERS;
else if(blockage == "window") store_ter.blockage = eTerObstruct::BLOCK_MOVE;
else if(blockage == "obstructed") store_ter.blockage = eTerObstruct::BLOCK_MOVE_AND_SHOOT;
else if(blockage == "opaque") store_ter.blockage = eTerObstruct::BLOCK_MOVE_AND_SIGHT;
store_ter.special = (eTerSpec) boost::lexical_cast<short>(dynamic_cast<cLedGroup&>(me["prop"]).getSelected().substr(4));
/*
i = CDGN(813,6);
@@ -335,22 +335,22 @@ void fill_ter_info(cDialog& me, short ter){
{
cLedGroup& led_ctrl = dynamic_cast<cLedGroup&>(me["blockage"]);
switch(ter_type.blockage){
case 0:
case eTerObstruct::CLEAR:
led_ctrl.setSelected("clear");
break;
case 1:
case eTerObstruct::BLOCK_SIGHT:
led_ctrl.setSelected("curtain");
break;
case 2:
case eTerObstruct::BLOCK_MONSTERS:
led_ctrl.setSelected("special");
break;
case 3:
case eTerObstruct::BLOCK_MOVE:
led_ctrl.setSelected("window");
break;
case 4:
case eTerObstruct::BLOCK_MOVE_AND_SHOOT:
led_ctrl.setSelected("obstructed");
break;
case 5:
case eTerObstruct::BLOCK_MOVE_AND_SIGHT:
led_ctrl.setSelected("opaque");
break;
}