← index
2D.TileMap/object.hpp
Source: 2D.TileMap/object.hpp
#ifndef _OBJECT_H__
#define _OBJECT_H__

#include"game.hpp"
#include<vector>

namespace game {

    class Camera;
    class Level;

    enum class Direction { LEFT=1, RIGHT, UP, DOWN };

    class CObject {
    public:
        CObject() = default;
        virtual ~CObject() = default;
        virtual void init(RenderObject *ro) = 0;
        virtual void draw(RenderObject *ro, int x, int y) = 0;
        void setImages(const std::vector<Image> &v);
        virtual void release() = 0;
        virtual void logic(Level *level) = 0;
        virtual void reset() = 0;
        virtual void death() = 0;
   
        int x = 0,y = 0,cur_frame = 0, type = 0;
        std::vector<Image> frame_data;
        bool active = true;
        Direction dir;
        int otype = 0;
    };


    class Item : public CObject {
    public:
        Item() = default;
        Item(int xx, int yy, int type, int item_t, int item_a);
        void init(RenderObject *ro) override;
        void draw(RenderObject *ro, int x, int y) override;
        void release() override;
        void logic(Level *level) override;   
        void reset() override;
        void death() override;
        int grab();
        int item_type = 0;
        int item_amount = 0;
    };


    class Enemy : public CObject {
    public:
        Enemy() = default;
        Enemy(int x, int y, int type);
        void init(RenderObject *ro) override;
        void draw(RenderObject *ro, int x, int y) override;
        void release() override; 
        void setImages(const std::vector<Image> &l, const std::vector<Image> &r); 
        void reset() override;
        void logic(Level *level) override;
        void death() override;
    protected:
        std::vector<Image> g_img_l, g_img_r;
        int start_x, start_y;
        int draw_x, draw_y;
        int cur_ani;
        bool die = false;
    };

    class Hero : public CObject {
    public:
        Hero() = default;
        void init(RenderObject *ro) override;
        void setImages(const std::vector<Image> &vl, const std::vector<Image> &vr);
        void draw(RenderObject *ro, int x, int y) override;
        void release() override;
        void logic(Level *level) override;
        void death() override;
        void reset() override;
        void moveLeft(bool scroll);
        void moveRight(bool scroll);
        void moveDown(bool draw);
        void moveUp(bool scroll, Camera *cam);
        void restore();
        void cycle_frame();
        void jump();
        void fire();
        void proc_jump(Level *level, Camera *cam);
        bool isJumping() const;
        void update(Camera *cam);
        void updateDown(Level *level, Camera *cam);
        void set();
        bool grounded = false;
        bool falling = false;  
        int draw_x = 0, draw_y = 0;
        std::vector<Image> left, right;
        bool move_right = true;
        bool jumping = false;
        int jump_index = 0, jump_height[2] ={0};
        bool moving_ = false;
        int moving_index[4] = {0};
        bool scroll_map[5] =  {false}; 
        int walk_frames[8] = { 0, 1, 2, 3, 2, 1, 0 }; 
        int walk_frame = 0;
        bool shot = false;
    };

}


#endif