Coding style

This commit is contained in:
AnonymusRaccoon
2020-03-12 18:31:36 +01:00
parent d23aef0881
commit 9d4cfec973
40 changed files with 941 additions and 1088 deletions

12
.gitmodules vendored
View File

@@ -1,9 +1,9 @@
[submodule "Gamacon"] [submodule "Gamacon"]
path = lib/gamacon path = lib/gamacon
url = https://github.com/AnonymusRaccoon/Gamacon url = https://github.com/AnonymusRaccoon/Gamacon
[submodule "lib/xmlparser"] [submodule "lib/xmlparser"]
path = lib/xmlparser path = lib/xmlparser
url = https://github.com/AnonymusRaccoon/xmlParser url = https://github.com/AnonymusRaccoon/xmlParser
[submodule "lib/quadtree"] [submodule "lib/quadtree"]
path = lib/quadtree path = lib/quadtree
url = https://github.com/AnonymusRaccoon/quadtree url = https://github.com/AnonymusRaccoon/quadtree

View File

@@ -6,7 +6,7 @@
## ##
SRC = src/main.c \ SRC = src/main.c \
src/game_loader.c src/game_loader.c
OBJ = $(SRC:%.c=%.o) OBJ = $(SRC:%.c=%.o)
@@ -24,36 +24,36 @@ CC = gcc
all: build all: build
build: $(OBJ) build: $(OBJ)
$(MAKE) -C lib/gamacon $(MAKE) -C lib/gamacon
$(MAKE) -C lib/my $(MAKE) -C lib/my
$(MAKE) -C lib/xmlparser $(MAKE) -C lib/xmlparser
$(MAKE) -C lib/quadtree $(MAKE) -C lib/quadtree
$(CC) -o $(NAME) $(OBJ) $(LDFLAGS) $(CC) -o $(NAME) $(OBJ) $(LDFLAGS)
clean: clean:
$(MAKE) -C lib/gamacon clean $(MAKE) -C lib/gamacon clean
$(MAKE) -C lib/my clean $(MAKE) -C lib/my clean
$(MAKE) -C lib/xmlparser clean $(MAKE) -C lib/xmlparser clean
$(MAKE) -C lib/quadtree clean $(MAKE) -C lib/quadtree clean
$(RM) $(OBJ) $(RM) $(OBJ)
fclean: clean fclean: clean
$(RM) $(NAME) $(RM) $(NAME)
ffclean: fclean ffclean: fclean
$(MAKE) -C lib/my fclean $(MAKE) -C lib/my fclean
$(MAKE) -C lib/gamacon fclean $(MAKE) -C lib/gamacon fclean
$(MAKE) -C lib/xmlparser fclean $(MAKE) -C lib/xmlparser fclean
$(MAKE) -C lib/quadtree fclean $(MAKE) -C lib/quadtree fclean
re: fclean all re: fclean all
dbg: CFLAGS += -g dbg: CFLAGS += -g
dbg: clean $(OBJ) dbg: clean $(OBJ)
$(MAKE) -C lib/gamacon dbg $(MAKE) -C lib/gamacon dbg
$(MAKE) -C lib/my $(MAKE) -C lib/my
$(MAKE) -C lib/xmlparser dbg $(MAKE) -C lib/xmlparser dbg
$(MAKE) -C lib/quadtree dbg $(MAKE) -C lib/quadtree dbg
$(CC) -o $(NAME) $(OBJ) $(LDFLAGS) $(CC) -o $(NAME) $(OBJ) $(LDFLAGS)
.PHONY: all build clean fclean ffclean .PHONY: all build clean fclean ffclean

View File

@@ -9,15 +9,15 @@
typedef enum display_type typedef enum display_type
{ {
HAPPINESS_DISPLAY, HAPPINESS_DISPLAY,
STUPIDITY_DISPLAY, STUPIDITY_DISPLAY,
SELECT_TILE_DISPLAY SELECT_TILE_DISPLAY
} display_type; } display_type;
struct game_display struct game_display
{ {
gc_component base; gc_component base;
display_type type; display_type type;
}; };
const struct game_display game_display; const struct game_display game_display;

View File

@@ -9,9 +9,9 @@
struct game_manager struct game_manager
{ {
gc_component base; gc_component base;
int happiness; int happiness;
int stupidity; int stupidity;
}; };
const struct game_manager game_manager; const struct game_manager game_manager;

View File

@@ -9,18 +9,18 @@
enum brush enum brush
{ {
MOVE, MOVE,
RESET, RESET,
ROTATE, ROTATE,
TEXTURE TEXTURE
}; };
struct map_manager_component struct map_manager_component
{ {
gc_component base; gc_component base;
bool tile_mode; bool tile_mode;
enum brush brush; enum brush brush;
void *selected_texture; void *selected_texture;
}; };
const struct map_manager_component map_manager_component; const struct map_manager_component map_manager_component;

View File

@@ -9,12 +9,12 @@
struct teams_component struct teams_component
{ {
gc_component base; gc_component base;
float next_teams; float next_teams;
float delay; float delay;
char **prefabs; char **prefabs;
int *prefabs_size; int *prefabs_size;
int prefab_count; int prefab_count;
}; };
const struct teams_component teams_component; const struct teams_component teams_component;

View File

@@ -14,12 +14,12 @@
#include "keybindings.h" #include "keybindings.h"
enum modes_on_tile { enum modes_on_tile {
VERTEX_0 = 2, VERTEX_0 = 2,
VERTEX_1 = 4, VERTEX_1 = 4,
VERTEX_2 = 8, VERTEX_2 = 8,
VERTEX_3 = 16, VERTEX_3 = 16,
ALL_VERTICES = 30, ALL_VERTICES = 30,
INVERT_ADD_VALUE = 1 INVERT_ADD_VALUE = 1
}; };
bool tile_interact(gc_engine *engine, gc_entity *entity, gc_vector2 pos, \ bool tile_interact(gc_engine *engine, gc_entity *entity, gc_vector2 pos, \

View File

@@ -6,22 +6,22 @@
## ##
SRC = src/printf.c \ SRC = src/printf.c \
src/printf_utility.c \ src/printf_utility.c \
src/my_putlonglong_base.c \ src/my_putlonglong_base.c \
src/formaters/string_formater.c \ src/formaters/string_formater.c \
src/formaters/string_nonprintable_formater.c \ src/formaters/string_nonprintable_formater.c \
src/formaters/char_formater.c \ src/formaters/char_formater.c \
src/formaters/int_formater.c \ src/formaters/int_formater.c \
src/formaters/uint_formater.c \ src/formaters/uint_formater.c \
src/formaters/ptr_formater.c \ src/formaters/ptr_formater.c \
src/formaters/ubinary_formater.c \ src/formaters/ubinary_formater.c \
src/formaters/octal_formater.c \ src/formaters/octal_formater.c \
src/formaters/hexa_formater.c \ src/formaters/hexa_formater.c \
src/formaters/big_hexa_formater.c \ src/formaters/big_hexa_formater.c \
src/formaters/float_formater.c \ src/formaters/float_formater.c \
src/formaters/no_format.c \ src/formaters/no_format.c \
src/get_nbr_size.c \ src/get_nbr_size.c \
my/*.c my/*.c
OBJ = *.o OBJ = *.o
@@ -42,20 +42,20 @@ UT = ut
all: $(NAME) all: $(NAME)
$(NAME): $(NAME):
$(CC) -c $(SRC) $(INCLUDE) $(CFLAGS) $(CC) -c $(SRC) $(INCLUDE) $(CFLAGS)
ar rc $(NAME) $(OBJ) ar rc $(NAME) $(OBJ)
tests_run: tests_run:
$(CC) -o $(UT) $(SRC) $(TESTS) $(INCLUDE) $(COVERAGE) $(CFLAGS) $(CC) -o $(UT) $(SRC) $(TESTS) $(INCLUDE) $(COVERAGE) $(CFLAGS)
./$(UT) ./$(UT)
clean: clean:
rm -rf $(OBJ) rm -rf $(OBJ)
rm -rf *.gc* rm -rf *.gc*
fclean: clean fclean: clean
rm -rf $(NAME) rm -rf $(NAME)
rm -rf $(UT) rm -rf $(UT)
re: fclean all re: fclean all

View File

@@ -66,6 +66,6 @@ int my_getnbr(const char *str)
break; break;
} }
if (count <= 0) if (count <= 0)
return (0); return (0);
return init_print(str, count, start_index); return init_print(str, count, start_index);
} }

View File

@@ -1,20 +1,23 @@
// /*
// Created by anonymus-raccoon on 2/27/20. ** EPITECH PROJECT, 2020
// ** My3D
** File description:
** my_str_replace
*/
#include "my.h" #include "my.h"
char *my_str_replace(char *str, const char *to_replace, char c) char *my_str_replace(char *str, const char *to_replace, char c)
{ {
char *p; char *p;
int len = my_strlen(to_replace); int len = my_strlen(to_replace);
while ((p = my_strstr(str, to_replace))) { while ((p = my_strstr(str, to_replace))) {
*p = c; *p = c;
p++; p++;
for (char *ptr = p + len - 1; *ptr; ptr++, p++) for (char *ptr = p + len - 1; *ptr; ptr++, p++)
*p = *ptr; *p = *ptr;
*p = '\0'; *p = '\0';
} }
return (str); return (str);
} }

View File

@@ -15,7 +15,7 @@ char *my_strdup(const char *src)
char *ret = malloc(sizeof(char) * (length + 1)); char *ret = malloc(sizeof(char) * (length + 1));
if (!ret) if (!ret)
return (NULL); return (NULL);
for (int i = 0; i < length; i++) for (int i = 0; i < length; i++)
ret[i] = src[i]; ret[i] = src[i];
ret[length] = '\0'; ret[length] = '\0';

View File

@@ -55,7 +55,7 @@ char *tostr(int n)
char *ret = malloc(sizeof(char) * (count + 1)); char *ret = malloc(sizeof(char) * (count + 1));
if (!ret) if (!ret)
return (NULL); return (NULL);
putnbr_in(n, base, ret, count); putnbr_in(n, base, ret, count);
ret[count] = '\0'; ret[count] = '\0';

View File

@@ -1,176 +0,0 @@
/*
** EPITECH PROJECT, 2019
** Tests
** File description:
** test_disp_stdarg
*/
#include <criterion/criterion.h>
#include <criterion/redirect.h>
#include "my.h"
Test(disp, first, .init = cr_redirect_stdout)
{
my_printf("Insane %s, %c, %d, %s\n", "Yes", '8', 15, "Nope");
cr_assert_stdout_eq_str("Insane Yes, 8, 15, Nope\n");
}
Test(disp, faketag, .init = cr_redirect_stdout)
{
my_printf("Insane %Y, %c, %d, %s\n", '8', 15, "Nope");
cr_assert_stdout_eq_str("Insane %Y, 8, 15, Nope\n");
}
Test(disp, str, .init = cr_redirect_stdout)
{
my_printf("Insane %s\n", "156615");
cr_assert_stdout_eq_str("Insane 156615\n");
}
Test(disp, uints, .init = cr_redirect_stdout)
{
my_printf("Insane %u\n", 156615);
cr_assert_stdout_eq_str("Insane 156615\n");
}
Test(disp, characters, .init = cr_redirect_stdout)
{
my_printf("Insane %c\n", '^');
cr_assert_stdout_eq_str("Insane ^\n");
}
Test(disp, ints, .init = cr_redirect_stdout)
{
my_printf("Insane %d, %i\n", 15, -15);
cr_assert_stdout_eq_str("Insane 15, -15\n");
}
Test(disp, ptr, .init = cr_redirect_stdout)
{
int ptr = 15;
char *str = malloc(sizeof(char) * 25);
my_printf("Insane %p\n", &ptr);
sprintf(str, "Insane %p\n", &ptr);
cr_assert_stdout_eq_str(str);
}
Test(disp, nonprintable, .init = cr_redirect_stdout)
{
my_printf("Insane %S\n", "\aYes\a");
cr_assert_stdout_eq_str("Insane \\007Yes\\007\n");
}
Test(disp, binary, .init = cr_redirect_stdout)
{
my_printf("%b\n", 153152);
cr_assert_stdout_eq_str("100101011001000000\n");
}
Test(disp, octal, .init = cr_redirect_stdout)
{
my_printf("%o\n", 153152);
cr_assert_stdout_eq_str("453100\n");
}
Test(disp, hexa, .init = cr_redirect_stdout)
{
my_printf("%x\n", 1561356523);
cr_assert_stdout_eq_str("5d1068eb\n");
}
Test(disp, bighexa, .init = cr_redirect_stdout)
{
my_printf("%X\n", 1561356523);
cr_assert_stdout_eq_str("5D1068EB\n");
}
Test(disp, uintneg, .init = cr_redirect_stdout)
{
my_printf("%u\n", -500);
cr_assert_stdout_eq_str("4294966796\n");
}
Test(disp, noformat, .init = cr_redirect_stdout)
{
my_printf("%%\n");
cr_assert_stdout_eq_str("%\n");
}
Test(disp, floats, .init = cr_redirect_stdout)
{
my_printf("%f\n", 13.684);
cr_assert_stdout_eq_str("13.684\n");
}
Test(disp, morefloat, .init = cr_redirect_stdout)
{
my_printf("%f\n", 18.138613);
cr_assert_stdout_eq_str("18.138613\n");
}
Test(my_printf, mouliS, .init = cr_redirect_stdout)
{
my_printf("%S", "mouline\atte\n");
cr_assert_stdout_eq_str("mouline\\007tte\\012");
}
Test(my_printf, simplePtr, .init = cr_redirect_stdout)
{
my_printf("%p", 3456789);
cr_assert_stdout_eq_str("0x34bf15");
}
Test(my_printf, intLength, .init = cr_redirect_stdout)
{
my_printf("%05i", 15);
cr_assert_stdout_eq_str("00015");
}
Test(my_printf, intPlusSize, .init = cr_redirect_stdout)
{
my_printf("%0+5i", 15);
cr_assert_stdout_eq_str("+0015");
}
Test(my_printf, intLengthSpace, .init = cr_redirect_stdout)
{
my_printf("% 05i", 15);
cr_assert_stdout_eq_str(" 0015");
}
Test(my_printf, intLengthSpacePlus, .init = cr_redirect_stdout)
{
my_printf("% 0+5i", -15);
cr_assert_stdout_eq_str("-0015");
}
Test(my_printf, xLength, .init = cr_redirect_stdout)
{
my_printf("%05X", 15);
cr_assert_stdout_eq_str("0000F");
}
Test(my_printf, xPlusSize, .init = cr_redirect_stdout)
{
my_printf("%0+5X", 15);
cr_assert_stdout_eq_str("0000F");
}
Test(my_printf, xLengthSpace, .init = cr_redirect_stdout)
{
my_printf("%#X", -15);
cr_assert_stdout_eq_str("0XFFFFFFF1");
}
Test(my_printf, xLengthSpacePlus, .init = cr_redirect_stdout)
{
my_printf("%# +X", -15);
cr_assert_stdout_eq_str("0XFFFFFFF1");
}
Test(my_printf, stringWithMax, .init = cr_redirect_stdout)
{
my_printf("%# +03s", "ABCDEFG");
cr_assert_stdout_eq_str("ABC");
}

View File

@@ -4,7 +4,7 @@
<sprite name="check" src="assets/ui/check.png" /> <sprite name="check" src="assets/ui/check.png" />
<sprite name="cross" src="assets/ui/cross.png" /> <sprite name="cross" src="assets/ui/cross.png" />
<sprite name="front_panel" src="assets/ui/front_panel.png" /> <sprite name="front_panel" src="assets/ui/front_panel.png" />
<sprite name="button_background" src="assets/ui/button_background.png" /> <sprite name="button_background" src="assets/ui/button_background.png" />
<sprite name="happiness" src="assets/ui/happiness.png" /> <sprite name="happiness" src="assets/ui/happiness.png" />
<sprite name="clown" src="assets/ui/clown.png" /> <sprite name="clown" src="assets/ui/clown.png" />
<sprite name="tile_select" src="assets/ui/tile_select.png" /> <sprite name="tile_select" src="assets/ui/tile_select.png" />
@@ -17,11 +17,11 @@
<sprite name="comparator_on" src="assets/sprites/comparator_on.png" /> <sprite name="comparator_on" src="assets/sprites/comparator_on.png" />
<sprite name="mossy_cobblestone" src="assets/sprites/cobblestone_mossy.png" /> <sprite name="mossy_cobblestone" src="assets/sprites/cobblestone_mossy.png" />
<sprite name="command_block" src="assets/sprites/command_block.png" /> <sprite name="command_block" src="assets/sprites/command_block.png" />
<sprite name="black_background" src="assets/ui/black_background.png" /> <sprite name="black_background" src="assets/ui/black_background.png" />
<sprite name="crafting_table" src="assets/sprites/crafting_table_top.png" /> <sprite name="crafting_table" src="assets/sprites/crafting_table_top.png" />
<sprite name="grass_top" src="assets/sprites/grass_top.png" /> <sprite name="grass_top" src="assets/sprites/grass_top.png" />
<sprite name="grass_side" src="assets/sprites/grass_side.png" /> <sprite name="grass_side" src="assets/sprites/grass_side.png" />
<music src="assets/musics/music.ogg"/> <music src="assets/musics/music.ogg"/>
<font src="assets/fonts/roboto.ttf" /> <font src="assets/fonts/roboto.ttf" />
<tiles> <tiles>
@@ -33,7 +33,7 @@
</tiles> </tiles>
</data> </data>
<gc_entities> <gc_entities>
<camera x="0" y="300" /> <camera x="0" y="300" />
<gc_entity> <gc_entity>
<clickable_component click="map_manage_click"/> <clickable_component click="map_manage_click"/>
<map_manager_component /> <map_manager_component />
@@ -47,38 +47,38 @@
</renderer> </renderer>
</gc_entity> </gc_entity>
<gc_entity> <gc_entity>
<game_manager happiness="50%" stupidity="0%" /> <game_manager happiness="50%" stupidity="0%" />
<teams_component delay="10"> <teams_component delay="10">
<prefab src="prefabs/teams/forgot_register.gcprefab" height="20%" /> <prefab src="prefabs/teams/forgot_register.gcprefab" height="20%" />
<prefab src="prefabs/teams/absent.gcprefab" height="20%" /> <prefab src="prefabs/teams/absent.gcprefab" height="20%" />
</teams_component> </teams_component>
</gc_entity> </gc_entity>
<panel src="panel" x="7%" y="3%" width="37%" height="6%"/> <panel src="panel" x="7%" y="3%" width="37%" height="6%"/>
<button sprite="tile_select" x="3%" y="3%" width="%" height="3%" tooltip="Select a tile." tooltip_x="5" tooltip_y="-5" size="15" click="tile_select" /> <button sprite="tile_select" x="3%" y="3%" width="%" height="3%" tooltip="Select a tile." tooltip_x="5" tooltip_y="-5" size="15" click="tile_select" />
<button sprite="vertex_select" x="7%" y="3%" width="%" height="3%" tooltip="Select a Vertex." tooltip_y="-5" size="15" click="vertex_select" /> <button sprite="vertex_select" x="7%" y="3%" width="%" height="3%" tooltip="Select a Vertex." tooltip_y="-5" size="15" click="vertex_select" />
<button sprite="up_down" x="12%" y="3%" width="%" height="3%" tooltip="Move a tiles.\n - Up with left click.\n - Down with right click" tooltip_y="-15" size="15" click="up_down" /> <button sprite="up_down" x="12%" y="3%" width="%" height="3%" tooltip="Move a tiles.\n - Up with left click.\n - Down with right click" tooltip_y="-15" size="15" click="up_down" />
<button sprite="reset" x="15%" y="3%" width="%" height="3%" tooltip="Reset the height of a tile." tooltip_y="-5" size="15" click="reset" /> <button sprite="reset" x="15%" y="3%" width="%" height="3%" tooltip="Reset the height of a tile." tooltip_y="-5" size="15" click="reset" />
<button sprite="rotate" x="19%" y="3%" width="%" height="3%" tooltip="Rotate a texture" tooltip_y="-5" size="15" click="rotate" /> <button sprite="rotate" x="19%" y="3%" width="%" height="3%" tooltip="Rotate a texture" tooltip_y="-5" size="15" click="rotate" />
<button sprite="texture" x="23%" y="3%" width="%" height="3%" tooltip="Change the texture of a tile" tooltip_y="-5" size="15" click="texture" /> <button sprite="texture" x="23%" y="3%" width="%" height="3%" tooltip="Change the texture of a tile" tooltip_y="-5" size="15" click="texture" />
<panel src="panel" x="30%" y="3%" width="%" height="6%"/> <panel src="panel" x="30%" y="3%" width="%" height="6%"/>
<button sprite="texture" x="30%" y="3%" width="%" height="3%" tooltip="Select the texture to draw." tooltip_y="-5" size="15" click="switch_texture"> <button sprite="texture" x="30%" y="3%" width="%" height="3%" tooltip="Select the texture to draw." tooltip_y="-5" size="15" click="switch_texture">
<game_display stats="selected_tile" /> <game_display stats="selected_tile" />
</button> </button>
<panel src="panel" x="100%" y="50%" width="50%" height="120%"/> <panel src="panel" x="100%" y="50%" width="50%" height="120%"/>
<text text="TEAMS" x="88%" y="40"/> <text text="TEAMS" x="88%" y="40"/>
<panel src="panel" x="50%" y="98%" width="120%" height="4%"/> <panel src="panel" x="50%" y="98%" width="120%" height="4%"/>
<panel src="happiness" x="3%" y="98%" width="%" height="3%"/> <panel src="happiness" x="3%" y="98%" width="%" height="3%"/>
<text text="100%" x="6%" y="98%" size="13" tooltip="The level of happiness of your students.\n" padding_x="17" tooltip_x="10" tooltip_y="5"> <text text="100%" x="6%" y="98%" size="13" tooltip="The level of happiness of your students.\n" padding_x="17" tooltip_x="10" tooltip_y="5">
<game_display stats="happiness" /> <game_display stats="happiness" />
</text> </text>
<panel src="clown" x="10%" y="98%" width="%" height="3%" /> <panel src="clown" x="10%" y="98%" width="%" height="3%" />
<text text="100%" x="13%" y="98%" size="13" tooltip="The level of stupidity of your students.\nThey start doing stupid things if you'are too kind with them.\n\nYou will loose if this stat reach 100%" padding_x="17" tooltip_x="10" tooltip_y="5"> <text text="100%" x="13%" y="98%" size="13" tooltip="The level of stupidity of your students.\nThey start doing stupid things if you'are too kind with them.\n\nYou will loose if this stat reach 100%" padding_x="17" tooltip_x="10" tooltip_y="5">
<game_display stats="stupidity" /> <game_display stats="stupidity" />
</text> </text>
</gc_entities> </gc_entities>
</gc_scene> </gc_scene>

View File

@@ -5,9 +5,9 @@
<font src="assets/fonts/roboto.ttf" /> <font src="assets/fonts/roboto.ttf" />
</data> </data>
<gc_entities> <gc_entities>
<panel src="panel" x="50%" y="45%" width="300" height="69%"/> <panel src="panel" x="50%" y="45%" width="300" height="69%"/>
<text text="Game Over" x="50%" y="25%" resize="false"/> <text text="Game Over" x="50%" y="25%" resize="false"/>
<button text="Retry" x="50%" y="60%" click="start_button" color="black" width="200" resize="false" /> <button text="Retry" x="50%" y="60%" click="start_button" color="black" width="200" resize="false" />
<button text="Exit" x="50%" y="72%" click="quit" color="black" width="200" resize="false" /> <button text="Exit" x="50%" y="72%" click="quit" color="black" width="200" resize="false" />
</gc_entities> </gc_entities>
</gc_scene> </gc_scene>

View File

@@ -6,10 +6,10 @@
<font src="assets/fonts/roboto.ttf" /> <font src="assets/fonts/roboto.ttf" />
</data> </data>
<gc_entities> <gc_entities>
<panel src="panel" x="25%" y="45%" width="300" height="69%"/> <panel src="panel" x="25%" y="45%" width="300" height="69%"/>
<text text="Game Over" x="25%" y="25%" resize="false"/> <text text="Game Over" x="25%" y="25%" resize="false"/>
<panel src="martine" x="75%" y="50%" width="20%" height="%" /> <panel src="martine" x="75%" y="50%" width="20%" height="%" />
<button text="Retry" x="25%" y="60%" click="start_button" color="black" width="200" resize="false" /> <button text="Retry" x="25%" y="60%" click="start_button" color="black" width="200" resize="false" />
<button text="Exit" x="25%" y="72%" click="quit" color="black" width="200" resize="false" /> <button text="Exit" x="25%" y="72%" click="quit" color="black" width="200" resize="false" />
</gc_entities> </gc_entities>
</gc_scene> </gc_scene>

View File

@@ -5,11 +5,11 @@
<font src="assets/fonts/roboto.ttf" /> <font src="assets/fonts/roboto.ttf" />
</data> </data>
<gc_entities> <gc_entities>
<camera x="0" y="0" /> <camera x="0" y="0" />
<panel src="panel" x="50%" y="45%" width="300" height="69%"/> <panel src="panel" x="50%" y="45%" width="300" height="69%"/>
<text text="DPR tycoon" x="50%" y="25%" resize="false"/> <text text="DPR tycoon" x="50%" y="25%" resize="false"/>
<button text="Start Game" x="50%" y="50%" click="start_button" color="black" width="200" resize="false" /> <button text="Start Game" x="50%" y="50%" click="start_button" color="black" width="200" resize="false" />
<button text="Options" x="50%" y="61%" click="options" color="black" width="200" resize="false" /> <button text="Options" x="50%" y="61%" click="options" color="black" width="200" resize="false" />
<button text="Quit game" x="50%" y="72%" click="quit" color="black" width="200" resize="false" /> <button text="Quit game" x="50%" y="72%" click="quit" color="black" width="200" resize="false" />
</gc_entities> </gc_entities>
</gc_scene> </gc_scene>

View File

@@ -1,26 +1,26 @@
<gc_scene> <gc_scene>
<data> <data>
<sprite name="panel" src="assets/ui/panel.png" /> <sprite name="panel" src="assets/ui/panel.png" />
<sprite name="button_background" src="assets/ui/button_background.png" /> <sprite name="button_background" src="assets/ui/button_background.png" />
<sprite name="check" src="assets/ui/check.png" /> <sprite name="check" src="assets/ui/check.png" />
<sprite name="cross" src="assets/ui/cross.png" /> <sprite name="cross" src="assets/ui/cross.png" />
<sprite name="left" src="assets/ui/left.png" /> <sprite name="left" src="assets/ui/left.png" />
<sprite name="right" src="assets/ui/right.png" /> <sprite name="right" src="assets/ui/right.png" />
<font src="assets/fonts/roboto.ttf" /> <font src="assets/fonts/roboto.ttf" />
</data> </data>
<gc_entities> <gc_entities>
<panel src="panel" x="50%" y="45%" width="40%" height="65%" /> <panel src="panel" x="50%" y="45%" width="40%" height="65%" />
<text text="Options" x="50%" y="25%" /> <text text="Options" x="50%" y="25%" />
<text text="Framerate" x="41%" y="40%"/> <text text="Framerate" x="41%" y="40%"/>
<button x="53%" y="40%" click="framerate_down" sprite="left" width="2%" height="4%" /> <button x="53%" y="40%" click="framerate_down" sprite="left" width="2%" height="4%" />
<text x="59%" y="40%" size="18" text_id="52" /> <text x="59%" y="40%" size="18" text_id="52" />
<button x="65%" y="40%" click="framerate_up" sprite="right" width="2%" height="4%" /> <button x="65%" y="40%" click="framerate_up" sprite="right" width="2%" height="4%" />
<text text="Fullscreen" x="45%" y="50%" /> <text text="Fullscreen" x="45%" y="50%" />
<button x="60%" y="50%" click="fullscreen" sprite="cross" width="5%" height="%" background_id="50" /> <button x="60%" y="50%" click="fullscreen" sprite="cross" width="5%" height="%" background_id="50" />
<text text="Resolution" x="41%" y="60%"/> <text text="Resolution" x="41%" y="60%"/>
<button x="53%" y="60%" click="resolution_down" sprite="left" width="2%" height="4%" /> <button x="53%" y="60%" click="resolution_down" sprite="left" width="2%" height="4%" />
<text x="59%" y="60%" size="18" text_id="51" /> <text x="59%" y="60%" size="18" text_id="51" />
<button x="65%" y="60%" click="resolution_up" sprite="right" width="2%" height="4%" /> <button x="65%" y="60%" click="resolution_up" sprite="right" width="2%" height="4%" />
<button text="Back" x="50%" y="72%" click="goto_main_menu" color="black" width="200" resize="false" /> <button text="Back" x="50%" y="72%" click="goto_main_menu" color="black" width="200" resize="false" />
</gc_entities> </gc_entities>
</gc_scene> </gc_scene>

View File

@@ -1,7 +1,7 @@
<gc_entities> <gc_entities>
<button sprite="black_background" x="50%" y="50%" width="100%" height="100%" click="catch" tag="pause" /> <button sprite="black_background" x="50%" y="50%" width="100%" height="100%" click="catch" tag="pause" />
<panel src="panel" x="50%" y="45%" width="300" height="69%" tag="pause" /> <panel src="panel" x="50%" y="45%" width="300" height="69%" tag="pause" />
<text text="Pause" x="50%" y="25%" resize="false" tag="pause"/> <text text="Pause" x="50%" y="25%" resize="false" tag="pause"/>
<button text="Resume" x="50%" y="61%" click="toggle_pause" color="black" width="200" resize="false" tag="pause" /> <button text="Resume" x="50%" y="61%" click="toggle_pause" color="black" width="200" resize="false" tag="pause" />
<button text="Quit to menu" x="50%" y="72%" click="goto_main_menu" color="black" width="200" resize="false" tag="pause" /> <button text="Quit to menu" x="50%" y="72%" click="goto_main_menu" color="black" width="200" resize="false" tag="pause" />
</gc_entities> </gc_entities>

View File

@@ -1,6 +1,6 @@
<gc_entities> <gc_entities>
<panel src="front_panel" x="89%" y="80%" width="20%" height="8%" tag="teams" /> <panel src="front_panel" x="89%" y="80%" width="20%" height="8%" tag="teams" />
<text text="I was absent today at the talk.\nCould you set my status as present?" x="89%" y="82%" color="black" size="9" tag="teams" /> <text text="I was absent today at the talk.\nCould you set my status as present?" x="89%" y="82%" color="black" size="9" tag="teams" />
<button sprite="check" x="85%" y="85%" width="3%" height="%" click="absent_check" tag="teams" /> <button sprite="check" x="85%" y="85%" width="3%" height="%" click="absent_check" tag="teams" />
<button sprite="cross" x="93%" y="85%" width="3%" height="%" click="absent_cross" tag="teams" /> <button sprite="cross" x="93%" y="85%" width="3%" height="%" click="absent_cross" tag="teams" />
</gc_entities> </gc_entities>

View File

@@ -1,6 +1,6 @@
<gc_entities> <gc_entities>
<panel src="front_panel" x="89%" y="80%" width="20%" height="8%" tag="teams" /> <panel src="front_panel" x="89%" y="80%" width="20%" height="8%" tag="teams" />
<text text="I forgot to register for the module,\n could you register me?" x="89%" y="82%" color="black" size="9" tag="teams" /> <text text="I forgot to register for the module,\n could you register me?" x="89%" y="82%" color="black" size="9" tag="teams" />
<button sprite="front_panel" text="LMFAO" color="black" size="9" x="89%" y="86%" width="17%" height="5%" click="forgot_lmfao" tag="teams" /> <button sprite="front_panel" text="LMFAO" color="black" size="9" x="89%" y="86%" width="17%" height="5%" click="forgot_lmfao" tag="teams" />
<button sprite="front_panel" text="It's the first and the last time." color="black" size="9" x="89%" y="90%" width="17%" height="5%" click="forgot_ok" tag="teams" /> <button sprite="front_panel" text="It's the first and the last time." color="black" size="9" x="89%" y="90%" width="17%" height="5%" click="forgot_ok" tag="teams" />
</gc_entities> </gc_entities>

View File

@@ -1,160 +1,160 @@
<gc_map > <gc_map >
<vertex_data> <vertex_data>
<line> <line>
<row height="0" /> <row height="0" />
<row height="0" /> <row height="0" />
<row height="0" /> <row height="0" />
<row height="0" /> <row height="0" />
<row height="0" /> <row height="0" />
<row height="0" /> <row height="0" />
<row height="0" /> <row height="0" />
<row height="0" /> <row height="0" />
<row height="0" /> <row height="0" />
<row height="0" /> <row height="0" />
<row height="0" /> <row height="0" />
<row height="0" /> <row height="0" />
</line> </line>
<line> <line>
<row height="0" /> <row height="0" />
<row height="0" /> <row height="0" />
<row height="0" /> <row height="0" />
<row height="0" /> <row height="0" />
<row height="0" /> <row height="0" />
<row height="0" /> <row height="0" />
<row height="0" /> <row height="0" />
<row height="0" /> <row height="0" />
<row height="0" /> <row height="0" />
<row height="0" /> <row height="0" />
<row height="0" /> <row height="0" />
<row height="0" /> <row height="0" />
</line> </line>
<line> <line>
<row height="0" /> <row height="0" />
<row height="0" /> <row height="0" />
<row height="0" /> <row height="0" />
<row height="0" /> <row height="0" />
<row height="0" /> <row height="0" />
<row height="0" /> <row height="0" />
<row height="0" /> <row height="0" />
<row height="0" /> <row height="0" />
<row height="0" /> <row height="0" />
<row height="0" /> <row height="0" />
<row height="0" /> <row height="0" />
<row height="0" /> <row height="0" />
</line> </line>
<line> <line>
<row height="0" /> <row height="0" />
<row height="0" /> <row height="0" />
<row height="0" /> <row height="0" />
<row height="0" /> <row height="0" />
<row height="0" /> <row height="0" />
<row height="0" /> <row height="0" />
<row height="0" /> <row height="0" />
<row height="0" /> <row height="0" />
<row height="0" /> <row height="0" />
<row height="0" /> <row height="0" />
<row height="0" /> <row height="0" />
<row height="0" /> <row height="0" />
</line> </line>
<line> <line>
<row height="0" /> <row height="0" />
<row height="0" /> <row height="0" />
<row height="0" /> <row height="0" />
<row height="0" /> <row height="0" />
<row height="0" /> <row height="0" />
<row height="0" /> <row height="0" />
<row height="0" /> <row height="0" />
<row height="0" /> <row height="0" />
<row height="0" /> <row height="0" />
<row height="0" /> <row height="0" />
<row height="0" /> <row height="0" />
<row height="0" /> <row height="0" />
</line> </line>
<line> <line>
<row height="0" /> <row height="0" />
<row height="0" /> <row height="0" />
<row height="0" /> <row height="0" />
<row height="0" /> <row height="0" />
<row height="0" /> <row height="0" />
<row height="0" /> <row height="0" />
<row height="0" /> <row height="0" />
<row height="0" /> <row height="0" />
<row height="0" /> <row height="0" />
<row height="0" /> <row height="0" />
<row height="0" /> <row height="0" />
<row height="0" /> <row height="0" />
</line> </line>
<line> <line>
<row height="0" /> <row height="0" />
<row height="0" /> <row height="0" />
<row height="0" /> <row height="0" />
<row height="0" /> <row height="0" />
<row height="0" /> <row height="0" />
<row height="0" /> <row height="0" />
<row height="0" /> <row height="0" />
<row height="0" /> <row height="0" />
<row height="0" /> <row height="0" />
<row height="0" /> <row height="0" />
<row height="0" /> <row height="0" />
<row height="0" /> <row height="0" />
</line> </line>
<line> <line>
<row height="0" /> <row height="0" />
<row height="0" /> <row height="0" />
<row height="0" /> <row height="0" />
<row height="0" /> <row height="0" />
<row height="0" /> <row height="0" />
<row height="0" /> <row height="0" />
<row height="0" /> <row height="0" />
<row height="0" /> <row height="0" />
<row height="0" /> <row height="0" />
<row height="0" /> <row height="0" />
<row height="0" /> <row height="0" />
<row height="0" /> <row height="0" />
</line> </line>
<line> <line>
<row height="0" /> <row height="0" />
<row height="0" /> <row height="0" />
<row height="0" /> <row height="0" />
<row height="0" /> <row height="0" />
<row height="0" /> <row height="0" />
<row height="0" /> <row height="0" />
<row height="0" /> <row height="0" />
<row height="0" /> <row height="0" />
<row height="0" /> <row height="0" />
<row height="0" /> <row height="0" />
<row height="0" /> <row height="0" />
<row height="0" /> <row height="0" />
</line> </line>
<line> <line>
<row height="0" /> <row height="0" />
<row height="0" /> <row height="0" />
<row height="0" /> <row height="0" />
<row height="0" /> <row height="0" />
<row height="0" /> <row height="0" />
<row height="0" /> <row height="0" />
<row height="0" /> <row height="0" />
<row height="0" /> <row height="0" />
<row height="0" /> <row height="0" />
<row height="0" /> <row height="0" />
<row height="0" /> <row height="0" />
<row height="0" /> <row height="0" />
<row height="0" /> <row height="0" />
</line> </line>
<line> <line>
<row height="0" /> <row height="0" />
<row height="0" /> <row height="0" />
<row height="0" /> <row height="0" />
<row height="0" /> <row height="0" />
<row height="0" /> <row height="0" />
<row height="0" /> <row height="0" />
<row height="0" /> <row height="0" />
<row height="0" /> <row height="0" />
<row height="0" /> <row height="0" />
<row height="0" /> <row height="0" />
<row height="0" /> <row height="0" />
<row height="0" /> <row height="0" />
</line> </line>
</vertex_data> </vertex_data>
<tiles_data> <tiles_data>
<texture x="0" y="0" name="cobblestone" /> <texture x="0" y="0" name="cobblestone" />

View File

@@ -16,56 +16,56 @@
static void ctr(void *component, va_list args) static void ctr(void *component, va_list args)
{ {
struct game_display *cmp = (struct game_display *)component; struct game_display *cmp = (struct game_display *)component;
cmp->type = va_arg(args, display_type); cmp->type = va_arg(args, display_type);
} }
static void fdctr(gc_entity *entity, gc_scene *scene, void *component, node *n) static void fdctr(gc_entity *entity, gc_scene *scene, void *component, node *n)
{ {
struct game_display *cmp = (struct game_display *)component; struct game_display *cmp = (struct game_display *)component;
struct renderer *rend = GETCMP(entity, renderer); struct renderer *rend = GETCMP(entity, renderer);
char *display_type = xml_gettempprop(n, "stats"); char *display_type = xml_gettempprop(n, "stats");
if (!my_strcmp(display_type, "selected_tile")) { if (!my_strcmp(display_type, "selected_tile")) {
cmp->type = SELECT_TILE_DISPLAY; cmp->type = SELECT_TILE_DISPLAY;
return; return;
} }
if (!my_strcmp(display_type, "happiness")) if (!my_strcmp(display_type, "happiness"))
cmp->type = HAPPINESS_DISPLAY; cmp->type = HAPPINESS_DISPLAY;
else else
cmp->type = STUPIDITY_DISPLAY; cmp->type = STUPIDITY_DISPLAY;
if (!rend || rend->type != GC_TXTREND) { if (!rend || rend->type != GC_TXTREND) {
my_printf("Using a game display without a text renderer.\n"); my_printf("Using a game display without a text renderer.\n");
return; return;
} }
((gc_text *)rend->data)->text = malloc(sizeof(char) * 10); ((gc_text *)rend->data)->text = malloc(sizeof(char) * 10);
if (((gc_text *)rend->data)->text) if (((gc_text *)rend->data)->text)
((gc_text *)rend->data)->text[0] = '\0'; ((gc_text *)rend->data)->text[0] = '\0';
} }
static void dtr(void *component) static void dtr(void *component)
{ {
(void)component; (void)component;
} }
static char *serialize(void *component) static char *serialize(void *component)
{ {
(void)component; (void)component;
return (NULL); return (NULL);
} }
const struct game_display game_display = { const struct game_display game_display = {
base: { base: {
name: "game_display", name: "game_display",
size: sizeof(struct game_display), size: sizeof(struct game_display),
dependencies: (char *[]) { dependencies: (char *[]) {
NULL NULL
}, },
ctr: &ctr, ctr: &ctr,
fdctr: &fdctr, fdctr: &fdctr,
dtr: &dtr, dtr: &dtr,
serialize: &serialize, serialize: &serialize,
destroy: &component_destroy destroy: &component_destroy
} }
}; };

View File

@@ -13,44 +13,44 @@
static void ctr(void *component, va_list args) static void ctr(void *component, va_list args)
{ {
struct game_manager *cmp = (struct game_manager *)component; struct game_manager *cmp = (struct game_manager *)component;
cmp->happiness = va_arg(args, int); cmp->happiness = va_arg(args, int);
cmp->stupidity = va_arg(args, int); cmp->stupidity = va_arg(args, int);
} }
static void fdctr(gc_entity *entity, gc_scene *scene, void *component, node *n) static void fdctr(gc_entity *entity, gc_scene *scene, void *component, node *n)
{ {
struct game_manager *cmp = (struct game_manager *)component; struct game_manager *cmp = (struct game_manager *)component;
cmp->happiness = xml_getintprop(n, "happiness"); cmp->happiness = xml_getintprop(n, "happiness");
cmp->stupidity = xml_getintprop(n, "stupidity"); cmp->stupidity = xml_getintprop(n, "stupidity");
if (scene->get_entity_by_cmp(scene, "game_manager")) if (scene->get_entity_by_cmp(scene, "game_manager"))
my_printf(MULTIPLE_GAME_MGR_ERROR); my_printf(MULTIPLE_GAME_MGR_ERROR);
} }
static void dtr(void *component) static void dtr(void *component)
{ {
(void)component; (void)component;
} }
static char *serialize(void *component) static char *serialize(void *component)
{ {
(void)component; (void)component;
return (NULL); return (NULL);
} }
const struct game_manager game_manager = { const struct game_manager game_manager = {
base: { base: {
name: "game_manager", name: "game_manager",
size: sizeof(struct game_manager), size: sizeof(struct game_manager),
dependencies: (char *[]) { dependencies: (char *[]) {
NULL NULL
}, },
ctr: &ctr, ctr: &ctr,
fdctr: &fdctr, fdctr: &fdctr,
dtr: &dtr, dtr: &dtr,
serialize: &serialize, serialize: &serialize,
destroy: &component_destroy destroy: &component_destroy
} }
}; };

View File

@@ -18,52 +18,52 @@
void click_tile(gc_engine *engine, struct map_manager_component *manager, \ void click_tile(gc_engine *engine, struct map_manager_component *manager, \
struct tile *ret, bool is_left) struct tile *ret, bool is_left)
{ {
bool r = manager->brush == RESET; bool r = manager->brush == RESET;
switch (manager->brush) { switch (manager->brush) {
case ROTATE: case ROTATE:
ret->data = (ret->data + (is_left ? 1 : -1U)) % 4; ret->data = (ret->data + (is_left ? 1 : -1U)) % 4;
break; break;
case TEXTURE: case TEXTURE:
ret->texture = manager->selected_texture; ret->texture = manager->selected_texture;
break; break;
case MOVE: case MOVE:
case RESET: case RESET:
move_tile(engine, ret, ALL_VERTICES | is_left, r); move_tile(engine, ret, ALL_VERTICES | is_left, r);
break; break;
} }
} }
bool tile_interact(gc_engine *engine, gc_entity *entity, gc_vector2 pos, \ bool tile_interact(gc_engine *engine, gc_entity *entity, gc_vector2 pos, \
enum gc_mousekeys key) enum gc_mousekeys key)
{ {
struct vertex_component *map = GETCMP(entity, vertex_component); struct vertex_component *map = GETCMP(entity, vertex_component);
struct map_manager_component *manager = GETCMP(entity, map_manager_component); struct map_manager_component *manager = GETCMP(entity, map_manager_component);
struct tile *ret = get_tile_from_pos(map, pos); struct tile *ret = get_tile_from_pos(map, pos);
bool r = manager->brush == RESET; bool r = manager->brush == RESET;
int ind; int ind;
if (!map || !manager) { if (!map || !manager) {
my_printf("map not found\n"); my_printf("map not found\n");
return (false); return (false);
} }
if (!ret) if (!ret)
return (false); return (false);
if (manager->tile_mode) if (manager->tile_mode)
click_tile(engine, manager, ret, key == GC_LEFT); click_tile(engine, manager, ret, key == GC_LEFT);
else { else {
ind = get_index_nearest_vertex(ret, pos); ind = get_index_nearest_vertex(ret, pos);
move_tile(engine, ret, ((int) pow(2, ind + 1)) | (key == GC_LEFT), r); move_tile(engine, ret, ((int) pow(2, ind + 1)) | (key == GC_LEFT), r);
} }
return (false); return (false);
} }
void move_tile(gc_engine *engine, struct tile *ret, char mode, bool r) void move_tile(gc_engine *engine, struct tile *ret, char mode, bool r)
{ {
int val = (mode & INVERT_ADD_VALUE) ? ADD_VALUE : -ADD_VALUE; int val = (mode & INVERT_ADD_VALUE) ? ADD_VALUE : -ADD_VALUE;
for (int i = 0; i < 4; i++) { for (int i = 0; i < 4; i++) {
if (mode & (int)pow(2, i + 1)) if (mode & (int)pow(2, i + 1))
ret->corners[i]->z += (r) ? -ret->corners[i]->z : val; ret->corners[i]->z += (r) ? -ret->corners[i]->z : val;
} }
} }

View File

@@ -1,6 +1,9 @@
// /*
// Created by anonymus-raccoon on 3/10/20. ** EPITECH PROJECT, 2020
// ** My3D
** File description:
** map_manager_component
*/
#include <components/isometry/map_manager_component.h> #include <components/isometry/map_manager_component.h>
#include "engine.h" #include "engine.h"
@@ -11,45 +14,45 @@
static void ctr(void *comp, va_list args) static void ctr(void *comp, va_list args)
{ {
struct map_manager_component *cmp = (struct map_manager_component *)comp; struct map_manager_component *cmp = (struct map_manager_component *)comp;
cmp->tile_mode = true; cmp->tile_mode = true;
cmp->brush = MOVE; cmp->brush = MOVE;
} }
static void fdctr(gc_entity *entity, gc_scene *scene, void *comp, node *n) static void fdctr(gc_entity *entity, gc_scene *scene, void *comp, node *n)
{ {
struct map_manager_component *cmp = (struct map_manager_component *)comp; struct map_manager_component *cmp = (struct map_manager_component *)comp;
void **data = scene->get_data(scene, "tiles", NULL); void **data = scene->get_data(scene, "tiles", NULL);
cmp->tile_mode = true; cmp->tile_mode = true;
cmp->brush = MOVE; cmp->brush = MOVE;
if (data) if (data)
cmp->selected_texture = data[0]; cmp->selected_texture = data[0];
} }
static void dtr(void *component) static void dtr(void *component)
{ {
(void)component; (void)component;
} }
static char *serialize(void *component) static char *serialize(void *component)
{ {
(void)component; (void)component;
return (NULL); return (NULL);
} }
const struct map_manager_component map_manager_component = { const struct map_manager_component map_manager_component = {
base: { base: {
name: "map_manager_component", name: "map_manager_component",
size: sizeof(struct map_manager_component), size: sizeof(struct map_manager_component),
dependencies: (char *[]){ dependencies: (char *[]){
NULL NULL
}, },
ctr: &ctr, ctr: &ctr,
fdctr: &fdctr, fdctr: &fdctr,
dtr: &dtr, dtr: &dtr,
serialize: &serialize, serialize: &serialize,
destroy: &component_destroy destroy: &component_destroy
} }
}; };

View File

@@ -13,57 +13,57 @@
static void ctr(void *component, va_list args) static void ctr(void *component, va_list args)
{ {
struct teams_component *cmp = (struct teams_component *)component; struct teams_component *cmp = (struct teams_component *)component;
cmp->delay = va_arg(args, double); cmp->delay = va_arg(args, double);
cmp->next_teams = cmp->delay; cmp->next_teams = cmp->delay;
} }
static void fdctr(gc_entity *entity, gc_scene *scene, void *component, node *n) static void fdctr(gc_entity *entity, gc_scene *scene, void *component, node *n)
{ {
struct teams_component *cmp = (struct teams_component *)component; struct teams_component *cmp = (struct teams_component *)component;
cmp->delay = xml_getfloatprop(n, "delay"); cmp->delay = xml_getfloatprop(n, "delay");
cmp->next_teams = cmp->delay; cmp->next_teams = cmp->delay;
cmp->prefab_count = xml_getchildcount_filtered(n, "prefab"); cmp->prefab_count = xml_getchildcount_filtered(n, "prefab");
cmp->prefabs = malloc(sizeof(char *) * cmp->prefab_count); cmp->prefabs = malloc(sizeof(char *) * cmp->prefab_count);
cmp->prefabs_size = malloc(sizeof(int) * cmp->prefab_count); cmp->prefabs_size = malloc(sizeof(int) * cmp->prefab_count);
n = n->child; n = n->child;
if (!cmp->prefabs || !cmp->prefab_count) { if (!cmp->prefabs || !cmp->prefab_count) {
cmp->prefabs = NULL; cmp->prefabs = NULL;
cmp->prefabs_size = NULL; cmp->prefabs_size = NULL;
cmp->prefab_count = 0; cmp->prefab_count = 0;
return; return;
} }
for (int i = 0; i < cmp->prefab_count; i++) { for (int i = 0; i < cmp->prefab_count; i++) {
cmp->prefabs[i] = xml_getproperty(n, "src"); cmp->prefabs[i] = xml_getproperty(n, "src");
cmp->prefabs_size[i] = xml_getintprop(n, "height"); cmp->prefabs_size[i] = xml_getintprop(n, "height");
n = n->next; n = n->next;
} }
} }
static void dtr(void *component) static void dtr(void *component)
{ {
(void)component; (void)component;
} }
static char *serialize(void *component) static char *serialize(void *component)
{ {
(void)component; (void)component;
return (NULL); return (NULL);
} }
const struct teams_component teams_component = { const struct teams_component teams_component = {
base: { base: {
name: "teams_component", name: "teams_component",
size: sizeof(struct teams_component), size: sizeof(struct teams_component),
dependencies: (char *[]) { dependencies: (char *[]) {
NULL NULL
}, },
ctr: &ctr, ctr: &ctr,
fdctr: &fdctr, fdctr: &fdctr,
dtr: &dtr, dtr: &dtr,
serialize: &serialize, serialize: &serialize,
destroy: &component_destroy destroy: &component_destroy
} }
}; };

View File

@@ -1,6 +1,9 @@
// /*
// Created by anonymus-raccoon on 3/11/20. ** EPITECH PROJECT, 2020
// ** My3D
** File description:
** framerate
*/
#include "entity.h" #include "entity.h"
#include "engine.h" #include "engine.h"
@@ -11,57 +14,56 @@
#include "limits.h" #include "limits.h"
static const int framerates[] = { static const int framerates[] = {
30, 30,
60, 60,
120, 120,
INT_MAX INT_MAX
}; };
void framerate_set_text(gc_entity *entity, gc_engine *engine) void framerate_set_text(gc_entity *entity, gc_engine *engine)
{ {
struct sfml_renderer_system *rend = GETSYS(engine, sfml_renderer_system); struct sfml_renderer_system *rend = GETSYS(engine, sfml_renderer_system);
struct renderer *renderer; struct renderer *renderer;
char *framerate; char *framerate;
if (!entity) if (!entity)
return; return;
renderer = GETCMP(entity, renderer); renderer = GETCMP(entity, renderer);
if (!rend || !renderer || renderer->type != GC_TXTREND) if (!rend || !renderer || renderer->type != GC_TXTREND)
return; return;
framerate = tostr(rend->framerate); framerate = tostr(rend->framerate);
free(((gc_text *)renderer->data)->text); free(((gc_text *)renderer->data)->text);
((gc_text *)renderer->data)->text = framerate; ((gc_text *)renderer->data)->text = framerate;
} }
bool framerate_down(gc_engine *engine, gc_entity *entity, gc_vector2 _) bool framerate_down(gc_engine *engine, gc_entity *entity, gc_vector2 _)
{ {
struct sfml_renderer_system *rend = GETSYS(engine, sfml_renderer_system); struct sfml_renderer_system *rend = GETSYS(engine, sfml_renderer_system);
int i = 2; int i = 2;
if (!rend || rend->is_fullscreen) if (!rend || rend->is_fullscreen)
return (false); return (false);
while (i > 0 && framerates[i] >= rend->framerate) while (i > 0 && framerates[i] >= rend->framerate)
i--; i--;
sfRenderWindow_setFramerateLimit(rend->window, framerates[i]); sfRenderWindow_setFramerateLimit(rend->window, framerates[i]);
rend->framerate = framerates[i]; rend->framerate = framerates[i];
framerate_set_text(engine->scene->get_entity(engine->scene, 52), engine); framerate_set_text(engine->scene->get_entity(engine->scene, 52), engine);
return (true); return (true);
} }
bool framerate_up(gc_engine *engine, gc_entity *entity, gc_vector2 _) bool framerate_up(gc_engine *engine, gc_entity *entity, gc_vector2 _)
{ {
struct sfml_renderer_system *rend = GETSYS(engine, sfml_renderer_system); struct sfml_renderer_system *rend = GETSYS(engine, sfml_renderer_system);
int i = 0; int i = 0;
if (!rend || rend->is_fullscreen) if (!rend || rend->is_fullscreen)
return (false); return (false);
while (framerates[i] <= rend->framerate) while (framerates[i] <= rend->framerate)
i++; i++;
if (framerates[i] == INT_MAX) if (framerates[i] == INT_MAX)
return (true); return (true);
sfRenderWindow_setFramerateLimit(rend->window, framerates[i]); sfRenderWindow_setFramerateLimit(rend->window, framerates[i]);
rend->framerate = framerates[i]; rend->framerate = framerates[i];
framerate_set_text(engine->scene->get_entity(engine->scene, 52), engine); framerate_set_text(engine->scene->get_entity(engine->scene, 52), engine);
return (true); return (true);
} }

View File

@@ -19,44 +19,44 @@
#include "map_interactions.h" #include "map_interactions.h"
const struct callback callbacks[] = { const struct callback callbacks[] = {
{"start_button", &start_button}, {"start_button", &start_button},
{"options", &options}, {"options", &options},
{"goto_main_menu", &goto_main_menu}, {"goto_main_menu", &goto_main_menu},
{"quit", &quit}, {"quit", &quit},
{"fullscreen", &fullscreen}, {"fullscreen", &fullscreen},
{"map_manage_click", &tile_interact}, {"map_manage_click", &tile_interact},
{"resolution_down", &resolution_down}, {"resolution_down", &resolution_down},
{"resolution_up", &resolution_up}, {"resolution_up", &resolution_up},
{"framerate_up", &framerate_up}, {"framerate_up", &framerate_up},
{"framerate_down", &framerate_down}, {"framerate_down", &framerate_down},
{"absent_check", &absent_check}, {"absent_check", &absent_check},
{"absent_cross", &absent_cross}, {"absent_cross", &absent_cross},
{"forgot_lmfao", &forgot_lmfao}, {"forgot_lmfao", &forgot_lmfao},
{"forgot_ok", &forgot_ok}, {"forgot_ok", &forgot_ok},
{"catch", &catch}, {"catch", &catch},
{"toggle_pause", &toggle_pause}, {"toggle_pause", &toggle_pause},
{"toggle_pause", &toggle_pause}, {"toggle_pause", &toggle_pause},
{"tile_select", &tile_select}, {"tile_select", &tile_select},
{"vertex_select", &vertex_select}, {"vertex_select", &vertex_select},
{"up_down", &up_down}, {"up_down", &up_down},
{"reset", &reset}, {"reset", &reset},
{"rotate", &rotate}, {"rotate", &rotate},
{"texture", &texture}, {"texture", &texture},
{"switch_texture", &switch_texture}, {"switch_texture", &switch_texture},
{NULL, NULL} {NULL, NULL}
}; };
int register_customcmps(gc_engine *engine) int register_customcmps(gc_engine *engine)
{ {
engine->add_component(engine, &game_manager); engine->add_component(engine, &game_manager);
engine->add_system(engine, new_system(&game_manager_system, engine)); engine->add_system(engine, new_system(&game_manager_system, engine));
engine->add_component(engine, &game_display); engine->add_component(engine, &game_display);
engine->add_system(engine, &game_display_system); engine->add_system(engine, &game_display_system);
engine->add_component(engine, &teams_component); engine->add_component(engine, &teams_component);
engine->add_system(engine, &teams_system); engine->add_system(engine, &teams_system);
engine->finish_physics(engine); engine->finish_physics(engine);
for (int i = 0; callbacks[i].func; i++) for (int i = 0; callbacks[i].func; i++)
engine->add_callback(engine, callbacks[i].name, callbacks[i].func); engine->add_callback(engine, callbacks[i].name, callbacks[i].func);
return (0); return (0);
} }
@@ -72,7 +72,7 @@ int create_game_scene(gc_engine *engine)
return (0); return (0);
} }
int start_game() int start_game(void)
{ {
gc_engine *engine = engine_create(); gc_engine *engine = engine_create();
sfClock *clock = sfClock_create(); sfClock *clock = sfClock_create();

View File

@@ -1,6 +1,9 @@
// /*
// Created by anonymus-raccoon on 2/24/20. ** EPITECH PROJECT, 2020
// ** My3D
** File description:
** main_menu
*/
#include <systems/sfml_renderer_system.h> #include <systems/sfml_renderer_system.h>
#include "engine.h" #include "engine.h"
@@ -10,56 +13,56 @@
bool start_button(gc_engine *engine, gc_entity *entity, gc_vector2 _) bool start_button(gc_engine *engine, gc_entity *entity, gc_vector2 _)
{ {
gc_scene *scene = scene_create(engine, "prefabs/game.gcprefab"); gc_scene *scene = scene_create(engine, "prefabs/game.gcprefab");
if (!scene) { if (!scene) {
engine->should_close = true; engine->should_close = true;
my_printf("The game scene couldn't be loaded.\n"); my_printf("The game scene couldn't be loaded.\n");
return (true); return (true);
} }
engine->change_scene(engine, scene); engine->change_scene(engine, scene);
return (true); return (true);
} }
bool options(gc_engine *engine, gc_entity *entity, gc_vector2 _) bool options(gc_engine *engine, gc_entity *entity, gc_vector2 _)
{ {
gc_scene *scene = scene_create(engine, "prefabs/options.gcprefab"); gc_scene *scene = scene_create(engine, "prefabs/options.gcprefab");
struct sfml_renderer_system *rend = GETSYS(engine, sfml_renderer_system); struct sfml_renderer_system *rend = GETSYS(engine, sfml_renderer_system);
if (!scene) { if (!scene) {
engine->should_close = true; engine->should_close = true;
my_printf("The option scene couldn't be loaded.\n"); my_printf("The option scene couldn't be loaded.\n");
return (true); return (true);
} }
engine->change_scene(engine, scene); engine->change_scene(engine, scene);
entity = engine->scene->get_entity(engine->scene, 50); entity = engine->scene->get_entity(engine->scene, 50);
if (rend) if (rend)
checkbox_update(engine->scene, entity, rend->is_fullscreen); checkbox_update(engine->scene, entity, rend->is_fullscreen);
entity = engine->scene->get_entity(engine->scene, 51); entity = engine->scene->get_entity(engine->scene, 51);
resolution_set_text(entity, engine); resolution_set_text(entity, engine);
entity = engine->scene->get_entity(engine->scene, 52); entity = engine->scene->get_entity(engine->scene, 52);
framerate_set_text(entity, engine); framerate_set_text(entity, engine);
return (true); return (true);
} }
bool goto_main_menu(gc_engine *engine, gc_entity *entity, gc_vector2 _) bool goto_main_menu(gc_engine *engine, gc_entity *entity, gc_vector2 _)
{ {
gc_scene *scene = scene_create(engine, "prefabs/mainmenu.gcprefab"); gc_scene *scene = scene_create(engine, "prefabs/mainmenu.gcprefab");
if (!scene) { if (!scene) {
engine->should_close = true; engine->should_close = true;
my_printf("The option scene couldn't be loaded.\n"); my_printf("The option scene couldn't be loaded.\n");
return (true); return (true);
} }
engine->change_scene(engine, scene); engine->change_scene(engine, scene);
return (true); return (true);
} }
bool quit(gc_engine *engine, gc_entity *entity, gc_vector2 _) bool quit(gc_engine *engine, gc_entity *entity, gc_vector2 _)
{ {
engine->should_close = true; engine->should_close = true;
return (true); return (true);
} }
bool catch(gc_engine *engine, gc_entity *entity, gc_vector2 _) bool catch(gc_engine *engine, gc_entity *entity, gc_vector2 _)
{ {
return (true); return (true);
} }

View File

@@ -1,6 +1,9 @@
// /*
// Created by anonymus-raccoon on 3/2/20. ** EPITECH PROJECT, 2020
// ** My3D
** File description:
** options
*/
#include "engine.h" #include "engine.h"
#include "setup.h" #include "setup.h"
@@ -14,99 +17,99 @@
#include <limits.h> #include <limits.h>
static const gc_vector2i resolutions[] = { static const gc_vector2i resolutions[] = {
{800, 600}, {800, 600},
{1280, 720}, {1280, 720},
{1920, 1080}, {1920, 1080},
{INT_MAX, INT_MAX} {INT_MAX, INT_MAX}
}; };
int checkbox_update(gc_scene *s, gc_entity *entity, bool checked) int checkbox_update(gc_scene *s, gc_entity *entity, bool checked)
{ {
struct renderer *renderer; struct renderer *renderer;
char *sprite = checked ? "check" : "cross"; char *sprite = checked ? "check" : "cross";
if (!entity) if (!entity)
return (-1); return (-1);
renderer = GETCMP(entity, renderer); renderer = GETCMP(entity, renderer);
if (!renderer || renderer->type != GC_TEXTUREREND) if (!renderer || renderer->type != GC_TEXTUREREND)
return (-1); return (-1);
((gc_sprite *)renderer->data)->texture = s->get_data(s, "sprite", sprite); ((gc_sprite *)renderer->data)->texture = s->get_data(s, "sprite", sprite);
return (0); return (0);
} }
void resolution_set_text(gc_entity *entity, gc_engine *engine) void resolution_set_text(gc_entity *entity, gc_engine *engine)
{ {
struct sfml_renderer_system *rend = GETSYS(engine, sfml_renderer_system); struct sfml_renderer_system *rend = GETSYS(engine, sfml_renderer_system);
struct renderer *renderer; struct renderer *renderer;
char *resolution = malloc(sizeof(char) * 10); char *resolution = malloc(sizeof(char) * 10);
if (!entity) if (!entity)
return; return;
renderer = GETCMP(entity, renderer); renderer = GETCMP(entity, renderer);
if (!rend || !renderer || renderer->type != GC_TXTREND) if (!rend || !renderer || renderer->type != GC_TXTREND)
return; return;
snprintf(resolution, 10, "%ix%i", rend->resolution.x, rend->resolution.y); snprintf(resolution, 10, "%ix%i", rend->resolution.x, rend->resolution.y);
if (rend->is_fullscreen) if (rend->is_fullscreen)
my_strcpy(resolution, "auto"); my_strcpy(resolution, "auto");
free(((gc_text *)renderer->data)->text); free(((gc_text *)renderer->data)->text);
((gc_text *)renderer->data)->text = resolution; ((gc_text *)renderer->data)->text = resolution;
} }
bool fullscreen(gc_engine *engine, gc_entity *entity, gc_vector2 _) bool fullscreen(gc_engine *engine, gc_entity *entity, gc_vector2 _)
{ {
struct sfml_renderer_system *rend = GETSYS(engine, sfml_renderer_system); struct sfml_renderer_system *rend = GETSYS(engine, sfml_renderer_system);
if (!rend) if (!rend)
return (false); return (false);
rend->is_fullscreen = !rend->is_fullscreen; rend->is_fullscreen = !rend->is_fullscreen;
if (checkbox_update(engine->scene, entity, rend->is_fullscreen) < 0) if (checkbox_update(engine->scene, entity, rend->is_fullscreen) < 0)
return (false); return (false);
sfRenderWindow_destroy(rend->window); sfRenderWindow_destroy(rend->window);
if (rend->is_fullscreen) if (rend->is_fullscreen)
rend->window = sfRenderWindow_create(sfVideoMode_getDesktopMode(), \ rend->window = sfRenderWindow_create(sfVideoMode_getDesktopMode(), \
"My3D", sfFullscreen | sfClose, NULL); "My3D", sfFullscreen | sfClose, NULL);
else else
rend->window = sfRenderWindow_create((sfVideoMode){rend->resolution.x, \ rend->window = sfRenderWindow_create((sfVideoMode){rend->resolution.x, \
rend->resolution.y, 32}, "My3D", sfDefaultStyle, NULL); rend->resolution.y, 32}, "My3D", sfDefaultStyle, NULL);
resolution_set_text(engine->scene->get_entity(engine->scene, 51), engine); resolution_set_text(engine->scene->get_entity(engine->scene, 51), engine);
return (true); return (true);
} }
bool resolution_down(gc_engine *engine, gc_entity *entity, gc_vector2 _) bool resolution_down(gc_engine *engine, gc_entity *entity, gc_vector2 _)
{ {
struct sfml_renderer_system *rend = GETSYS(engine, sfml_renderer_system); struct sfml_renderer_system *rend = GETSYS(engine, sfml_renderer_system);
int i = 2; int i = 2;
if (!rend || rend->is_fullscreen) if (!rend || rend->is_fullscreen)
return (false); return (false);
while (i > 0 && resolutions[i].x >= rend->resolution.x) while (i > 0 && resolutions[i].x >= rend->resolution.x)
i--; i--;
sfRenderWindow_setSize(rend->window, (sfVector2u){ sfRenderWindow_setSize(rend->window, (sfVector2u){
resolutions[i].x, resolutions[i].x,
resolutions[i].y resolutions[i].y
}); });
rend->resolution = resolutions[i]; rend->resolution = resolutions[i];
resolution_set_text(engine->scene->get_entity(engine->scene, 51), engine); resolution_set_text(engine->scene->get_entity(engine->scene, 51), engine);
return (true); return (true);
} }
bool resolution_up(gc_engine *engine, gc_entity *entity, gc_vector2 _) bool resolution_up(gc_engine *engine, gc_entity *entity, gc_vector2 _)
{ {
struct sfml_renderer_system *rend = GETSYS(engine, sfml_renderer_system); struct sfml_renderer_system *rend = GETSYS(engine, sfml_renderer_system);
int i = 0; int i = 0;
if (!rend || rend->is_fullscreen) if (!rend || rend->is_fullscreen)
return (false); return (false);
while (resolutions[i].x <= rend->resolution.x) while (resolutions[i].x <= rend->resolution.x)
i++; i++;
if (resolutions[i].x == INT_MAX) if (resolutions[i].x == INT_MAX)
return (true); return (true);
sfRenderWindow_setSize(rend->window, (sfVector2u){ sfRenderWindow_setSize(rend->window, (sfVector2u){
resolutions[i].x, resolutions[i].x,
resolutions[i].y resolutions[i].y
}); });
rend->resolution = resolutions[i]; rend->resolution = resolutions[i];
resolution_set_text(engine->scene->get_entity(engine->scene, 51), engine); resolution_set_text(engine->scene->get_entity(engine->scene, 51), engine);
return (true); return (true);
} }

View File

@@ -1,6 +1,9 @@
// /*
// Created by anonymus-raccoon on 3/11/20. ** EPITECH PROJECT, 2020
// ** My3D
** File description:
** selectors
*/
#include <stdbool.h> #include <stdbool.h>
#include <components/isometry/map_manager_component.h> #include <components/isometry/map_manager_component.h>
@@ -9,26 +12,26 @@
bool tile_select(gc_engine *engine, gc_entity *entity, gc_vector2 _) bool tile_select(gc_engine *engine, gc_entity *entity, gc_vector2 _)
{ {
gc_scene *scene = engine->scene; gc_scene *scene = engine->scene;
gc_list *list = scene->get_entity_by_cmp(scene, "map_manager_component"); gc_list *list = scene->get_entity_by_cmp(scene, "map_manager_component");
struct map_manager_component *manager; struct map_manager_component *manager;
if (!list) if (!list)
return (false); return (false);
manager = GETCMP(list->data, map_manager_component); manager = GETCMP(list->data, map_manager_component);
manager->tile_mode = true; manager->tile_mode = true;
return (true); return (true);
} }
bool vertex_select(gc_engine *engine, gc_entity *entity, gc_vector2 _) bool vertex_select(gc_engine *engine, gc_entity *entity, gc_vector2 _)
{ {
gc_scene *scene = engine->scene; gc_scene *scene = engine->scene;
gc_list *list = scene->get_entity_by_cmp(scene, "map_manager_component"); gc_list *list = scene->get_entity_by_cmp(scene, "map_manager_component");
struct map_manager_component *manager; struct map_manager_component *manager;
if (!list) if (!list)
return (false); return (false);
manager = GETCMP(list->data, map_manager_component); manager = GETCMP(list->data, map_manager_component);
manager->tile_mode = false; manager->tile_mode = false;
return (true); return (true);
} }

View File

@@ -18,52 +18,52 @@
void display_current_texture(gc_scene *scene, struct renderer *rend) void display_current_texture(gc_scene *scene, struct renderer *rend)
{ {
gc_list *li = scene->get_entity_by_cmp(scene, "map_manager_component"); gc_list *li = scene->get_entity_by_cmp(scene, "map_manager_component");
struct map_manager_component *map; struct map_manager_component *map;
if (!li) if (!li)
return; return;
map = GETCMP(li->data, map_manager_component); map = GETCMP(li->data, map_manager_component);
((gc_sprite *)rend->data)->texture = map->selected_texture; ((gc_sprite *)rend->data)->texture = map->selected_texture;
} }
static void update_entity(gc_engine *engine, void *system, gc_entity *entity, \ static void update_entity(gc_engine *engine, void *system, gc_entity *entity, \
float dtime) float dtime)
{ {
struct game_display *disp = GETCMP(entity, game_display); struct game_display *disp = GETCMP(entity, game_display);
struct renderer *rend = GETCMP(entity, renderer); struct renderer *rend = GETCMP(entity, renderer);
struct game_manager *manager; struct game_manager *manager;
gc_scene *scene = engine->scene; gc_scene *scene = engine->scene;
gc_list *entities = scene->get_entity_by_cmp(scene, "game_manager"); gc_list *entities = scene->get_entity_by_cmp(scene, "game_manager");
if (!entities) if (!entities)
return; return;
manager = GETCMP(entities->data, game_manager); manager = GETCMP(entities->data, game_manager);
if (disp->type == SELECT_TILE_DISPLAY && rend->type == GC_TEXTUREREND){ if (disp->type == SELECT_TILE_DISPLAY && rend->type == GC_TEXTUREREND){
display_current_texture(scene, rend); display_current_texture(scene, rend);
return; return;
} }
if (rend->type != GC_TXTREND) if (rend->type != GC_TXTREND)
return; return;
if (disp->type == HAPPINESS_DISPLAY) if (disp->type == HAPPINESS_DISPLAY)
sprintf(((gc_text *)rend->data)->text, "%d%%", manager->happiness); sprintf(((gc_text *)rend->data)->text, "%d%%", manager->happiness);
else else
sprintf(((gc_text *)rend->data)->text, "%d%%", manager->stupidity); sprintf(((gc_text *)rend->data)->text, "%d%%", manager->stupidity);
} }
static void destroy(void *system) static void destroy(void *system)
{ {
(void)system; (void)system;
} }
const gc_system game_display_system = { const gc_system game_display_system = {
name: "game_display_system", name: "game_display_system",
component_name: "game_display", component_name: "game_display",
size: sizeof(gc_system), size: sizeof(gc_system),
ctr: NULL, ctr: NULL,
dtr: NULL, dtr: NULL,
check_dependencies: &system_check_dependencies, check_dependencies: &system_check_dependencies,
update_entity: &update_entity, update_entity: &update_entity,
destroy: &destroy destroy: &destroy
}; };

View File

@@ -1,6 +1,9 @@
// /*
// Created by anonymus-raccoon on 3/9/20. ** EPITECH PROJECT, 2020
// ** My3D
** File description:
** game_manager_system
*/
#include <components/tag_component.h> #include <components/tag_component.h>
#include <systems/sfml_renderer_system.h> #include <systems/sfml_renderer_system.h>
@@ -12,68 +15,68 @@
bool toggle_pause(gc_engine *engine) bool toggle_pause(gc_engine *engine)
{ {
gc_scene *scene = engine->scene; gc_scene *scene = engine->scene;
gc_list *list; gc_list *list;
scene->is_paused = !scene->is_paused; scene->is_paused = !scene->is_paused;
if (scene->is_paused) { if (scene->is_paused) {
prefab_load(engine, "prefabs/pause.gcprefab"); prefab_load(engine, "prefabs/pause.gcprefab");
return (true); return (true);
} }
list = scene->get_entity_by_cmp(scene, "tag_component"); list = scene->get_entity_by_cmp(scene, "tag_component");
for (gc_list *li = list; li; li = li->next ) { for (gc_list *li = list; li; li = li->next) {
if (!my_strcmp(GETCMP(li->data, tag_component)->tag, "pause")) if (!my_strcmp(GETCMP(li->data, tag_component)->tag, "pause"))
((gc_entity *)li->data)->destroy(li->data, scene); ((gc_entity *)li->data)->destroy(li->data, scene);
} }
return (true); return (true);
} }
static void key_pressed(gc_engine *engine, va_list args) static void key_pressed(gc_engine *engine, va_list args)
{ {
gc_keybindings key = va_arg(args, gc_keybindings); gc_keybindings key = va_arg(args, gc_keybindings);
if (key == ESCAPE) if (key == ESCAPE)
toggle_pause(engine); toggle_pause(engine);
} }
static void update_entity(gc_engine *engine, void *system, gc_entity *entity, \ static void update_entity(gc_engine *engine, void *system, gc_entity *entity, \
float dtime) float dtime)
{ {
struct game_manager *manager = GETCMP(entity, game_manager); struct game_manager *manager = GETCMP(entity, game_manager);
struct sfml_renderer_system *rend = GETSYS(engine, sfml_renderer_system); struct sfml_renderer_system *rend = GETSYS(engine, sfml_renderer_system);
gc_scene *gameover_scene = NULL; gc_scene *gameover_scene = NULL;
if (manager->happiness <= 0) if (manager->happiness <= 0)
gameover_scene = scene_create(engine, "prefabs/go/happiness.gcprefab"); gameover_scene = scene_create(engine, "prefabs/go/happiness.gcprefab");
if (manager->stupidity >= 100) if (manager->stupidity >= 100)
gameover_scene = scene_create(engine, "prefabs/go/stupidity.gcprefab"); gameover_scene = scene_create(engine, "prefabs/go/stupidity.gcprefab");
if (gameover_scene) if (gameover_scene)
engine->change_scene(engine, gameover_scene); engine->change_scene(engine, gameover_scene);
if (engine->is_keypressed(sfKeyLeft)) if (engine->is_keypressed(sfKeyLeft))
sfView_move(rend->view, (sfVector2f){-10, 0}); sfView_move(rend->view, (sfVector2f){-10, 0});
if (engine->is_keypressed(sfKeyRight)) if (engine->is_keypressed(sfKeyRight))
sfView_move(rend->view, (sfVector2f){10, 0}); sfView_move(rend->view, (sfVector2f){10, 0});
if (engine->is_keypressed(sfKeyDown)) if (engine->is_keypressed(sfKeyDown))
sfView_move(rend->view, (sfVector2f){0, 10}); sfView_move(rend->view, (sfVector2f){0, 10});
if (engine->is_keypressed(sfKeyUp)) if (engine->is_keypressed(sfKeyUp))
sfView_move(rend->view, (sfVector2f){0, -10}); sfView_move(rend->view, (sfVector2f){0, -10});
} }
static void ctr(void *system, va_list list) static void ctr(void *system, va_list list)
{ {
gc_engine *engine = va_arg(list, gc_engine *); gc_engine *engine = va_arg(list, gc_engine *);
engine->add_event_listener(engine, "key_pressed", &key_pressed); engine->add_event_listener(engine, "key_pressed", &key_pressed);
} }
const gc_system game_manager_system = { const gc_system game_manager_system = {
name: "game_cycle", name: "game_cycle",
component_name: "game_manager", component_name: "game_manager",
size: sizeof(gc_system), size: sizeof(gc_system),
ctr: ctr, ctr: ctr,
dtr: NULL, dtr: NULL,
check_dependencies: &system_check_dependencies, check_dependencies: &system_check_dependencies,
update_entity: &update_entity, update_entity: &update_entity,
destroy: &system_destroy destroy: &system_destroy
}; };

View File

@@ -18,77 +18,77 @@
void pm_destroy(gc_scene *scene, int prefab_id) void pm_destroy(gc_scene *scene, int prefab_id)
{ {
for (gc_list *ent = scene->entities; ent; ent = ent->next) for (gc_list *ent = scene->entities; ent; ent = ent->next)
if (((gc_entity *)ent->data)->prefab_id == prefab_id) if (((gc_entity *)ent->data)->prefab_id == prefab_id)
((gc_entity *)ent->data)->destroy(ent->data, scene); ((gc_entity *)ent->data)->destroy(ent->data, scene);
} }
void pm_clicked(gc_engine *engine, gc_entity *entity) void pm_clicked(gc_engine *engine, gc_entity *entity)
{ {
float y_pos = GETCMP(entity, fixed_to_cam)->pos.y; float y_pos = GETCMP(entity, fixed_to_cam)->pos.y;
pm_destroy(engine->scene, entity->prefab_id); pm_destroy(engine->scene, entity->prefab_id);
teams_move_up(engine->scene, -15, y_pos); teams_move_up(engine->scene, -15, y_pos);
} }
bool teams_move_up(gc_scene *scene, float amount, float y_level) bool teams_move_up(gc_scene *scene, float amount, float y_level)
{ {
gc_list *list = scene->get_entity_by_cmp(scene, "tag_component"); gc_list *list = scene->get_entity_by_cmp(scene, "tag_component");
struct fixed_to_cam *fc; struct fixed_to_cam *fc;
struct tag_component *tc; struct tag_component *tc;
int pm_to_destroy = -1; int pm_to_destroy = -1;
for (; list; list = list->next) { for (; list; list = list->next) {
tc = GETCMP(list->data, tag_component); tc = GETCMP(list->data, tag_component);
if (my_strcmp(tc->tag, "teams")) if (my_strcmp(tc->tag, "teams"))
continue; continue;
fc = GETCMP(list->data, fixed_to_cam); fc = GETCMP(list->data, fixed_to_cam);
if (!fc || fc->pos.y > y_level) if (!fc || fc->pos.y > y_level)
continue; continue;
fc->pos.y -= amount; fc->pos.y -= amount;
if (fc->pos.y < 15) if (fc->pos.y < 15)
pm_to_destroy = ((gc_entity *)list->data)->prefab_id; pm_to_destroy = ((gc_entity *)list->data)->prefab_id;
} }
if (pm_to_destroy != -1) if (pm_to_destroy != -1)
pm_destroy(scene, pm_to_destroy); pm_destroy(scene, pm_to_destroy);
return (pm_to_destroy != -1); return (pm_to_destroy != -1);
} }
static void update_entity(gc_engine *engine, void *system, gc_entity *entity, \ static void update_entity(gc_engine *engine, void *system, gc_entity *entity, \
float dtime) float dtime)
{ {
struct teams_component *team = GETCMP(entity, teams_component); struct teams_component *team = GETCMP(entity, teams_component);
struct game_manager *manager = GETCMP(entity, game_manager); struct game_manager *manager = GETCMP(entity, game_manager);
int index; int index;
if (!manager) { if (!manager) {
my_printf("No game manager found. Teams is disabled.\n"); my_printf("No game manager found. Teams is disabled.\n");
return; return;
} }
if (engine->scene->is_paused) if (engine->scene->is_paused)
return; return;
team->next_teams -= dtime; team->next_teams -= dtime;
if (team->next_teams < 0 && team->prefab_count) { if (team->next_teams < 0 && team->prefab_count) {
index = random() % team->prefab_count; index = random() % team->prefab_count;
team->next_teams = team->delay; team->next_teams = team->delay;
if (teams_move_up(engine->scene, team->prefabs_size[index], 1000)) if (teams_move_up(engine->scene, team->prefabs_size[index], 1000))
manager->happiness -= 10; manager->happiness -= 10;
prefab_load(engine, team->prefabs[index]); prefab_load(engine, team->prefabs[index]);
} }
} }
static void destroy(void *system) static void destroy(void *system)
{ {
(void)system; (void)system;
} }
const gc_system teams_system = { const gc_system teams_system = {
name: "teams_system", name: "teams_system",
component_name: "teams_component", component_name: "teams_component",
size: sizeof(gc_system), size: sizeof(gc_system),
ctr: NULL, ctr: NULL,
dtr: NULL, dtr: NULL,
check_dependencies: &system_check_dependencies, check_dependencies: &system_check_dependencies,
update_entity: &update_entity, update_entity: &update_entity,
destroy: &destroy destroy: &destroy
}; };

View File

@@ -1,6 +1,9 @@
// /*
// Created by anonymus-raccoon on 3/6/20. ** EPITECH PROJECT, 2020
// ** My3D
** File description:
** absent
*/
#include <stdbool.h> #include <stdbool.h>
#include "components/game_manager.h" #include "components/game_manager.h"
@@ -10,26 +13,26 @@
bool absent_check(gc_engine *engine, gc_entity *entity) bool absent_check(gc_engine *engine, gc_entity *entity)
{ {
gc_scene *scene = engine->scene; gc_scene *scene = engine->scene;
gc_list *li = scene->get_entity_by_cmp(scene, "game_manager"); gc_list *li = scene->get_entity_by_cmp(scene, "game_manager");
if (!li) if (!li)
return (false); return (false);
GETCMP(li->data, game_manager)->happiness += 3; GETCMP(li->data, game_manager)->happiness += 3;
GETCMP(li->data, game_manager)->stupidity += random() % 5; GETCMP(li->data, game_manager)->stupidity += random() % 5;
pm_clicked(engine, entity); pm_clicked(engine, entity);
return (true); return (true);
} }
bool absent_cross(gc_engine *engine, gc_entity *entity) bool absent_cross(gc_engine *engine, gc_entity *entity)
{ {
gc_scene *scene = engine->scene; gc_scene *scene = engine->scene;
gc_list *li = scene->get_entity_by_cmp(scene, "game_manager"); gc_list *li = scene->get_entity_by_cmp(scene, "game_manager");
if (!li) if (!li)
return (false); return (false);
GETCMP(li->data, game_manager)->happiness -= 3; GETCMP(li->data, game_manager)->happiness -= 3;
GETCMP(li->data, game_manager)->stupidity -= random() % 5; GETCMP(li->data, game_manager)->stupidity -= random() % 5;
pm_clicked(engine, entity); pm_clicked(engine, entity);
return (true); return (true);
} }

View File

@@ -1,6 +1,9 @@
// /*
// Created by anonymus-raccoon on 3/6/20. ** EPITECH PROJECT, 2020
// ** My3D
** File description:
** forgot
*/
#include <stdbool.h> #include <stdbool.h>
#include "components/game_manager.h" #include "components/game_manager.h"
@@ -9,26 +12,26 @@
bool forgot_lmfao(gc_engine *engine, gc_entity *entity) bool forgot_lmfao(gc_engine *engine, gc_entity *entity)
{ {
gc_scene *scene = engine->scene; gc_scene *scene = engine->scene;
gc_list *li = scene->get_entity_by_cmp(scene, "game_manager"); gc_list *li = scene->get_entity_by_cmp(scene, "game_manager");
if (!li) if (!li)
return (false); return (false);
GETCMP(li->data, game_manager)->happiness -= 5; GETCMP(li->data, game_manager)->happiness -= 5;
GETCMP(li->data, game_manager)->stupidity -= 5; GETCMP(li->data, game_manager)->stupidity -= 5;
pm_clicked(engine, entity); pm_clicked(engine, entity);
return (true); return (true);
} }
bool forgot_ok(gc_engine *engine, gc_entity *entity) bool forgot_ok(gc_engine *engine, gc_entity *entity)
{ {
gc_scene *scene = engine->scene; gc_scene *scene = engine->scene;
gc_list *li = scene->get_entity_by_cmp(scene, "game_manager"); gc_list *li = scene->get_entity_by_cmp(scene, "game_manager");
if (!li) if (!li)
return (false); return (false);
GETCMP(li->data, game_manager)->happiness += 2; GETCMP(li->data, game_manager)->happiness += 2;
GETCMP(li->data, game_manager)->stupidity += 6; GETCMP(li->data, game_manager)->stupidity += 6;
pm_clicked(engine, entity); pm_clicked(engine, entity);
return (true); return (true);
} }

View File

@@ -1,6 +1,9 @@
// /*
// Created by anonymus-raccoon on 3/11/20. ** EPITECH PROJECT, 2020
// ** My3D
** File description:
** toolbar
*/
#include <stdbool.h> #include <stdbool.h>
#include <components/isometry/map_manager_component.h> #include <components/isometry/map_manager_component.h>
@@ -10,71 +13,71 @@
bool up_down(gc_engine *engine, gc_entity *entity, gc_vector2 _) bool up_down(gc_engine *engine, gc_entity *entity, gc_vector2 _)
{ {
gc_scene *scene = engine->scene; gc_scene *scene = engine->scene;
gc_list *list = scene->get_entity_by_cmp(scene, "map_manager_component"); gc_list *list = scene->get_entity_by_cmp(scene, "map_manager_component");
struct map_manager_component *manager; struct map_manager_component *manager;
if (!list) if (!list)
return (false); return (false);
manager = GETCMP(list->data, map_manager_component); manager = GETCMP(list->data, map_manager_component);
manager->brush = MOVE; manager->brush = MOVE;
return (true); return (true);
} }
bool reset(gc_engine *engine, gc_entity *entity, gc_vector2 _) bool reset(gc_engine *engine, gc_entity *entity, gc_vector2 _)
{ {
gc_scene *scene = engine->scene; gc_scene *scene = engine->scene;
gc_list *list = scene->get_entity_by_cmp(scene, "map_manager_component"); gc_list *list = scene->get_entity_by_cmp(scene, "map_manager_component");
struct map_manager_component *manager; struct map_manager_component *manager;
if (!list) if (!list)
return (false); return (false);
manager = GETCMP(list->data, map_manager_component); manager = GETCMP(list->data, map_manager_component);
manager->brush = RESET; manager->brush = RESET;
return (true); return (true);
} }
bool rotate(gc_engine *engine, gc_entity *entity, gc_vector2 _) bool rotate(gc_engine *engine, gc_entity *entity, gc_vector2 _)
{ {
gc_scene *scene = engine->scene; gc_scene *scene = engine->scene;
gc_list *list = scene->get_entity_by_cmp(scene, "map_manager_component"); gc_list *list = scene->get_entity_by_cmp(scene, "map_manager_component");
struct map_manager_component *manager; struct map_manager_component *manager;
if (!list) if (!list)
return (false); return (false);
manager = GETCMP(list->data, map_manager_component); manager = GETCMP(list->data, map_manager_component);
manager->brush = ROTATE; manager->brush = ROTATE;
return (true); return (true);
} }
bool texture(gc_engine *engine, gc_entity *entity, gc_vector2 _) bool texture(gc_engine *engine, gc_entity *entity, gc_vector2 _)
{ {
gc_scene *scene = engine->scene; gc_scene *scene = engine->scene;
gc_list *list = scene->get_entity_by_cmp(scene, "map_manager_component"); gc_list *list = scene->get_entity_by_cmp(scene, "map_manager_component");
struct map_manager_component *manager; struct map_manager_component *manager;
if (!list) if (!list)
return (false); return (false);
manager = GETCMP(list->data, map_manager_component); manager = GETCMP(list->data, map_manager_component);
manager->brush = TEXTURE; manager->brush = TEXTURE;
return (true); return (true);
} }
bool switch_texture(gc_engine *engine, gc_entity *entity, gc_vector2 _) bool switch_texture(gc_engine *engine, gc_entity *entity, gc_vector2 _)
{ {
gc_scene *scene = engine->scene; gc_scene *scene = engine->scene;
gc_list *list = scene->get_entity_by_cmp(scene, "map_manager_component"); gc_list *list = scene->get_entity_by_cmp(scene, "map_manager_component");
struct map_manager_component *manager; struct map_manager_component *manager;
void **data = scene->get_data(scene, "tiles", NULL); void **data = scene->get_data(scene, "tiles", NULL);
static int index = 0; static int index = 0;
void *next = NULL; void *next = NULL;
if (!list) if (!list)
return (false); return (false);
manager = GETCMP(list->data, map_manager_component); manager = GETCMP(list->data, map_manager_component);
index++; index++;
if (data) if (data)
next = data[index % (arraylen(data) - 1)]; next = data[index % (arraylen(data) - 1)];
manager->selected_texture = next; manager->selected_texture = next;
return (true); return (true);
} }