aminmations
This commit is contained in:
14
include/input.h
Normal file
14
include/input.h
Normal file
@@ -0,0 +1,14 @@
|
||||
#include <SDL.h>
|
||||
#include <map>
|
||||
#include <string>
|
||||
|
||||
class Input
|
||||
{
|
||||
private:
|
||||
SDL_Event event;
|
||||
|
||||
public:
|
||||
bool exit;
|
||||
std::map<SDL_Keycode, bool> activeKeys;
|
||||
void update();
|
||||
};
|
64
include/sprite.h
Normal file
64
include/sprite.h
Normal file
@@ -0,0 +1,64 @@
|
||||
#include <SDL.h>
|
||||
#include <map>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
#include "vector.h"
|
||||
#pragma once
|
||||
|
||||
class Sprite
|
||||
{
|
||||
private:
|
||||
std::map<std::string, SDL_Rect> frames;
|
||||
SDL_Surface* surface;
|
||||
SDL_Texture* Texture;
|
||||
int_vec2 size;
|
||||
|
||||
public:
|
||||
SDL_Rect dstrect;
|
||||
int_vec2 scale = { 1, 1 };
|
||||
double angle = 0;
|
||||
Sprite(SDL_Renderer* renderer, SDL_Surface* surface);
|
||||
void draw(SDL_Renderer* renderer, std::string frame, bool autoRect = true, bool flip = false);
|
||||
void addFrame(std::string name, SDL_Rect rect);
|
||||
void move(int_vec2 position);
|
||||
int_vec2 getSize(std::string frame);
|
||||
void autorect(std::string frame);
|
||||
~Sprite();
|
||||
};
|
||||
|
||||
class Animation
|
||||
{
|
||||
private:
|
||||
std::vector<std::string> frames;
|
||||
Sprite* sprite;
|
||||
int currentFrame = 0;
|
||||
int frameDuration = 0;
|
||||
int frameCounter = 0;
|
||||
std::string currentFrameName;
|
||||
int frameIndex = 0;
|
||||
int frameDirection = 1;
|
||||
|
||||
public:
|
||||
bool loop = true;
|
||||
bool pingpong = false;
|
||||
Animation(std::map<std::string, SDL_Rect> frames, Sprite* sprite, int frameDuration);
|
||||
void update();
|
||||
void draw(SDL_Renderer* renderer, bool autoRect = true, bool flip = false);
|
||||
};
|
||||
|
||||
class AnimationManager
|
||||
{
|
||||
private:
|
||||
std::map<std::string, Animation> *animations;
|
||||
std::map<std::string, bool> flip;
|
||||
std::map<std::string, bool> autoRect;
|
||||
std::string currentAnimation;
|
||||
Sprite* sprite;
|
||||
|
||||
public:
|
||||
AnimationManager(Sprite* sprite);
|
||||
void addAnimation(std::string name, std::map<std::string, SDL_Rect> animation, int frameDuration = 10, bool flip = false, bool autoRect = true, bool loop = true, bool pingpong = false);
|
||||
void setAnimation(std::string name);
|
||||
void update();
|
||||
void draw(SDL_Renderer* renderer);
|
||||
};
|
17
include/text.h
Normal file
17
include/text.h
Normal file
@@ -0,0 +1,17 @@
|
||||
#include <SDL.h>
|
||||
#include <SDL_ttf.h>
|
||||
#include <string>
|
||||
|
||||
class Text
|
||||
{
|
||||
private:
|
||||
SDL_Surface* surface;
|
||||
SDL_Texture* texture;
|
||||
TTF_Font* font;
|
||||
SDL_Color color;
|
||||
SDL_Rect rect;
|
||||
|
||||
public:
|
||||
Text(TTF_Font* font, SDL_Color color);
|
||||
void draw(SDL_Renderer* renderer, std::string text, int x, int y);
|
||||
};
|
49
include/vector.h
Normal file
49
include/vector.h
Normal file
@@ -0,0 +1,49 @@
|
||||
#pragma once
|
||||
|
||||
class float_vec2
|
||||
{
|
||||
public:
|
||||
float x, y;
|
||||
float_vec2 operator+(float_vec2 vec)
|
||||
{
|
||||
return { x + vec.x, y + vec.y };
|
||||
}
|
||||
float_vec2 operator*(float v)
|
||||
{
|
||||
return { x * v, y * v };
|
||||
}
|
||||
float_vec2 operator*(float_vec2 vec)
|
||||
{
|
||||
return { x * vec.x, y * vec.y };
|
||||
}
|
||||
float_vec2 operator-(float_vec2 vec)
|
||||
{
|
||||
return { x - vec.x, y - vec.y };
|
||||
}
|
||||
float_vec2 operator-(float v)
|
||||
{
|
||||
return { x - v, y - v };
|
||||
}
|
||||
};
|
||||
|
||||
class int_vec2
|
||||
{
|
||||
public:
|
||||
int x, y;
|
||||
int_vec2 operator+(int_vec2 vec)
|
||||
{
|
||||
return { x + vec.x, y + vec.y };
|
||||
}
|
||||
int_vec2 operator*(int v)
|
||||
{
|
||||
return { x * v, y * v };
|
||||
}
|
||||
int_vec2 operator*(int_vec2 vec)
|
||||
{
|
||||
return { x * vec.x, y * vec.y };
|
||||
}
|
||||
int_vec2 operator-(int_vec2 vec)
|
||||
{
|
||||
return { x - vec.x, y - vec.y };
|
||||
}
|
||||
};
|
Reference in New Issue
Block a user