AppManager.h
AppManager.h
CPP1/* Copyright Statement:2 *3 * (C) 2021-2024 Cubios Inc. All rights reserved.4 */56#pragma once78#include "native.h"9#include <stdint.h>10#include <exception>11#include <memory>12#include <array>13#include "Scene.h"14#include "Screen.h"15#include "NetworkMessage.h"16#include "SaveMessage.h"1718namespace Cubios19{20 class AppManager;2122 struct Timer_t23 {24 bool suspended;25 uint32_t delay;26 uint32_t time;27 uint8_t id;28 };2930 class Application31 {32 public:33 friend AppManager;34 Application() : appMgr(nullptr), curTime(0), Module(Cubios::cubeN)35 {36 }37 virtual ~Application()38 {39 }4041 virtual void on_Message(uint32_t type, uint8_t *pkt, u32_t size) = 0;42 virtual void on_ExternalMessage(uint8_t *pkt, u32_t size) = 0;4344 virtual void on_PhysicsTick(const std::array<Screen, 3> &screens) = 0;45 virtual void on_Tick(uint32_t time, uint32_t dt) = 0;46 virtual void on_Render(std::array<Screen, 3> &screens) = 0;47 virtual void on_Twist(const TOPOLOGY_twistInfo_t &twist) = 0;48 virtual void on_Tap(uint32_t count) = 0;49 virtual void on_Close() {}50 virtual void on_Timer(uint8_t timerID){};5152 uint32_t GetTime() const { return curTime; }53 uint32_t GetTimeSeconds() const { return curTime / 1000; }5455 void SendNetworkMessage(uint32_t type, NetworkMessage *msg) const;5657 void SendExternalMessage(uint32_t type, uint8_t *data, size_t size) const;5859 void SaveState(void *data, size_t size) const;60 i32_t LoadState(u32_t *id, void *data, size_t size) const;6162 void SaveState(SaveMessage* msg) const;63 i32_t LoadState(u32_t *id, SaveMessage* msg) const;6465 bool SetTimer(uint8_t id, uint32_t delay, bool suspended = false);66 bool StartTimer(uint8_t id);67 bool StopTimer(uint8_t id);68 void KillTimer(uint8_t id);6970 void ShowFPSCounter(bool b);7172 bool IsMasterModule()73 {74 if (this->Module == 0)75 return true;76 else77 return false;78 }7980 inline int GetImageAssetsCount() {return GFX_getAssetsCount();}81 inline int GetSoundAssetsCount() {return SND_getAssetsCount();}8283 private:84 void handleTimers();8586 public:87 Cubios::Scene Scene;88 uint32_t Module;8990 private:91 AppManager *appMgr;92 uint32_t curTime;9394 std::vector<Timer_t> timers;9596 uint8_t appUUID[10];97 };9899 class AppManager100 {101 private:102 friend Application;103 static const uint8_t m_sMaxRxPacketSize = 113;104 static const uint8_t m_sMaxPacketType = 31;105106 uint32_t prevTime;107 std::shared_ptr<Application> application;108109 uint8_t *sendBuffer;110111 void handleNetPacket();112113 void handleExternalData();114115 void handleTwist();116 void handleTap();117118 void SendNetworkMessage(uint32_t type, uint8_t *data, size_t size) const;119120 void SendExternalMessage(uint32_t type, uint8_t *, size_t size);121122 public:123 AppManager() : prevTime(0), sendBuffer(nullptr) {}124 int Main();125126 void SetApplication(Application *app, const std::string &appIdentifier = "");127 };128129}130131
Wrapped for easier reading. Turn wrap off to inspect exact line lengths.