refactor: 统一智能指针创建函数命名

将 makePtr 和 makeUnique 分别重命名为 shared 和 unique,以提供更简洁的智能指针创建接口
This commit is contained in:
ChestnutYueyue 2026-02-26 20:08:04 +08:00
parent aec444f2b5
commit 00d709fcc8
21 changed files with 141 additions and 140 deletions

View File

@ -68,7 +68,7 @@ public:
// 创建移动的中心方块 // 创建移动的中心方块
centerBox_ = centerBox_ =
makePtr<CollisionBox>(80.0f, 80.0f, Color(0.2f, 0.6f, 1.0f, 0.8f)); shared<CollisionBox>(80.0f, 80.0f, Color(0.2f, 0.6f, 1.0f, 0.8f));
centerBox_->setPosition(Vec2(centerX, centerY)); centerBox_->setPosition(Vec2(centerX, centerY));
addChild(centerBox_); addChild(centerBox_);
@ -184,7 +184,7 @@ private:
}; };
for (const auto &[pos, color] : positions) { for (const auto &[pos, color] : positions) {
auto box = makePtr<CollisionBox>(70.0f, 70.0f, color); auto box = shared<CollisionBox>(70.0f, 70.0f, color);
box->setPosition(pos); box->setPosition(pos);
addChild(box); addChild(box);
boxes_.push_back(box); boxes_.push_back(box);
@ -267,7 +267,7 @@ int main(int argc, char **argv) {
} }
// 进入场景 // 进入场景
app.enterScene(makePtr<CollisionDemoScene>()); app.enterScene(shared<CollisionDemoScene>());
E2D_LOG_INFO("开始主循环..."); E2D_LOG_INFO("开始主循环...");

View File

@ -111,7 +111,7 @@ int main(int argc, char **argv) {
} }
// 进入 Hello World 场景 // 进入 Hello World 场景
app.enterScene(makePtr<HelloWorldScene>()); app.enterScene(shared<HelloWorldScene>());
E2D_LOG_INFO("开始主循环..."); E2D_LOG_INFO("开始主循环...");

View File

@ -17,13 +17,13 @@ template <typename T> using UniquePtr = std::unique_ptr<T>;
template <typename T> using WeakPtr = std::weak_ptr<T>; template <typename T> using WeakPtr = std::weak_ptr<T>;
/// 创建 shared_ptr 的便捷函数 /// 创建 shared_ptr 的便捷函数
template <typename T, typename... Args> inline Ptr<T> makePtr(Args &&...args) { template <typename T, typename... Args> inline Ptr<T> shared(Args &&...args) {
return std::make_shared<T>(std::forward<Args>(args)...); return std::make_shared<T>(std::forward<Args>(args)...);
} }
/// 创建 unique_ptr 的便捷函数 /// 创建 unique_ptr 的便捷函数
template <typename T, typename... Args> template <typename T, typename... Args>
inline UniquePtr<T> makeUnique(Args &&...args) { inline UniquePtr<T> unique(Args &&...args) {
return std::make_unique<T>(std::forward<Args>(args)...); return std::make_unique<T>(std::forward<Args>(args)...);
} }

View File

@ -2,17 +2,18 @@
#include <audio/audio_engine.h> #include <audio/audio_engine.h>
#include <event/event_dispatcher.h> #include <event/event_dispatcher.h>
#include <event/event_queue.h> #include <event/event_queue.h>
#include <renderer/camera.h>
#include <renderer/renderer.h>
#include <graphics/vram_manager.h> #include <graphics/vram_manager.h>
#include <platform/input.h> #include <platform/input.h>
#include <platform/window.h> #include <platform/window.h>
#include <renderer/camera.h>
#include <renderer/renderer.h>
#include <resource/resource_manager.h> #include <resource/resource_manager.h>
#include <scene/scene_manager.h> #include <scene/scene_manager.h>
#include <utils/logger.h> #include <utils/logger.h>
#include <utils/object_pool.h> #include <utils/object_pool.h>
#include <utils/timer.h> #include <utils/timer.h>
#include <chrono> #include <chrono>
#include <thread> #include <thread>
@ -91,7 +92,7 @@ bool Application::init(const AppConfig &config) {
// ======================================== // ========================================
// 3. 创建窗口(包含 SDL_Init + GLES 3.2 上下文创建) // 3. 创建窗口(包含 SDL_Init + GLES 3.2 上下文创建)
// ======================================== // ========================================
window_ = makeUnique<Window>(); window_ = unique<Window>();
WindowConfig winConfig; WindowConfig winConfig;
winConfig.title = config.title; winConfig.title = config.title;
winConfig.width = config.width; winConfig.width = config.width;
@ -130,12 +131,12 @@ bool Application::init(const AppConfig &config) {
// ======================================== // ========================================
// 5. 初始化其他子系统 // 5. 初始化其他子系统
// ======================================== // ========================================
sceneManager_ = makeUnique<SceneManager>(); sceneManager_ = unique<SceneManager>();
resourceManager_ = makeUnique<ResourceManager>(); resourceManager_ = unique<ResourceManager>();
timerManager_ = makeUnique<TimerManager>(); timerManager_ = unique<TimerManager>();
eventQueue_ = makeUnique<EventQueue>(); eventQueue_ = unique<EventQueue>();
eventDispatcher_ = makeUnique<EventDispatcher>(); eventDispatcher_ = unique<EventDispatcher>();
camera_ = makeUnique<Camera>(0, static_cast<float>(window_->width()), camera_ = unique<Camera>(0, static_cast<float>(window_->width()),
static_cast<float>(window_->height()), 0); static_cast<float>(window_->height()), 0);
// 窗口大小回调 // 窗口大小回调

View File

@ -210,11 +210,11 @@ glm::mat4 GLRenderer::getCurrentTransform() const {
Ptr<Texture> GLRenderer::createTexture(int width, int height, Ptr<Texture> GLRenderer::createTexture(int width, int height,
const uint8_t *pixels, int channels) { const uint8_t *pixels, int channels) {
return makePtr<GLTexture>(width, height, pixels, channels); return shared<GLTexture>(width, height, pixels, channels);
} }
Ptr<Texture> GLRenderer::loadTexture(const std::string &filepath) { Ptr<Texture> GLRenderer::loadTexture(const std::string &filepath) {
return makePtr<GLTexture>(filepath); return shared<GLTexture>(filepath);
} }
void GLRenderer::beginSpriteBatch() { spriteBatch_.begin(viewProjection_); } void GLRenderer::beginSpriteBatch() { spriteBatch_.begin(viewProjection_); }
@ -430,7 +430,7 @@ void GLRenderer::fillPolygon(const std::vector<Vec2> &points,
Ptr<FontAtlas> GLRenderer::createFontAtlas(const std::string &filepath, Ptr<FontAtlas> GLRenderer::createFontAtlas(const std::string &filepath,
int fontSize, bool useSDF) { int fontSize, bool useSDF) {
return makePtr<GLFontAtlas>(filepath, fontSize, useSDF); return shared<GLFontAtlas>(filepath, fontSize, useSDF);
} }
void GLRenderer::drawText(const FontAtlas &font, const std::string &text, void GLRenderer::drawText(const FontAtlas &font, const std::string &text,

View File

@ -1,11 +1,13 @@
#include <graphics/opengl/gl_texture.h>
#include <graphics/gpu_context.h> #include <graphics/gpu_context.h>
#include <graphics/opengl/gl_texture.h>
#include <graphics/vram_manager.h> #include <graphics/vram_manager.h>
#define STB_IMAGE_IMPLEMENTATION #define STB_IMAGE_IMPLEMENTATION
#include <cstring> #include <cstring>
#include <utils/logger.h>
#include <fstream> #include <fstream>
#include <stb/stb_image.h> #include <stb/stb_image.h>
#include <utils/logger.h>
namespace extra2d { namespace extra2d {
@ -455,7 +457,7 @@ Ptr<Texture> GLTexture::create(int width, int height, PixelFormat format) {
channels = 4; channels = 4;
break; break;
} }
return makePtr<GLTexture>(width, height, nullptr, channels); return shared<GLTexture>(width, height, nullptr, channels);
} }
} // namespace extra2d } // namespace extra2d

View File

@ -1,7 +1,8 @@
#include <graphics/texture_atlas.h>
#include <utils/logger.h>
#include <algorithm> #include <algorithm>
#include <cstring> #include <cstring>
#include <graphics/texture_atlas.h>
#include <utils/logger.h>
namespace extra2d { namespace extra2d {
@ -13,7 +14,7 @@ TextureAtlasPage::TextureAtlasPage(int width, int height)
: width_(width), height_(height), isFull_(false), usedArea_(0) { : width_(width), height_(height), isFull_(false), usedArea_(0) {
// 创建空白纹理 // 创建空白纹理
std::vector<uint8_t> emptyData(width * height * 4, 0); std::vector<uint8_t> emptyData(width * height * 4, 0);
texture_ = makePtr<GLTexture>(width, height, emptyData.data(), 4); texture_ = shared<GLTexture>(width, height, emptyData.data(), 4);
// 初始化矩形打包根节点 // 初始化矩形打包根节点
root_ = std::make_unique<PackNode>(0, 0, width, height); root_ = std::make_unique<PackNode>(0, 0, width, height);
@ -23,8 +24,9 @@ TextureAtlasPage::TextureAtlasPage(int width, int height)
TextureAtlasPage::~TextureAtlasPage() = default; TextureAtlasPage::~TextureAtlasPage() = default;
bool TextureAtlasPage::tryAddTexture(const std::string& name, int texWidth, int texHeight, bool TextureAtlasPage::tryAddTexture(const std::string &name, int texWidth,
const uint8_t* pixels, Rect& outUvRect) { int texHeight, const uint8_t *pixels,
Rect &outUvRect) {
if (isFull_) { if (isFull_) {
return false; return false;
} }
@ -39,7 +41,7 @@ bool TextureAtlasPage::tryAddTexture(const std::string& name, int texWidth, int
} }
// 尝试插入 // 尝试插入
PackNode* node = insert(root_.get(), paddedWidth, paddedHeight); PackNode *node = insert(root_.get(), paddedWidth, paddedHeight);
if (node == nullptr) { if (node == nullptr) {
// 无法放入,标记为满 // 无法放入,标记为满
isFull_ = true; isFull_ = true;
@ -47,12 +49,14 @@ bool TextureAtlasPage::tryAddTexture(const std::string& name, int texWidth, int
} }
// 写入像素数据(跳过边距区域) // 写入像素数据(跳过边距区域)
writePixels(node->x + PADDING, node->y + PADDING, texWidth, texHeight, pixels); writePixels(node->x + PADDING, node->y + PADDING, texWidth, texHeight,
pixels);
// 创建条目 // 创建条目
AtlasEntry entry; AtlasEntry entry;
entry.name = name; entry.name = name;
entry.originalSize = Vec2(static_cast<float>(texWidth), static_cast<float>(texHeight)); entry.originalSize =
Vec2(static_cast<float>(texWidth), static_cast<float>(texHeight));
entry.padding = PADDING; entry.padding = PADDING;
// 计算 UV 坐标(考虑边距) // 计算 UV 坐标(考虑边距)
@ -67,20 +71,21 @@ bool TextureAtlasPage::tryAddTexture(const std::string& name, int texWidth, int
entries_[name] = std::move(entry); entries_[name] = std::move(entry);
usedArea_ += paddedWidth * paddedHeight; usedArea_ += paddedWidth * paddedHeight;
E2D_LOG_DEBUG("Added texture '{}' to atlas: {}x{} at ({}, {})", E2D_LOG_DEBUG("Added texture '{}' to atlas: {}x{} at ({}, {})", name,
name, texWidth, texHeight, node->x, node->y); texWidth, texHeight, node->x, node->y);
return true; return true;
} }
TextureAtlasPage::PackNode* TextureAtlasPage::insert(PackNode* node, int width, int height) { TextureAtlasPage::PackNode *TextureAtlasPage::insert(PackNode *node, int width,
int height) {
if (node == nullptr) { if (node == nullptr) {
return nullptr; return nullptr;
} }
// 如果节点已被使用,尝试子节点 // 如果节点已被使用,尝试子节点
if (node->used) { if (node->used) {
PackNode* result = insert(node->left.get(), width, height); PackNode *result = insert(node->left.get(), width, height);
if (result != nullptr) { if (result != nullptr) {
return result; return result;
} }
@ -104,19 +109,24 @@ TextureAtlasPage::PackNode* TextureAtlasPage::insert(PackNode* node, int width,
if (dw > dh) { if (dw > dh) {
// 水平分割 // 水平分割
node->left = std::make_unique<PackNode>(node->x, node->y, width, node->height); node->left =
node->right = std::make_unique<PackNode>(node->x + width, node->y, dw, node->height); std::make_unique<PackNode>(node->x, node->y, width, node->height);
node->right =
std::make_unique<PackNode>(node->x + width, node->y, dw, node->height);
} else { } else {
// 垂直分割 // 垂直分割
node->left = std::make_unique<PackNode>(node->x, node->y, node->width, height); node->left =
node->right = std::make_unique<PackNode>(node->x, node->y + height, node->width, dh); std::make_unique<PackNode>(node->x, node->y, node->width, height);
node->right =
std::make_unique<PackNode>(node->x, node->y + height, node->width, dh);
} }
// 递归插入到左子节点 // 递归插入到左子节点
return insert(node->left.get(), width, height); return insert(node->left.get(), width, height);
} }
void TextureAtlasPage::writePixels(int x, int y, int w, int h, const uint8_t* pixels) { void TextureAtlasPage::writePixels(int x, int y, int w, int h,
const uint8_t *pixels) {
if (texture_ == nullptr || pixels == nullptr) { if (texture_ == nullptr || pixels == nullptr) {
return; return;
} }
@ -126,11 +136,12 @@ void TextureAtlasPage::writePixels(int x, int y, int w, int h, const uint8_t* pi
reinterpret_cast<uintptr_t>(texture_->getNativeHandle())); reinterpret_cast<uintptr_t>(texture_->getNativeHandle()));
glBindTexture(GL_TEXTURE_2D, texID); glBindTexture(GL_TEXTURE_2D, texID);
glTexSubImage2D(GL_TEXTURE_2D, 0, x, y, w, h, GL_RGBA, GL_UNSIGNED_BYTE, pixels); glTexSubImage2D(GL_TEXTURE_2D, 0, x, y, w, h, GL_RGBA, GL_UNSIGNED_BYTE,
pixels);
glBindTexture(GL_TEXTURE_2D, 0); glBindTexture(GL_TEXTURE_2D, 0);
} }
const AtlasEntry* TextureAtlasPage::getEntry(const std::string& name) const { const AtlasEntry *TextureAtlasPage::getEntry(const std::string &name) const {
auto it = entries_.find(name); auto it = entries_.find(name);
if (it != entries_.end()) { if (it != entries_.end()) {
return &it->second; return &it->second;
@ -147,11 +158,8 @@ float TextureAtlasPage::getUsageRatio() const {
// ============================================================================ // ============================================================================
TextureAtlas::TextureAtlas() TextureAtlas::TextureAtlas()
: pageSize_(TextureAtlasPage::DEFAULT_SIZE), : pageSize_(TextureAtlasPage::DEFAULT_SIZE), sizeThreshold_(256),
sizeThreshold_(256), enabled_(true), initialized_(false) {}
enabled_(true),
initialized_(false) {
}
TextureAtlas::~TextureAtlas() = default; TextureAtlas::~TextureAtlas() = default;
@ -161,8 +169,8 @@ void TextureAtlas::init(int pageSize) {
E2D_LOG_INFO("TextureAtlas initialized with page size: {}", pageSize); E2D_LOG_INFO("TextureAtlas initialized with page size: {}", pageSize);
} }
bool TextureAtlas::addTexture(const std::string& name, int width, int height, bool TextureAtlas::addTexture(const std::string &name, int width, int height,
const uint8_t* pixels) { const uint8_t *pixels) {
if (!enabled_ || !initialized_) { if (!enabled_ || !initialized_) {
return false; return false;
} }
@ -181,7 +189,7 @@ bool TextureAtlas::addTexture(const std::string& name, int width, int height,
// 尝试添加到现有页面 // 尝试添加到现有页面
Rect uvRect; Rect uvRect;
for (auto& page : pages_) { for (auto &page : pages_) {
if (page->tryAddTexture(name, width, height, pixels, uvRect)) { if (page->tryAddTexture(name, width, height, pixels, uvRect)) {
entryToPage_[name] = page.get(); entryToPage_[name] = page.get();
return true; return true;
@ -200,11 +208,11 @@ bool TextureAtlas::addTexture(const std::string& name, int width, int height,
return false; return false;
} }
bool TextureAtlas::contains(const std::string& name) const { bool TextureAtlas::contains(const std::string &name) const {
return entryToPage_.find(name) != entryToPage_.end(); return entryToPage_.find(name) != entryToPage_.end();
} }
const Texture* TextureAtlas::getAtlasTexture(const std::string& name) const { const Texture *TextureAtlas::getAtlasTexture(const std::string &name) const {
auto it = entryToPage_.find(name); auto it = entryToPage_.find(name);
if (it != entryToPage_.end()) { if (it != entryToPage_.end()) {
return it->second->getTexture().get(); return it->second->getTexture().get();
@ -212,10 +220,10 @@ const Texture* TextureAtlas::getAtlasTexture(const std::string& name) const {
return nullptr; return nullptr;
} }
Rect TextureAtlas::getUVRect(const std::string& name) const { Rect TextureAtlas::getUVRect(const std::string &name) const {
auto it = entryToPage_.find(name); auto it = entryToPage_.find(name);
if (it != entryToPage_.end()) { if (it != entryToPage_.end()) {
const AtlasEntry* entry = it->second->getEntry(name); const AtlasEntry *entry = it->second->getEntry(name);
if (entry != nullptr) { if (entry != nullptr) {
return entry->uvRect; return entry->uvRect;
} }
@ -223,10 +231,10 @@ Rect TextureAtlas::getUVRect(const std::string& name) const {
return Rect(0, 0, 1, 1); // 默认 UV return Rect(0, 0, 1, 1); // 默认 UV
} }
Vec2 TextureAtlas::getOriginalSize(const std::string& name) const { Vec2 TextureAtlas::getOriginalSize(const std::string &name) const {
auto it = entryToPage_.find(name); auto it = entryToPage_.find(name);
if (it != entryToPage_.end()) { if (it != entryToPage_.end()) {
const AtlasEntry* entry = it->second->getEntry(name); const AtlasEntry *entry = it->second->getEntry(name);
if (entry != nullptr) { if (entry != nullptr) {
return entry->originalSize; return entry->originalSize;
} }
@ -240,7 +248,7 @@ float TextureAtlas::getTotalUsageRatio() const {
} }
float total = 0.0f; float total = 0.0f;
for (const auto& page : pages_) { for (const auto &page : pages_) {
total += page->getUsageRatio(); total += page->getUsageRatio();
} }
return total / pages_.size(); return total / pages_.size();
@ -256,7 +264,7 @@ void TextureAtlas::clear() {
// TextureAtlasManager 单例实现 // TextureAtlasManager 单例实现
// ============================================================================ // ============================================================================
TextureAtlasManager& TextureAtlasManager::getInstance() { TextureAtlasManager &TextureAtlasManager::getInstance() {
static TextureAtlasManager instance; static TextureAtlasManager instance;
return instance; return instance;
} }

View File

@ -42,7 +42,7 @@ bool Window::create(const WindowConfig &config) {
} }
// 创建输入管理器 // 创建输入管理器
input_ = makeUnique<Input>(); input_ = unique<Input>();
input_->init(); input_->init();
// 初始化光标 // 初始化光标

View File

@ -6,7 +6,7 @@ namespace extra2d {
UniquePtr<Renderer> Renderer::create(BackendType type) { UniquePtr<Renderer> Renderer::create(BackendType type) {
switch (type) { switch (type) {
case BackendType::OpenGL: case BackendType::OpenGL:
return makeUnique<GLRenderer>(); return unique<GLRenderer>();
default: default:
return nullptr; return nullptr;
} }

View File

@ -262,7 +262,7 @@ Ptr<Texture> ResourceManager::loadTextureInternal(const std::string &filepath,
// 创建新纹理 // 创建新纹理
try { try {
auto texture = makePtr<GLTexture>(fullPath); auto texture = shared<GLTexture>(fullPath);
if (!texture->isValid()) { if (!texture->isValid()) {
E2D_LOG_ERROR("ResourceManager: failed to load texture: {}", filepath); E2D_LOG_ERROR("ResourceManager: failed to load texture: {}", filepath);
return nullptr; return nullptr;
@ -465,7 +465,7 @@ Ptr<FontAtlas> ResourceManager::loadFont(const std::string &filepath,
// 创建新字体图集 // 创建新字体图集
try { try {
auto font = makePtr<GLFontAtlas>(fullPath, fontSize, useSDF); auto font = shared<GLFontAtlas>(fullPath, fontSize, useSDF);
if (!font->getTexture() || !font->getTexture()->isValid()) { if (!font->getTexture() || !font->getTexture()->isValid()) {
E2D_LOG_ERROR("ResourceManager: failed to load font: {}", filepath); E2D_LOG_ERROR("ResourceManager: failed to load font: {}", filepath);
return nullptr; return nullptr;

View File

@ -3,10 +3,9 @@
#include <scene/scene.h> #include <scene/scene.h>
#include <utils/logger.h> #include <utils/logger.h>
namespace extra2d { namespace extra2d {
Scene::Scene() { defaultCamera_ = makePtr<Camera>(); } Scene::Scene() { defaultCamera_ = shared<Camera>(); }
void Scene::setCamera(Ptr<Camera> camera) { camera_ = camera; } void Scene::setCamera(Ptr<Camera> camera) { camera_ = camera; }
@ -56,13 +55,9 @@ void Scene::updateScene(float dt) {
} }
} }
void Scene::onEnter() { void Scene::onEnter() { Node::onEnter(); }
Node::onEnter();
}
void Scene::onExit() { void Scene::onExit() { Node::onExit(); }
Node::onExit();
}
void Scene::collectRenderCommands(std::vector<RenderCommand> &commands, void Scene::collectRenderCommands(std::vector<RenderCommand> &commands,
int parentZOrder) { int parentZOrder) {
@ -73,6 +68,6 @@ void Scene::collectRenderCommands(std::vector<RenderCommand> &commands,
Node::collectRenderCommands(commands, parentZOrder); Node::collectRenderCommands(commands, parentZOrder);
} }
Ptr<Scene> Scene::create() { return makePtr<Scene>(); } Ptr<Scene> Scene::create() { return shared<Scene>(); }
} // namespace extra2d } // namespace extra2d

View File

@ -9,10 +9,10 @@ namespace extra2d {
ShapeNode::ShapeNode() = default; ShapeNode::ShapeNode() = default;
Ptr<ShapeNode> ShapeNode::create() { return makePtr<ShapeNode>(); } Ptr<ShapeNode> ShapeNode::create() { return shared<ShapeNode>(); }
Ptr<ShapeNode> ShapeNode::createPoint(const Vec2 &pos, const Color &color) { Ptr<ShapeNode> ShapeNode::createPoint(const Vec2 &pos, const Color &color) {
auto node = makePtr<ShapeNode>(); auto node = shared<ShapeNode>();
node->shapeType_ = ShapeType::Point; node->shapeType_ = ShapeType::Point;
node->color_ = color; node->color_ = color;
node->points_ = {pos}; node->points_ = {pos};
@ -21,7 +21,7 @@ Ptr<ShapeNode> ShapeNode::createPoint(const Vec2 &pos, const Color &color) {
Ptr<ShapeNode> ShapeNode::createLine(const Vec2 &start, const Vec2 &end, Ptr<ShapeNode> ShapeNode::createLine(const Vec2 &start, const Vec2 &end,
const Color &color, float width) { const Color &color, float width) {
auto node = makePtr<ShapeNode>(); auto node = shared<ShapeNode>();
node->shapeType_ = ShapeType::Line; node->shapeType_ = ShapeType::Line;
node->color_ = color; node->color_ = color;
node->lineWidth_ = width; node->lineWidth_ = width;
@ -31,7 +31,7 @@ Ptr<ShapeNode> ShapeNode::createLine(const Vec2 &start, const Vec2 &end,
Ptr<ShapeNode> ShapeNode::createRect(const Rect &rect, const Color &color, Ptr<ShapeNode> ShapeNode::createRect(const Rect &rect, const Color &color,
float width) { float width) {
auto node = makePtr<ShapeNode>(); auto node = shared<ShapeNode>();
node->shapeType_ = ShapeType::Rect; node->shapeType_ = ShapeType::Rect;
node->color_ = color; node->color_ = color;
node->lineWidth_ = width; node->lineWidth_ = width;
@ -52,7 +52,7 @@ Ptr<ShapeNode> ShapeNode::createFilledRect(const Rect &rect,
Ptr<ShapeNode> ShapeNode::createCircle(const Vec2 &center, float radius, Ptr<ShapeNode> ShapeNode::createCircle(const Vec2 &center, float radius,
const Color &color, int segments, const Color &color, int segments,
float width) { float width) {
auto node = makePtr<ShapeNode>(); auto node = shared<ShapeNode>();
node->shapeType_ = ShapeType::Circle; node->shapeType_ = ShapeType::Circle;
node->color_ = color; node->color_ = color;
node->lineWidth_ = width; node->lineWidth_ = width;
@ -74,7 +74,7 @@ Ptr<ShapeNode> ShapeNode::createFilledCircle(const Vec2 &center, float radius,
Ptr<ShapeNode> ShapeNode::createTriangle(const Vec2 &p1, const Vec2 &p2, Ptr<ShapeNode> ShapeNode::createTriangle(const Vec2 &p1, const Vec2 &p2,
const Vec2 &p3, const Color &color, const Vec2 &p3, const Color &color,
float width) { float width) {
auto node = makePtr<ShapeNode>(); auto node = shared<ShapeNode>();
node->shapeType_ = ShapeType::Triangle; node->shapeType_ = ShapeType::Triangle;
node->color_ = color; node->color_ = color;
node->lineWidth_ = width; node->lineWidth_ = width;
@ -93,7 +93,7 @@ Ptr<ShapeNode> ShapeNode::createFilledTriangle(const Vec2 &p1, const Vec2 &p2,
Ptr<ShapeNode> ShapeNode::createPolygon(const std::vector<Vec2> &points, Ptr<ShapeNode> ShapeNode::createPolygon(const std::vector<Vec2> &points,
const Color &color, float width) { const Color &color, float width) {
auto node = makePtr<ShapeNode>(); auto node = shared<ShapeNode>();
node->shapeType_ = ShapeType::Polygon; node->shapeType_ = ShapeType::Polygon;
node->color_ = color; node->color_ = color;
node->lineWidth_ = width; node->lineWidth_ = width;

View File

@ -1,11 +1,10 @@
#include <algorithm> #include <algorithm>
#include <cmath> #include <cmath>
#include <graphics/texture.h>
#include <renderer/render_command.h> #include <renderer/render_command.h>
#include <renderer/renderer.h> #include <renderer/renderer.h>
#include <graphics/texture.h>
#include <scene/sprite.h> #include <scene/sprite.h>
namespace extra2d { namespace extra2d {
Sprite::Sprite() = default; Sprite::Sprite() = default;
@ -20,9 +19,7 @@ void Sprite::setTexture(Ptr<Texture> texture) {
} }
} }
void Sprite::setTextureRect(const Rect &rect) { void Sprite::setTextureRect(const Rect &rect) { textureRect_ = rect; }
textureRect_ = rect;
}
void Sprite::setColor(const Color &color) { color_ = color; } void Sprite::setColor(const Color &color) { color_ = color; }
@ -30,14 +27,14 @@ void Sprite::setFlipX(bool flip) { flipX_ = flip; }
void Sprite::setFlipY(bool flip) { flipY_ = flip; } void Sprite::setFlipY(bool flip) { flipY_ = flip; }
Ptr<Sprite> Sprite::create() { return makePtr<Sprite>(); } Ptr<Sprite> Sprite::create() { return shared<Sprite>(); }
Ptr<Sprite> Sprite::create(Ptr<Texture> texture) { Ptr<Sprite> Sprite::create(Ptr<Texture> texture) {
return makePtr<Sprite>(texture); return shared<Sprite>(texture);
} }
Ptr<Sprite> Sprite::create(Ptr<Texture> texture, const Rect &rect) { Ptr<Sprite> Sprite::create(Ptr<Texture> texture, const Rect &rect) {
auto sprite = makePtr<Sprite>(texture); auto sprite = shared<Sprite>(texture);
sprite->setTextureRect(rect); sprite->setTextureRect(rect);
return sprite; return sprite;
} }

View File

@ -60,7 +60,7 @@ Button::Button(const std::string &text) : Button() { text_ = text; }
* @brief * @brief
* @return * @return
*/ */
Ptr<Button> Button::create() { return makePtr<Button>(); } Ptr<Button> Button::create() { return shared<Button>(); }
/** /**
* @brief * @brief
@ -68,7 +68,7 @@ Ptr<Button> Button::create() { return makePtr<Button>(); }
* @return * @return
*/ */
Ptr<Button> Button::create(const std::string &text) { Ptr<Button> Button::create(const std::string &text) {
return makePtr<Button>(text); return shared<Button>(text);
} }
/** /**
@ -78,7 +78,7 @@ Ptr<Button> Button::create(const std::string &text) {
* @return * @return
*/ */
Ptr<Button> Button::create(const std::string &text, Ptr<FontAtlas> font) { Ptr<Button> Button::create(const std::string &text, Ptr<FontAtlas> font) {
auto btn = makePtr<Button>(text); auto btn = shared<Button>(text);
btn->setFont(font); btn->setFont(font);
return btn; return btn;
} }

View File

@ -16,7 +16,7 @@ CheckBox::CheckBox() {
* @brief * @brief
* @return * @return
*/ */
Ptr<CheckBox> CheckBox::create() { return makePtr<CheckBox>(); } Ptr<CheckBox> CheckBox::create() { return shared<CheckBox>(); }
/** /**
* @brief * @brief
@ -24,7 +24,7 @@ Ptr<CheckBox> CheckBox::create() { return makePtr<CheckBox>(); }
* @return * @return
*/ */
Ptr<CheckBox> CheckBox::create(const std::string &label) { Ptr<CheckBox> CheckBox::create(const std::string &label) {
auto cb = makePtr<CheckBox>(); auto cb = shared<CheckBox>();
cb->setLabel(label); cb->setLabel(label);
return cb; return cb;
} }

View File

@ -22,7 +22,7 @@ Label::Label(const std::string &text) : text_(text) {
* @brief * @brief
* @return * @return
*/ */
Ptr<Label> Label::create() { return makePtr<Label>(); } Ptr<Label> Label::create() { return shared<Label>(); }
/** /**
* @brief * @brief
@ -30,7 +30,7 @@ Ptr<Label> Label::create() { return makePtr<Label>(); }
* @return * @return
*/ */
Ptr<Label> Label::create(const std::string &text) { Ptr<Label> Label::create(const std::string &text) {
return makePtr<Label>(text); return shared<Label>(text);
} }
/** /**
@ -40,7 +40,7 @@ Ptr<Label> Label::create(const std::string &text) {
* @return * @return
*/ */
Ptr<Label> Label::create(const std::string &text, Ptr<FontAtlas> font) { Ptr<Label> Label::create(const std::string &text, Ptr<FontAtlas> font) {
auto label = makePtr<Label>(text); auto label = shared<Label>(text);
label->setFont(font); label->setFont(font);
return label; return label;
} }

View File

@ -17,7 +17,7 @@ ProgressBar::ProgressBar() {
* @brief * @brief
* @return * @return
*/ */
Ptr<ProgressBar> ProgressBar::create() { return makePtr<ProgressBar>(); } Ptr<ProgressBar> ProgressBar::create() { return shared<ProgressBar>(); }
/** /**
* @brief * @brief
@ -27,7 +27,7 @@ Ptr<ProgressBar> ProgressBar::create() { return makePtr<ProgressBar>(); }
* @return * @return
*/ */
Ptr<ProgressBar> ProgressBar::create(float min, float max, float value) { Ptr<ProgressBar> ProgressBar::create(float min, float max, float value) {
auto bar = makePtr<ProgressBar>(); auto bar = shared<ProgressBar>();
bar->setRange(min, max); bar->setRange(min, max);
bar->setValue(value); bar->setValue(value);
return bar; return bar;

View File

@ -16,7 +16,7 @@ RadioButton::RadioButton() {
* @brief * @brief
* @return * @return
*/ */
Ptr<RadioButton> RadioButton::create() { return makePtr<RadioButton>(); } Ptr<RadioButton> RadioButton::create() { return shared<RadioButton>(); }
/** /**
* @brief * @brief
@ -24,7 +24,7 @@ Ptr<RadioButton> RadioButton::create() { return makePtr<RadioButton>(); }
* @return * @return
*/ */
Ptr<RadioButton> RadioButton::create(const std::string &label) { Ptr<RadioButton> RadioButton::create(const std::string &label) {
auto rb = makePtr<RadioButton>(); auto rb = shared<RadioButton>();
rb->setLabel(label); rb->setLabel(label);
return rb; return rb;
} }

View File

@ -17,7 +17,7 @@ Slider::Slider() {
* @brief * @brief
* @return * @return
*/ */
Ptr<Slider> Slider::create() { return makePtr<Slider>(); } Ptr<Slider> Slider::create() { return shared<Slider>(); }
/** /**
* @brief * @brief
@ -27,7 +27,7 @@ Ptr<Slider> Slider::create() { return makePtr<Slider>(); }
* @return * @return
*/ */
Ptr<Slider> Slider::create(float min, float max, float value) { Ptr<Slider> Slider::create(float min, float max, float value) {
auto slider = makePtr<Slider>(); auto slider = shared<Slider>();
slider->setRange(min, max); slider->setRange(min, max);
slider->setValue(value); slider->setValue(value);
return slider; return slider;

View File

@ -57,9 +57,7 @@ void Text::setFontSize(int size) {
* @brief * @brief
* @param align * @param align
*/ */
void Text::setAlignment(Alignment align) { void Text::setAlignment(Alignment align) { alignment_ = align; }
alignment_ = align;
}
/** /**
* @brief * @brief
@ -152,14 +150,14 @@ Vec2 Text::calculateDrawPosition() const {
* @brief * @brief
* @return * @return
*/ */
Ptr<Text> Text::create() { return makePtr<Text>(); } Ptr<Text> Text::create() { return shared<Text>(); }
/** /**
* @brief * @brief
* @param text * @param text
* @return * @return
*/ */
Ptr<Text> Text::create(const std::string &text) { return makePtr<Text>(text); } Ptr<Text> Text::create(const std::string &text) { return shared<Text>(text); }
/** /**
* @brief * @brief
@ -168,7 +166,7 @@ Ptr<Text> Text::create(const std::string &text) { return makePtr<Text>(text); }
* @return * @return
*/ */
Ptr<Text> Text::create(const std::string &text, Ptr<FontAtlas> font) { Ptr<Text> Text::create(const std::string &text, Ptr<FontAtlas> font) {
auto t = makePtr<Text>(text); auto t = shared<Text>(text);
t->setFont(font); t->setFont(font);
return t; return t;
} }
@ -185,7 +183,7 @@ Ptr<Text> Text::createFormat(const char *fmt, ...) {
char buffer[256]; char buffer[256];
vsnprintf(buffer, sizeof(buffer), fmt, args); vsnprintf(buffer, sizeof(buffer), fmt, args);
va_end(args); va_end(args);
return makePtr<Text>(buffer); return shared<Text>(buffer);
} }
/** /**
@ -201,7 +199,7 @@ Ptr<Text> Text::createFormat(Ptr<FontAtlas> font, const char *fmt, ...) {
char buffer[256]; char buffer[256];
vsnprintf(buffer, sizeof(buffer), fmt, args); vsnprintf(buffer, sizeof(buffer), fmt, args);
va_end(args); va_end(args);
auto t = makePtr<Text>(buffer); auto t = shared<Text>(buffer);
t->setFont(font); t->setFont(font);
return t; return t;
} }

View File

@ -1,6 +1,7 @@
#include <simpleini/SimpleIni.h>
#include <utils/data.h> #include <utils/data.h>
#include <utils/logger.h> #include <utils/logger.h>
#include <simpleini/SimpleIni.h>
// Switch 平台特定头文件 // Switch 平台特定头文件
#ifdef __SWITCH__ #ifdef __SWITCH__
@ -15,7 +16,7 @@ public:
CSimpleIniA ini; CSimpleIniA ini;
}; };
DataStore::DataStore() : impl_(makeUnique<Impl>()) {} DataStore::DataStore() : impl_(unique<Impl>()) {}
DataStore::~DataStore() { DataStore::~DataStore() {
// 如果在事务中,尝试提交 // 如果在事务中,尝试提交
@ -203,9 +204,7 @@ std::string DataStore::getSaveDataPath(const std::string &path) const {
return path; return path;
} }
UserId DataStore::getCurrentUserId() { UserId DataStore::getCurrentUserId() { return UserId(); }
return UserId();
}
#endif #endif
@ -402,7 +401,8 @@ std::vector<std::string> DataStore::getAllSections() const {
return sections; return sections;
} }
std::vector<std::string> DataStore::getAllKeys(const std::string &section) const { std::vector<std::string>
DataStore::getAllKeys(const std::string &section) const {
std::vector<std::string> keys; std::vector<std::string> keys;
CSimpleIniA::TNamesDepend keyList; CSimpleIniA::TNamesDepend keyList;
impl_->ini.GetAllKeys(section.c_str(), keyList); impl_->ini.GetAllKeys(section.c_str(), keyList);