1// This header file is generated by WOWCube SDK project wizard
2//
3// Application UUID: 6EqWQJuAqt
4//
5#pragma once
6
7#include "Gfx.h"
8
9enum GfxObjects
10{
11 myBackground=0,
12 mySprite,
13 myRT = 5,
14 terrain=10,
15 plant,plant2,plant3,plant4,
16 rock,rock2,rock3,
17 pit,
18 fireball=20
19};
20
21class FireballSpriteAtlasElement: public Cubios::Gfx::SpriteAtlasElement
22 {
23 public:
24 FireballSpriteAtlasElement(Cubios::Gfx::SpriteAtlasBase* host, const Cubios::Math::Rect2 rc): Cubios::Gfx::SpriteAtlasElement(host,rc)
25 {
26 this->currentFrame = Cubios::random(0,3);
27 }
28
29 virtual ~FireballSpriteAtlasElement() {}
30
31 void Render()
32 {
33 if(this->currentFrame>3) this->currentFrame = 0;
34
35 Cubios::Math::Vec2 pos = this->ScreenPosition();
36 Cubios::GFX_drawSubImage(this->host->resourceId, pos.X,pos.Y,
37 this->rc.v0.X+this->currentFrame*51,this->rc.v0.Y,this->rc.W,this->rc.H,
38 0xFF,
39 Cubios::Gfx::Colors::magenta,
40 Transform.ScaleX, Transform.ScaleY,
41 Transform.SafeRotation()+ScreenAngle, Transform.Mirroring);
42
43 this->currentFrame++;
44 }
45
46 void Tick(int speed)
47 {
48 Transform.Position.X+=speed;
49 if(Transform.Position.X>250) {
50 Transform.Position.X = -20;
51 Transform.Position.Y = Cubios::random(30,180);
52 }
53 }
54
55 FireballSpriteAtlasElement* Copy()
56 {
57 FireballSpriteAtlasElement* obj = new FireballSpriteAtlasElement(this->host, this->rc);
58
59 obj->Transform = this->Transform;
60 obj->Color = this->Color;
61
62 return obj;
63 }
64
65 private:
66 uint8_t currentFrame = 0;
67 };
68
69class GfxSpriteAtlas: public Cubios::Application
70{
71public:
72 GfxSpriteAtlas();
73 virtual ~GfxSpriteAtlas();
74
75 virtual void on_PhysicsTick(const std::array<Cubios::Screen, 3>& screens) override;
76 virtual void on_Twist(const Cubios::TOPOLOGY_twistInfo_t& twist) override;
77 virtual void on_Message(uint32_t type, uint8_t* pkt, u32_t size) override;
78 virtual void on_ExternalMessage(uint8_t* pkt, u32_t size) override;
79 virtual void on_Pat(uint32_t count) override;
80 virtual void on_Render(std::array<Cubios::Screen, 3>& screens) override;
81 virtual void on_Tick(uint32_t currentTime, uint32_t deltaTime) override;
82 virtual void on_Timer(uint8_t timerID) override;
83 virtual void on_Close() override;
84
85 void InitializeResources();
86
87private:
88 void prepareOffscreenResource();
89
90private:
91 Cubios::Gfx::SpriteAtlas<Cubios::Gfx::SpriteAtlasElement>* terrainAtlas;
92 Cubios::Gfx::SpriteAtlas<FireballSpriteAtlasElement>* fireballAtlas;
93};