12GX_CORE_NAMESPACE_BEGIN()
39 class GxBlockParameterPropertyDynamic;
70 void render(
const GxPoint2& offset, f32 zoom);
76 void changeBottomBlock(
GxBlock* pBlock);
80 void removeSelectBlocks(
void);
82 void removeBlock(
GxBlock* pBlock);
102 GxBlock* getBlock(
const GxPoint2& position);
104 static GxBlock* getTopParentBlock(GxBlockParameter* pBlockParameter);
112 for (
auto* pObject : _blocks)
135 GxBlockStart* _pBlockStart;
155 static constexpr u32 MARGIN_WIDTH = 2;
156 static constexpr u32 MARGIN_HEIGHT = 2;
157 static constexpr u32 MARGIN_HEIGHT_HALF = MARGIN_HEIGHT / 2;
169 , _pEnum(nullptr), _enumCount(0)
197 u32 getWidth(
void)
const;
205 constexpr void setEnum(
const GX_ENUM* pEnum) { _pEnum = pEnum; }
207 constexpr void setEnumCount(u32 count) { _enumCount = count; }
216 GxBlockParameter* _pBlock;
251 ARGUMENT_1 = ARGUMENT_START,
255 ARGUMENT_END = ARGUMENT_4,
259 static constexpr u32 CHAR_WIDTH = 10;
260 static constexpr u32 CONNECT_HEIGHT = 8;
261 static constexpr u32 HIT_CONNECT_WIDTH = 2;
262 static constexpr u32 ARGUMENT_EDGE_WIDTH = 2;
263 static const u32 FONT_HEIGHT;
264 static const u32 FONT_WIDTH;
265 static const GxColor COLOR_TEXT;
266 static const GxColor COLOR_SELECT;
267 static const GxColor COLOR_EXECUTED;
268 static const GxColor COLOR_HIT_CONNECT;
269 static const GxColor COLOR_COMMAND;
270 static const GxColor COLOR_SYSTEM;
296 GX_FORCE_INLINE
void updatePosition(
void) { updatePositionSub(_position.
_x); }
298 virtual void updateSize(
void);
300 virtual void render(
const GxPoint2& offset, f32 zoom);
302 virtual void renderBlock(
const GxPoint2& position, f32 zoom) = 0;
304 void renderArguments(
const GxPoint2& position, f32 zoom);
306 GX_FORCE_INLINE
void addArgument(GxArgument& argument) { _arguments.
addBottom(&argument); }
310 GX_FORCE_INLINE
virtual CONNECT isHit(
const GxBlock& )
const {
return CONNECT::NONE; }
312 GX_FORCE_INLINE
virtual s32 isHitArgument(
const GxBlock& )
const {
return -1; }
314 s32 isHitPositionArgument(
const GxPoint2& position)
const;
318 GX_FORCE_INLINE
virtual void connect(CONNECT ,
GxBlock* ) {}
321 GX_FORCE_INLINE
virtual void updatePositionSub(s32 ) {}
323 void updatePositionArgument(
const GxPoint2& position);
340 constexpr void setParent(
GxBlock* pParent) { _pParent = pParent; }
343 constexpr u32 getArgumentCount(void) const { return _arguments.getCount(); }
350 u32 getArgumentDepth(
void)
const;
352 GX_FORCE_INLINE
const GxPoint2& getPosition(
void)
const {
return _position; }
354 GX_FORCE_INLINE
void setPosition(
const GxPoint2& position) { _position = position; }
356 GX_FORCE_INLINE
const GxSize& getSize(
void)
const {
return _size; }
358 GX_FORCE_INLINE
void setSize(
const GxSize& size) { _size = size; }
360 GX_FORCE_INLINE
b32 isSelect(
void)
const {
return _isSelect; }
362 GX_FORCE_INLINE
void setSelect(
b32 enable) { _isSelect = enable; }
364 constexpr CONNECT getHitConnect(
void)
const {
return _hitConnect; }
366 constexpr void setHitConnect(CONNECT connect) { _hitConnect = connect; }
368 GX_FORCE_INLINE
virtual b32 isMovable(
void)
const {
return true; }
370 GX_FORCE_INLINE
virtual b32 isRemovable(
void)
const {
return true; }
374 GX_FORCE_INLINE
virtual void getHelp(
GxString& )
const {}
423 GxBlockCommand(
void) : _pPrevious(nullptr), _pNext(nullptr), _pFunction(nullptr), _isBreak(false)
439 CONNECT isHit(
const GxBlock& block)
const override;
441 void connect(CONNECT connect,
GxBlock* pBlock)
override;
443 void render(
const GxPoint2& offset, f32 zoom)
override;
446 void updatePositionSub(s32 x)
override;
471 constexpr void setPrevious(
GxBlockCommand* pBlock) { _pPrevious = pBlock; }
473 constexpr void setNext(
GxBlockCommand* pBlock) { _pNext = pBlock; }
475 GxSize getConnectBlocksSize(
void)
const;
477 GX_FORCE_INLINE
void setBreak(
b32 enable) { _isBreak = enable; }
479 GX_FORCE_INLINE
b32 isBreak(
void)
const {
return _isBreak; }
481 GX_FORCE_INLINE
void setExecuted(
b32 enable) { _isExecuted = enable; }
483 GX_FORCE_INLINE
b32 isExecuted(
void)
const {
return _isExecuted; }
485 void getHelp(
GxString& help)
const override;
541 void updateSize(
void)
override;
543 void renderBlock(
const GxPoint2& position, f32 zoom)
override;
546 void updatePositionSub(s32 x)
override;
548 s32 isHitArgument(
const GxBlock& block)
const override;
647 void renderBlock(
const GxPoint2& position, f32 zoom)
override;
649 void updateSize(
void)
override;
652 void updatePositionSub(s32 x)
override;
654 s32 isHitArgument(
const GxBlock& block)
const override;
671 GX_FORCE_INLINE
b32 isDynamic(
void)
const {
return !_pProperty->
getOwnerRtti(); }
725 void renderBlock(
const GxPoint2& position, f32 zoom)
override;
727 CONNECT isHit(
const GxBlock& block)
const override;
729 void updateSize(
void)
override;
740 GX_FORCE_INLINE
b32 isRemovable(
void)
const override {
return false; }
743 constexpr GxProperty* getProperty(u32 index) const { return _pProperties[index]; }
797 void renderBlock(
const GxPoint2& position, f32 zoom)
override;
799 CONNECT isHit(
const GxBlock& block)
const override;
801 s32 isHitArgument(
const GxBlock& block)
const override;
803 void updateSize(
void)
override;
805 void updatePositionSub(s32 x)
override;
816 GX_FORCE_INLINE
b32 isMovable(
void)
const override {
return false; }
818 GX_FORCE_INLINE
b32 isRemovable(
void)
const override {
return false; }
839 static constexpr u32 MARGIN_BRANCH_LEFT = 1;
849 GxBlockBranch(u32 branchCount) : _branchCount(branchCount){ _pBranch[0] =
nullptr; _pBranch[1] =
nullptr; }
854 GxBlockBranch(
void) : _branchCount(1) { _pBranch[0] =
nullptr; _pBranch[1] =
nullptr; }
864 void updateSize(
void)
override;
866 void renderBlock(
const GxPoint2& position, f32 zoom)
override;
868 CONNECT isHit(
const GxBlock& block)
const override;
870 b32 isIncluding(
const GxPoint2& position)
const override;
872 void connect(CONNECT connect,
GxBlock* pBlock)
override;
875 void updatePositionSub(s32 x)
override;
877 s32 isHitArgument(
const GxBlock& block)
const override;
893 s32 isBranch(GxBlockCommand* pBlock) const;
901 virtual u32 getNameWidth(
void)
const = 0;
951 void renderBlock(
const GxPoint2& position, f32 zoom)
override;
964 GX_FORCE_INLINE
void setTrue(
GxBlockCommand* pBlock) { setBranch(pBlock); }
967 GX_FORCE_INLINE u32 getNameWidth(
void)
const override {
return GX_STRLEN(
"if") * FONT_WIDTH; }
1006 void renderBlock(
const GxPoint2& position, f32 zoom)
override;
1019 GX_FORCE_INLINE
void setFalse(
GxBlockCommand* pBlock) { setBranch(pBlock, 1); }
1058 void renderBlock(
const GxPoint2& position, f32 zoom)
override;
1069 GX_FORCE_INLINE u32 getNameWidth(
void)
const override {
return GX_STRLEN(
"while") * FONT_WIDTH; }
1111 void renderBlock(
const GxPoint2& position, f32 zoom)
override;
1126 constexpr void setArgumentIndex(s32 index) { _argumentIndex = index; }
1129 GX_FORCE_INLINE GxFunction::GxType getType(void) const { return _type; }
1181 void renderBlock(
const GxPoint2& position, f32 zoom)
override;
1184 void updateSize(
void)
override;
1203 GX_FORCE_INLINE
b32 isDynamic(
void)
const {
return !_pProperty->
getOwnerRtti(); }
1255 void renderBlock(
const GxPoint2& position, f32 zoom)
override;
1258 void updatePositionSub(s32 x)
override;
1260 void updateSize(
void)
override;
1262 s32 isHitArgument(
const GxBlock& block)
const override;
1277 GX_FORCE_INLINE
void getHelp(
GxString& text)
const override { _pFunction->getHelp(text); }
1346GX_CORE_NAMESPACE_END()
#define GX_PROHIBIT_CLASS_BASE_REFERENCE(__CLASS__)
GxClassBaseReference継承の禁止宣言(new以外の生成禁止 + コピー禁止)
Definition GxBase.h:244
T gx_cast(GxClassBaseRoot *pObject)
Definition GxBase.h:264
#define GX_PROHIBIT_CLASS_BASE(__CLASS__)
GxClassBase継承の禁止宣言
Definition GxBase.h:240
void GxTypedObject
その他
Definition GxDefine.h:213
#define GX_STRLEN(__STRING__)
文字列の長さ取得
Definition GxString.h:604
配列クラス
Definition GxArrayClassBase.h:18
void addBottom(GxClassBaseRoot *pObject)
末尾に追加
Definition GxArrayClassBase.cpp:59
オブジェクト基底クラス
Definition GxBase.h:88
参照オブジェクト基底クラス
Definition GxBase.h:122
基底クラス
Definition GxBase.h:51
型情報
Definition GxFunction.h:48
関数型情報
Definition GxFunction.h:18
TYPE
型定義
Definition GxFunction.h:28
static const u32 ARGUMENT_MAX
引数の最大数
Definition GxFunction.h:234
プロパティクラス
Definition GxProperty.h:48
constexpr GxRtti * getOwnerRtti(void) const
所持者のRTTIを取得
Definition GxProperty.h:1031
static constexpr u32 DEFAULT_ID
デフォルトID
Definition GxProperty.h:126
プロパティテーブルクラス
Definition GxProperty.h:1641
実行時型情報クラス
Definition GxRtti.h:154
引数クラス
Definition GxScript.h:144
GxArgument(void)
デフォルトコンストラクタ
Definition GxScript.h:167
GX_FORCE_INLINE GxFunction::GxType getType(void) const
型を取得
Definition GxScript.h:194
GX_FORCE_INLINE GxFunction::GxValue getValue(void) const
値を取得
Definition GxScript.h:192
constexpr GxBlockParameter * getBlock(void) const
ブロックを取得
Definition GxScript.h:190
分岐ブロッククラス
Definition GxScript.h:828
GxBlockBranch(u32 branchCount)
コンストラクタ
Definition GxScript.h:849
void initialize(void) override
初期化
Definition GxScript.cpp:1989
constexpr GxBlockCommand * getBranch(u32 index=0) const
分岐先のブロックを取得
Definition GxScript.h:887
void getConnectBlocksSub(GxArrayClassBase &blocks, b32 isUnique=false) const override
接続ブロックリストを取得
Definition GxScript.cpp:2334
constexpr u32 getBranchCount(void) const
分岐数を取得
Definition GxScript.h:895
命令動的関数ブロッククラス
Definition GxScript.h:558
GX_FORCE_INLINE void setScript(GxScript &script)
スクリプトを設定
Definition GxScript.h:596
GxBlockCommandFunctionDynamic(void)
デフォルトコンストラクタ
Definition GxScript.h:578
GxFunction::GxValue execute(GxClassBaseRoot *pObject, GxScriptRuntime &runtime, u32 argumentIndex=0, GxFunction::GxValue *pValues=nullptr) const override
実行
Definition GxScript.cpp:1416
命令関数ブロッククラス
Definition GxScript.h:509
void initialize(void) override
初期化
Definition GxScript.cpp:1280
GxBlockCommandFunction(void)
デフォルトコンストラクタ
Definition GxScript.h:531
命令ブロッククラス
Definition GxScript.h:399
constexpr GxBlockCommand * getPrevious(void) const
前のブロックを取得
Definition GxScript.h:456
GxBlockCommand(void)
デフォルトコンストラクタ
Definition GxScript.h:423
GxBlockCommand(GxFunction &function)
コンストラクタ
Definition GxScript.h:416
GxBlockCommand * getFirst(void) const
先頭のブロックを取得
Definition GxScript.cpp:1088
void setFunction(GxFunction &function)
関数を設定
Definition GxScript.cpp:1131
GxFunction::GxValue execute(GxClassBaseRoot *pObject, GxScriptRuntime &runtime, u32 argumentIndex=0, GxFunction::GxValue *pValues=nullptr) const override
実行
Definition GxScript.cpp:1030
constexpr GxFunction * getFunction(void) const
関数を取得
Definition GxScript.h:466
constexpr GxBlockCommand * getNext(void) const
次のブロックを取得
Definition GxScript.h:458
void getConnectBlocks(GxArrayClassBase &blocks, b32 isUnique=false) const
接続ブロックリストを取得
Definition GxScript.cpp:1117
GxBlockCommand * getLast(void) const
最後のブロックを取得
Definition GxScript.cpp:1102
代入ブロッククラス
Definition GxScript.h:613
constexpr void setProperty(GxProperty &property)
プロパティを設定
Definition GxScript.h:666
constexpr u32 getPropertyId(void) const
プロパティIDを取得
Definition GxScript.h:668
GxFunction::GxValue execute(GxClassBaseRoot *pObject, GxScriptRuntime &runtime, u32 argumentIndex=0, GxFunction::GxValue *pValues=nullptr) const override
実行
Definition GxScript.cpp:1499
void initialize(void) override
初期化
Definition GxScript.cpp:1479
constexpr GxProperty * getProperty(void) const
プロパティを取得
Definition GxScript.h:664
終了ブロッククラス
Definition GxScript.h:763
GxBlockEnd(GxFunction &function)
コンストラクタ
Definition GxScript.h:780
GxFunction::GxValue execute(GxClassBaseRoot *pObject, GxScriptRuntime &runtime, u32 argumentIndex=0, GxFunction::GxValue *pValues=nullptr) const override
実行
Definition GxScript.cpp:1864
void initialize(void) override
初期化
Definition GxScript.cpp:1842
標準ブロッククラス
Definition GxScript.h:231
virtual GX_FORCE_INLINE GxFunction::GxValue execute(GxClassBaseRoot *, GxScriptRuntime &, u32=0, GxFunction::GxValue *=nullptr) const
実行
Definition GxScript.h:293
virtual void getConnectBlocksSub(GxArrayClassBase &blocks, b32 isUnique=false) const
接続ブロックリストを取得
Definition GxScript.cpp:971
constexpr GxBlock * getParent(void) const
設定したブロックを取得
Definition GxScript.h:335
GxBlockCommand * getParentCommand(void) const
設定したコマンドブロックを取得
Definition GxScript.cpp:910
GxBlock(void)
デフォルトコンストラクタ
Definition GxScript.cpp:786
void cleanup(void) override
delete直前に呼び出される関数
Definition GxScript.cpp:799
GX_FORCE_INLINE GxArgument * getArgument(u32 index) const
引数を取得
Definition GxScript.h:345
virtual void initialize(void)=0
初期化
条件分岐2ブロッククラス
Definition GxScript.h:977
constexpr GxBlockCommand * getFalse(void) const
偽のブロックを取得
Definition GxScript.h:1016
GxFunction::GxValue execute(GxClassBaseRoot *pObject, GxScriptRuntime &runtime, u32 argumentIndex=0, GxFunction::GxValue *pValues=nullptr) const override
実行
Definition GxScript.cpp:2438
GxBlockIfElse(void)
デフォルトコンストラクタ
Definition GxScript.h:994
条件分岐1ブロッククラス
Definition GxScript.h:920
GxBlockIf(u32 branchCount)
コンストラクタ
Definition GxScript.h:939
constexpr GxBlockCommand * getTrue(void) const
真のブロックを取得
Definition GxScript.h:961
GxFunction::GxValue execute(GxClassBaseRoot *pObject, GxScriptRuntime &runtime, u32 argumentIndex=0, GxFunction::GxValue *pValues=nullptr) const override
実行
Definition GxScript.cpp:2357
GxBlockIf(void)
デフォルトコンストラクタ
Definition GxScript.h:937
繰り返しブロッククラス
Definition GxScript.h:1029
GxBlockLoop(void)
デフォルトコンストラクタ
Definition GxScript.h:1046
GxFunction::GxValue execute(GxClassBaseRoot *pObject, GxScriptRuntime &runtime, u32 argumentIndex=0, GxFunction::GxValue *pValues=nullptr) const override
実行
Definition GxScript.cpp:2521
パラメータ動的関数ブロッククラス
Definition GxScript.h:1295
constexpr void setScript(GxScript &script)
スクリプトを設定
Definition GxScript.h:1333
GxFunction::GxValue execute(GxClassBaseRoot *pObject, GxScriptRuntime &runtime, u32 argumentIndex=0, GxFunction::GxValue *pValues=nullptr) const override
実行
Definition GxScript.cpp:3038
パラメータ関数ブロッククラス
Definition GxScript.h:1221
GxBlockParameterFunction(void)
デフォルトコンストラクタ
Definition GxScript.h:1243
void initialize(void) override
初期化
Definition GxScript.cpp:2803
GxFunction::GxValue execute(GxClassBaseRoot *pObject, GxScriptRuntime &runtime, u32 argumentIndex=0, GxFunction::GxValue *pValues=nullptr) const override
実行
Definition GxScript.cpp:2831
constexpr GxFunction * getFunction(void) const
関数を取得
Definition GxScript.h:1272
constexpr void setFunction(GxFunction &function)
関数を設定
Definition GxScript.h:1274
パラメータブロッククラス
Definition GxScript.h:1079
GX_FORCE_INLINE void initialize(void) override
初期化
Definition GxScript.h:1098
GxBlockParameter(void)
デフォルトコンストラクタ
Definition GxScript.h:1101
constexpr s32 getArgumentIndex(void) const
設定した引数のインデックスを取得
Definition GxScript.h:1123
GxBlockParameter(GxFunction::GxType type)
コンストラクタ
Definition GxScript.h:1096
GX_FORCE_INLINE void setType(GxFunction::GxType type)
型を設定
Definition GxScript.h:1131
パラメータプロパティブロッククラス
Definition GxScript.h:1149
GxFunction::GxValue execute(GxClassBaseRoot *pObject, GxScriptRuntime &runtime, u32 argumentIndex=0, GxFunction::GxValue *pValues=nullptr) const override
実行
Definition GxScript.cpp:2690
constexpr void setProperty(GxProperty &property)
プロパティを設定
Definition GxScript.h:1196
GxBlockParameterProperty(void)
デフォルトコンストラクタ
Definition GxScript.h:1169
constexpr u32 getPropertyId(void) const
プロパティIDを取得
Definition GxScript.h:1198
constexpr GxProperty * getProperty(void) const
プロパティを取得
Definition GxScript.h:1194
static b32 isSupport(GxProperty &property)
サポートしているプロパティ判定
Definition GxScript.cpp:2758
開始ブロッククラス
Definition GxScript.h:689
void initialize(void) override
初期化
Definition GxScript.cpp:1723
void cleanup(void) override
delete直前に呼び出される関数
Definition GxScript.cpp:1710
GX_FORCE_INLINE GxFunction::GxValue execute(GxClassBaseRoot *, GxScriptRuntime &, u32=0, GxFunction::GxValue *=nullptr) const override
実行
Definition GxScript.h:722
GxProperty * getPropertyFromId(u32 id) const
IDからプロパティを取得
Definition GxScript.cpp:1821
スクリプトクラス
Definition GxScript.h:19
constexpr GxBlockStart * getBlockStart(void) const
開始ブロックを取得
Definition GxScript.h:99
GX_FORCE_INLINE GxArrayClassBase & getBlocks(void)
ブロックリストを取得
Definition GxScript.h:122
void getBlocks(GxArrayClassBase &blocks) const
ブロックリストを取得
Definition GxScript.h:110
スクリプトランタイムクラス
Definition GxScriptRuntime.h:19
GUI用
Definition GxDefine.h:194
値の共用体
Definition GxFunction.h:81
座標
Definition GxStruct.h:867
s32 _x
X値
Definition GxStruct.h:941
矩形
Definition GxStruct.h:951
GX_INLINE b32 isIncluding(const GxRect &rect) const
内包判定
Definition GxStruct.inl:1801
サイズ
Definition GxStruct.h:730
文字列型クラス
Definition GxString.h:18
32bitブーリアン
Definition GxDefine.h:173