use meters in config
This commit is contained in:
@@ -47,8 +47,8 @@ QPointF BeltSystem::slotWorldPos(QPoint tile, Rotation dir, double progress)
|
||||
// Construction / placement
|
||||
// ---------------------------------------------------------------------------
|
||||
|
||||
BeltSystem::BeltSystem(double beltSpeedTilesPerSecond)
|
||||
: m_progressPerTick(beltSpeedTilesPerSecond * kTickDurationSeconds)
|
||||
BeltSystem::BeltSystem(double beltSpeed_tps)
|
||||
: m_progressPerTick_tpt(beltSpeed_tps * kTickDurationSeconds)
|
||||
{
|
||||
}
|
||||
|
||||
@@ -414,7 +414,7 @@ void BeltSystem::advanceProgress()
|
||||
|
||||
for (std::size_t i = 0; i < bt.itemSlots.size(); ++i)
|
||||
{
|
||||
bt.itemSlots[i].progress += m_progressPerTick;
|
||||
bt.itemSlots[i].progress += m_progressPerTick_tpt;
|
||||
|
||||
// Absolute cap: slot i cannot exceed 1.0 - i * 0.25.
|
||||
const double absoluteCap = 1.0 - i * 0.25;
|
||||
@@ -442,7 +442,7 @@ void BeltSystem::advanceProgress()
|
||||
|
||||
for (std::size_t i = 0; i < st.back.size(); ++i)
|
||||
{
|
||||
st.back[i].progress += m_progressPerTick;
|
||||
st.back[i].progress += m_progressPerTick_tpt;
|
||||
const double absoluteCap = 0.5 - i * 0.25;
|
||||
if (st.back[i].progress > absoluteCap)
|
||||
{
|
||||
@@ -465,7 +465,7 @@ void BeltSystem::advanceProgress()
|
||||
|
||||
if (st.frontA)
|
||||
{
|
||||
st.frontA->progress += m_progressPerTick;
|
||||
st.frontA->progress += m_progressPerTick_tpt;
|
||||
if (st.frontA->progress > 1.0)
|
||||
{
|
||||
st.frontA->progress = 1.0;
|
||||
@@ -474,7 +474,7 @@ void BeltSystem::advanceProgress()
|
||||
|
||||
if (st.frontB)
|
||||
{
|
||||
st.frontB->progress += m_progressPerTick;
|
||||
st.frontB->progress += m_progressPerTick_tpt;
|
||||
if (st.frontB->progress > 1.0)
|
||||
{
|
||||
st.frontB->progress = 1.0;
|
||||
@@ -492,7 +492,7 @@ void BeltSystem::advanceTunnelProgress()
|
||||
|
||||
for (std::size_t i = 0; i < te.itemSlots.size(); ++i)
|
||||
{
|
||||
te.itemSlots[i].progress += m_progressPerTick;
|
||||
te.itemSlots[i].progress += m_progressPerTick_tpt;
|
||||
|
||||
const double absoluteCap = 1.0 - i * 0.25;
|
||||
if (te.itemSlots[i].progress > absoluteCap)
|
||||
@@ -518,7 +518,7 @@ void BeltSystem::advanceTunnelProgress()
|
||||
|
||||
for (std::size_t i = 0; i < tx.itemSlots.size(); ++i)
|
||||
{
|
||||
tx.itemSlots[i].progress += m_progressPerTick;
|
||||
tx.itemSlots[i].progress += m_progressPerTick_tpt;
|
||||
|
||||
const double absoluteCap = 1.0 - i * 0.25;
|
||||
if (tx.itemSlots[i].progress > absoluteCap)
|
||||
@@ -542,7 +542,7 @@ void BeltSystem::advanceTunnelProgress()
|
||||
for (std::size_t i = 0; i < link.items.size(); ++i)
|
||||
{
|
||||
TunnelTransitItem& ti = link.items[i];
|
||||
ti.progress += m_progressPerTick;
|
||||
ti.progress += m_progressPerTick_tpt;
|
||||
if (ti.progress > link.length)
|
||||
{
|
||||
ti.progress = link.length;
|
||||
|
||||
@@ -31,7 +31,7 @@ struct VisualItem
|
||||
class BeltSystem
|
||||
{
|
||||
public:
|
||||
explicit BeltSystem(double beltSpeedTilesPerSecond);
|
||||
explicit BeltSystem(double beltSpeed_tps);
|
||||
|
||||
// -- Placement -----------------------------------------------------------
|
||||
// Register a new belt tile. Any items already on this tile are cleared.
|
||||
@@ -170,7 +170,7 @@ private:
|
||||
std::vector<TunnelTransitItem> items; // front (highest progress) to back
|
||||
};
|
||||
|
||||
double m_progressPerTick; // beltSpeedTilesPerSecond / kTickRateHz
|
||||
double m_progressPerTick_tpt; // beltSpeed_tps / kTickRateHz
|
||||
|
||||
std::map<std::pair<int, int>, BeltTile> m_belts;
|
||||
std::map<std::pair<int, int>, SplitterTile> m_splitters;
|
||||
|
||||
@@ -33,7 +33,7 @@ Simulation::Simulation(GameConfig config, unsigned int seed)
|
||||
, m_hqProxyEntity(entt::null)
|
||||
, m_playerStation1Entity(entt::null)
|
||||
, m_playerStation2Entity(entt::null)
|
||||
, m_beltSystem(m_config.world.beltSpeedTilesPerSecond)
|
||||
, m_beltSystem(m_config.world.beltSpeed_tps)
|
||||
{
|
||||
m_currentEnemyStationEntities[0] = entt::null;
|
||||
m_currentEnemyStationEntities[1] = entt::null;
|
||||
@@ -110,7 +110,7 @@ void Simulation::reset(unsigned int seed)
|
||||
m_schematicDropEvents.clear();
|
||||
|
||||
m_admin.clear();
|
||||
m_beltSystem = BeltSystem(m_config.world.beltSpeedTilesPerSecond);
|
||||
m_beltSystem = BeltSystem(m_config.world.beltSpeed_tps);
|
||||
m_buildingSystem = std::make_unique<BuildingSystem>(
|
||||
m_config,
|
||||
m_beltSystem,
|
||||
@@ -244,11 +244,13 @@ void Simulation::placeInitialStructures()
|
||||
const float psHp = static_cast<float>(
|
||||
m_config.stations.playerStation.hpFormula.evaluate(psLevel));
|
||||
|
||||
const float tileSize = static_cast<float>(m_config.world.tileSize_m);
|
||||
|
||||
WeaponComponent psWeapon;
|
||||
psWeapon.damage = static_cast<float>(
|
||||
m_config.stations.playerStation.damageFormula.evaluate(psLevel));
|
||||
psWeapon.range = static_cast<float>(
|
||||
m_config.stations.playerStation.rangeFormula.evaluate(psLevel));
|
||||
psWeapon.range_tiles = static_cast<float>(
|
||||
m_config.stations.playerStation.rangeFormula.evaluate(psLevel)) / tileSize;
|
||||
psWeapon.fireRateHz = static_cast<float>(
|
||||
m_config.stations.playerStation.fireRateFormula.evaluate(psLevel));
|
||||
psWeapon.cooldownTicks = 0.0f;
|
||||
@@ -303,6 +305,7 @@ void Simulation::placeInitialStructures()
|
||||
|
||||
void Simulation::placeEnemyStationSet(int generation)
|
||||
{
|
||||
const float tileSize = static_cast<float>(m_config.world.tileSize_m);
|
||||
const ParsedSurfaceMask esParsed =
|
||||
parseSurfaceMask(m_config.stations.enemyStation.surfaceMask, Rotation::East);
|
||||
|
||||
@@ -318,8 +321,8 @@ void Simulation::placeEnemyStationSet(int generation)
|
||||
WeaponComponent esWeapon;
|
||||
esWeapon.damage = static_cast<float>(
|
||||
m_config.stations.enemyStation.damageFormula.evaluate(genD));
|
||||
esWeapon.range = static_cast<float>(
|
||||
m_config.stations.enemyStation.rangeFormula.evaluate(genD));
|
||||
esWeapon.range_tiles = static_cast<float>(
|
||||
m_config.stations.enemyStation.rangeFormula.evaluate(genD)) / tileSize;
|
||||
esWeapon.fireRateHz = static_cast<float>(
|
||||
m_config.stations.enemyStation.fireRateFormula.evaluate(genD));
|
||||
esWeapon.cooldownTicks = 0.0f;
|
||||
|
||||
Reference in New Issue
Block a user