mirror of
https://github.com/m5stack/StackChan.git
synced 2026-04-27 19:12:40 +00:00
47 lines
887 B
C++
47 lines
887 B
C++
/*
|
|
* SPDX-FileCopyrightText: 2026 M5Stack Technology CO LTD
|
|
*
|
|
* SPDX-License-Identifier: MIT
|
|
*/
|
|
#pragma once
|
|
#include "avatar/avatar.h"
|
|
#include "motion/motion.h"
|
|
#include "addons/neon_light/neon_light.h"
|
|
#include "utils/object_pool.h"
|
|
|
|
namespace stackchan {
|
|
|
|
/**
|
|
* @brief Modifiable base class, expose modifiable APIs to the modifiers
|
|
*
|
|
*/
|
|
class Modifiable {
|
|
public:
|
|
virtual ~Modifiable() = default;
|
|
|
|
virtual motion::Motion& motion() = 0;
|
|
|
|
virtual avatar::Avatar& avatar() = 0;
|
|
|
|
virtual bool hasAvatar() = 0;
|
|
|
|
// virtual bool hasMotion() = 0; // Motion must be always present
|
|
|
|
virtual addon::NeonLight& leftNeonLight() = 0;
|
|
|
|
virtual addon::NeonLight& rightNeonLight() = 0;
|
|
};
|
|
|
|
/**
|
|
* @brief Modifier base class
|
|
*
|
|
*/
|
|
class Modifier : public Poolable {
|
|
public:
|
|
virtual void _update(Modifiable& stackchan)
|
|
{
|
|
}
|
|
};
|
|
|
|
} // namespace stackchan
|