OROCHI
 
Loading...
Searching...
No Matches
GxResScript.h
Go to the documentation of this file.
1//===========================================================================
9//===========================================================================
10#pragma once
11
12GX_CORE_NAMESPACE_BEGIN()
13class GxGuiPropertyComboBoxEnum;
14class GxGuiPropertyComboBoxRtti;
15//===========================================================================
17//===========================================================================
18class GxResScript : public GxResBase
19{
20 //-------------------------------------------------------------
22 //-------------------------------------------------------------
24public:
26 enum class RTTI_TYPE
27 {
28 UNIT,
29 STAGE,
30 SYSTEM,
31 MAX,
32 };
33#if GX_DEVELOP
35 GX_ENUM_TABLE_MAX(RTTI_TYPE)
37 static const GxRtti* RTTI_TABLE[static_cast<u32>(RTTI_TYPE::MAX)];
38#endif //GX_DEVELOP
40 static const GxRtti* MOD_RTTI_TABLE[static_cast<u32>(RTTI_TYPE::MAX)];
41
42 // RTTI定義
43 GX_RTTI_RESOURCE_NAME_ICON(GxResScript, GxResBase, "スクリプトリソース", GxRtti::ICON_TYPE::TEXT)
44 // GxClassBaseReference継承クラス用禁止宣言
46
47
49 {
50 //-------------------------------------------------------------
52 //-------------------------------------------------------------
54 public:
55 // RTTI定義
56 GX_RTTI_CLASS(GxDynamicFunction, GxClassBase)
57
58
59 //-----------------------------------------------------------
61 //-----------------------------------------------------------
63
65 GxDynamicFunction(void) : _pFunction(nullptr) {}
67 ~GxDynamicFunction(void) override;
68
70 //-----------------------------------------------------------
72 //-----------------------------------------------------------
74 public:
76 constexpr GxString& getName(void) { return _name; }
78 GX_FORCE_INLINE void setName(GX_CSTR name) { _name = name; }
80 constexpr GxString& getArgumentName(u32 index) { return _argumentNames[index]; }
82 GX_FORCE_INLINE void setArgumentName(u32 index, GX_CSTR name) { _argumentNames[index] = name; }
84 constexpr GxFunction* getFunction(void) const { return _pFunction; }
86 constexpr void setFunction(GxFunction* pFunction) { _pFunction = pFunction; }
87#if GX_DEVELOP
89 constexpr GxString& getHelp(void) { return _help; }
91 GX_FORCE_INLINE void setHelp(GX_CSTR help) { _help = help; }
93 constexpr GxString& getArgumentHelp(u32 index) { return _argumentHelps[index]; }
95 GX_FORCE_INLINE void setArgumentHelp(u32 index, GX_CSTR help) { _argumentHelps[index] = help; }
96#endif //GX_DEVELOP
97
99 //-----------------------------------------------------------
101 //-----------------------------------------------------------
103 private:
104 GxString _name;
105 GxString _argumentNames[GxFunction::ARGUMENT_MAX];
106 GxFunction* _pFunction;
107#if GX_DEVELOP
108 GxString _help;
109 GxString _argumentHelps[GxFunction::ARGUMENT_MAX];
110#endif //GX_DEVELOP
111
113 };
114
117 {
118 //-------------------------------------------------------------
120 //-------------------------------------------------------------
122 public:
123 // RTTI定義
124 GX_RTTI_CLASS(GxDynamicProperty, GxClassBase)
125
126
127 //-----------------------------------------------------------
129 //-----------------------------------------------------------
131
133 GxDynamicProperty(void) : _type(GxFunction::TYPE::U32), _pProperty(nullptr), _propertyId(GxProperty::DEFAULT_ID), _isUsing(false) {}
135 ~GxDynamicProperty(void) override;
136
138 //-----------------------------------------------------------
140 //-----------------------------------------------------------
142
143#if GX_DEVELOP
145 static GxGuiBase* createGui(GxProperty& property, GxTypedObject* pOwner, const GxRtti& rtti, u32 index);
146#endif // GX_DEVELOP
147
149 //-----------------------------------------------------------
151 //-----------------------------------------------------------
153 public:
155 constexpr GxString& getName(void) { return _name; }
157 GX_FORCE_INLINE void setName(GX_CSTR name) { _name = name; }
159 GX_FORCE_INLINE GxFunction::GxType getType(void) const { return _type; }
161 GX_FORCE_INLINE void setType(GxFunction::GxType type) { _type = type; }
163 constexpr GxProperty* getProperty(void) const { return _pProperty; }
165 void setProperty(GxProperty* pProperty);
167 constexpr u32 getPropertyId(void) const { return _propertyId; }
169 GX_FORCE_INLINE b32 isUsing(void) const { return _isUsing; }
171 GX_FORCE_INLINE void setUsing(b32 isUsing) { _isUsing = isUsing; }
172
174 //-----------------------------------------------------------
176 //-----------------------------------------------------------
178 private:
179 GxString _name;
180 GxFunction::GxType _type;
181 GxProperty* _pProperty;
182 u32 _propertyId;
183 b32 _isUsing;
184
186 };
187
189 //-----------------------------------------------------------
191 //-----------------------------------------------------------
193public:
195 GxResScript( void );
197 void cleanup( void ) override;
199 void initialize(void);
201 GX_FORCE_INLINE void replaceData(GxScript& script) const { script.replaceData(_staticFunctions, _eventFunctions, _dynamicProperties); }
202private:
204 void initializeStaticData(void);
205#if GX_DEVELOP
207 void initializeEventBlocks(void);
209 void createEventBlock(GxFunction& function, const GxPoint2& position);
210#endif //GX_DEVELOP
212 void initializeDynamicData(void);
214 void terminateDynamicData(void);
216 void replaceData(void);
217
219 //-----------------------------------------------------------
221 //-----------------------------------------------------------
223public:
224#if GX_DEVELOP
226 void updateSize(void);
227#endif //GX_DEVELOP
228protected:
230 GX_FORCE_INLINE b32 load(GxStream& in, u32 /*dataSize*/) { return loadBinary(in); }
231#if GX_DEVELOP
233 GX_FORCE_INLINE b32 save(GxStream& out) { return saveBinary(out, GxResScript::GX_RTTI); }
234#endif //GX_DEVELOP
235
236public:
237#if GX_DEVELOP
238#if GX_EDITOR
240 void getToolRtti( GxArray& arrayTool ) const override;
241#endif //GX_EDITOR
243 static GxGuiBase* createGui(GxProperty& property, GxTypedObject* pOwner, const GxRtti& rtti, u32 index);
245 void removeFunction(u32 index);
247 void removeVariable(u32 index);
249 void addFunction(GxDynamicFunction* pDynamicFunction);
251 void addVariable(GxDynamicProperty* pDynamicProperty);
252private:
254 void getPropertyRttiType(void* const pValue);
256 void setPropertyRttiType(const void* const pValue);
258 void setPropertyComboBoxRtti(const void* const pValue);
260 void getPropertyComboBoxRtti(void* const pValue);
261#endif // GX_DEVELOP
262
264 //-----------------------------------------------------------
266 //-----------------------------------------------------------
268public:
270 GxScript* getScript(GX_CSTR name) const;
271#if GX_DEVELOP
273 constexpr GxScript* getScript(u32 index) const { return static_cast<GxScript*>(_scripts[index]); }
275 GX_FORCE_INLINE s32 getScriptIndex(GxScript* pScript) const { return _scripts.findIndex(pScript); }
277 constexpr u32 getScriptCount(void) const { return _scripts.getCount(); }
279 GxScript* addScript(void);
281 void removeScript(u32 index);
282#endif //GX_DEVELOP
284 GxFunction* getFunction(u32 scriptInex);
286 constexpr GxFunction* getStaticFunction(u32 index) const { return static_cast<GxFunction*>(_staticFunctions[index]); }
288 constexpr u32 getStaticFunctionCount(void) const { return _staticFunctions.getCount(); }
290 constexpr GxFunction* getEventFunction(u32 index) const { return static_cast<GxFunction*>(_eventFunctions[index]); }
292 constexpr u32 getEventFunctionCount(void) const { return _eventFunctions.getCount(); }
294 constexpr GxProperty* getStaticProperty(u32 index) const { return static_cast<GxProperty*>(_staticProperties[index]); }
296 constexpr u32 getStaticPropertyCount(void) const { return _staticProperties.getCount(); }
298 GxFunction* getDynamicFunction(GX_CSTR name) const;
300 constexpr GxDynamicFunction* getDynamicFunction(u32 index) const { return static_cast<GxDynamicFunction*>(_dynamicFunctions[index]); }
302 constexpr u32 getDynamicFunctionCount(void) const { return _dynamicFunctions.getCount(); }
304 constexpr GxDynamicProperty* getDynamicProperty(u32 index) const { return static_cast<GxDynamicProperty*>(_dynamicProperties[index]); }
306 constexpr u32 getDynamicPropertyCount(void) const { return _dynamicProperties.getCount(); }
308 GX_FORCE_INLINE b32 isInitialized(void) const { return _eventFunctions.getCount() > 0; }
310 b32 isUsingFunction(GxFunction* pFunction) const;
312 b32 isUsingProperty(GxProperty* pProperty) const;
313
315 //-----------------------------------------------------------
317 //-----------------------------------------------------------
319protected:
321private:
322 GxArrayClassBase _staticFunctions;
323 GxArrayClassBase _eventFunctions;
324 GxArray _staticProperties;
325 GxArrayClassBase _dynamicFunctions;
326 GxArrayClassBase _dynamicProperties;
327 RTTI_TYPE _rttiType;
328 const GxRtti* _pRtti;
329#if GX_DEVELOP
330 GxGuiPropertyComboBoxEnum* _pComboBoxRttiType;
331 GxGuiPropertyComboBoxRtti* _pComboBoxRtti;
332#endif //GX_DEVELOP
333
335};
336
337#if GX_DEVELOP
338//===========================================================================
340//===========================================================================
341class GxResScriptXml : public GxResScript
342{
343 //-------------------------------------------------------------
345 //-------------------------------------------------------------
347public:
348 // RTTI定義
349 GX_RTTI_RESOURCE(GxResScriptXml, GxResScript)
350 // GxClassBaseReference継承クラス用禁止宣言
352
353
354 //-----------------------------------------------------------
356 //-----------------------------------------------------------
358public:
360 GxResScriptXml( void ) {}
361
363 //-----------------------------------------------------------
365 //-----------------------------------------------------------
367protected:
369 GX_FORCE_INLINE b32 load(GxStream& stream, u32 /*dataSize*/) { return GxResBase::loadXml(stream); }
371 GX_FORCE_INLINE b32 save(GxStream& stream) { return GxResBase::saveXml(stream, GxResScriptXml::GX_RTTI, true); }
372
374};
375#endif // GX_DEVELOP
376
377GX_CORE_NAMESPACE_END()
#define GX_PROHIBIT_CLASS_BASE_REFERENCE(__CLASS__)
GxClassBaseReference継承の禁止宣言(new以外の生成禁止 + コピー禁止)
Definition GxBase.h:244
@ MAX
定義数
void GxTypedObject
その他
Definition GxDefine.h:213
#define GX_RTTI_RESOURCE(__THIS__, __BASE__)
リソースクラス型情報宣言
Definition GxRttiResource.h:102
配列クラス
Definition GxArrayClassBase.h:18
配列クラス
Definition GxArray.h:18
オブジェクト基底クラス
Definition GxBase.h:88
型情報
Definition GxFunction.h:48
関数型情報
Definition GxFunction.h:18
static const u32 ARGUMENT_MAX
引数の最大数
Definition GxFunction.h:234
プロパティクラス
Definition GxProperty.h:48
リソース基底クラス
Definition GxResBase.h:23
動的関数クラス
Definition GxResScript.h:49
constexpr GxFunction * getFunction(void) const
関数型を取得
Definition GxResScript.h:84
constexpr void setFunction(GxFunction *pFunction)
関数型を設定
Definition GxResScript.h:86
GX_FORCE_INLINE void setName(GX_CSTR name)
関数名を設定
Definition GxResScript.h:78
constexpr GxString & getName(void)
関数名を取得
Definition GxResScript.h:76
constexpr GxString & getArgumentName(u32 index)
引数名を取得
Definition GxResScript.h:80
GX_FORCE_INLINE void setArgumentName(u32 index, GX_CSTR name)
引数名を設定
Definition GxResScript.h:82
動的プロパティクラス
Definition GxResScript.h:117
GX_FORCE_INLINE void setUsing(b32 isUsing)
使用中設定
Definition GxResScript.h:171
constexpr GxString & getName(void)
名前を取得
Definition GxResScript.h:155
constexpr u32 getPropertyId(void) const
プロパティIDを取得
Definition GxResScript.h:167
GX_FORCE_INLINE b32 isUsing(void) const
使用中判定
Definition GxResScript.h:169
constexpr GxProperty * getProperty(void) const
プロパティを取得
Definition GxResScript.h:163
GX_FORCE_INLINE void setType(GxFunction::GxType type)
型を設定
Definition GxResScript.h:161
GX_FORCE_INLINE void setName(GX_CSTR name)
名前を設定
Definition GxResScript.h:157
GX_FORCE_INLINE GxFunction::GxType getType(void) const
型を設定
Definition GxResScript.h:159
スクリプトリソース
Definition GxResScript.h:19
constexpr u32 getDynamicPropertyCount(void) const
動的プロパティの数を取得
Definition GxResScript.h:306
constexpr u32 getStaticPropertyCount(void) const
組み込みプロパティの数を取得
Definition GxResScript.h:296
GX_FORCE_INLINE b32 load(GxStream &in, u32)
リソースのロード
Definition GxResScript.h:230
GxArrayClassBase _scripts
スクリプトリスト
Definition GxResScript.h:320
RTTI_TYPE
RTTIの種類定義
Definition GxResScript.h:27
constexpr u32 getStaticFunctionCount(void) const
静的関数の数を取得
Definition GxResScript.h:288
GX_FORCE_INLINE void replaceData(GxScript &script) const
指定スクリプトの関数型とプロパティを置き換える
Definition GxResScript.h:201
constexpr GxDynamicProperty * getDynamicProperty(u32 index) const
動的プロパティを取得
Definition GxResScript.h:304
constexpr u32 getDynamicFunctionCount(void) const
動的関数の数を取得
Definition GxResScript.h:302
constexpr GxProperty * getStaticProperty(u32 index) const
組み込みプロパティを取得
Definition GxResScript.h:294
constexpr GxFunction * getStaticFunction(u32 index) const
静的関数を取得
Definition GxResScript.h:286
constexpr u32 getEventFunctionCount(void) const
イベント関数の数を取得
Definition GxResScript.h:292
constexpr GxDynamicFunction * getDynamicFunction(u32 index) const
動的関数を取得
Definition GxResScript.h:300
constexpr GxFunction * getEventFunction(u32 index) const
イベント関数を取得
Definition GxResScript.h:290
GX_FORCE_INLINE b32 isInitialized(void) const
初期化済み判定
Definition GxResScript.h:308
実行時型情報クラス
Definition GxRtti.h:154
@ TEXT
テキスト
スクリプトクラス
Definition GxScript.h:19
void replaceData(const GxArrayClassBase &staticFunctions, const GxArrayClassBase &eventFunctions, const GxArrayClassBase &dynamicProperties)
関数型とプロパティを置き換える
Definition GxScript.cpp:48
ストリーム基礎クラス
Definition GxStream.h:20
座標
Definition GxStruct.h:867
文字列型クラス
Definition GxString.h:18
32bitブーリアン
Definition GxDefine.h:173