Converted Tile::tileId() to a property, so it can be used by the client.
Dieser Commit ist enthalten in:
Ursprung
e6cc388aa9
Commit
4d76dc8891
@ -3,7 +3,7 @@
|
|||||||
*
|
*
|
||||||
* This file is part of the traintastic source code.
|
* This file is part of the traintastic source code.
|
||||||
*
|
*
|
||||||
* Copyright (C) 2020-2023 Reinder Feenstra
|
* Copyright (C) 2020-2024 Reinder Feenstra
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or
|
* This program is free software; you can redistribute it and/or
|
||||||
* modify it under the terms of the GNU General Public License
|
* modify it under the terms of the GNU General Public License
|
||||||
@ -53,7 +53,7 @@ Board::Board(World& world, std::string_view _id) :
|
|||||||
{
|
{
|
||||||
const TileRotate tileRotate = it->second->rotate;
|
const TileRotate tileRotate = it->second->rotate;
|
||||||
|
|
||||||
if(it->second->tileId() == TileId::RailStraight && tileClassId == StraightRailTile::classId) // merge to bridge
|
if(it->second->tileId == TileId::RailStraight && tileClassId == StraightRailTile::classId) // merge to bridge
|
||||||
{
|
{
|
||||||
if((tileRotate == rotate + TileRotate::Deg90 || tileRotate == rotate - TileRotate::Deg90) && deleteTile(x, y))
|
if((tileRotate == rotate + TileRotate::Deg90 || tileRotate == rotate - TileRotate::Deg90) && deleteTile(x, y))
|
||||||
{
|
{
|
||||||
@ -73,7 +73,7 @@ Board::Board(World& world, std::string_view _id) :
|
|||||||
else
|
else
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
else if(it->second->tileId() == TileId::RailStraight && // replace straight by a straight with something extra
|
else if(it->second->tileId == TileId::RailStraight && // replace straight by a straight with something extra
|
||||||
Tiles::canUpgradeStraightRail(tileClassId) &&
|
Tiles::canUpgradeStraightRail(tileClassId) &&
|
||||||
(tileRotate == rotate || (tileRotate + TileRotate::Deg180) == rotate) &&
|
(tileRotate == rotate || (tileRotate + TileRotate::Deg180) == rotate) &&
|
||||||
deleteTile(x, y))
|
deleteTile(x, y))
|
||||||
|
|||||||
@ -3,7 +3,7 @@
|
|||||||
*
|
*
|
||||||
* This file is part of the traintastic source code.
|
* This file is part of the traintastic source code.
|
||||||
*
|
*
|
||||||
* Copyright (C) 2022-2023 Reinder Feenstra
|
* Copyright (C) 2022-2024 Reinder Feenstra
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or
|
* This program is free software; you can redistribute it and/or
|
||||||
* modify it under the terms of the GNU General Public License
|
* modify it under the terms of the GNU General Public License
|
||||||
@ -238,7 +238,7 @@ std::unique_ptr<const AbstractSignalPath::Item> AbstractSignalPath::findBlocks(c
|
|||||||
if(nextNode.getLink(0).get() == &link)
|
if(nextNode.getLink(0).get() == &link)
|
||||||
return findBlocks(nextNode, *nextLink, blocksAhead);
|
return findBlocks(nextNode, *nextLink, blocksAhead);
|
||||||
}
|
}
|
||||||
else if(isRailBridge(tile->tileId()) || isRailCross(tile->tileId()))
|
else if(isRailBridge(tile->tileId) || isRailCross(tile->tileId))
|
||||||
{
|
{
|
||||||
// 2 1 2 2 3
|
// 2 1 2 2 3
|
||||||
// | \| |/
|
// | \| |/
|
||||||
@ -257,7 +257,7 @@ std::unique_ptr<const AbstractSignalPath::Item> AbstractSignalPath::findBlocks(c
|
|||||||
if(auto linkNode = linkTile->link->node())
|
if(auto linkNode = linkTile->link->node())
|
||||||
return findBlocks(linkNode->get(), linkNode->get().getLink(0), blocksAhead);
|
return findBlocks(linkNode->get(), linkNode->get().getLink(0), blocksAhead);
|
||||||
}
|
}
|
||||||
else if(tile->tileId() != TileId::RailBufferStop)
|
else if(tile->tileId != TileId::RailBufferStop)
|
||||||
{
|
{
|
||||||
if(const auto& nextLink = otherLink(nextNode, link))
|
if(const auto& nextLink = otherLink(nextNode, link))
|
||||||
{
|
{
|
||||||
|
|||||||
@ -3,7 +3,7 @@
|
|||||||
*
|
*
|
||||||
* This file is part of the traintastic source code.
|
* This file is part of the traintastic source code.
|
||||||
*
|
*
|
||||||
* Copyright (C) 2023 Reinder Feenstra
|
* Copyright (C) 2023-2024 Reinder Feenstra
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or
|
* This program is free software; you can redistribute it and/or
|
||||||
* modify it under the terms of the GNU General Public License
|
* modify it under the terms of the GNU General Public License
|
||||||
@ -101,11 +101,11 @@ std::vector<std::shared_ptr<BlockPath>> BlockPath::find(BlockRailTile& startBloc
|
|||||||
const auto& nextNode = current.link->getNext(*current.node);
|
const auto& nextNode = current.link->getNext(*current.node);
|
||||||
auto& tile = nextNode.tile();
|
auto& tile = nextNode.tile();
|
||||||
|
|
||||||
switch(tile.tileId())
|
switch(tile.tileId.value())
|
||||||
{
|
{
|
||||||
case TileId::RailBlock:
|
case TileId::RailBlock:
|
||||||
{
|
{
|
||||||
if(current.node->tile().tileId() == TileId::RailNXButton)
|
if(current.node->tile().tileId == TileId::RailNXButton)
|
||||||
{
|
{
|
||||||
current.path->m_nxButtonTo = current.node->tile().shared_ptr<NXButtonRailTile>();
|
current.path->m_nxButtonTo = current.node->tile().shared_ptr<NXButtonRailTile>();
|
||||||
}
|
}
|
||||||
|
|||||||
@ -3,7 +3,7 @@
|
|||||||
*
|
*
|
||||||
* This file is part of the traintastic source code.
|
* This file is part of the traintastic source code.
|
||||||
*
|
*
|
||||||
* Copyright (C) 2023 Reinder Feenstra
|
* Copyright (C) 2023-2024 Reinder Feenstra
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or
|
* This program is free software; you can redistribute it and/or
|
||||||
* modify it under the terms of the GNU General Public License
|
* modify it under the terms of the GNU General Public License
|
||||||
@ -45,7 +45,7 @@ tcb::span<const Path::TurnoutPositionLink> Path::getTurnoutLinks(TurnoutRailTile
|
|||||||
|
|
||||||
const auto& node = turnout.node()->get();
|
const auto& node = turnout.node()->get();
|
||||||
|
|
||||||
switch(turnout.tileId())
|
switch(turnout.tileId.value())
|
||||||
{
|
{
|
||||||
case TileId::RailTurnoutLeft45:
|
case TileId::RailTurnoutLeft45:
|
||||||
case TileId::RailTurnoutLeft90:
|
case TileId::RailTurnoutLeft90:
|
||||||
|
|||||||
@ -38,9 +38,9 @@ static std::shared_ptr<BlockRailTile> findBlock(Node& node, uint8_t linkIndex)
|
|||||||
return {};
|
return {};
|
||||||
}
|
}
|
||||||
auto* tile = &link->getNext(node).tile();
|
auto* tile = &link->getNext(node).tile();
|
||||||
while(tile->tileId() != TileId::RailBlock)
|
while(tile->tileId != TileId::RailBlock)
|
||||||
{
|
{
|
||||||
if(isRailBridge(tile->tileId()))
|
if(isRailBridge(tile->tileId))
|
||||||
{
|
{
|
||||||
auto& bridgeNode = (*tile->node()).get();
|
auto& bridgeNode = (*tile->node()).get();
|
||||||
size_t index = bridgeNode.getIndex(*link);
|
size_t index = bridgeNode.getIndex(*link);
|
||||||
|
|||||||
@ -3,7 +3,7 @@
|
|||||||
*
|
*
|
||||||
* This file is part of the traintastic source code.
|
* This file is part of the traintastic source code.
|
||||||
*
|
*
|
||||||
* Copyright (C) 2020,2023 Reinder Feenstra
|
* Copyright (C) 2020,2023-2024 Reinder Feenstra
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or
|
* This program is free software; you can redistribute it and/or
|
||||||
* modify it under the terms of the GNU General Public License
|
* modify it under the terms of the GNU General Public License
|
||||||
@ -23,8 +23,8 @@
|
|||||||
#include "railtile.hpp"
|
#include "railtile.hpp"
|
||||||
#include "../../board.hpp"
|
#include "../../board.hpp"
|
||||||
|
|
||||||
RailTile::RailTile(World& world, std::string_view _id, TileId tileId) :
|
RailTile::RailTile(World& world, std::string_view _id, TileId tileId_) :
|
||||||
Tile(world, _id, tileId)
|
Tile(world, _id, tileId_)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -3,7 +3,7 @@
|
|||||||
*
|
*
|
||||||
* This file is part of the traintastic source code.
|
* This file is part of the traintastic source code.
|
||||||
*
|
*
|
||||||
* Copyright (C) 2020,2023 Reinder Feenstra
|
* Copyright (C) 2020,2023-2024 Reinder Feenstra
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or
|
* This program is free software; you can redistribute it and/or
|
||||||
* modify it under the terms of the GNU General Public License
|
* modify it under the terms of the GNU General Public License
|
||||||
@ -31,7 +31,7 @@ class RailTile : public Tile
|
|||||||
uint8_t m_reservedState = 0;
|
uint8_t m_reservedState = 0;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
RailTile(World& world, std::string_view _id, TileId tileId);
|
RailTile(World& world, std::string_view _id, TileId tileId_);
|
||||||
|
|
||||||
uint8_t reservedState() const final
|
uint8_t reservedState() const final
|
||||||
{
|
{
|
||||||
|
|||||||
@ -76,8 +76,8 @@ std::optional<OutputActionValue> SignalRailTile::getDefaultActionValue(SignalAsp
|
|||||||
return {};
|
return {};
|
||||||
}
|
}
|
||||||
|
|
||||||
SignalRailTile::SignalRailTile(World& world, std::string_view _id, TileId tileId) :
|
SignalRailTile::SignalRailTile(World& world, std::string_view _id, TileId tileId_) :
|
||||||
StraightRailTile(world, _id, tileId),
|
StraightRailTile(world, _id, tileId_),
|
||||||
m_node{*this, 2},
|
m_node{*this, 2},
|
||||||
name{this, "name", std::string(_id), PropertyFlags::ReadWrite | PropertyFlags::Store | PropertyFlags::ScriptReadOnly},
|
name{this, "name", std::string(_id), PropertyFlags::ReadWrite | PropertyFlags::Store | PropertyFlags::ScriptReadOnly},
|
||||||
requireReservation{this, "require_reservation", AutoYesNo::Auto, PropertyFlags::ReadWrite | PropertyFlags::Store},
|
requireReservation{this, "require_reservation", AutoYesNo::Auto, PropertyFlags::ReadWrite | PropertyFlags::Store},
|
||||||
|
|||||||
@ -44,7 +44,7 @@ class SignalRailTile : public StraightRailTile
|
|||||||
std::unique_ptr<AbstractSignalPath> m_signalPath;
|
std::unique_ptr<AbstractSignalPath> m_signalPath;
|
||||||
std::weak_ptr<BlockPath> m_blockPath;
|
std::weak_ptr<BlockPath> m_blockPath;
|
||||||
|
|
||||||
SignalRailTile(World& world, std::string_view _id, TileId tileId);
|
SignalRailTile(World& world, std::string_view _id, TileId tileId_);
|
||||||
|
|
||||||
void worldEvent(WorldState state, WorldEvent event) override;
|
void worldEvent(WorldState state, WorldEvent event) override;
|
||||||
|
|
||||||
|
|||||||
@ -3,7 +3,7 @@
|
|||||||
*
|
*
|
||||||
* This file is part of the traintastic source code.
|
* This file is part of the traintastic source code.
|
||||||
*
|
*
|
||||||
* Copyright (C) 2020,2022 Reinder Feenstra
|
* Copyright (C) 2020,2022,2024 Reinder Feenstra
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or
|
* This program is free software; you can redistribute it and/or
|
||||||
* modify it under the terms of the GNU General Public License
|
* modify it under the terms of the GNU General Public License
|
||||||
@ -22,8 +22,8 @@
|
|||||||
|
|
||||||
#include "straightrailtile.hpp"
|
#include "straightrailtile.hpp"
|
||||||
|
|
||||||
StraightRailTile::StraightRailTile(World& world, std::string_view _id, TileId tileId) :
|
StraightRailTile::StraightRailTile(World& world, std::string_view _id, TileId tileId_) :
|
||||||
RailTile(world, _id, tileId)
|
RailTile(world, _id, tileId_)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -3,7 +3,7 @@
|
|||||||
*
|
*
|
||||||
* This file is part of the traintastic source code.
|
* This file is part of the traintastic source code.
|
||||||
*
|
*
|
||||||
* Copyright (C) 2020,2022 Reinder Feenstra
|
* Copyright (C) 2020,2022,2024 Reinder Feenstra
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or
|
* This program is free software; you can redistribute it and/or
|
||||||
* modify it under the terms of the GNU General Public License
|
* modify it under the terms of the GNU General Public License
|
||||||
@ -31,7 +31,7 @@ class StraightRailTile : public RailTile
|
|||||||
CREATE(StraightRailTile)
|
CREATE(StraightRailTile)
|
||||||
|
|
||||||
public:
|
public:
|
||||||
StraightRailTile(World& world, std::string_view _id, TileId tileId = TileId::RailStraight);
|
StraightRailTile(World& world, std::string_view _id, TileId tileId_ = TileId::RailStraight);
|
||||||
|
|
||||||
void getConnectors(std::vector<Connector>& connectors) const final;
|
void getConnectors(std::vector<Connector>& connectors) const final;
|
||||||
};
|
};
|
||||||
|
|||||||
@ -63,8 +63,8 @@ static std::optional<OutputActionValue> getDefaultActionValue(TurnoutPosition tu
|
|||||||
return {};
|
return {};
|
||||||
}
|
}
|
||||||
|
|
||||||
TurnoutLeftRailTile::TurnoutLeftRailTile(World& world, std::string_view _id, TileId tileId)
|
TurnoutLeftRailTile::TurnoutLeftRailTile(World& world, std::string_view _id, TileId tileId_)
|
||||||
: TurnoutRailTile(world, _id, tileId, 3)
|
: TurnoutRailTile(world, _id, tileId_, 3)
|
||||||
{
|
{
|
||||||
// Skip Unknown position
|
// Skip Unknown position
|
||||||
tcb::span<const TurnoutPosition, 2> setPositionValues = tcb::make_span(positionValues).subspan<1>();
|
tcb::span<const TurnoutPosition, 2> setPositionValues = tcb::make_span(positionValues).subspan<1>();
|
||||||
|
|||||||
@ -3,7 +3,7 @@
|
|||||||
*
|
*
|
||||||
* This file is part of the traintastic source code.
|
* This file is part of the traintastic source code.
|
||||||
*
|
*
|
||||||
* Copyright (C) 2020-2022 Reinder Feenstra
|
* Copyright (C) 2020-2022,2024 Reinder Feenstra
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or
|
* This program is free software; you can redistribute it and/or
|
||||||
* modify it under the terms of the GNU General Public License
|
* modify it under the terms of the GNU General Public License
|
||||||
@ -28,7 +28,7 @@
|
|||||||
class TurnoutLeftRailTile : public TurnoutRailTile
|
class TurnoutLeftRailTile : public TurnoutRailTile
|
||||||
{
|
{
|
||||||
protected:
|
protected:
|
||||||
TurnoutLeftRailTile(World& world, std::string_view _id, TileId tileId);
|
TurnoutLeftRailTile(World& world, std::string_view _id, TileId tileId_);
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@ -27,15 +27,15 @@
|
|||||||
#include "../../../../world/world.hpp"
|
#include "../../../../world/world.hpp"
|
||||||
#include "../../../../utils/displayname.hpp"
|
#include "../../../../utils/displayname.hpp"
|
||||||
|
|
||||||
TurnoutRailTile::TurnoutRailTile(World& world, std::string_view _id, TileId tileId, size_t connectors) :
|
TurnoutRailTile::TurnoutRailTile(World& world, std::string_view _id, TileId tileId_, size_t connectors) :
|
||||||
RailTile(world, _id, tileId),
|
RailTile(world, _id, tileId_),
|
||||||
m_node{*this, connectors},
|
m_node{*this, connectors},
|
||||||
name{this, "name", std::string(_id), PropertyFlags::ReadWrite | PropertyFlags::Store | PropertyFlags::ScriptReadOnly},
|
name{this, "name", std::string(_id), PropertyFlags::ReadWrite | PropertyFlags::Store | PropertyFlags::ScriptReadOnly},
|
||||||
position{this, "position", TurnoutPosition::Unknown, PropertyFlags::ReadWrite | PropertyFlags::StoreState | PropertyFlags::ScriptReadOnly},
|
position{this, "position", TurnoutPosition::Unknown, PropertyFlags::ReadWrite | PropertyFlags::StoreState | PropertyFlags::ScriptReadOnly},
|
||||||
outputMap{this, "output_map", nullptr, PropertyFlags::ReadOnly | PropertyFlags::Store | PropertyFlags::SubObject | PropertyFlags::NoScript},
|
outputMap{this, "output_map", nullptr, PropertyFlags::ReadOnly | PropertyFlags::Store | PropertyFlags::SubObject | PropertyFlags::NoScript},
|
||||||
setPosition{*this, "set_position", MethodFlags::ScriptCallable, [this](TurnoutPosition value) { return doSetPosition(value); }}
|
setPosition{*this, "set_position", MethodFlags::ScriptCallable, [this](TurnoutPosition value) { return doSetPosition(value); }}
|
||||||
{
|
{
|
||||||
assert(isRailTurnout(tileId));
|
assert(isRailTurnout(tileId_));
|
||||||
|
|
||||||
const bool editable = contains(m_world.state.value(), WorldState::Edit);
|
const bool editable = contains(m_world.state.value(), WorldState::Edit);
|
||||||
|
|
||||||
|
|||||||
@ -38,7 +38,7 @@ class TurnoutRailTile : public RailTile
|
|||||||
Node m_node;
|
Node m_node;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
TurnoutRailTile(World& world, std::string_view _id, TileId tileId, size_t connectors);
|
TurnoutRailTile(World& world, std::string_view _id, TileId tileId_, size_t connectors);
|
||||||
|
|
||||||
void worldEvent(WorldState state, WorldEvent event) override;
|
void worldEvent(WorldState state, WorldEvent event) override;
|
||||||
|
|
||||||
|
|||||||
@ -63,8 +63,8 @@ static std::optional<OutputActionValue> getDefaultActionValue(TurnoutPosition tu
|
|||||||
return {};
|
return {};
|
||||||
}
|
}
|
||||||
|
|
||||||
TurnoutRightRailTile::TurnoutRightRailTile(World& world, std::string_view _id, TileId tileId)
|
TurnoutRightRailTile::TurnoutRightRailTile(World& world, std::string_view _id, TileId tileId_)
|
||||||
: TurnoutRailTile(world, _id, tileId, 3)
|
: TurnoutRailTile(world, _id, tileId_, 3)
|
||||||
{
|
{
|
||||||
// Skip Unknown position
|
// Skip Unknown position
|
||||||
tcb::span<const TurnoutPosition, 2> setPositionValues = tcb::make_span(positionValues).subspan<1>();
|
tcb::span<const TurnoutPosition, 2> setPositionValues = tcb::make_span(positionValues).subspan<1>();
|
||||||
|
|||||||
@ -3,7 +3,7 @@
|
|||||||
*
|
*
|
||||||
* This file is part of the traintastic source code.
|
* This file is part of the traintastic source code.
|
||||||
*
|
*
|
||||||
* Copyright (C) 2020-2022 Reinder Feenstra
|
* Copyright (C) 2020-2022,2024 Reinder Feenstra
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or
|
* This program is free software; you can redistribute it and/or
|
||||||
* modify it under the terms of the GNU General Public License
|
* modify it under the terms of the GNU General Public License
|
||||||
@ -28,7 +28,7 @@
|
|||||||
class TurnoutRightRailTile : public TurnoutRailTile
|
class TurnoutRightRailTile : public TurnoutRailTile
|
||||||
{
|
{
|
||||||
protected:
|
protected:
|
||||||
TurnoutRightRailTile(World& world, std::string_view _id, TileId tileId);
|
TurnoutRightRailTile(World& world, std::string_view _id, TileId tileId_);
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@ -23,8 +23,8 @@
|
|||||||
#include "turnoutsliprailtile.hpp"
|
#include "turnoutsliprailtile.hpp"
|
||||||
#include "../../../../core/attributes.hpp"
|
#include "../../../../core/attributes.hpp"
|
||||||
|
|
||||||
TurnoutSlipRailTile::TurnoutSlipRailTile(World& world, std::string_view _id, TileId tileId)
|
TurnoutSlipRailTile::TurnoutSlipRailTile(World& world, std::string_view _id, TileId tileId_)
|
||||||
: TurnoutRailTile(world, _id, tileId, 4)
|
: TurnoutRailTile(world, _id, tileId_, 4)
|
||||||
, dualMotor{this, "dual_motor", false, PropertyFlags::ReadWrite | PropertyFlags::Store | PropertyFlags::ScriptReadOnly,
|
, dualMotor{this, "dual_motor", false, PropertyFlags::ReadWrite | PropertyFlags::Store | PropertyFlags::ScriptReadOnly,
|
||||||
[this](bool /*value*/)
|
[this](bool /*value*/)
|
||||||
{
|
{
|
||||||
|
|||||||
@ -28,7 +28,7 @@
|
|||||||
class TurnoutSlipRailTile : public TurnoutRailTile
|
class TurnoutSlipRailTile : public TurnoutRailTile
|
||||||
{
|
{
|
||||||
protected:
|
protected:
|
||||||
TurnoutSlipRailTile(World& world, std::string_view _id, TileId tileId);
|
TurnoutSlipRailTile(World& world, std::string_view _id, TileId tileId_);
|
||||||
|
|
||||||
virtual void loaded() override;
|
virtual void loaded() override;
|
||||||
|
|
||||||
|
|||||||
@ -3,7 +3,7 @@
|
|||||||
*
|
*
|
||||||
* This file is part of the traintastic source code.
|
* This file is part of the traintastic source code.
|
||||||
*
|
*
|
||||||
* Copyright (C) 2020-2021,2023 Reinder Feenstra
|
* Copyright (C) 2020-2021,2023-2024 Reinder Feenstra
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or
|
* This program is free software; you can redistribute it and/or
|
||||||
* modify it under the terms of the GNU General Public License
|
* modify it under the terms of the GNU General Public License
|
||||||
@ -27,15 +27,19 @@
|
|||||||
#include "../boardlist.hpp"
|
#include "../boardlist.hpp"
|
||||||
#include "../../world/world.hpp"
|
#include "../../world/world.hpp"
|
||||||
|
|
||||||
Tile::Tile(World& world, std::string_view _id, TileId tileId)
|
Tile::Tile(World& world, std::string_view _id, TileId tileId_)
|
||||||
: IdObject(world, _id)
|
: IdObject(world, _id)
|
||||||
, m_tileId{tileId}
|
, tileId{this, "tile_id", tileId_, PropertyFlags::Constant | PropertyFlags::NoStore | PropertyFlags::NoScript}
|
||||||
, x{this, "x", 0, PropertyFlags::ReadOnly | PropertyFlags::Store}
|
, x{this, "x", 0, PropertyFlags::ReadOnly | PropertyFlags::Store}
|
||||||
, y{this, "y", 0, PropertyFlags::ReadOnly | PropertyFlags::Store}
|
, y{this, "y", 0, PropertyFlags::ReadOnly | PropertyFlags::Store}
|
||||||
, rotate{this, "rotate", TileRotate::Deg0, PropertyFlags::ReadOnly | PropertyFlags::Store}
|
, rotate{this, "rotate", TileRotate::Deg0, PropertyFlags::ReadOnly | PropertyFlags::Store}
|
||||||
, height{this, "height", 1, PropertyFlags::ReadOnly | PropertyFlags::Store}
|
, height{this, "height", 1, PropertyFlags::ReadOnly | PropertyFlags::Store}
|
||||||
, width{this, "width", 1, PropertyFlags::ReadOnly | PropertyFlags::Store}
|
, width{this, "width", 1, PropertyFlags::ReadOnly | PropertyFlags::Store}
|
||||||
{
|
{
|
||||||
|
Attributes::addObjectEditor(tileId, false);
|
||||||
|
Attributes::addValues(tileId, tcb::span<const TileId, 0>{});
|
||||||
|
m_interfaceItems.add(tileId);
|
||||||
|
|
||||||
Attributes::addObjectEditor(x, false);
|
Attributes::addObjectEditor(x, false);
|
||||||
m_interfaceItems.add(x);
|
m_interfaceItems.add(x);
|
||||||
|
|
||||||
|
|||||||
@ -3,7 +3,7 @@
|
|||||||
*
|
*
|
||||||
* This file is part of the traintastic source code.
|
* This file is part of the traintastic source code.
|
||||||
*
|
*
|
||||||
* Copyright (C) 2020-2023 Reinder Feenstra
|
* Copyright (C) 2020-2024 Reinder Feenstra
|
||||||
*
|
*
|
||||||
* This program is free software; you can redistribute it and/or
|
* This program is free software; you can redistribute it and/or
|
||||||
* modify it under the terms of the GNU General Public License
|
* modify it under the terms of the GNU General Public License
|
||||||
@ -39,9 +39,7 @@ class Tile : public IdObject
|
|||||||
friend class WorldLoader;
|
friend class WorldLoader;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
const TileId m_tileId;
|
Tile(World& world, std::string_view _id, TileId tileId_);
|
||||||
|
|
||||||
Tile(World& world, std::string_view _id, TileId tileId);
|
|
||||||
|
|
||||||
Board& getBoard();
|
Board& getBoard();
|
||||||
|
|
||||||
@ -57,15 +55,15 @@ class Tile : public IdObject
|
|||||||
public:
|
public:
|
||||||
static constexpr std::string_view defaultId = "tile";
|
static constexpr std::string_view defaultId = "tile";
|
||||||
|
|
||||||
|
Property<TileId> tileId;
|
||||||
Property<int16_t> x;
|
Property<int16_t> x;
|
||||||
Property<int16_t> y;
|
Property<int16_t> y;
|
||||||
Property<TileRotate> rotate;
|
Property<TileRotate> rotate;
|
||||||
Property<uint8_t> height;
|
Property<uint8_t> height;
|
||||||
Property<uint8_t> width;
|
Property<uint8_t> width;
|
||||||
|
|
||||||
TileId tileId() const { return m_tileId; }
|
|
||||||
inline TileLocation location() const { return {x.value(), y.value()}; }
|
inline TileLocation location() const { return {x.value(), y.value()}; }
|
||||||
inline TileData data() const { return TileData{m_tileId, rotate, width, height, reservedState()}; }
|
inline TileData data() const { return TileData{tileId.value(), rotate, width, height, reservedState()}; }
|
||||||
|
|
||||||
virtual std::optional<std::reference_wrapper<const Node>> node() const { return {}; }
|
virtual std::optional<std::reference_wrapper<const Node>> node() const { return {}; }
|
||||||
virtual std::optional<std::reference_wrapper<Node>> node() { return {}; }
|
virtual std::optional<std::reference_wrapper<Node>> node() { return {}; }
|
||||||
|
|||||||
@ -24,6 +24,7 @@
|
|||||||
#define TRAINTASTIC_SHARED_TRAINTASTIC_BOARD_TILEID_HPP
|
#define TRAINTASTIC_SHARED_TRAINTASTIC_BOARD_TILEID_HPP
|
||||||
|
|
||||||
#include <cstdint>
|
#include <cstdint>
|
||||||
|
#include "../enum/enum.hpp"
|
||||||
|
|
||||||
enum class TileId : uint16_t // 10 bit
|
enum class TileId : uint16_t // 10 bit
|
||||||
{
|
{
|
||||||
@ -203,4 +204,6 @@ constexpr bool isActive(TileId id)
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TRAINTASTIC_ENUM(TileId, "tile_id", 0, {}); // no values defined as we don't need them (at the moment).
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
Laden…
x
In neuem Issue referenzieren
Einen Benutzer sperren