Commit 9ce0ea72 by José Pardo Madera

Merge branch 'Develop' into Texto_feature_branch

Momento historico
parents 66c892ba 91f6f6a5
# Default ignored files
/shelf/
/workspace.xml
# Editor-based HTTP Client requests
/httpRequests/
# Datasource local storage ignored files
/dataSources/
/dataSources.local.xml
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ExternalStorageConfigurationManager" enabled="true" />
<component name="MakefileSettings">
<option name="linkedExternalProjectsSettings">
<MakefileProjectSettings>
<option name="externalProjectPath" value="$PROJECT_DIR$" />
<option name="version" value="2" />
</MakefileProjectSettings>
</option>
</component>
<component name="MakefileWorkspace" PROJECT_DIR="$PROJECT_DIR$" />
</project>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="" vcs="Git" />
</component>
</project>
\ No newline at end of file
{
"configurations": [
{
"name": "Win32",
"includePath": [
"${workspaceFolder}/**",
"${vcpkgRoot}/x64-windows/include"
],
"defines": [
"_DEBUG",
"UNICODE",
"_UNICODE"
],
"windowsSdkVersion": "10.0.22621.0",
"compilerPath": "cl.exe",
"cStandard": "c17",
"cppStandard": "c++17",
"intelliSenseMode": "windows-msvc-x64"
}
],
"version": 4
}
\ No newline at end of file
No preview for this file type
#include "Hitbox.h"
bool Hitbox::colisiona(int x, int z){
if(x<=xMaximo && x>=xMinimo && z<=zMaximo && z>=zMinimo){
std::cout<<"Esta colisionando";
return true;
}else return false;
}
\ No newline at end of file
#ifndef HITBOX_H
#define HITBOX_H
#include <iostream>
class Hitbox{
public:
int xMaximo;
int xMinimo;
int zMaximo;
int zMinimo;
bool colisiona(int x, int z);
Hitbox(int xS, int xI, int zS, int zI): xMaximo(xS), xMinimo(xI), zMaximo(zS), zMinimo(zI){}
};
#endif // HITBOX_H
#include "Objeto.h"
Hitbox & Objeto::getHitbox(){
return colision;
}
void Objeto::renderizar(SDL_Renderer *renderer, int tamx, int tamy){
std::cout<<estado<<std::endl;
switch (estado){
case normal:
sprite_normal.renderizar(renderer,x,y,w,h, tamx, tamy);
break;
case overworld:
sprite_overworld.renderizar(renderer,x,y,w,h, tamx, tamy);
break;
case overworld_highlight:
sprite_overworld_highlight.renderizar(renderer,x,y,w,h, tamx, tamy);
break;
}
}
#pragma once
#include "Sprite.h"
#include "Hitbox.h"
#include <iostream>
enum State {
normal = 0,
overworld = 1,
overworld_highlight = 2
};
class Objeto {
Sprite normal;
Sprite overworld;
Sprite overworld_highlight;
};
\ No newline at end of file
Sprite sprite_normal;
Sprite sprite_overworld;
Sprite sprite_overworld_highlight;
Hitbox colision;
State estado=normal;
int x;
int y;
int w;
int h;
public:
Hitbox &getHitbox();
Objeto(Sprite sprite_normal_, Sprite sprite_overworld_, Sprite sprite_overworld_highlight_, Hitbox colision_, int _x, int _y, int _w, int _h, State estado_):
sprite_normal(sprite_normal_), sprite_overworld(sprite_overworld_),
sprite_overworld_highlight(sprite_overworld_highlight_), colision(colision_), x(_x), y(_y), w(_w), h(_h), estado(estado_){}
void renderizar(SDL_Renderer *renderer, int tamx, int tamy);
};
......@@ -41,7 +41,7 @@ void Personaje::move(Facing direction) {
}
}
void Personaje::renderizar(SDL_Renderer *renderer) {
void Personaje::renderizar(SDL_Renderer *renderer, int tamx, int tamy) {
auto now = std::chrono::system_clock::now();
auto tiempo_desde_ultimo_movimiento = now.time_since_epoch() - momento_ultimo_movimiento.time_since_epoch();
......@@ -52,5 +52,24 @@ void Personaje::renderizar(SDL_Renderer *renderer) {
indice_movimiento = 0;
}
movimientos[estado][indice_movimiento].renderizar(renderer, x, 100, profundidades, profundidades, true);
}
\ No newline at end of file
movimientos[estado][indice_movimiento].renderizar(renderer, x, 100, profundidades, profundidades, tamx, tamy, true);
}
void Personaje::comprobarColision(Hitbox &hitbox){
if(hitbox.colisiona(x, profundidades)){
switch (estado) {
case Frente:
profundidades -= 5;
break;
case Derecha:
x -= 10;
break;
case Izquierda:
x += 10;
break;
case Fondo:
profundidades += 5;
break;
}
}
}
......@@ -5,6 +5,7 @@
#include "Sprite.h"
#include "Objeto.h"
#include "Hitbox.h"
using namespace std;
......@@ -27,14 +28,16 @@ class Personaje {
Facing estado = Frente;
int indice_movimiento = 0;
int x = 100;
int profundidades = 100;
public:
int x = 100;
int profundidades = 100;
Personaje();
void move(Facing direcion);
void renderizar(SDL_Renderer *renderer);
};
\ No newline at end of file
void renderizar(SDL_Renderer *renderer, int tamx, int tamy);
void comprobarColision (Hitbox &hitbox);
};
......@@ -16,15 +16,15 @@ SDL_Texture *Sprite::get_textura(SDL_Renderer *Renderer) {
return texture;
}
void Sprite::renderizar(SDL_Renderer *Renderer, int x, int y, int w, int h, bool centrar) {
void Sprite::renderizar(SDL_Renderer *Renderer, int x, int y, int w, int h,int tamx, int tamy, bool centrar) {
printf("RENDER TEXTURA %s\n", camino.c_str());
texture = get_textura(Renderer);
SDL_Rect Dest;
Dest.x = x;
Dest.y = y;
Dest.x = x;
Dest.y = y;
Dest.w = w;
Dest.h = h;
......@@ -41,10 +41,15 @@ void Sprite::renderizar(SDL_Renderer *Renderer, int x, int y, int w, int h, bool
Dest.y -= delta_h / 2;
}
Dest.x *= (tamx/1920.0);
Dest.y *= (tamy/1080.0);
Dest.w *= (tamx/1920.0);
Dest.h *= (tamy/1080.0);
SDL_RenderCopy(Renderer, texture, nullptr, &Dest);
}
Sprite::~Sprite() {
SDL_DestroyTexture(this->texture);
}
\ No newline at end of file
}
......@@ -14,7 +14,7 @@ class Sprite {
public:
Sprite(std::string camino);
void renderizar(SDL_Renderer *Renderer, int x, int y, int w, int h, bool centrar = false);
void renderizar(SDL_Renderer *Renderer, int x, int y, int w, int h, int tamx, int tamy,bool centrar = false);
~Sprite();
};
......
......@@ -7,16 +7,18 @@ SDL_Texture *Texto::get_textura(SDL_Renderer *renderer) {
return texture;
}
void Texto::renderizar(SDL_Renderer *renderer, int x, int y) {
void Texto::renderizar(SDL_Renderer *renderer, int x, int y, int tamx, int tamy) {
texture = get_textura(renderer);
SDL_Rect dest;
dest.x = x;
dest.y = y;
SDL_QueryTexture(texture, nullptr, nullptr, &dest.w, &dest.h);
dest.x = x * (tamx / 1920.0);
dest.y = y - (tamy / 1080.0);
dest.w *= (tamx / 1920.0);
dest.h *= (tamy / 1080.0);
SDL_RenderCopy(renderer, texture, nullptr, &dest);
}
......@@ -17,7 +17,7 @@ public:
surface = TTF_RenderUTF8_Solid(*fuente, texto, fg);
};
void renderizar(SDL_Renderer *Renderer, int x, int y);
void renderizar(SDL_Renderer *Renderer, int x, int y, int tamx, int tamy);
~Texto() {
SDL_FreeSurface(surface);
......
#include <SDL2/SDL.h>
#include "SDL2/SDL_image.h"
#include "SDL2/SDL_ttf.h"
#include <SDL2/SDL_video.h>
#include <iostream>
#include "Sprite.h"
#include "Texto.h"
#include "Fuente.h"
#include "Personaje.h"
#include "Objeto.h"
#include <vector>
void blit(SDL_Renderer *Renderer, SDL_Texture *Texture, SDL_Rect *Cut, int x, int y){
......@@ -27,6 +30,9 @@ void cambiar_buffers(SDL_Renderer *renderer) {
int main(){
int tamx=0;
int tamy=0;
if(SDL_Init(SDL_INIT_VIDEO) < 0){
std::cout << "Error at SDL_Init(SDL_INIT_VIDEO)"<<std::endl;
......@@ -54,6 +60,9 @@ int main(){
0
);
//SDL_SetWindowFullscreen(Window,SDL_WINDOW_FULLSCREEN_DESKTOP);
SDL_SetWindowResizable(Window, SDL_TRUE);
if(!Window){
std::cout << "Error creating window" << std::endl;
......@@ -72,16 +81,31 @@ int main(){
}
vector<Objeto*> objetos;
vector<Hitbox*> colisiones;
Fuente opensans("assets/OpenSans-Italic.ttf", 100);
Texto texto(opensans, "AGAPITO 3D", {255, 255, 255});
Sprite Fondo1("assets/fondoHabitacion.jpg");
Sprite Planta("assets/planta.png");
Sprite sprPlanta("assets/planta.png");
Hitbox hitPlanta(350,80,450,120);
Hitbox hitCama(10,50,300,300);
Hitbox hitFondo(1000000,-10000000,50,0);
Objeto Planta(sprPlanta,sprPlanta,sprPlanta,hitPlanta,1200,400,300,400, normal);
objetos.push_back(&Planta);
colisiones.push_back(&hitPlanta);
colisiones.push_back(&hitCama);
colisiones.push_back(&hitFondo);
Personaje Agapito;
SDL_Event event;
while (true) {
SDL_GetWindowSize(Window,&tamx,&tamy);
while (SDL_PollEvent(&event)) {
switch (event.type) {
case SDL_KEYDOWN:
......@@ -99,18 +123,24 @@ int main(){
Agapito.move(Frente);
break;
}
for(int i=0;i<colisiones.size();i++){
Agapito.comprobarColision(*colisiones[i]);
}
break;
case SDL_QUIT:
exit(0);
}
printf("Pito\n");
}
printf("Buclee\n");
Fondo1.renderizar(Renderer, 0, 0, 1920, 1080);
Planta.renderizar(Renderer, 10, 100, 50, 50);
Agapito.renderizar(Renderer);
texto.renderizar(Renderer, 50, 50);
std::cout<<"Dimensiones "<<tamx<<tamy<<endl;
Fondo1.renderizar(Renderer, 0, 0,1920,1080, tamx, tamy);
for(int i=0;i<objetos.size();i++){
objetos[i]->renderizar(Renderer, tamx, tamy);
}
Agapito.renderizar(Renderer, tamx, tamy);
texto.renderizar(Renderer, 50, 50, tamx, tamy);
cambiar_buffers(Renderer);
SDL_Delay(5);
}
......
CC = g++
CodeFiles = main.cpp Personaje.cpp Sprite.cpp Texto.cpp
HeaderFiles = Personaje.h Sprite.h Objeto.h Hitbox.h Texto.h
CodeFiles = main.cpp Personaje.cpp Sprite.cpp Objeto.cpp Hitbox.cpp Texto.cpp
Executable: $(CodeFiles)
Executable: $(CodeFiles) $(HeaderFiles)
$(CC) $(CodeFiles) -w -lSDL2 -lSDL2_image -lSDL2_ttf -o Executable
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment