VN Textbox Scroll initial version
This commit is contained in:
@ -13,6 +13,8 @@ void SceneGenerator::generate(
|
||||
struct MethodGenInfo &methodAssets,
|
||||
struct MethodGenInfo &methodInit
|
||||
) {
|
||||
assertNotNull(scene);
|
||||
|
||||
classInfo.clazz = scene->name;
|
||||
classInfo.constructorArgs = "DawnGame *game";
|
||||
classInfo.extendArgs = "game";
|
||||
@ -54,10 +56,12 @@ void SceneGenerator::generate(
|
||||
int32_t childNumber = 0;
|
||||
int32_t componentNumber = 0;
|
||||
std::map<std::string, std::string> assetMap;
|
||||
std::vector<struct SceneItemComponent> componentsUnused;
|
||||
|
||||
auto sceneItems = scene->items.begin();
|
||||
while(sceneItems != scene->items.end()) {
|
||||
SceneItemGenerator::generate(
|
||||
auto itDeps = scene->dependencies.begin();
|
||||
while(itDeps != scene->dependencies.end()) {
|
||||
auto dep = *itDeps;
|
||||
SceneItemGenerator::generateDependency(
|
||||
assetNumber,
|
||||
componentNumber,
|
||||
childNumber,
|
||||
@ -68,24 +72,15 @@ void SceneGenerator::generate(
|
||||
&methodAssets.body,
|
||||
"",
|
||||
"this",
|
||||
&(*sceneItems),
|
||||
""
|
||||
componentsUnused,
|
||||
scene->items,
|
||||
scene->code,
|
||||
dep
|
||||
);
|
||||
++sceneItems;
|
||||
++itDeps;
|
||||
}
|
||||
|
||||
|
||||
// Seal methods
|
||||
line(&methodAssets.body, "return assets;", "");
|
||||
|
||||
// Code
|
||||
auto itCode = scene->code.begin();
|
||||
while(itCode != scene->code.end()) {
|
||||
SceneCodeGenerator::generate(
|
||||
&classInfo.publicProperties,
|
||||
&methodInit.body,
|
||||
&(*itCode),
|
||||
""
|
||||
);
|
||||
++itCode;
|
||||
}
|
||||
}
|
@ -7,6 +7,76 @@
|
||||
|
||||
using namespace Dawn;
|
||||
|
||||
void SceneItemGenerator::generateDependency(
|
||||
int32_t &assetNumber,
|
||||
int32_t &componentNumber,
|
||||
int32_t &childNumber,
|
||||
std::map<std::string, std::string> &assetMap,
|
||||
std::vector<std::string> &includes,
|
||||
std::vector<std::string> *publicProperties,
|
||||
std::vector<std::string> *initBody,
|
||||
std::vector<std::string> *assetBody,
|
||||
std::string name,
|
||||
std::string sceneRef,
|
||||
std::vector<struct SceneItemComponent> &components,
|
||||
std::vector<struct SceneItem> &children,
|
||||
std::vector<struct SceneCode> &code,
|
||||
struct SceneItemDependency dep
|
||||
) {
|
||||
switch(dep.type) {
|
||||
case SCENE_ITEM_DEPENDENCY_TYPE_CODE: {
|
||||
auto i = &code[dep.position];
|
||||
SceneCodeGenerator::generate(
|
||||
publicProperties,
|
||||
initBody,
|
||||
i,
|
||||
""
|
||||
);
|
||||
line(initBody, "", "");
|
||||
break;
|
||||
}
|
||||
|
||||
case SCENE_ITEM_DEPENDENCY_TYPE_COMPONENT: {
|
||||
auto i = &components[dep.position];
|
||||
SceneItemComponentGenerator::generate(
|
||||
assetMap,
|
||||
componentNumber,
|
||||
includes,
|
||||
name,
|
||||
publicProperties,
|
||||
initBody,
|
||||
i,
|
||||
""
|
||||
);
|
||||
line(initBody, "", "");
|
||||
break;
|
||||
}
|
||||
|
||||
case SCENE_ITEM_DEPENDENCY_TYPE_ITEM: {
|
||||
auto i = &children[dep.position];
|
||||
SceneItemGenerator::generate(
|
||||
assetNumber,
|
||||
componentNumber,
|
||||
childNumber,
|
||||
assetMap,
|
||||
includes,
|
||||
publicProperties,
|
||||
initBody,
|
||||
assetBody,
|
||||
name,
|
||||
sceneRef,
|
||||
i,
|
||||
""
|
||||
);
|
||||
line(initBody, "", "");
|
||||
break;
|
||||
}
|
||||
|
||||
default:
|
||||
assertUnreachable();
|
||||
}
|
||||
}
|
||||
|
||||
void SceneItemGenerator::generate(
|
||||
int32_t &assetNumber,
|
||||
int32_t &componentNumber,
|
||||
@ -21,6 +91,11 @@ void SceneItemGenerator::generate(
|
||||
struct SceneItem *item,
|
||||
std::string tabs
|
||||
) {
|
||||
assertNotNull(publicProperties);
|
||||
assertNotNull(initBody);
|
||||
assertNotNull(assetBody);
|
||||
assertNotNull(item);
|
||||
|
||||
// Determine interface
|
||||
std::string name = "itm" + std::to_string(childNumber++);
|
||||
std::string itemType = "SceneItem";
|
||||
@ -82,26 +157,11 @@ void SceneItemGenerator::generate(
|
||||
++itAssets;
|
||||
}
|
||||
|
||||
// Add components for children
|
||||
auto itComponents = item->components.begin();
|
||||
while(itComponents != item->components.end()) {
|
||||
SceneItemComponentGenerator::generate(
|
||||
assetMap,
|
||||
componentNumber,
|
||||
includes,
|
||||
name,
|
||||
publicProperties,
|
||||
initBody,
|
||||
&(*itComponents),
|
||||
""
|
||||
);
|
||||
++itComponents;
|
||||
}
|
||||
|
||||
// Process sub children
|
||||
auto itChildren = item->children.begin();
|
||||
while(itChildren != item->children.end()) {
|
||||
SceneItemGenerator::generate(
|
||||
// Add the dependencies
|
||||
auto itDeps = item->dependencies.begin();
|
||||
while(itDeps != item->dependencies.end()) {
|
||||
auto dep = *itDeps;
|
||||
SceneItemGenerator::generateDependency(
|
||||
assetNumber,
|
||||
componentNumber,
|
||||
childNumber,
|
||||
@ -112,26 +172,16 @@ void SceneItemGenerator::generate(
|
||||
assetBody,
|
||||
name,
|
||||
sceneRef,
|
||||
&(*itChildren),
|
||||
""
|
||||
item->components,
|
||||
item->children,
|
||||
item->code,
|
||||
dep
|
||||
);
|
||||
++itChildren;
|
||||
++itDeps;
|
||||
}
|
||||
|
||||
// Set parent
|
||||
if(!parentRef.empty()) {
|
||||
line(initBody, name + "->transform.setParent(&"+parentRef+"->transform);", "");
|
||||
}
|
||||
|
||||
// Code
|
||||
auto itCode = item->code.begin();
|
||||
while(itCode != item->code.end()) {
|
||||
SceneCodeGenerator::generate(
|
||||
publicProperties,
|
||||
initBody,
|
||||
&(*itCode),
|
||||
""
|
||||
);
|
||||
++itCode;
|
||||
}
|
||||
}
|
@ -12,6 +12,23 @@
|
||||
namespace Dawn {
|
||||
class SceneItemGenerator : public CodeGen {
|
||||
public:
|
||||
static void generateDependency(
|
||||
int32_t &assetNumber,
|
||||
int32_t &componentNumber,
|
||||
int32_t &childNumber,
|
||||
std::map<std::string, std::string> &assetMap,
|
||||
std::vector<std::string> &includes,
|
||||
std::vector<std::string> *publicProperties,
|
||||
std::vector<std::string> *initBody,
|
||||
std::vector<std::string> *assetBody,
|
||||
std::string name,
|
||||
std::string sceneRef,
|
||||
std::vector<struct SceneItemComponent> &components,
|
||||
std::vector<struct SceneItem> &children,
|
||||
std::vector<struct SceneCode> &code,
|
||||
struct SceneItemDependency dep
|
||||
);
|
||||
|
||||
static void generate(
|
||||
int32_t &assetNumber,
|
||||
int32_t &componentNumber,
|
||||
|
Reference in New Issue
Block a user