mirror of
https://github.com/OpenMW/openmw.git
synced 2025-03-31 14:36:39 +00:00
Use HasWater bit flag rather than mWaterInt bool.
This commit is contained in:
parent
b27a879352
commit
1d0b8587a1
4 changed files with 14 additions and 25 deletions
|
@ -62,7 +62,7 @@ namespace CSMWorld
|
||||||
{ ColumnId_StarterSpell, "Starter Spell" },
|
{ ColumnId_StarterSpell, "Starter Spell" },
|
||||||
{ ColumnId_AlwaysSucceeds, "Always Succeeds" },
|
{ ColumnId_AlwaysSucceeds, "Always Succeeds" },
|
||||||
{ ColumnId_SleepForbidden, "Sleep Forbidden" },
|
{ ColumnId_SleepForbidden, "Sleep Forbidden" },
|
||||||
{ ColumnId_Water, "Has Water" },
|
{ ColumnId_InteriorWater, "Interior Water" },
|
||||||
{ ColumnId_InteriorSky, "Interior Sky" },
|
{ ColumnId_InteriorSky, "Interior Sky" },
|
||||||
{ ColumnId_Model, "Model" },
|
{ ColumnId_Model, "Model" },
|
||||||
{ ColumnId_Script, "Script" },
|
{ ColumnId_Script, "Script" },
|
||||||
|
@ -309,7 +309,6 @@ namespace CSMWorld
|
||||||
{ ColumnId_Fog, "Fog" },
|
{ ColumnId_Fog, "Fog" },
|
||||||
{ ColumnId_FogDensity, "Fog Density" },
|
{ ColumnId_FogDensity, "Fog Density" },
|
||||||
{ ColumnId_WaterLevel, "Water Level" },
|
{ ColumnId_WaterLevel, "Water Level" },
|
||||||
{ ColumnId_InteriorWater, "Interior Water" },
|
|
||||||
{ ColumnId_MapColor, "Map Color" },
|
{ ColumnId_MapColor, "Map Color" },
|
||||||
|
|
||||||
{ ColumnId_UseValue1, "Use value 1" },
|
{ ColumnId_UseValue1, "Use value 1" },
|
||||||
|
|
|
@ -57,7 +57,7 @@ namespace CSMWorld
|
||||||
ColumnId_StarterSpell = 42,
|
ColumnId_StarterSpell = 42,
|
||||||
ColumnId_AlwaysSucceeds = 43,
|
ColumnId_AlwaysSucceeds = 43,
|
||||||
ColumnId_SleepForbidden = 44,
|
ColumnId_SleepForbidden = 44,
|
||||||
ColumnId_Water = 45,
|
ColumnId_InteriorWater = 45,
|
||||||
ColumnId_InteriorSky = 46,
|
ColumnId_InteriorSky = 46,
|
||||||
ColumnId_Model = 47,
|
ColumnId_Model = 47,
|
||||||
ColumnId_Script = 48,
|
ColumnId_Script = 48,
|
||||||
|
@ -300,8 +300,7 @@ namespace CSMWorld
|
||||||
ColumnId_Fog = 271,
|
ColumnId_Fog = 271,
|
||||||
ColumnId_FogDensity = 272,
|
ColumnId_FogDensity = 272,
|
||||||
ColumnId_WaterLevel = 273,
|
ColumnId_WaterLevel = 273,
|
||||||
ColumnId_InteriorWater = 274,
|
ColumnId_MapColor = 274,
|
||||||
ColumnId_MapColor = 275,
|
|
||||||
|
|
||||||
// Allocated to a separate value range, so we don't get a collision should we ever need
|
// Allocated to a separate value range, so we don't get a collision should we ever need
|
||||||
// to extend the number of use values.
|
// to extend the number of use values.
|
||||||
|
|
|
@ -287,7 +287,7 @@ CSMWorld::Data::Data (ToUTF8::FromType encoding, const ResourcesManager& resourc
|
||||||
mCells.addColumn (new FixedRecordTypeColumn<Cell> (UniversalId::Type_Cell));
|
mCells.addColumn (new FixedRecordTypeColumn<Cell> (UniversalId::Type_Cell));
|
||||||
mCells.addColumn (new NameColumn<Cell>);
|
mCells.addColumn (new NameColumn<Cell>);
|
||||||
mCells.addColumn (new FlagColumn<Cell> (Columns::ColumnId_SleepForbidden, ESM::Cell::NoSleep));
|
mCells.addColumn (new FlagColumn<Cell> (Columns::ColumnId_SleepForbidden, ESM::Cell::NoSleep));
|
||||||
mCells.addColumn (new FlagColumn<Cell> (Columns::ColumnId_Water, ESM::Cell::HasWater));
|
mCells.addColumn (new FlagColumn<Cell> (Columns::ColumnId_InteriorWater, ESM::Cell::HasWater));
|
||||||
mCells.addColumn (new FlagColumn<Cell> (Columns::ColumnId_InteriorSky, ESM::Cell::QuasiEx));
|
mCells.addColumn (new FlagColumn<Cell> (Columns::ColumnId_InteriorSky, ESM::Cell::QuasiEx));
|
||||||
mCells.addColumn (new RegionColumn<Cell>);
|
mCells.addColumn (new RegionColumn<Cell>);
|
||||||
mCells.addColumn (new RefNumCounterColumn<Cell>);
|
mCells.addColumn (new RefNumCounterColumn<Cell>);
|
||||||
|
@ -306,8 +306,6 @@ CSMWorld::Data::Data (ToUTF8::FromType encoding, const ResourcesManager& resourc
|
||||||
new NestedChildColumn (Columns::ColumnId_Fog, ColumnBase::Display_Integer));
|
new NestedChildColumn (Columns::ColumnId_Fog, ColumnBase::Display_Integer));
|
||||||
mCells.getNestableColumn(index)->addColumn(
|
mCells.getNestableColumn(index)->addColumn(
|
||||||
new NestedChildColumn (Columns::ColumnId_FogDensity, ColumnBase::Display_Float));
|
new NestedChildColumn (Columns::ColumnId_FogDensity, ColumnBase::Display_Float));
|
||||||
mCells.getNestableColumn(index)->addColumn(
|
|
||||||
new NestedChildColumn (Columns::ColumnId_InteriorWater, ColumnBase::Display_Boolean));
|
|
||||||
mCells.getNestableColumn(index)->addColumn(
|
mCells.getNestableColumn(index)->addColumn(
|
||||||
new NestedChildColumn (Columns::ColumnId_WaterLevel, ColumnBase::Display_Float));
|
new NestedChildColumn (Columns::ColumnId_WaterLevel, ColumnBase::Display_Float));
|
||||||
mCells.getNestableColumn(index)->addColumn(
|
mCells.getNestableColumn(index)->addColumn(
|
||||||
|
|
|
@ -1064,6 +1064,7 @@ namespace CSMWorld
|
||||||
|
|
||||||
bool isInterior = (cell.mData.mFlags & ESM::Cell::Interior) != 0;
|
bool isInterior = (cell.mData.mFlags & ESM::Cell::Interior) != 0;
|
||||||
bool behaveLikeExterior = (cell.mData.mFlags & ESM::Cell::QuasiEx) != 0;
|
bool behaveLikeExterior = (cell.mData.mFlags & ESM::Cell::QuasiEx) != 0;
|
||||||
|
bool interiorWater = (cell.mData.mFlags & ESM::Cell::HasWater) != 0;
|
||||||
|
|
||||||
switch (subColIndex)
|
switch (subColIndex)
|
||||||
{
|
{
|
||||||
|
@ -1072,16 +1073,15 @@ namespace CSMWorld
|
||||||
case 2: return (isInterior && !behaveLikeExterior) ? cell.mAmbi.mSunlight : QVariant();
|
case 2: return (isInterior && !behaveLikeExterior) ? cell.mAmbi.mSunlight : QVariant();
|
||||||
case 3: return (isInterior && !behaveLikeExterior) ? cell.mAmbi.mFog : QVariant();
|
case 3: return (isInterior && !behaveLikeExterior) ? cell.mAmbi.mFog : QVariant();
|
||||||
case 4: return (isInterior && !behaveLikeExterior) ? cell.mAmbi.mFogDensity : QVariant();
|
case 4: return (isInterior && !behaveLikeExterior) ? cell.mAmbi.mFogDensity : QVariant();
|
||||||
case 5: return (isInterior && !behaveLikeExterior) ? cell.mWaterInt==true : QVariant();
|
case 5:
|
||||||
case 6:
|
|
||||||
{
|
{
|
||||||
if (isInterior && !behaveLikeExterior && cell.mWaterInt)
|
if (isInterior && !behaveLikeExterior && interiorWater)
|
||||||
return cell.mWater;
|
return cell.mWater;
|
||||||
else
|
else
|
||||||
return QVariant();
|
return QVariant();
|
||||||
}
|
}
|
||||||
case 7: return isInterior ? QVariant() : cell.mMapColor; // TODO: how to select?
|
case 6: return isInterior ? QVariant() : cell.mMapColor; // TODO: how to select?
|
||||||
//case 8: return isInterior ? behaveLikeExterior : QVariant();
|
//case 7: return isInterior ? behaveLikeExterior : QVariant();
|
||||||
default: throw std::runtime_error("Cell subcolumn index out of range");
|
default: throw std::runtime_error("Cell subcolumn index out of range");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1093,6 +1093,7 @@ namespace CSMWorld
|
||||||
|
|
||||||
bool isInterior = (cell.mData.mFlags & ESM::Cell::Interior) != 0;
|
bool isInterior = (cell.mData.mFlags & ESM::Cell::Interior) != 0;
|
||||||
bool behaveLikeExterior = (cell.mData.mFlags & ESM::Cell::QuasiEx) != 0;
|
bool behaveLikeExterior = (cell.mData.mFlags & ESM::Cell::QuasiEx) != 0;
|
||||||
|
bool interiorWater = (cell.mData.mFlags & ESM::Cell::HasWater) != 0;
|
||||||
|
|
||||||
switch (subColIndex)
|
switch (subColIndex)
|
||||||
{
|
{
|
||||||
|
@ -1138,21 +1139,13 @@ namespace CSMWorld
|
||||||
}
|
}
|
||||||
case 5:
|
case 5:
|
||||||
{
|
{
|
||||||
if (isInterior && !behaveLikeExterior)
|
if (isInterior && !behaveLikeExterior && interiorWater)
|
||||||
cell.mWaterInt = value.toBool();
|
|
||||||
else
|
|
||||||
return; // return without saving
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case 6:
|
|
||||||
{
|
|
||||||
if (isInterior && !behaveLikeExterior && cell.mWaterInt)
|
|
||||||
cell.mWater = value.toFloat();
|
cell.mWater = value.toFloat();
|
||||||
else
|
else
|
||||||
return; // return without saving
|
return; // return without saving
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 7:
|
case 6:
|
||||||
{
|
{
|
||||||
if (!isInterior)
|
if (!isInterior)
|
||||||
cell.mMapColor = value.toInt();
|
cell.mMapColor = value.toInt();
|
||||||
|
@ -1163,7 +1156,7 @@ namespace CSMWorld
|
||||||
#if 0
|
#if 0
|
||||||
// redundant since this flag is shown in the main table as "Interior Sky"
|
// redundant since this flag is shown in the main table as "Interior Sky"
|
||||||
// keep here for documenting the logic based on vanilla
|
// keep here for documenting the logic based on vanilla
|
||||||
case 8:
|
case 7:
|
||||||
{
|
{
|
||||||
if (isInterior)
|
if (isInterior)
|
||||||
{
|
{
|
||||||
|
@ -1185,7 +1178,7 @@ namespace CSMWorld
|
||||||
|
|
||||||
int CellListAdapter::getColumnsCount(const Record<CSMWorld::Cell>& record) const
|
int CellListAdapter::getColumnsCount(const Record<CSMWorld::Cell>& record) const
|
||||||
{
|
{
|
||||||
return 8;
|
return 7;
|
||||||
}
|
}
|
||||||
|
|
||||||
int CellListAdapter::getRowsCount(const Record<CSMWorld::Cell>& record) const
|
int CellListAdapter::getRowsCount(const Record<CSMWorld::Cell>& record) const
|
||||||
|
|
Loading…
Reference in a new issue