Compare commits

...

6 commits

Author SHA1 Message Date
TheSillyDoggo
23ba26b200
Merge bd6bfb661f into df24b24c44 2024-11-20 18:04:51 -05:00
dankmeme01
df24b24c44 add param names to the correct place this time!
Some checks failed
Build Binaries / Build Windows (push) Has been cancelled
Build Binaries / Build macOS (push) Has been cancelled
Build Binaries / Build Android (64-bit) (push) Has been cancelled
Build Binaries / Build Android (32-bit) (push) Has been cancelled
Check CHANGELOG.md / Check CHANGELOG.md (push) Has been cancelled
Build Binaries / Publish (push) Has been cancelled
2024-11-20 23:14:30 +01:00
Cvolton
ed97f3b040
bump version to 4.0.1 2024-11-20 22:39:54 +01:00
Oleksandr Nemesh
aee27805e5
add cutoff constructor for CCRenderTexture (#1171) 2024-11-20 21:56:51 +01:00
Explodingbill
bd6bfb661f asdf 2024-11-16 15:03:10 +11:00
Explodingbill
03e8220dfe Add OverlayManager 2024-11-16 13:48:59 +11:00
6 changed files with 114 additions and 6 deletions

View file

@ -1,5 +1,8 @@
# Geode Changelog
## v4.0.1
* Add cutoff constructor for CCRenderTexture (#1171)
## v4.0.0
* Make chosen display type in mod list be saved between startups (07d92a3)
* Fix `Task::all` not returning results in order (227adb0)

View file

@ -1 +1 @@
4.0.0
4.0.1

View file

@ -61,6 +61,8 @@ class CC_DLL CCRenderTexture : public CCNode
*/
CC_PROPERTY(CCSprite*, m_pSprite, Sprite)
public:
GEODE_CUSTOM_CONSTRUCTOR_COCOS(CCRenderTexture, CCNode)
/**
* @js ctor
*/

View file

@ -155,12 +155,12 @@ namespace cocos2d
static gd::string base64EncodeEnc(gd::string const&, gd::string);
static gd::string base64URLDecode(gd::string const&);
static gd::string base64URLEncode(gd::string const&);
static int ccDeflateMemory(unsigned char*, unsigned int, unsigned char**);
static int ccDeflateMemory(unsigned char* data, unsigned int size, unsigned char** out);
static int ccDeflateMemoryWithHint(unsigned char*, unsigned int, unsigned char**, unsigned int);
static gd::string compressString(gd::string const&, bool, int);
static gd::string decompressString(gd::string const&, bool, int);
static gd::string decompressString2(unsigned char*, bool, int, int);
static gd::string encryptDecrypt(gd::string const&, int);
static gd::string compressString(gd::string const& data, bool encrypt, int encryptionKey);
static gd::string decompressString(gd::string const& data, bool encrypt, int encryptionKey);
static gd::string decompressString2(unsigned char* data, bool encrypt, int size, int encryptionKey);
static gd::string encryptDecrypt(gd::string const& data, int encryptionKey);
static gd::string encryptDecryptWKey(gd::string const&, gd::string);
static unsigned char hexToChar(const gd::string&);
static gd::string urlDecode(const gd::string&);

View file

@ -0,0 +1,41 @@
#pragma once
#include "../DefaultInclude.hpp"
#include <cocos2d.h>
#include <vector>
#include <span>
#include <Geode/utils/cocos.hpp>
namespace geode
{
/*
Because cocos only allows for one notification node (a node drawn last, above the fps counter and everything),
I added this, a simple class to add nodes to a general notification node so that mods dont interfere with each other.
*/
class GEODE_DLL OverlayManager : private cocos2d::CCNode
{
private:
std::vector<cocos2d::CCNode*> nodes;
public:
/// @brief Get the overlay manager instance, and if it doesnt exist, sets the notification node to it
static OverlayManager* get();
/// @brief Adds a node to the overlay manager, overlays are sorted by ZOrder, the higher the order is the later it draws. This will retain the node
void addNode(cocos2d::CCNode* node);
/// @brief Removes a node from the overlay manager, stopping it from being drawn. This will release the node
void removeNode(cocos2d::CCNode* node);
/// @brief Util to get the highest ZOrder of all nodes
int getHighestOverlayZOrder();
/// @brief Util to get the lowest ZOrder of all nodes
int getLowestOverlayZOrder();
/// @brief Gets all the overlays
std::vector<cocos2d::CCNode*> getOverlays();
};
};

View file

@ -0,0 +1,62 @@
#include <Geode/ui/OverlayManager.hpp>
using namespace geode::prelude;
OverlayManager* OverlayManager::get()
{
static OverlayManager* instance;
if (!instance)
{
instance = new OverlayManager();
CCDirector::get()->setNotificationNode(instance);
}
return instance;
}
void OverlayManager::addNode(CCNode* node)
{
this->addChild(node);
nodes.push_back(node);
}
void OverlayManager::removeNode(CCNode* node)
{
this->removeChild(node);
std::erase(nodes, node);
}
int OverlayManager::getHighestOverlayZOrder()
{
int z = INT_MIN;
for (auto node : nodes)
{
if (node->getZOrder() > z)
z = node->getZOrder();
}
return z;
}
int OverlayManager::getLowestOverlayZOrder()
{
int z = INT_MAX;
for (auto node : nodes)
{
if (node->getZOrder() < z)
z = node->getZOrder();
}
return z;
}
std::vector<CCNode*> OverlayManager::getOverlays()
{
return nodes;
}