Working on removing ui label
This commit is contained in:
@ -14,7 +14,7 @@
|
||||
/>
|
||||
|
||||
<child ref="test123">
|
||||
<UILabel
|
||||
<!-- <UILabel
|
||||
text="This is the text box."
|
||||
font="font_main"
|
||||
fontSize="48"
|
||||
@ -22,8 +22,8 @@
|
||||
alignX="UI_COMPONENT_ALIGN_MIDDLE"
|
||||
alignY="UI_COMPONENT_ALIGN_MIDDLE"
|
||||
ref="uiLabel"
|
||||
/>
|
||||
/> -->
|
||||
</child>
|
||||
|
||||
<VNTextboxScroller ref="textboxScroller" label="uiLabel" />
|
||||
<!-- <VNTextboxScroller ref="textboxScroller" label="uiLabel" /> -->
|
||||
</prefab>
|
@ -1,4 +1,4 @@
|
||||
<prefab name="FPSLabel" type="ui/debug">
|
||||
<UILabel ref="label" text="Hello World" />
|
||||
<FPSLabelComponent label="label" />
|
||||
<!-- <UILabel ref="label" text="Hello World" /> -->
|
||||
<!-- <FPSLabelComponent label="label" /> -->
|
||||
</prefab>
|
@ -15,86 +15,90 @@ VNTextboxScroller::VNTextboxScroller(SceneItem *item) :
|
||||
}
|
||||
|
||||
void VNTextboxScroller::onStart() {
|
||||
assertNotNull(label);
|
||||
// assertNotNull(label);
|
||||
|
||||
std::function<void()> x = [&]{
|
||||
this->lineCurrent = 0;
|
||||
this->timeCharacter = 0;
|
||||
this->label->startQuad = 0;
|
||||
this->label->quadCount = 0;
|
||||
this->readyToClose = false;
|
||||
};
|
||||
x();
|
||||
// std::function<void()> x = [&]{
|
||||
// this->lineCurrent = 0;
|
||||
// this->timeCharacter = 0;
|
||||
// this->label->startQuad = 0;
|
||||
// this->label->quadCount = 0;
|
||||
// this->readyToClose = false;
|
||||
// };
|
||||
// x();
|
||||
|
||||
useEvent(x, this->label->eventTextChanged);
|
||||
// useEvent(x, this->label->eventTextChanged);
|
||||
|
||||
useEvent([&](float_t delta){
|
||||
auto game = this->getGame();
|
||||
// useEvent([&](float_t delta){
|
||||
// auto game = this->getGame();
|
||||
|
||||
this->timeCharacter += delta;
|
||||
if(this->hasRevealedAllCurrentCharacters()) {
|
||||
if(this->hasRevealedAllCharacters()) {
|
||||
if(!this->readyToClose) {
|
||||
this->readyToClose = true;
|
||||
this->eventReadyToClose.invoke();
|
||||
}
|
||||
} else {
|
||||
if(game->inputManager.isPressed(INPUT_BIND_ACCEPT)) {
|
||||
this->lineCurrent += this->getCountOfVisibleLines();
|
||||
this->label->startQuad = 0;
|
||||
for(int32_t i = 0; i < this->lineCurrent; i++) {
|
||||
this->label->startQuad += this->label->measure.getQuadsOnLine(i);
|
||||
}
|
||||
this->label->quadCount = 0;
|
||||
this->timeCharacter = 0.0f;
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
// this->timeCharacter += delta;
|
||||
// if(this->hasRevealedAllCurrentCharacters()) {
|
||||
// if(this->hasRevealedAllCharacters()) {
|
||||
// if(!this->readyToClose) {
|
||||
// this->readyToClose = true;
|
||||
// this->eventReadyToClose.invoke();
|
||||
// }
|
||||
// } else {
|
||||
// if(game->inputManager.isPressed(INPUT_BIND_ACCEPT)) {
|
||||
// this->lineCurrent += this->getCountOfVisibleLines();
|
||||
// this->label->startQuad = 0;
|
||||
// for(int32_t i = 0; i < this->lineCurrent; i++) {
|
||||
// this->label->startQuad += this->label->measure.getQuadsOnLine(i);
|
||||
// }
|
||||
// this->label->quadCount = 0;
|
||||
// this->timeCharacter = 0.0f;
|
||||
// }
|
||||
// }
|
||||
// return;
|
||||
// }
|
||||
|
||||
auto lastTimeCharacter = mathFloor<int32_t>(this->timeCharacter);
|
||||
if(game->inputManager.isDown(INPUT_BIND_ACCEPT)) {
|
||||
this->timeCharacter += game->timeManager.delta * VN_TEXTBOX_SPEED_FASTER;
|
||||
} else {
|
||||
this->timeCharacter += game->timeManager.delta * VN_TEXTBOX_SPEED;
|
||||
}
|
||||
// auto lastTimeCharacter = mathFloor<int32_t>(this->timeCharacter);
|
||||
// if(game->inputManager.isDown(INPUT_BIND_ACCEPT)) {
|
||||
// this->timeCharacter += game->timeManager.delta * VN_TEXTBOX_SPEED_FASTER;
|
||||
// } else {
|
||||
// this->timeCharacter += game->timeManager.delta * VN_TEXTBOX_SPEED;
|
||||
// }
|
||||
|
||||
auto newCount = mathFloor<int32_t>(this->timeCharacter);
|
||||
if(newCount == this->label->quadCount) return;
|
||||
this->label->quadCount = mathFloor<int32_t>(this->timeCharacter);
|
||||
this->eventCharacterRevealed.invoke();
|
||||
}, getScene()->eventSceneUpdate);
|
||||
// auto newCount = mathFloor<int32_t>(this->timeCharacter);
|
||||
// if(newCount == this->label->quadCount) return;
|
||||
// this->label->quadCount = mathFloor<int32_t>(this->timeCharacter);
|
||||
// this->eventCharacterRevealed.invoke();
|
||||
// }, getScene()->eventSceneUpdate);
|
||||
assertUnreachable();
|
||||
}
|
||||
|
||||
size_t VNTextboxScroller::getCountOfVisibleLines() {
|
||||
float_t y = this->label->getHeight();
|
||||
size_t i = 1;
|
||||
for(i = this->label->measure.getLineCount(); i > 0; --i) {
|
||||
if(y >= this->label->measure.getHeightOfLineCount(i)) {
|
||||
return i;
|
||||
}
|
||||
}
|
||||
return this->label->measure.getLineCount();
|
||||
// float_t y = this->label->getHeight();
|
||||
// size_t i = 1;
|
||||
// for(i = this->label->measure.getLineCount(); i > 0; --i) {
|
||||
// if(y >= this->label->measure.getHeightOfLineCount(i)) {
|
||||
// return i;
|
||||
// }
|
||||
// }
|
||||
// return this->label->measure.getLineCount();
|
||||
assertUnreachable();
|
||||
}
|
||||
|
||||
bool_t VNTextboxScroller::hasRevealedAllCurrentCharacters() {
|
||||
int32_t quadsTotal = 0;
|
||||
for(
|
||||
size_t i = this->lineCurrent;
|
||||
i < mathMin<size_t>(
|
||||
this->label->measure.getLineCount(),
|
||||
this->lineCurrent + this->getCountOfVisibleLines()
|
||||
);
|
||||
i++
|
||||
) {
|
||||
quadsTotal += this->label->measure.getQuadsOnLine(i);
|
||||
}
|
||||
return mathFloor<int32_t>(this->timeCharacter) >= quadsTotal;
|
||||
// int32_t quadsTotal = 0;
|
||||
// for(
|
||||
// size_t i = this->lineCurrent;
|
||||
// i < mathMin<size_t>(
|
||||
// this->label->measure.getLineCount(),
|
||||
// this->lineCurrent + this->getCountOfVisibleLines()
|
||||
// );
|
||||
// i++
|
||||
// ) {
|
||||
// quadsTotal += this->label->measure.getQuadsOnLine(i);
|
||||
// }
|
||||
// return mathFloor<int32_t>(this->timeCharacter) >= quadsTotal;
|
||||
assertUnreachable();
|
||||
}
|
||||
|
||||
bool_t VNTextboxScroller::hasRevealedAllCharacters() {
|
||||
return (
|
||||
this->lineCurrent + this->getCountOfVisibleLines() >=
|
||||
this->label->measure.getLineCount()
|
||||
);
|
||||
// return (
|
||||
// this->lineCurrent + this->getCountOfVisibleLines() >=
|
||||
// this->label->measure.getLineCount()
|
||||
// );
|
||||
assertUnreachable();
|
||||
}
|
@ -5,7 +5,7 @@
|
||||
|
||||
#pragma once
|
||||
#include "scene/SceneItemComponent.hpp"
|
||||
#include "scene/components/ui/UILabel.hpp"
|
||||
#include "scene/components/ui/text/UILabelNew.hpp"
|
||||
#include "input/InputManager.hpp"
|
||||
|
||||
#define VN_TEXTBOX_SPEED 25.0f
|
||||
@ -15,7 +15,7 @@ namespace Dawn {
|
||||
class VNTextboxScroller : public SceneItemComponent {
|
||||
public:
|
||||
// @optional
|
||||
StateProperty<UILabel*> label;
|
||||
StateProperty<UILabelNew*> label;
|
||||
|
||||
StateEvent<> eventReadyToClose;
|
||||
StateEvent<> eventCharacterRevealed;
|
||||
|
@ -20,7 +20,8 @@ namespace Dawn {
|
||||
scroller = this->getScene()->findComponent<VNTextboxScroller>();
|
||||
assertNotNull(scroller);
|
||||
|
||||
scroller->label->text = text;
|
||||
assertUnreachable();
|
||||
// scroller->label->text = text;
|
||||
|
||||
useEvent([&](inputbind_t bind){
|
||||
if(bind != INPUT_BIND_ACCEPT) return;
|
||||
|
@ -18,6 +18,7 @@ void FPSLabelComponent::onStart() {
|
||||
if(this->label == nullptr) return;
|
||||
std::string strFps = std::to_string((int32_t)(1.0f / delta));
|
||||
std::string strTick = std::to_string((int32_t)(delta * 1000.0f));
|
||||
label->text = strFps + "FPS (" + strTick + "ms)";
|
||||
assertUnreachable();// Needs updating to new UI Label
|
||||
// label->text = strFps + "FPS (" + strTick + "ms)";
|
||||
}, this->item->scene->eventSceneUnpausedUpdate);
|
||||
}
|
@ -4,13 +4,13 @@
|
||||
// https://opensource.org/licenses/MIT
|
||||
|
||||
#pragma once
|
||||
#include "scene/components/ui/UILabel.hpp"
|
||||
#include "scene/components/ui/text/UILabelNew.hpp"
|
||||
|
||||
namespace Dawn {
|
||||
class FPSLabelComponent : public SceneItemComponent {
|
||||
public:
|
||||
/* @optional */
|
||||
UILabel *label = nullptr;
|
||||
UILabelNew *label = nullptr;
|
||||
|
||||
FPSLabelComponent(SceneItem *item);
|
||||
void onStart() override;
|
||||
|
@ -9,10 +9,9 @@ target_sources(${DAWN_TARGET_NAME}
|
||||
UICanvas.cpp
|
||||
UIComponent.cpp
|
||||
UIComponentRenderable.cpp
|
||||
UILabel.cpp
|
||||
UIImage.cpp
|
||||
UIBorder.cpp
|
||||
UILabelNew.cpp
|
||||
)
|
||||
|
||||
add_subdirectory(menu)
|
||||
add_subdirectory(menu)
|
||||
add_subdirectory(text)
|
10
src/dawn/scene/components/ui/text/CMakeLists.txt
Normal file
10
src/dawn/scene/components/ui/text/CMakeLists.txt
Normal file
@ -0,0 +1,10 @@
|
||||
# Copyright (c) 2022 Dominic Masters
|
||||
#
|
||||
# This software is released under the MIT License.
|
||||
# https://opensource.org/licenses/MIT
|
||||
|
||||
# Sources
|
||||
target_sources(${DAWN_TARGET_NAME}
|
||||
PRIVATE
|
||||
UILabelNew.cpp
|
||||
)
|
@ -21,10 +21,11 @@ namespace Dawn {
|
||||
std::string text;
|
||||
struct UILabelStyle style;
|
||||
|
||||
// Part index
|
||||
// Quad start
|
||||
// position
|
||||
// size
|
||||
// Part index?
|
||||
// Quad start?
|
||||
// quad count?
|
||||
// position?
|
||||
// size?
|
||||
// some kind of custom data e.g. wobble or shake?
|
||||
|
||||
usagelockid_t lockId = -1;
|
@ -7,7 +7,7 @@
|
||||
#include "scene/Scene.hpp"
|
||||
#include "prefabs/SimpleSpinningCubePrefab.hpp"
|
||||
#include "scene/components/display/Camera.hpp"
|
||||
#include "scene/components/ui/UILabelNew.hpp"
|
||||
#include "scene/components/ui/text/UILabelNew.hpp"
|
||||
|
||||
namespace Dawn {
|
||||
class HelloWorldScene : public Scene {
|
||||
|
Reference in New Issue
Block a user