#pragma once #include "script.hpp" #include namespace floormat { struct critter; struct Ns; struct point; struct path_search_result; struct critter_script : base_script { constexpr critter_script() noexcept = default; ~critter_script() noexcept override; virtual void on_init(const std::shared_ptr& c) = 0; // todo can_activate, activate virtual void on_update(const std::shared_ptr& c, size_t& i, const Ns& dt) = 0; virtual void on_destroy(const std::shared_ptr& c, script_destroy_reason reason) = 0; virtual void delete_self() = 0; [[nodiscard]] static critter_script* make_walk_script(point to, path_search_result path); }; } // namespace floormat