From e1d88a1872f27de5aaa209d1f972d1ec3d4ab4bb Mon Sep 17 00:00:00 2001 From: Riyyi Date: Sun, 25 Sep 2022 12:27:03 +0200 Subject: [PATCH] Component: Add ability to load TextAreaComponent from JSON --- assets/scene/scene1.json | 1 + src/inferno/component/textareacomponent.cpp | 34 +++++++++++++++++++++ src/inferno/component/textareacomponent.h | 3 ++ 3 files changed, 38 insertions(+) create mode 100644 src/inferno/component/textareacomponent.cpp diff --git a/assets/scene/scene1.json b/assets/scene/scene1.json index 87c8738..16ff233 100644 --- a/assets/scene/scene1.json +++ b/assets/scene/scene1.json @@ -39,6 +39,7 @@ ], "text": [ { + "name": "Text", "content": "HelloWorld!", "font": "assets/fnt/dejavu-sans", "font-size": 0, diff --git a/src/inferno/component/textareacomponent.cpp b/src/inferno/component/textareacomponent.cpp new file mode 100644 index 0000000..c97599c --- /dev/null +++ b/src/inferno/component/textareacomponent.cpp @@ -0,0 +1,34 @@ +/* + * Copyright (C) 2022 Riyyi + * + * SPDX-License-Identifier: MIT + */ + +#include "ruc/json/json.h" + +#include "inferno/component/textareacomponent.h" + +namespace Inferno { + +void fromJson(const ruc::Json& json, TextAreaComponent& value) +{ + VERIFY(json.type() == ruc::Json::Type::Object); + + if (json.exists("content") && json.at("content").type() == ruc::Json::Type::String) { + json.at("content").getTo(value.content); + } + if (json.exists("font") && json.at("font").type() == ruc::Json::Type::String) { + json.at("font").getTo(value.font); + } + if (json.exists("font-size") && json.at("font-size").type() == ruc::Json::Type::Number) { + json.at("font-size").getTo(value.fontSize); + } + if (json.exists("width") && json.at("width").type() == ruc::Json::Type::Number) { + json.at("width").getTo(value.width); + } + if (json.exists("lines") && json.at("lines").type() == ruc::Json::Type::Number) { + json.at("lines").getTo(value.width); + } +} + +} // namespace Inferno diff --git a/src/inferno/component/textareacomponent.h b/src/inferno/component/textareacomponent.h index c7a1422..91a49f3 100644 --- a/src/inferno/component/textareacomponent.h +++ b/src/inferno/component/textareacomponent.h @@ -11,6 +11,7 @@ #include // std::move #include "glm/ext/vector_float4.hpp" // glm::vec4 +#include "ruc/json/json.h" namespace Inferno { @@ -38,4 +39,6 @@ struct TextAreaComponent { // float dropShadow { 0.0f }; }; +void fromJson(const ruc::Json& json, TextAreaComponent& value); + } // namespace Inferno