A 2D tile-based sandbox game.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

EntPlayer.h 977B

123456789101112131415161718192021222324252627282930313233343536373839
  1. #pragma once
  2. #include <swan/swan.h>
  3. class EntPlayer: public Swan::PhysicsEntity {
  4. public:
  5. class Factory: public Swan::Entity::Factory {
  6. public:
  7. Swan::Entity *create(const Swan::Context &ctx, const Swan::SRF &params) override {
  8. return new EntPlayer(ctx, params);
  9. }
  10. };
  11. EntPlayer(const Swan::Context &ctx, const Swan::SRF &params);
  12. void draw(const Swan::Context &ctx, Swan::Win &win) override;
  13. void update(const Swan::Context &ctx, float dt) override;
  14. void readSRF(const Swan::Context &ctx, const Swan::SRF &srf) override;
  15. Swan::SRF *writeSRF(const Swan::Context &ctx) override;
  16. private:
  17. static constexpr float FORCE = 3000;
  18. static constexpr float JUMP_FORCE = 11;
  19. static constexpr float MASS = 80;
  20. static constexpr Swan::Vec2 SIZE = Swan::Vec2(0.6, 1.9);
  21. enum class State {
  22. IDLE,
  23. RUNNING_L,
  24. RUNNING_R,
  25. COUNT,
  26. };
  27. State state_ = State::IDLE;
  28. Swan::Animation anims_[(int)State::COUNT];
  29. Swan::Timer jump_timer_;
  30. Swan::TilePos mouse_tile_;
  31. };