A 2D tile-based sandbox game.
Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.

EntPlayer.h 1.3KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. #pragma once
  2. #include <swan/swan.h>
  3. #include <array>
  4. class EntPlayer: public Swan::PhysicsEntity, public Swan::InventoryTrait::HasInventory {
  5. public:
  6. class Factory: public Swan::Entity::Factory {
  7. public:
  8. Swan::Entity *create(const Swan::Context &ctx, const Swan::SRF &params) override {
  9. return new EntPlayer(ctx, params);
  10. }
  11. };
  12. EntPlayer(const Swan::Context &ctx, const Swan::SRF &params);
  13. Swan::InventoryTrait::Inventory &getInventory() override { return inventory_; }
  14. void draw(const Swan::Context &ctx, Swan::Win &win) override;
  15. void update(const Swan::Context &ctx, float dt) override;
  16. void tick(const Swan::Context &ctx, float dt) override;
  17. void readSRF(const Swan::Context &ctx, const Swan::SRF &srf) override;
  18. Swan::SRF *writeSRF(const Swan::Context &ctx) override;
  19. private:
  20. static constexpr int INVENTORY_SIZE = 18;
  21. static constexpr float MASS = 80;
  22. static constexpr float MOVE_FORCE = 34 * MASS;
  23. static constexpr float JUMP_VEL = 11;
  24. static constexpr float DOWN_FORCE = 20 * MASS;
  25. static constexpr Swan::Vec2 SIZE = Swan::Vec2(0.6, 1.9);
  26. Swan::InventoryTrait::BasicInventory inventory_;
  27. enum class State {
  28. IDLE,
  29. RUNNING_L,
  30. RUNNING_R,
  31. COUNT,
  32. };
  33. State state_ = State::IDLE;
  34. std::array<Swan::Animation, (int)State::COUNT> anims_;
  35. Swan::Clock jump_timer_;
  36. Swan::TilePos mouse_tile_;
  37. };