aboutsummaryrefslogtreecommitdiff
path: root/source/Player.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'source/Player.cpp')
-rw-r--r--source/Player.cpp39
1 files changed, 38 insertions, 1 deletions
diff --git a/source/Player.cpp b/source/Player.cpp
index f56d6ea..f97793e 100644
--- a/source/Player.cpp
+++ b/source/Player.cpp
@@ -19,8 +19,11 @@ std::span<bool> PlayerKeyBinds::GetKeyStatusArray() {
}
Player::Player(GameWorld* world, int id)
- : GameObject(world)
+ : GameObject(KD_Player, world)
, mId{ id } {
+ renderObject.SetMaterial(gDefaultMaterial.Get());
+ renderObject.SetFormat(gVformatStandardPacked.Get(), Tags::IT_16Bit);
+ renderObject.RebuildIfNecessary();
}
void Player::Awaken() {
@@ -32,6 +35,8 @@ void Player::Resleep() {
}
void Player::Update() {
+ using namespace Tags;
+
if (keybinds.pressedLeft) {
}
if (keybinds.pressedRight) {
@@ -40,6 +45,38 @@ void Player::Update() {
// TODO jump controller
// TODO attack controller
+
+ // TODO set default sprite to get rid of this check
+ if (sprite.GetDefinition()) {
+ int prevFrame = sprite.GetFrame();
+ sprite.PlayFrame();
+ int currFrame = sprite.GetFrame();
+ if (prevFrame != currFrame) {
+ uint16_t indices[6];
+ Index_U16::Assign(indices, 0);
+ renderObject.GetIndexBuffer()->Upload((const std::byte*)indices, IT_16Bit, std::size(indices));
+
+ Vertex_PTC vertices[4];
+ Vertex_PTC::Assign(vertices, Rect<float>{ GetPos(), sprite.GetDefinition()->GetBoundingBox() });
+ Vertex_PTC::Assign(vertices, 0.0f);
+ Vertex_PTC::Assign(vertices, RgbaColor(255, 255, 255));
+ Vertex_PTC::Assign(vertices, sprite.GetFrameSubregion());
+ renderObject.GetVertexBufferBindings().bindings[0]->Upload((const std::byte*)vertices, sizeof(vertices));
+ }
+ }
+}
+
+Material* Player::GetMaterial() const {
+ return renderObject.GetMaterial();
+}
+
+void Player::SetMaterial(Material* material) {
+ renderObject.SetMaterial(material);
+ renderObject.RebuildIfNecessary();
+}
+
+std::span<const RenderObject> Player::GetRenderObjects() const {
+ return { &renderObject, 1 };
}
void Player::HandleKeyInput(int key, int action) {