51 lines
1.4 KiB
C++
51 lines
1.4 KiB
C++
#pragma once
|
|
#include "GameRuleDefinition.h"
|
|
#include "ConsoleSchematicFile.h"
|
|
|
|
class AABB;
|
|
class Vec3;
|
|
class LevelChunk;
|
|
class LevelGenerationOptions;
|
|
class GRFObject;
|
|
|
|
class ApplySchematicRuleDefinition : public GameRuleDefinition
|
|
{
|
|
private:
|
|
LevelGenerationOptions *m_levelGenOptions;
|
|
wstring m_schematicName;
|
|
ConsoleSchematicFile *m_schematic;
|
|
Vec3 *m_location;
|
|
AABB *m_locationBox;
|
|
ConsoleSchematicFile::ESchematicRotation m_rotation;
|
|
int m_dimension;
|
|
|
|
__int64 m_totalBlocksChanged;
|
|
__int64 m_totalBlocksChangedLighting;
|
|
bool m_completed;
|
|
|
|
void updateLocationBox();
|
|
public:
|
|
ApplySchematicRuleDefinition(LevelGenerationOptions *levelGenOptions);
|
|
~ApplySchematicRuleDefinition();
|
|
|
|
virtual ConsoleGameRules::EGameRuleType getActionType() { return ConsoleGameRules::eGameRuleType_ApplySchematic; }
|
|
|
|
virtual void writeAttributes(DataOutputStream *dos, UINT numAttrs);
|
|
virtual void addAttribute(const wstring &attributeName, const wstring &attributeValue);
|
|
|
|
void processSchematic(AABB *chunkBox, LevelChunk *chunk);
|
|
void processSchematicLighting(AABB *chunkBox, LevelChunk *chunk);
|
|
|
|
bool checkIntersects(int x0, int y0, int z0, int x1, int y1, int z1);
|
|
int getMinY();
|
|
|
|
bool isComplete() { return m_completed; }
|
|
|
|
wstring getSchematicName() { return m_schematicName; }
|
|
|
|
/** 4J-JEV:
|
|
* This GameRuleDefinition contains limited game state.
|
|
* Reset any state to how it should be before a new game.
|
|
*/
|
|
void reset();
|
|
}; |