mirror of
https://github.com/Relintai/programming_tutorials.git
synced 2025-05-05 22:31:39 +02:00
126 lines
3.5 KiB
Plaintext
126 lines
3.5 KiB
Plaintext
|
|
|
|
|---------------------------------------------------------------------------------------|
|
|
| class MainScene : public Scene |
|
|
|---------------------------------------------------------------------------------------|
|
|
| + void event(const SDL_Event &ev) |
|
|
| + void update(float delta) |
|
|
| + void render() |
|
|
| |
|
|
| + MainScene() |
|
|
| + ~MainScene() |
|
|
| |
|
|
| + Camera *_camera |
|
|
| + Image *_image |
|
|
| + Texture *_texture |
|
|
| + Sprite *_sprite |
|
|
| |
|
|
| + bool _up |
|
|
| + bool _down |
|
|
| + bool _left |
|
|
| + bool _right |
|
|
|---------------------------------------------------------------------------------------|
|
|
|
|
|
|
#include "main_scene.h"
|
|
|
|
#include "renderer.h"
|
|
#include "rect2.h"
|
|
|
|
#include <SDL.h>
|
|
|
|
void event(const SDL_Event &ev):
|
|
switch (ev.type):
|
|
case SDL_WINDOWEVENT::
|
|
switch (ev.window.event):
|
|
case SDL_WINDOWEVENT_SIZE_CHANGED::
|
|
int width = ev.window.data1
|
|
int height = ev.window.data2
|
|
|
|
_camera->viewport = Rect2(0, 0, width, height)
|
|
|
|
break
|
|
|
|
|
|
|
|
break
|
|
|
|
case SDL_KEYDOWN::
|
|
|
|
if (ev.key.keysym.scancode == SDL_SCANCODE_A):
|
|
_left = true
|
|
else if (ev.key.keysym.scancode == SDL_SCANCODE_W):
|
|
_up = true
|
|
else if (ev.key.keysym.scancode == SDL_SCANCODE_S):
|
|
_down = true
|
|
else if (ev.key.keysym.scancode == SDL_SCANCODE_D):
|
|
_right = true
|
|
|
|
|
|
break
|
|
|
|
case SDL_KEYUP::
|
|
|
|
if (ev.key.keysym.scancode == SDL_SCANCODE_A):
|
|
_left = false
|
|
else if (ev.key.keysym.scancode == SDL_SCANCODE_W):
|
|
_up = false
|
|
else if (ev.key.keysym.scancode == SDL_SCANCODE_S):
|
|
_down = false
|
|
else if (ev.key.keysym.scancode == SDL_SCANCODE_D):
|
|
_right = false
|
|
|
|
|
|
break
|
|
|
|
|
|
|
|
|
|
void update(float delta):
|
|
if (_up):
|
|
_sprite->set_y(_sprite->get_y() - 50 * delta)
|
|
|
|
|
|
if (_down):
|
|
_sprite->set_y(_sprite->get_y() + 50 * delta)
|
|
|
|
|
|
if (_left):
|
|
_sprite->set_x(_sprite->get_x() - 50 * delta)
|
|
|
|
|
|
if (_right):
|
|
_sprite->set_x(_sprite->get_x() + 50 * delta)
|
|
|
|
|
|
|
|
void render():
|
|
Renderer::get_singleton()->clear()
|
|
|
|
_camera->bind()
|
|
|
|
Renderer::get_singleton()->draw_sprite(_sprite)
|
|
|
|
|
|
MainScene():
|
|
_camera = new Camera()
|
|
_image = new Image("ti.bmp")
|
|
_texture = new Texture(_image)
|
|
_sprite = new Sprite(_texture)
|
|
|
|
_up = false
|
|
_down = false
|
|
_left = false
|
|
_right = false
|
|
|
|
|
|
~MainScene():
|
|
_texture->free()
|
|
_image->free()
|
|
|
|
delete _sprite
|
|
delete _texture
|
|
delete _image
|
|
delete _camera
|
|
|