Make missing funcs/members private & fix macos hsv

This commit is contained in:
altalk23 2023-08-15 14:29:44 +03:00
parent 0a584327ff
commit d98cb2d709
4 changed files with 55 additions and 65 deletions

View file

@ -714,7 +714,6 @@ class cocos2d::CCParticleSystem {
CCParticleSystem() = win 0xb6650;
virtual ~CCParticleSystem() = win 0xb68e0;
virtual auto update(float);
virtual auto draw();
auto initParticle(cocos2d::tCCParticle*);
auto resetSystem() = mac 0x46bd50;
auto resumeSystem() = mac 0x46bd40;

View file

@ -600,15 +600,15 @@ class CCSpritePart : CCSpritePlus {
}
class CCSpritePlus : cocos2d::CCSprite {
bool initWithSpriteFrameName(const char*) = mac 0x248670, win 0x1c1e0;
void setScaleX(float scale) = win 0x1c440;
void setScaleY(float scale) = win 0x1c4c0;
void setScale(float scale) = win 0x1c540;
void setPosition(const cocos2d::CCPoint& pos) = win 0x1c220;
void setRotation(float rotation) = win 0x1c280;
bool initWithTexture(cocos2d::CCTexture2D* texture) = win 0x1c200;
void setFlipX(bool flip) = win 0x1c300;
void setFlipY(bool flip) = win 0x1c3a0;
virtual bool initWithSpriteFrameName(const char*) = mac 0x248670, win 0x1c1e0;
virtual void setScaleX(float scale) = win 0x1c440;
virtual void setScaleY(float scale) = win 0x1c4c0;
virtual void setScale(float scale) = win 0x1c540;
virtual void setPosition(const cocos2d::CCPoint& pos) = win 0x1c220;
virtual void setRotation(float rotation) = win 0x1c280;
virtual bool initWithTexture(cocos2d::CCTexture2D* texture) = win 0x1c200;
virtual void setFlipX(bool flip) = win 0x1c300;
virtual void setFlipY(bool flip) = win 0x1c3a0;
static CCSpritePlus* createWithSpriteFrame(cocos2d::CCSpriteFrame* frame) = win 0x1c130;
cocos2d::CCArray* m_followers;
@ -1043,7 +1043,7 @@ class CustomizeObjectLayer : FLAlertLayer, TextInputDelegate, HSVWidgetPopupDele
cocos2d::CCArray* m_colorButtons;
cocos2d::CCArray* m_colorTabNodes;
cocos2d::CCArray* m_textTabNodes;
PAD = win 0x4;
PAD = win 0x4, mac 0x8;
cocos2d::CCArray* m_detailTabNodes;
int m_selectedMode;
int m_customColorChannel;
@ -1558,10 +1558,10 @@ class EffectGameObject : GameObject {
bool init(char const*) = win 0x253CD0;
void getTargetColorIndex() = mac 0xca1f0;
virtual void triggerObject(GJBaseGameLayer*) = mac 0xc9870, win 0x253d60;
gd::string getSaveString() = win 0x257560;
virtual gd::string getSaveString() = win 0x257560;
void updateSpecialColor() = win 0x254980;
void spawnXPosition() = win 0x254A00;
void triggerActivated(float) = win 0x254A30;
virtual void spawnXPosition() = win 0x254A00;
virtual void triggerActivated(float) = win 0x254A30;
cocos2d::ccColor3B m_colColor;
float m_duration;
@ -5400,8 +5400,8 @@ class SimplePlayer : cocos2d::CCSprite {
void updatePlayerFrame(int iconID, IconType iconType) = mac 0x1b62f0, win 0x12c650;
void updateColors() = mac 0x1ba1f0, win 0x12c440, ios 0x224f2c;
void setFrames(const char* firstLayer, const char* secondLayer, const char* birdDome, const char* outlineSprite, const char* detailSprite) = win 0x12c9e0;
void setColor(const cocos2d::ccColor3B& color) = mac 0x1bc9b0, win 0x12c410;
void setOpacity(unsigned char opacity) = win 0x12cb90;
virtual void setColor(const cocos2d::ccColor3B& color) = mac 0x1bc9b0, win 0x12c410;
virtual void setOpacity(unsigned char opacity) = win 0x12cb90;
cocos2d::CCSprite* m_firstLayer;
cocos2d::CCSprite* m_secondLayer;

View file

@ -47,31 +47,12 @@ public:
)GEN";
char const* error_definition = R"GEN(
template <bool Value = false>
{static}{return_type} {function_name}({parameters}){const}{{
static_assert(Value, "{class_name}::{function_name} not implemented");
throw std::runtime_error("Use of undefined function " + GEODE_PRETTY_FUNCTION);
}}
)GEN";
char const* error_definition_virtual = R"GEN(
#ifdef GEODE_WARN_INCORRECT_MEMBERS
[[deprecated("Use of undefined virtual function - will crash at runtime!!!")]]
#endif
private:
[[deprecated("{class_name}::{function_name} not implemented")]]
/**
{docs}{docs_addresses} */
{virtual}{return_type} {function_name}({parameters}){const}{{
#ifdef GEODE_NO_UNDEFINED_VIRTUALS
static_assert(false, "Undefined virtual function - implement in GeometryDash.bro");
#endif
throw std::runtime_error("Use of undefined virtual function " + GEODE_PRETTY_FUNCTION);
}}
)GEN";
char const* warn_offset_member = R"GEN(
#ifdef GEODE_WARN_INCORRECT_MEMBERS
[[deprecated("Member placed incorrectly - will crash at runtime!!!")]]
#endif
{static}{virtual}{return_type} {function_name}({parameters}){const};
public:
)GEN";
char const* structor_definition = R"GEN(
@ -81,7 +62,7 @@ public:
)GEN";
// requires: type, member_name, array
char const* member_definition = R"GEN( {type} {member_name};
char const* member_definition = R"GEN({private} {type} {member_name};{public}
)GEN";
char const* pad_definition = R"GEN( GEODE_PAD({hardcode});
@ -196,8 +177,9 @@ std::string generateBindingHeader(Root& root, ghc::filesystem::path const& singl
single_output += "\t" + i->inner + "\n";
continue;
} else if (auto m = field.get_as<MemberField>()) {
if (unimplementedField) single_output += format_strings::warn_offset_member;
single_output += fmt::format(format_strings::member_definition,
fmt::arg("private", unimplementedField ? "private:\n" : ""),
fmt::arg("public", unimplementedField ? "\npublic:" : ""),
fmt::arg("type", m->type.name),
fmt::arg("member_name", m->name + str_if(fmt::format("[{}]", m->count), m->count))
);
@ -221,9 +203,6 @@ std::string generateBindingHeader(Root& root, ghc::filesystem::path const& singl
if (!codegen::platformNumber(fn->binds)) {
used_format = format_strings::error_definition;
if (fb->is_virtual)
used_format = format_strings::error_definition_virtual;
if (fb->type != FunctionType::Normal)
continue;
}

View file

@ -103,6 +103,12 @@ auto {class_name}::{function_name}({parameters}){const} -> decltype({function_na
}});
reinterpret_cast<FunctionType>(func)(this{parameter_comma}{arguments});
}}
)GEN";
char const* declare_virtual_error = R"GEN(
auto {class_name}::{function_name}({parameters}){const} -> decltype({function_name}({arguments})) {{
throw std::runtime_error("{class_name}::{function_name} not implemented");
}}
)GEN";
char const* ool_function_definition = R"GEN(
@ -158,32 +164,38 @@ std::string generateBindingSource(Root& root) {
}
} else if (auto fn = f.get_as<FunctionBindField>()) {
if (codegen::getStatus(f) != BindStatus::NeedsBinding)
continue;
// no cocos2d definitions on windows
char const* used_declare_format = nullptr;
if (codegen::platform == Platform::Windows && is_cocos_class(f.parent)) {
// no cocos2d definitions on windows
continue;
}
char const* used_declare_format;
switch (fn->prototype.type) {
case FunctionType::Normal:
used_declare_format = format_strings::declare_member;
break;
case FunctionType::Ctor:
used_declare_format = format_strings::declare_constructor;
break;
case FunctionType::Dtor:
used_declare_format = format_strings::declare_destructor;
break;
else if (!codegen::platformNumber(fn->binds) && fn->prototype.is_virtual && fn->prototype.type != FunctionType::Dtor) {
used_declare_format = format_strings::declare_virtual_error;
}
else if (codegen::getStatus(f) != BindStatus::NeedsBinding) {
continue;
}
if (fn->prototype.is_static)
used_declare_format = format_strings::declare_static;
if (fn->prototype.is_virtual && fn->prototype.type != FunctionType::Dtor)
used_declare_format = format_strings::declare_virtual;
if (!used_declare_format) {
switch (fn->prototype.type) {
case FunctionType::Normal:
used_declare_format = format_strings::declare_member;
break;
case FunctionType::Ctor:
used_declare_format = format_strings::declare_constructor;
break;
case FunctionType::Dtor:
used_declare_format = format_strings::declare_destructor;
break;
}
if (fn->prototype.is_static)
used_declare_format = format_strings::declare_static;
if (fn->prototype.is_virtual && fn->prototype.type != FunctionType::Dtor)
used_declare_format = format_strings::declare_virtual;
}
output += fmt::format(used_declare_format,
fmt::arg("class_name", c.name),