1 // SuperTux 2 // Copyright (C) 2006 Matthias Braun <matze@braunis.de> 3 // 4 // This program is free software: you can redistribute it and/or modify 5 // it under the terms of the GNU General Public License as published by 6 // the Free Software Foundation, either version 3 of the License, or 7 // (at your option) any later version. 8 // 9 // This program is distributed in the hope that it will be useful, 10 // but WITHOUT ANY WARRANTY; without even the implied warranty of 11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 // GNU General Public License for more details. 13 // 14 // You should have received a copy of the GNU General Public License 15 // along with this program. If not, see <http://www.gnu.org/licenses/>. 16 17 #ifndef HEADER_SUPERTUX_OBJECT_SCRIPTED_OBJECT_HPP 18 #define HEADER_SUPERTUX_OBJECT_SCRIPTED_OBJECT_HPP 19 20 #include "object/moving_sprite.hpp" 21 #include "scripting/scripted_object.hpp" 22 #include "squirrel/exposed_object.hpp" 23 #include "supertux/physic.hpp" 24 25 class ScriptedObject final : 26 public MovingSprite, 27 public ExposedObject<ScriptedObject, scripting::ScriptedObject> 28 { 29 public: 30 ScriptedObject(const ReaderMapping& mapping); 31 32 virtual void update(float dt_sec) override; 33 virtual void draw(DrawingContext& context) override; 34 35 virtual void collision_solid(const CollisionHit& hit) override; 36 virtual HitResponse collision(GameObject& other, const CollisionHit& hit) override; 37 get_class() const38 virtual std::string get_class() const override { return "scriptedobject"; } get_display_name() const39 virtual std::string get_display_name() const override { return _("Scripted Object"); } 40 41 virtual ObjectSettings get_settings() override; 42 43 // --- scripting Interface stuff --- 44 void set_action(const std::string& animation); 45 std::string get_action() const; 46 47 void move(float x, float y); 48 float get_pos_x() const; 49 float get_pos_y() const; 50 void set_velocity(float x, float y); 51 float get_velocity_x() const; 52 float get_velocity_y() const; 53 void set_visible(bool visible); 54 bool is_visible() const; 55 void set_solid(bool solid); 56 bool is_solid() const; 57 void enable_gravity(bool f); 58 bool gravity_enabled() const; 59 60 private: 61 Physic physic; 62 bool solid; 63 bool physic_enabled; 64 bool visible; 65 std::string hit_script; 66 bool new_vel_set; 67 Vector new_vel; 68 Vector new_size; 69 70 private: 71 ScriptedObject(const ScriptedObject&) = delete; 72 ScriptedObject& operator=(const ScriptedObject&) = delete; 73 }; 74 75 #endif 76 77 /* EOF */ 78