game_object.h 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. // Copyright (c) 2022-2023 the Dviglo project
  2. // Copyright (c) 2008-2023 the Urho3D project
  3. // License: MIT
  4. #pragma once
  5. #include <Urho3D/Urho3DAll.h>
  6. namespace Urho3D
  7. {
  8. constexpr i32 CTRL_UP = 1;
  9. constexpr i32 CTRL_DOWN = 2;
  10. constexpr i32 CTRL_LEFT = 4;
  11. constexpr i32 CTRL_RIGHT = 8;
  12. constexpr i32 CTRL_FIRE = 16;
  13. constexpr i32 CTRL_JUMP = 32;
  14. constexpr i32 CTRL_ALL = 63;
  15. constexpr i32 SIDE_NEUTRAL = 0;
  16. constexpr i32 SIDE_PLAYER = 1;
  17. constexpr i32 SIDE_ENEMY = 2;
  18. class GameObject : public LogicComponent
  19. {
  20. URHO3D_OBJECT(GameObject, LogicComponent);
  21. public:
  22. static void RegisterObject(Context* context);
  23. bool onGround;
  24. bool isSliding;
  25. float duration;
  26. i32 health;
  27. i32 maxHealth;
  28. i32 side; // Какой стороне принадлежит (игроки, враги или нейтралы)
  29. i32 lastDamageSide;
  30. i32 lastDamageCreatorID;
  31. i32 creatorID;
  32. GameObject(Context* context);
  33. void FixedUpdate(float timeStep) override;
  34. bool Damage(GameObject& origin, i32 amount);
  35. virtual bool Heal(i32 amount);
  36. void PlaySound(const String& soundName);
  37. void HandleSoundFinished(StringHash eventType, VariantMap& eventData);
  38. void HandleNodeCollision(StringHash eventType, VariantMap& eventData);
  39. virtual void WorldCollision(VariantMap& eventData);
  40. virtual void ObjectCollision(GameObject& otherObject, VariantMap& eventData);
  41. void ResetWorldCollision();
  42. };
  43. } // namespace Urho3D