Merge branch 'master' of ssh.marcbarbier.fr:Marc/gamejam-polytech
This commit is contained in:
@@ -25,6 +25,7 @@ set(SRC
|
|||||||
src/text.c
|
src/text.c
|
||||||
src/menu.c
|
src/menu.c
|
||||||
src/input.c
|
src/input.c
|
||||||
|
src/scaller.c
|
||||||
)
|
)
|
||||||
|
|
||||||
# add the executable
|
# add the executable
|
||||||
|
|||||||
+10
-2
@@ -8,7 +8,7 @@
|
|||||||
#include <SDL2/SDL_surface.h>
|
#include <SDL2/SDL_surface.h>
|
||||||
#include <time.h>
|
#include <time.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
|
#include "scaller.h"
|
||||||
|
|
||||||
long timecode;
|
long timecode;
|
||||||
long iter;
|
long iter;
|
||||||
@@ -29,10 +29,11 @@ static void game_main(void) {
|
|||||||
//main game code
|
//main game code
|
||||||
|
|
||||||
if(iter == 0) {
|
if(iter == 0) {
|
||||||
|
menu_render();
|
||||||
RenderObject_t text;
|
RenderObject_t text;
|
||||||
SDL_Color white = {255, 255, 255, 255};
|
SDL_Color white = {255, 255, 255, 255};
|
||||||
TTF_Init();
|
TTF_Init();
|
||||||
if(text_renderText(&text, 0.f, 0.f, 1000, 1, white, "./assets/fonts/arial.ttf", 25, "Hello World") < 0){
|
if(text_renderText(&text, 0.1f, 0.1f, 1000, 1, white, "./assets/fonts/arial.ttf", 25, "Hello World") < 0){
|
||||||
printf("error");
|
printf("error");
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
@@ -40,14 +41,21 @@ static void game_main(void) {
|
|||||||
SDL_Surface* img = IMG_Load("./assets/img/pp.png");
|
SDL_Surface* img = IMG_Load("./assets/img/pp.png");
|
||||||
|
|
||||||
RenderObject_t duck = {
|
RenderObject_t duck = {
|
||||||
|
<<<<<<< HEAD
|
||||||
0.25,
|
0.25,
|
||||||
0.25,
|
0.25,
|
||||||
|
=======
|
||||||
|
0.5,
|
||||||
|
0.5,
|
||||||
|
>>>>>>> 781f4ba7beb2793dbdb38f1f2ca35f8a5fb52da3
|
||||||
0,
|
0,
|
||||||
0.50,
|
0.50,
|
||||||
0.50,
|
0.50,
|
||||||
0,
|
0,
|
||||||
img
|
img
|
||||||
};
|
};
|
||||||
|
scaller(duck.surface, 1, &duck.width, &duck.height);
|
||||||
|
placer(duck.surface, 1, &duck.x, &duck.y);
|
||||||
|
|
||||||
renderer_renderObject(text);
|
renderer_renderObject(text);
|
||||||
renderer_renderObject(duck);
|
renderer_renderObject(duck);
|
||||||
|
|||||||
+14
-19
@@ -1,34 +1,30 @@
|
|||||||
#include "menu.h"
|
#include "menu.h"
|
||||||
#include <SDL2/SDL_image.h>
|
#include <SDL2/SDL_image.h>
|
||||||
|
#include "renderer.h"
|
||||||
|
#include "scaller.h"
|
||||||
|
|
||||||
static RenderId_t menuObjects[10];
|
static RenderId_t menuObjects[10];
|
||||||
static unsigned menuObjectsSize = 0;
|
static unsigned menuObjectsSize = 0;
|
||||||
|
|
||||||
int menu_render(int windowWidth, int windowHeight){
|
int menu_render(void){
|
||||||
SDL_Surface* buttonImageSurface = IMG_Load("./assets/img/start.png");
|
SDL_Surface* buttonImageSurface = IMG_Load("./assets/img/start.png");
|
||||||
if(buttonImageSurface == NULL){
|
if(buttonImageSurface == NULL){
|
||||||
printf("cannot load");
|
printf("cannot load");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
RenderObject_t buttonImage;
|
||||||
float buttonScale = 0.3f;
|
float buttonScale = 0.3f;
|
||||||
// float buttonX = ((float)windowWidth - (float)buttonImageSurface->w) / (2.f * (float)buttonImageSurface->w);
|
|
||||||
// float buttonY = ((float)windowHeight - (float)buttonImageSurface->h) / (2.f * (float)buttonImageSurface->h);
|
|
||||||
float buttonX = 0.5f - buttonScale * (float)buttonImageSurface->w / (2.f * (float)windowWidth);
|
|
||||||
float buttonY = 0.5f - buttonScale * (float)buttonImageSurface->h / (2.f * (float)windowHeight);
|
|
||||||
printf("buttonImageSurface->w: %d\n", buttonImageSurface->w);
|
|
||||||
printf("buttonImageSurface->h: %d\n", buttonImageSurface->h);
|
|
||||||
printf("windowWidth: %d\n", windowWidth);
|
|
||||||
printf("buttonX: %f\n", buttonX);
|
|
||||||
|
|
||||||
RenderObject_t buttonImage = {
|
MonitorSize_t size = renderer_getMonitorSize();
|
||||||
buttonX,
|
float aspectRatio = (float)size.width / size.height;
|
||||||
buttonY,
|
|
||||||
0,
|
buttonImage.x = 0.5f;
|
||||||
buttonScale,
|
buttonImage.y = 0.5f;
|
||||||
buttonScale,
|
|
||||||
0,
|
scaller(buttonImageSurface, buttonScale, &buttonImage.width, &buttonImage.height);
|
||||||
buttonImageSurface
|
placer(buttonImageSurface, buttonScale, &buttonImage.x, &buttonImage.y);
|
||||||
};
|
|
||||||
|
buttonImage.surface = buttonImageSurface;
|
||||||
menuObjects[menuObjectsSize] = renderer_renderObject(buttonImage);
|
menuObjects[menuObjectsSize] = renderer_renderObject(buttonImage);
|
||||||
++menuObjectsSize;
|
++menuObjectsSize;
|
||||||
return 0;
|
return 0;
|
||||||
@@ -40,4 +36,3 @@ void menu_remove(void){
|
|||||||
}
|
}
|
||||||
menuObjectsSize = 0;
|
menuObjectsSize = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -3,7 +3,7 @@
|
|||||||
|
|
||||||
#include "renderer.h"
|
#include "renderer.h"
|
||||||
|
|
||||||
int menu_render(int windowWidth, int windowHeight);
|
int menu_render(void);
|
||||||
|
|
||||||
void menu_remove(void);
|
void menu_remove(void);
|
||||||
|
|
||||||
|
|||||||
+13
-12
@@ -46,7 +46,7 @@ void renderer_main(void(*game_main)(void)) {
|
|||||||
win = SDL_CreateWindow("GAME", // creates a window
|
win = SDL_CreateWindow("GAME", // creates a window
|
||||||
SDL_WINDOWPOS_CENTERED,
|
SDL_WINDOWPOS_CENTERED,
|
||||||
SDL_WINDOWPOS_CENTERED,
|
SDL_WINDOWPOS_CENTERED,
|
||||||
500, 500, 0);
|
1280, 720, 0);
|
||||||
|
|
||||||
Uint32 render_flags = SDL_RENDERER_ACCELERATED;
|
Uint32 render_flags = SDL_RENDERER_ACCELERATED;
|
||||||
|
|
||||||
@@ -95,17 +95,6 @@ void renderer_main(void(*game_main)(void)) {
|
|||||||
|
|
||||||
for(int i = 0; i < objectCount; i++) {
|
for(int i = 0; i < objectCount; i++) {
|
||||||
RenderItem_t * object = &objects[i];
|
RenderItem_t * object = &objects[i];
|
||||||
if(object->cache == NULL) {
|
|
||||||
SDL_Texture * texture = SDL_CreateTextureFromSurface(renderer, object->object.surface);
|
|
||||||
if(texture == NULL) {
|
|
||||||
fprintf(stderr, "Error while creating texture %s is_null: %d\n", SDL_GetError(), object->object.surface == NULL);
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
SDL_SetTextureBlendMode(texture, SDL_BLENDMODE_BLEND);
|
|
||||||
object->cache = texture;
|
|
||||||
printf("Built cache\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
int error = SDL_RenderCopyEx(renderer, object->cache, NULL, &object->rect, object->object.angle_degre, NULL, SDL_FLIP_NONE);
|
int error = SDL_RenderCopyEx(renderer, object->cache, NULL, &object->rect, object->object.angle_degre, NULL, SDL_FLIP_NONE);
|
||||||
if(error != 0) {
|
if(error != 0) {
|
||||||
fprintf(stderr, "Render error in object %d with error %s\n", object->id, SDL_GetError());
|
fprintf(stderr, "Render error in object %d with error %s\n", object->id, SDL_GetError());
|
||||||
@@ -117,6 +106,16 @@ void renderer_main(void(*game_main)(void)) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void buildCache(RenderItem_t * object) {
|
||||||
|
SDL_Texture * texture = SDL_CreateTextureFromSurface(renderer, object->object.surface);
|
||||||
|
if(texture == NULL) {
|
||||||
|
fprintf(stderr, "Error while creating texture %s is_null: %d\n", SDL_GetError(), object->object.surface == NULL);
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
SDL_SetTextureBlendMode(texture, SDL_BLENDMODE_BLEND);
|
||||||
|
object->cache = texture;
|
||||||
|
}
|
||||||
|
|
||||||
RenderId_t renderer_renderObject(RenderObject_t object) {
|
RenderId_t renderer_renderObject(RenderObject_t object) {
|
||||||
RenderId_t itemId = objectCount++;
|
RenderId_t itemId = objectCount++;
|
||||||
|
|
||||||
@@ -134,6 +133,8 @@ RenderId_t renderer_renderObject(RenderObject_t object) {
|
|||||||
itemId
|
itemId
|
||||||
};
|
};
|
||||||
|
|
||||||
|
buildCache(&item);
|
||||||
|
|
||||||
objects[itemId] = item;
|
objects[itemId] = item;
|
||||||
//the objects are sorted
|
//the objects are sorted
|
||||||
qsort(objects, objectCount, sizeof(RenderItem_t), (__compar_fn_t)compartSort);
|
qsort(objects, objectCount, sizeof(RenderItem_t), (__compar_fn_t)compartSort);
|
||||||
|
|||||||
@@ -0,0 +1,15 @@
|
|||||||
|
#include "renderer.h"
|
||||||
|
#include <SDL2/SDL_surface.h>
|
||||||
|
#include "scaller.h"
|
||||||
|
|
||||||
|
void scaller(SDL_Surface * surface, float scale, float * width, float * height) {
|
||||||
|
MonitorSize_t size = renderer_getMonitorSize();
|
||||||
|
*width = (float)surface->w / size.width * scale;
|
||||||
|
*height = (float)surface->h / size.height * scale;
|
||||||
|
}
|
||||||
|
|
||||||
|
void placer(SDL_Surface * surface, float scale, float * x, float * y) {
|
||||||
|
MonitorSize_t size = renderer_getMonitorSize();
|
||||||
|
*x = *x - scale * surface->w / (2.f * (float)size.width);
|
||||||
|
*y = *y - scale * surface->h / (2.f * (float)size.height);
|
||||||
|
}
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
#ifndef __SCALLER_H__
|
||||||
|
#define __SCALLER_H__
|
||||||
|
|
||||||
|
#include <SDL2/SDL_surface.h>
|
||||||
|
|
||||||
|
void scaller(SDL_Surface * surface, float scale, float * width, float * height);
|
||||||
|
void placer(SDL_Surface * surface, float scale, float * x, float * y);
|
||||||
|
|
||||||
|
#endif
|
||||||
+4
-2
@@ -1,6 +1,7 @@
|
|||||||
#include <SDL2/SDL_error.h>
|
#include <SDL2/SDL_error.h>
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include "renderer.h"
|
#include "renderer.h"
|
||||||
|
#include "scaller.h"
|
||||||
#include "text.h"
|
#include "text.h"
|
||||||
#include <SDL2/SDL_log.h>
|
#include <SDL2/SDL_log.h>
|
||||||
|
|
||||||
@@ -72,10 +73,11 @@ int text_renderText(RenderObject_t* renderObject, float x, float y, int z, float
|
|||||||
renderObject->x = x;
|
renderObject->x = x;
|
||||||
renderObject->y = y;
|
renderObject->y = y;
|
||||||
renderObject->z = z;
|
renderObject->z = z;
|
||||||
renderObject->width = w * scale / 500;
|
|
||||||
renderObject->height = h * scale / 500;
|
|
||||||
renderObject->angle_degre = 0;
|
renderObject->angle_degre = 0;
|
||||||
renderObject->surface = surface;
|
renderObject->surface = surface;
|
||||||
|
|
||||||
|
scaller(surface, scale, &renderObject->width, &renderObject->height);
|
||||||
|
placer(renderObject->surface, scale, &renderObject->x, &renderObject->y);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user