Remove std::make_unique from redstone handler creation
This commit is contained in:
@@ -1,16 +1,15 @@
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "RedstoneHandler.h"
|
||||
#include "../../Blocks/BlockComparator.h"
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
class cRedstoneComparatorHandler : public cRedstoneHandler
|
||||
namespace RedstoneComparatorHandler
|
||||
{
|
||||
static unsigned char GetFrontPowerLevel(NIBBLETYPE a_Meta, unsigned char a_HighestSidePowerLevel, unsigned char a_HighestRearPowerLevel)
|
||||
inline unsigned char GetFrontPowerLevel(NIBBLETYPE a_Meta, unsigned char a_HighestSidePowerLevel, unsigned char a_HighestRearPowerLevel)
|
||||
{
|
||||
if (cBlockComparatorHandler::IsInSubtractionMode(a_Meta))
|
||||
{
|
||||
@@ -24,7 +23,7 @@ class cRedstoneComparatorHandler : public cRedstoneHandler
|
||||
}
|
||||
}
|
||||
|
||||
virtual unsigned char GetPowerDeliveredToPosition(const cChunk & a_Chunk, Vector3i a_Position, BLOCKTYPE a_BlockType, Vector3i a_QueryPosition, BLOCKTYPE a_QueryBlockType, bool IsLinked) const override
|
||||
inline unsigned char GetPowerDeliveredToPosition(const cChunk & a_Chunk, Vector3i a_Position, BLOCKTYPE a_BlockType, Vector3i a_QueryPosition, BLOCKTYPE a_QueryBlockType, bool IsLinked)
|
||||
{
|
||||
UNUSED(a_QueryPosition);
|
||||
UNUSED(a_QueryBlockType);
|
||||
@@ -36,7 +35,7 @@ class cRedstoneComparatorHandler : public cRedstoneHandler
|
||||
);
|
||||
}
|
||||
|
||||
static unsigned char GetPowerLevel(cChunk & a_Chunk, Vector3i Position, BLOCKTYPE BlockType, NIBBLETYPE Meta)
|
||||
inline unsigned char GetPowerLevel(cChunk & a_Chunk, Vector3i Position, BLOCKTYPE BlockType, NIBBLETYPE Meta)
|
||||
{
|
||||
UInt8 SignalStrength = 0;
|
||||
auto RearCoordinate = cBlockComparatorHandler::GetRearCoordinate(Position, Meta & 0x3);
|
||||
@@ -71,22 +70,16 @@ class cRedstoneComparatorHandler : public cRedstoneHandler
|
||||
});
|
||||
|
||||
const auto RearType = RearChunk->GetBlock(RearCoordinate);
|
||||
const auto PotentialSourceHandler = cIncrementalRedstoneSimulator::GetComponentHandler(RearType);
|
||||
if (PotentialSourceHandler == nullptr)
|
||||
{
|
||||
return SignalStrength;
|
||||
}
|
||||
|
||||
return std::max(
|
||||
SignalStrength,
|
||||
PotentialSourceHandler->GetPowerDeliveredToPosition(
|
||||
RedstoneHandler::GetPowerDeliveredToPosition(
|
||||
*RearChunk, RearCoordinate, RearType,
|
||||
cIncrementalRedstoneSimulatorChunkData::RebaseRelativePosition(a_Chunk, *RearChunk, Position), BlockType, false
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
virtual void Update(cChunk & a_Chunk, cChunk & CurrentlyTicking, Vector3i a_Position, BLOCKTYPE a_BlockType, NIBBLETYPE a_Meta, PoweringData a_PoweringData) const override
|
||||
inline void Update(cChunk & a_Chunk, cChunk & CurrentlyTicking, Vector3i a_Position, BLOCKTYPE a_BlockType, NIBBLETYPE a_Meta, PoweringData a_PoweringData)
|
||||
{
|
||||
// Note that a_PoweringData here contains the maximum * side * power level, as specified by GetValidSourcePositions
|
||||
// LOGD("Evaluating ALU the comparator (%d %d %d)", a_Position.x, a_Position.y, a_Position.z);
|
||||
@@ -132,7 +125,7 @@ class cRedstoneComparatorHandler : public cRedstoneHandler
|
||||
UpdateAdjustedRelative(a_Chunk, CurrentlyTicking, a_Position, cBlockComparatorHandler::GetFrontCoordinate(a_Position, a_Meta & 0x3) - a_Position);
|
||||
}
|
||||
|
||||
virtual void ForValidSourcePositions(const cChunk & a_Chunk, Vector3i a_Position, BLOCKTYPE a_BlockType, NIBBLETYPE a_Meta, SourceCallback Callback) const override
|
||||
inline void ForValidSourcePositions(const cChunk & a_Chunk, Vector3i a_Position, BLOCKTYPE a_BlockType, NIBBLETYPE a_Meta, ForEachSourceCallback & Callback)
|
||||
{
|
||||
UNUSED(a_Chunk);
|
||||
UNUSED(a_BlockType);
|
||||
|
||||
Reference in New Issue
Block a user