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"]
path = lib/gamacon
url = https://github.com/AnonymusRaccoon/Gamacon
path = lib/gamacon
url = https://github.com/AnonymusRaccoon/Gamacon
[submodule "lib/xmlparser"]
path = lib/xmlparser
url = https://github.com/AnonymusRaccoon/xmlParser
path = lib/xmlparser
url = https://github.com/AnonymusRaccoon/xmlParser
[submodule "lib/quadtree"]
path = lib/quadtree
url = https://github.com/AnonymusRaccoon/quadtree
path = lib/quadtree
url = https://github.com/AnonymusRaccoon/quadtree

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -66,6 +66,6 @@ int my_getnbr(const char *str)
break;
}
if (count <= 0)
return (0);
return (0);
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"
char *my_str_replace(char *str, const char *to_replace, char c)
{
char *p;
int len = my_strlen(to_replace);
char *p;
int len = my_strlen(to_replace);
while ((p = my_strstr(str, to_replace))) {
*p = c;
p++;
for (char *ptr = p + len - 1; *ptr; ptr++, p++)
*p = *ptr;
*p = '\0';
}
return (str);
while ((p = my_strstr(str, to_replace))) {
*p = c;
p++;
for (char *ptr = p + len - 1; *ptr; ptr++, p++)
*p = *ptr;
*p = '\0';
}
return (str);
}

View File

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

View File

@@ -55,7 +55,7 @@ char *tostr(int n)
char *ret = malloc(sizeof(char) * (count + 1));
if (!ret)
return (NULL);
return (NULL);
putnbr_in(n, base, ret, count);
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="cross" src="assets/ui/cross.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="clown" src="assets/ui/clown.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="mossy_cobblestone" src="assets/sprites/cobblestone_mossy.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="grass_top" src="assets/sprites/grass_top.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" />
<tiles>
@@ -33,7 +33,7 @@
</tiles>
</data>
<gc_entities>
<camera x="0" y="300" />
<camera x="0" y="300" />
<gc_entity>
<clickable_component click="map_manage_click"/>
<map_manager_component />
@@ -47,38 +47,38 @@
</renderer>
</gc_entity>
<gc_entity>
<game_manager happiness="50%" stupidity="0%" />
<teams_component delay="10">
<prefab src="prefabs/teams/forgot_register.gcprefab" height="20%" />
<prefab src="prefabs/teams/absent.gcprefab" height="20%" />
</teams_component>
</gc_entity>
<gc_entity>
<game_manager happiness="50%" stupidity="0%" />
<teams_component delay="10">
<prefab src="prefabs/teams/forgot_register.gcprefab" height="20%" />
<prefab src="prefabs/teams/absent.gcprefab" height="20%" />
</teams_component>
</gc_entity>
<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="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="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="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="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="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="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="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%"/>
<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" />
</button>
<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">
<game_display stats="selected_tile" />
</button>
<panel src="panel" x="100%" y="50%" width="50%" height="120%"/>
<text text="TEAMS" x="88%" y="40"/>
<panel src="panel" x="100%" y="50%" width="50%" height="120%"/>
<text text="TEAMS" x="88%" y="40"/>
<panel src="panel" x="50%" y="98%" width="120%" height="4%"/>
<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">
<game_display stats="happiness" />
</text>
<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">
<game_display stats="stupidity" />
</text>
<panel src="panel" x="50%" y="98%" width="120%" height="4%"/>
<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">
<game_display stats="happiness" />
</text>
<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">
<game_display stats="stupidity" />
</text>
</gc_entities>
</gc_scene>

View File

@@ -5,9 +5,9 @@
<font src="assets/fonts/roboto.ttf" />
</data>
<gc_entities>
<panel src="panel" x="50%" y="45%" width="300" height="69%"/>
<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="Exit" x="50%" y="72%" click="quit" color="black" width="200" resize="false" />
<panel src="panel" x="50%" y="45%" width="300" height="69%"/>
<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="Exit" x="50%" y="72%" click="quit" color="black" width="200" resize="false" />
</gc_entities>
</gc_scene>

View File

@@ -6,10 +6,10 @@
<font src="assets/fonts/roboto.ttf" />
</data>
<gc_entities>
<panel src="panel" x="25%" y="45%" width="300" height="69%"/>
<text text="Game Over" x="25%" y="25%" resize="false"/>
<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="Exit" x="25%" y="72%" click="quit" color="black" width="200" resize="false" />
<panel src="panel" x="25%" y="45%" width="300" height="69%"/>
<text text="Game Over" x="25%" y="25%" resize="false"/>
<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="Exit" x="25%" y="72%" click="quit" color="black" width="200" resize="false" />
</gc_entities>
</gc_scene>

View File

@@ -5,11 +5,11 @@
<font src="assets/fonts/roboto.ttf" />
</data>
<gc_entities>
<camera x="0" y="0" />
<panel src="panel" x="50%" y="45%" width="300" height="69%"/>
<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="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" />
<camera x="0" y="0" />
<panel src="panel" x="50%" y="45%" width="300" height="69%"/>
<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="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" />
</gc_entities>
</gc_scene>

View File

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

View File

@@ -1,7 +1,7 @@
<gc_entities>
<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" />
<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="Quit to menu" x="50%" y="72%" click="goto_main_menu" color="black" width="200" resize="false" 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" />
<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="Quit to menu" x="50%" y="72%" click="goto_main_menu" color="black" width="200" resize="false" tag="pause" />
</gc_entities>

View File

@@ -1,6 +1,6 @@
<gc_entities>
<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" />
<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" />
<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" />
<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" />
</gc_entities>

View File

@@ -1,6 +1,6 @@
<gc_entities>
<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" />
<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" />
<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" />
<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" />
</gc_entities>

View File

@@ -1,160 +1,160 @@
<gc_map >
<vertex_data>
<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" />
</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" />
</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" />
</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" />
</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" />
</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" />
</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" />
</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" />
</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" />
</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" />
</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" />
</line>
<vertex_data>
<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" />
</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" />
</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" />
</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" />
</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" />
</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" />
</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" />
</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" />
</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" />
</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" />
</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" />
</line>
</vertex_data>
<tiles_data>
<texture x="0" y="0" name="cobblestone" />

View File

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

View File

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

View File

@@ -18,52 +18,52 @@
void click_tile(gc_engine *engine, struct map_manager_component *manager, \
struct tile *ret, bool is_left)
{
bool r = manager->brush == RESET;
bool r = manager->brush == RESET;
switch (manager->brush) {
case ROTATE:
ret->data = (ret->data + (is_left ? 1 : -1U)) % 4;
break;
case TEXTURE:
ret->texture = manager->selected_texture;
break;
case MOVE:
case RESET:
move_tile(engine, ret, ALL_VERTICES | is_left, r);
break;
}
switch (manager->brush) {
case ROTATE:
ret->data = (ret->data + (is_left ? 1 : -1U)) % 4;
break;
case TEXTURE:
ret->texture = manager->selected_texture;
break;
case MOVE:
case RESET:
move_tile(engine, ret, ALL_VERTICES | is_left, r);
break;
}
}
bool tile_interact(gc_engine *engine, gc_entity *entity, gc_vector2 pos, \
enum gc_mousekeys key)
{
struct vertex_component *map = GETCMP(entity, vertex_component);
struct map_manager_component *manager = GETCMP(entity, map_manager_component);
struct tile *ret = get_tile_from_pos(map, pos);
bool r = manager->brush == RESET;
int ind;
struct vertex_component *map = GETCMP(entity, vertex_component);
struct map_manager_component *manager = GETCMP(entity, map_manager_component);
struct tile *ret = get_tile_from_pos(map, pos);
bool r = manager->brush == RESET;
int ind;
if (!map || !manager) {
my_printf("map not found\n");
return (false);
}
if (!ret)
return (false);
if (manager->tile_mode)
click_tile(engine, manager, ret, key == GC_LEFT);
else {
ind = get_index_nearest_vertex(ret, pos);
move_tile(engine, ret, ((int) pow(2, ind + 1)) | (key == GC_LEFT), r);
}
return (false);
if (!map || !manager) {
my_printf("map not found\n");
return (false);
}
if (!ret)
return (false);
if (manager->tile_mode)
click_tile(engine, manager, ret, key == GC_LEFT);
else {
ind = get_index_nearest_vertex(ret, pos);
move_tile(engine, ret, ((int) pow(2, ind + 1)) | (key == GC_LEFT), r);
}
return (false);
}
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++) {
if (mode & (int)pow(2, i + 1))
ret->corners[i]->z += (r) ? -ret->corners[i]->z : val;
}
for (int i = 0; i < 4; i++) {
if (mode & (int)pow(2, i + 1))
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 "engine.h"
@@ -11,45 +14,45 @@
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->brush = MOVE;
cmp->tile_mode = true;
cmp->brush = MOVE;
}
static void fdctr(gc_entity *entity, gc_scene *scene, void *comp, node *n)
{
struct map_manager_component *cmp = (struct map_manager_component *)comp;
void **data = scene->get_data(scene, "tiles", NULL);
struct map_manager_component *cmp = (struct map_manager_component *)comp;
void **data = scene->get_data(scene, "tiles", NULL);
cmp->tile_mode = true;
cmp->brush = MOVE;
if (data)
cmp->selected_texture = data[0];
cmp->tile_mode = true;
cmp->brush = MOVE;
if (data)
cmp->selected_texture = data[0];
}
static void dtr(void *component)
{
(void)component;
(void)component;
}
static char *serialize(void *component)
{
(void)component;
return (NULL);
(void)component;
return (NULL);
}
const struct map_manager_component map_manager_component = {
base: {
name: "map_manager_component",
size: sizeof(struct map_manager_component),
dependencies: (char *[]){
NULL
},
ctr: &ctr,
fdctr: &fdctr,
dtr: &dtr,
serialize: &serialize,
destroy: &component_destroy
}
base: {
name: "map_manager_component",
size: sizeof(struct map_manager_component),
dependencies: (char *[]){
NULL
},
ctr: &ctr,
fdctr: &fdctr,
dtr: &dtr,
serialize: &serialize,
destroy: &component_destroy
}
};

View File

@@ -13,57 +13,57 @@
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->next_teams = cmp->delay;
cmp->delay = va_arg(args, double);
cmp->next_teams = cmp->delay;
}
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->next_teams = cmp->delay;
cmp->prefab_count = xml_getchildcount_filtered(n, "prefab");
cmp->prefabs = malloc(sizeof(char *) * cmp->prefab_count);
cmp->prefabs_size = malloc(sizeof(int) * cmp->prefab_count);
n = n->child;
if (!cmp->prefabs || !cmp->prefab_count) {
cmp->prefabs = NULL;
cmp->prefabs_size = NULL;
cmp->prefab_count = 0;
return;
}
for (int i = 0; i < cmp->prefab_count; i++) {
cmp->prefabs[i] = xml_getproperty(n, "src");
cmp->prefabs_size[i] = xml_getintprop(n, "height");
n = n->next;
}
cmp->delay = xml_getfloatprop(n, "delay");
cmp->next_teams = cmp->delay;
cmp->prefab_count = xml_getchildcount_filtered(n, "prefab");
cmp->prefabs = malloc(sizeof(char *) * cmp->prefab_count);
cmp->prefabs_size = malloc(sizeof(int) * cmp->prefab_count);
n = n->child;
if (!cmp->prefabs || !cmp->prefab_count) {
cmp->prefabs = NULL;
cmp->prefabs_size = NULL;
cmp->prefab_count = 0;
return;
}
for (int i = 0; i < cmp->prefab_count; i++) {
cmp->prefabs[i] = xml_getproperty(n, "src");
cmp->prefabs_size[i] = xml_getintprop(n, "height");
n = n->next;
}
}
static void dtr(void *component)
{
(void)component;
(void)component;
}
static char *serialize(void *component)
{
(void)component;
return (NULL);
(void)component;
return (NULL);
}
const struct teams_component teams_component = {
base: {
name: "teams_component",
size: sizeof(struct teams_component),
dependencies: (char *[]) {
NULL
},
ctr: &ctr,
fdctr: &fdctr,
dtr: &dtr,
serialize: &serialize,
destroy: &component_destroy
}
base: {
name: "teams_component",
size: sizeof(struct teams_component),
dependencies: (char *[]) {
NULL
},
ctr: &ctr,
fdctr: &fdctr,
dtr: &dtr,
serialize: &serialize,
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 "engine.h"
@@ -11,57 +14,56 @@
#include "limits.h"
static const int framerates[] = {
30,
60,
120,
INT_MAX
30,
60,
120,
INT_MAX
};
void framerate_set_text(gc_entity *entity, gc_engine *engine)
{
struct sfml_renderer_system *rend = GETSYS(engine, sfml_renderer_system);
struct renderer *renderer;
char *framerate;
struct sfml_renderer_system *rend = GETSYS(engine, sfml_renderer_system);
struct renderer *renderer;
char *framerate;
if (!entity)
return;
renderer = GETCMP(entity, renderer);
if (!rend || !renderer || renderer->type != GC_TXTREND)
return;
framerate = tostr(rend->framerate);
free(((gc_text *)renderer->data)->text);
((gc_text *)renderer->data)->text = framerate;
if (!entity)
return;
renderer = GETCMP(entity, renderer);
if (!rend || !renderer || renderer->type != GC_TXTREND)
return;
framerate = tostr(rend->framerate);
free(((gc_text *)renderer->data)->text);
((gc_text *)renderer->data)->text = framerate;
}
bool framerate_down(gc_engine *engine, gc_entity *entity, gc_vector2 _)
{
struct sfml_renderer_system *rend = GETSYS(engine, sfml_renderer_system);
int i = 2;
struct sfml_renderer_system *rend = GETSYS(engine, sfml_renderer_system);
int i = 2;
if (!rend || rend->is_fullscreen)
return (false);
while (i > 0 && framerates[i] >= rend->framerate)
i--;
sfRenderWindow_setFramerateLimit(rend->window, framerates[i]);
rend->framerate = framerates[i];
framerate_set_text(engine->scene->get_entity(engine->scene, 52), engine);
return (true);
if (!rend || rend->is_fullscreen)
return (false);
while (i > 0 && framerates[i] >= rend->framerate)
i--;
sfRenderWindow_setFramerateLimit(rend->window, framerates[i]);
rend->framerate = framerates[i];
framerate_set_text(engine->scene->get_entity(engine->scene, 52), engine);
return (true);
}
bool framerate_up(gc_engine *engine, gc_entity *entity, gc_vector2 _)
{
struct sfml_renderer_system *rend = GETSYS(engine, sfml_renderer_system);
int i = 0;
struct sfml_renderer_system *rend = GETSYS(engine, sfml_renderer_system);
int i = 0;
if (!rend || rend->is_fullscreen)
return (false);
while (framerates[i] <= rend->framerate)
i++;
if (framerates[i] == INT_MAX)
return (true);
sfRenderWindow_setFramerateLimit(rend->window, framerates[i]);
rend->framerate = framerates[i];
framerate_set_text(engine->scene->get_entity(engine->scene, 52), engine);
return (true);
if (!rend || rend->is_fullscreen)
return (false);
while (framerates[i] <= rend->framerate)
i++;
if (framerates[i] == INT_MAX)
return (true);
sfRenderWindow_setFramerateLimit(rend->window, framerates[i]);
rend->framerate = framerates[i];
framerate_set_text(engine->scene->get_entity(engine->scene, 52), engine);
return (true);
}

View File

@@ -19,44 +19,44 @@
#include "map_interactions.h"
const struct callback callbacks[] = {
{"start_button", &start_button},
{"options", &options},
{"goto_main_menu", &goto_main_menu},
{"quit", &quit},
{"fullscreen", &fullscreen},
{"map_manage_click", &tile_interact},
{"resolution_down", &resolution_down},
{"resolution_up", &resolution_up},
{"framerate_up", &framerate_up},
{"framerate_down", &framerate_down},
{"absent_check", &absent_check},
{"absent_cross", &absent_cross},
{"forgot_lmfao", &forgot_lmfao},
{"forgot_ok", &forgot_ok},
{"catch", &catch},
{"toggle_pause", &toggle_pause},
{"toggle_pause", &toggle_pause},
{"tile_select", &tile_select},
{"vertex_select", &vertex_select},
{"up_down", &up_down},
{"reset", &reset},
{"rotate", &rotate},
{"texture", &texture},
{"switch_texture", &switch_texture},
{NULL, NULL}
{"start_button", &start_button},
{"options", &options},
{"goto_main_menu", &goto_main_menu},
{"quit", &quit},
{"fullscreen", &fullscreen},
{"map_manage_click", &tile_interact},
{"resolution_down", &resolution_down},
{"resolution_up", &resolution_up},
{"framerate_up", &framerate_up},
{"framerate_down", &framerate_down},
{"absent_check", &absent_check},
{"absent_cross", &absent_cross},
{"forgot_lmfao", &forgot_lmfao},
{"forgot_ok", &forgot_ok},
{"catch", &catch},
{"toggle_pause", &toggle_pause},
{"toggle_pause", &toggle_pause},
{"tile_select", &tile_select},
{"vertex_select", &vertex_select},
{"up_down", &up_down},
{"reset", &reset},
{"rotate", &rotate},
{"texture", &texture},
{"switch_texture", &switch_texture},
{NULL, NULL}
};
int register_customcmps(gc_engine *engine)
{
engine->add_component(engine, &game_manager);
engine->add_system(engine, new_system(&game_manager_system, engine));
engine->add_component(engine, &game_display);
engine->add_system(engine, &game_display_system);
engine->add_component(engine, &teams_component);
engine->add_system(engine, &teams_system);
engine->add_component(engine, &game_manager);
engine->add_system(engine, new_system(&game_manager_system, engine));
engine->add_component(engine, &game_display);
engine->add_system(engine, &game_display_system);
engine->add_component(engine, &teams_component);
engine->add_system(engine, &teams_system);
engine->finish_physics(engine);
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);
}
@@ -72,7 +72,7 @@ int create_game_scene(gc_engine *engine)
return (0);
}
int start_game()
int start_game(void)
{
gc_engine *engine = engine_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 "engine.h"
@@ -10,56 +13,56 @@
bool start_button(gc_engine *engine, gc_entity *entity, gc_vector2 _)
{
gc_scene *scene = scene_create(engine, "prefabs/game.gcprefab");
if (!scene) {
engine->should_close = true;
my_printf("The game scene couldn't be loaded.\n");
return (true);
}
engine->change_scene(engine, scene);
return (true);
gc_scene *scene = scene_create(engine, "prefabs/game.gcprefab");
if (!scene) {
engine->should_close = true;
my_printf("The game scene couldn't be loaded.\n");
return (true);
}
engine->change_scene(engine, scene);
return (true);
}
bool options(gc_engine *engine, gc_entity *entity, gc_vector2 _)
{
gc_scene *scene = scene_create(engine, "prefabs/options.gcprefab");
struct sfml_renderer_system *rend = GETSYS(engine, sfml_renderer_system);
gc_scene *scene = scene_create(engine, "prefabs/options.gcprefab");
struct sfml_renderer_system *rend = GETSYS(engine, sfml_renderer_system);
if (!scene) {
engine->should_close = true;
my_printf("The option scene couldn't be loaded.\n");
return (true);
}
engine->change_scene(engine, scene);
entity = engine->scene->get_entity(engine->scene, 50);
if (rend)
checkbox_update(engine->scene, entity, rend->is_fullscreen);
entity = engine->scene->get_entity(engine->scene, 51);
resolution_set_text(entity, engine);
entity = engine->scene->get_entity(engine->scene, 52);
framerate_set_text(entity, engine);
return (true);
if (!scene) {
engine->should_close = true;
my_printf("The option scene couldn't be loaded.\n");
return (true);
}
engine->change_scene(engine, scene);
entity = engine->scene->get_entity(engine->scene, 50);
if (rend)
checkbox_update(engine->scene, entity, rend->is_fullscreen);
entity = engine->scene->get_entity(engine->scene, 51);
resolution_set_text(entity, engine);
entity = engine->scene->get_entity(engine->scene, 52);
framerate_set_text(entity, engine);
return (true);
}
bool goto_main_menu(gc_engine *engine, gc_entity *entity, gc_vector2 _)
{
gc_scene *scene = scene_create(engine, "prefabs/mainmenu.gcprefab");
if (!scene) {
engine->should_close = true;
my_printf("The option scene couldn't be loaded.\n");
return (true);
}
engine->change_scene(engine, scene);
return (true);
gc_scene *scene = scene_create(engine, "prefabs/mainmenu.gcprefab");
if (!scene) {
engine->should_close = true;
my_printf("The option scene couldn't be loaded.\n");
return (true);
}
engine->change_scene(engine, scene);
return (true);
}
bool quit(gc_engine *engine, gc_entity *entity, gc_vector2 _)
{
engine->should_close = true;
return (true);
engine->should_close = true;
return (true);
}
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 "setup.h"
@@ -14,99 +17,99 @@
#include <limits.h>
static const gc_vector2i resolutions[] = {
{800, 600},
{1280, 720},
{1920, 1080},
{INT_MAX, INT_MAX}
{800, 600},
{1280, 720},
{1920, 1080},
{INT_MAX, INT_MAX}
};
int checkbox_update(gc_scene *s, gc_entity *entity, bool checked)
{
struct renderer *renderer;
char *sprite = checked ? "check" : "cross";
struct renderer *renderer;
char *sprite = checked ? "check" : "cross";
if (!entity)
return (-1);
renderer = GETCMP(entity, renderer);
if (!renderer || renderer->type != GC_TEXTUREREND)
return (-1);
if (!entity)
return (-1);
renderer = GETCMP(entity, renderer);
if (!renderer || renderer->type != GC_TEXTUREREND)
return (-1);
((gc_sprite *)renderer->data)->texture = s->get_data(s, "sprite", sprite);
return (0);
((gc_sprite *)renderer->data)->texture = s->get_data(s, "sprite", sprite);
return (0);
}
void resolution_set_text(gc_entity *entity, gc_engine *engine)
{
struct sfml_renderer_system *rend = GETSYS(engine, sfml_renderer_system);
struct renderer *renderer;
char *resolution = malloc(sizeof(char) * 10);
struct sfml_renderer_system *rend = GETSYS(engine, sfml_renderer_system);
struct renderer *renderer;
char *resolution = malloc(sizeof(char) * 10);
if (!entity)
return;
renderer = GETCMP(entity, renderer);
if (!rend || !renderer || renderer->type != GC_TXTREND)
return;
snprintf(resolution, 10, "%ix%i", rend->resolution.x, rend->resolution.y);
if (rend->is_fullscreen)
my_strcpy(resolution, "auto");
free(((gc_text *)renderer->data)->text);
((gc_text *)renderer->data)->text = resolution;
if (!entity)
return;
renderer = GETCMP(entity, renderer);
if (!rend || !renderer || renderer->type != GC_TXTREND)
return;
snprintf(resolution, 10, "%ix%i", rend->resolution.x, rend->resolution.y);
if (rend->is_fullscreen)
my_strcpy(resolution, "auto");
free(((gc_text *)renderer->data)->text);
((gc_text *)renderer->data)->text = resolution;
}
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)
return (false);
rend->is_fullscreen = !rend->is_fullscreen;
if (checkbox_update(engine->scene, entity, rend->is_fullscreen) < 0)
return (false);
sfRenderWindow_destroy(rend->window);
if (rend->is_fullscreen)
rend->window = sfRenderWindow_create(sfVideoMode_getDesktopMode(), \
if (!rend)
return (false);
rend->is_fullscreen = !rend->is_fullscreen;
if (checkbox_update(engine->scene, entity, rend->is_fullscreen) < 0)
return (false);
sfRenderWindow_destroy(rend->window);
if (rend->is_fullscreen)
rend->window = sfRenderWindow_create(sfVideoMode_getDesktopMode(), \
"My3D", sfFullscreen | sfClose, NULL);
else
rend->window = sfRenderWindow_create((sfVideoMode){rend->resolution.x, \
else
rend->window = sfRenderWindow_create((sfVideoMode){rend->resolution.x, \
rend->resolution.y, 32}, "My3D", sfDefaultStyle, NULL);
resolution_set_text(engine->scene->get_entity(engine->scene, 51), engine);
return (true);
resolution_set_text(engine->scene->get_entity(engine->scene, 51), engine);
return (true);
}
bool resolution_down(gc_engine *engine, gc_entity *entity, gc_vector2 _)
{
struct sfml_renderer_system *rend = GETSYS(engine, sfml_renderer_system);
int i = 2;
struct sfml_renderer_system *rend = GETSYS(engine, sfml_renderer_system);
int i = 2;
if (!rend || rend->is_fullscreen)
return (false);
while (i > 0 && resolutions[i].x >= rend->resolution.x)
i--;
sfRenderWindow_setSize(rend->window, (sfVector2u){
resolutions[i].x,
resolutions[i].y
});
rend->resolution = resolutions[i];
resolution_set_text(engine->scene->get_entity(engine->scene, 51), engine);
return (true);
if (!rend || rend->is_fullscreen)
return (false);
while (i > 0 && resolutions[i].x >= rend->resolution.x)
i--;
sfRenderWindow_setSize(rend->window, (sfVector2u){
resolutions[i].x,
resolutions[i].y
});
rend->resolution = resolutions[i];
resolution_set_text(engine->scene->get_entity(engine->scene, 51), engine);
return (true);
}
bool resolution_up(gc_engine *engine, gc_entity *entity, gc_vector2 _)
{
struct sfml_renderer_system *rend = GETSYS(engine, sfml_renderer_system);
int i = 0;
struct sfml_renderer_system *rend = GETSYS(engine, sfml_renderer_system);
int i = 0;
if (!rend || rend->is_fullscreen)
return (false);
while (resolutions[i].x <= rend->resolution.x)
i++;
if (resolutions[i].x == INT_MAX)
return (true);
sfRenderWindow_setSize(rend->window, (sfVector2u){
resolutions[i].x,
resolutions[i].y
});
rend->resolution = resolutions[i];
resolution_set_text(engine->scene->get_entity(engine->scene, 51), engine);
return (true);
if (!rend || rend->is_fullscreen)
return (false);
while (resolutions[i].x <= rend->resolution.x)
i++;
if (resolutions[i].x == INT_MAX)
return (true);
sfRenderWindow_setSize(rend->window, (sfVector2u){
resolutions[i].x,
resolutions[i].y
});
rend->resolution = resolutions[i];
resolution_set_text(engine->scene->get_entity(engine->scene, 51), engine);
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 <components/isometry/map_manager_component.h>
@@ -9,26 +12,26 @@
bool tile_select(gc_engine *engine, gc_entity *entity, gc_vector2 _)
{
gc_scene *scene = engine->scene;
gc_list *list = scene->get_entity_by_cmp(scene, "map_manager_component");
struct map_manager_component *manager;
gc_scene *scene = engine->scene;
gc_list *list = scene->get_entity_by_cmp(scene, "map_manager_component");
struct map_manager_component *manager;
if (!list)
return (false);
manager = GETCMP(list->data, map_manager_component);
manager->tile_mode = true;
return (true);
if (!list)
return (false);
manager = GETCMP(list->data, map_manager_component);
manager->tile_mode = true;
return (true);
}
bool vertex_select(gc_engine *engine, gc_entity *entity, gc_vector2 _)
{
gc_scene *scene = engine->scene;
gc_list *list = scene->get_entity_by_cmp(scene, "map_manager_component");
struct map_manager_component *manager;
gc_scene *scene = engine->scene;
gc_list *list = scene->get_entity_by_cmp(scene, "map_manager_component");
struct map_manager_component *manager;
if (!list)
return (false);
manager = GETCMP(list->data, map_manager_component);
manager->tile_mode = false;
return (true);
if (!list)
return (false);
manager = GETCMP(list->data, map_manager_component);
manager->tile_mode = false;
return (true);
}

View File

@@ -18,52 +18,52 @@
void display_current_texture(gc_scene *scene, struct renderer *rend)
{
gc_list *li = scene->get_entity_by_cmp(scene, "map_manager_component");
struct map_manager_component *map;
gc_list *li = scene->get_entity_by_cmp(scene, "map_manager_component");
struct map_manager_component *map;
if (!li)
return;
map = GETCMP(li->data, map_manager_component);
((gc_sprite *)rend->data)->texture = map->selected_texture;
if (!li)
return;
map = GETCMP(li->data, map_manager_component);
((gc_sprite *)rend->data)->texture = map->selected_texture;
}
static void update_entity(gc_engine *engine, void *system, gc_entity *entity, \
float dtime)
{
struct game_display *disp = GETCMP(entity, game_display);
struct renderer *rend = GETCMP(entity, renderer);
struct game_manager *manager;
gc_scene *scene = engine->scene;
gc_list *entities = scene->get_entity_by_cmp(scene, "game_manager");
struct game_display *disp = GETCMP(entity, game_display);
struct renderer *rend = GETCMP(entity, renderer);
struct game_manager *manager;
gc_scene *scene = engine->scene;
gc_list *entities = scene->get_entity_by_cmp(scene, "game_manager");
if (!entities)
return;
manager = GETCMP(entities->data, game_manager);
if (disp->type == SELECT_TILE_DISPLAY && rend->type == GC_TEXTUREREND){
display_current_texture(scene, rend);
return;
}
if (rend->type != GC_TXTREND)
return;
if (disp->type == HAPPINESS_DISPLAY)
sprintf(((gc_text *)rend->data)->text, "%d%%", manager->happiness);
else
sprintf(((gc_text *)rend->data)->text, "%d%%", manager->stupidity);
if (!entities)
return;
manager = GETCMP(entities->data, game_manager);
if (disp->type == SELECT_TILE_DISPLAY && rend->type == GC_TEXTUREREND){
display_current_texture(scene, rend);
return;
}
if (rend->type != GC_TXTREND)
return;
if (disp->type == HAPPINESS_DISPLAY)
sprintf(((gc_text *)rend->data)->text, "%d%%", manager->happiness);
else
sprintf(((gc_text *)rend->data)->text, "%d%%", manager->stupidity);
}
static void destroy(void *system)
{
(void)system;
(void)system;
}
const gc_system game_display_system = {
name: "game_display_system",
component_name: "game_display",
size: sizeof(gc_system),
ctr: NULL,
dtr: NULL,
check_dependencies: &system_check_dependencies,
update_entity: &update_entity,
destroy: &destroy
name: "game_display_system",
component_name: "game_display",
size: sizeof(gc_system),
ctr: NULL,
dtr: NULL,
check_dependencies: &system_check_dependencies,
update_entity: &update_entity,
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 <systems/sfml_renderer_system.h>
@@ -12,68 +15,68 @@
bool toggle_pause(gc_engine *engine)
{
gc_scene *scene = engine->scene;
gc_list *list;
gc_scene *scene = engine->scene;
gc_list *list;
scene->is_paused = !scene->is_paused;
if (scene->is_paused) {
prefab_load(engine, "prefabs/pause.gcprefab");
return (true);
}
list = scene->get_entity_by_cmp(scene, "tag_component");
for (gc_list *li = list; li; li = li->next ) {
if (!my_strcmp(GETCMP(li->data, tag_component)->tag, "pause"))
((gc_entity *)li->data)->destroy(li->data, scene);
}
return (true);
scene->is_paused = !scene->is_paused;
if (scene->is_paused) {
prefab_load(engine, "prefabs/pause.gcprefab");
return (true);
}
list = scene->get_entity_by_cmp(scene, "tag_component");
for (gc_list *li = list; li; li = li->next) {
if (!my_strcmp(GETCMP(li->data, tag_component)->tag, "pause"))
((gc_entity *)li->data)->destroy(li->data, scene);
}
return (true);
}
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)
toggle_pause(engine);
if (key == ESCAPE)
toggle_pause(engine);
}
static void update_entity(gc_engine *engine, void *system, gc_entity *entity, \
float dtime)
{
struct game_manager *manager = GETCMP(entity, game_manager);
struct sfml_renderer_system *rend = GETSYS(engine, sfml_renderer_system);
gc_scene *gameover_scene = NULL;
struct game_manager *manager = GETCMP(entity, game_manager);
struct sfml_renderer_system *rend = GETSYS(engine, sfml_renderer_system);
gc_scene *gameover_scene = NULL;
if (manager->happiness <= 0)
gameover_scene = scene_create(engine, "prefabs/go/happiness.gcprefab");
if (manager->stupidity >= 100)
gameover_scene = scene_create(engine, "prefabs/go/stupidity.gcprefab");
if (manager->happiness <= 0)
gameover_scene = scene_create(engine, "prefabs/go/happiness.gcprefab");
if (manager->stupidity >= 100)
gameover_scene = scene_create(engine, "prefabs/go/stupidity.gcprefab");
if (gameover_scene)
engine->change_scene(engine, gameover_scene);
if (engine->is_keypressed(sfKeyLeft))
sfView_move(rend->view, (sfVector2f){-10, 0});
if (engine->is_keypressed(sfKeyRight))
sfView_move(rend->view, (sfVector2f){10, 0});
if (engine->is_keypressed(sfKeyDown))
sfView_move(rend->view, (sfVector2f){0, 10});
if (engine->is_keypressed(sfKeyUp))
sfView_move(rend->view, (sfVector2f){0, -10});
if (gameover_scene)
engine->change_scene(engine, gameover_scene);
if (engine->is_keypressed(sfKeyLeft))
sfView_move(rend->view, (sfVector2f){-10, 0});
if (engine->is_keypressed(sfKeyRight))
sfView_move(rend->view, (sfVector2f){10, 0});
if (engine->is_keypressed(sfKeyDown))
sfView_move(rend->view, (sfVector2f){0, 10});
if (engine->is_keypressed(sfKeyUp))
sfView_move(rend->view, (sfVector2f){0, -10});
}
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 = {
name: "game_cycle",
component_name: "game_manager",
size: sizeof(gc_system),
ctr: ctr,
dtr: NULL,
check_dependencies: &system_check_dependencies,
update_entity: &update_entity,
destroy: &system_destroy
name: "game_cycle",
component_name: "game_manager",
size: sizeof(gc_system),
ctr: ctr,
dtr: NULL,
check_dependencies: &system_check_dependencies,
update_entity: &update_entity,
destroy: &system_destroy
};

View File

@@ -18,77 +18,77 @@
void pm_destroy(gc_scene *scene, int prefab_id)
{
for (gc_list *ent = scene->entities; ent; ent = ent->next)
if (((gc_entity *)ent->data)->prefab_id == prefab_id)
((gc_entity *)ent->data)->destroy(ent->data, scene);
for (gc_list *ent = scene->entities; ent; ent = ent->next)
if (((gc_entity *)ent->data)->prefab_id == prefab_id)
((gc_entity *)ent->data)->destroy(ent->data, scene);
}
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);
teams_move_up(engine->scene, -15, y_pos);
pm_destroy(engine->scene, entity->prefab_id);
teams_move_up(engine->scene, -15, y_pos);
}
bool teams_move_up(gc_scene *scene, float amount, float y_level)
{
gc_list *list = scene->get_entity_by_cmp(scene, "tag_component");
struct fixed_to_cam *fc;
struct tag_component *tc;
int pm_to_destroy = -1;
gc_list *list = scene->get_entity_by_cmp(scene, "tag_component");
struct fixed_to_cam *fc;
struct tag_component *tc;
int pm_to_destroy = -1;
for (; list; list = list->next) {
tc = GETCMP(list->data, tag_component);
if (my_strcmp(tc->tag, "teams"))
continue;
fc = GETCMP(list->data, fixed_to_cam);
if (!fc || fc->pos.y > y_level)
continue;
fc->pos.y -= amount;
if (fc->pos.y < 15)
pm_to_destroy = ((gc_entity *)list->data)->prefab_id;
}
if (pm_to_destroy != -1)
pm_destroy(scene, pm_to_destroy);
return (pm_to_destroy != -1);
for (; list; list = list->next) {
tc = GETCMP(list->data, tag_component);
if (my_strcmp(tc->tag, "teams"))
continue;
fc = GETCMP(list->data, fixed_to_cam);
if (!fc || fc->pos.y > y_level)
continue;
fc->pos.y -= amount;
if (fc->pos.y < 15)
pm_to_destroy = ((gc_entity *)list->data)->prefab_id;
}
if (pm_to_destroy != -1)
pm_destroy(scene, pm_to_destroy);
return (pm_to_destroy != -1);
}
static void update_entity(gc_engine *engine, void *system, gc_entity *entity, \
float dtime)
{
struct teams_component *team = GETCMP(entity, teams_component);
struct game_manager *manager = GETCMP(entity, game_manager);
int index;
struct teams_component *team = GETCMP(entity, teams_component);
struct game_manager *manager = GETCMP(entity, game_manager);
int index;
if (!manager) {
my_printf("No game manager found. Teams is disabled.\n");
return;
}
if (engine->scene->is_paused)
return;
team->next_teams -= dtime;
if (team->next_teams < 0 && team->prefab_count) {
index = random() % team->prefab_count;
team->next_teams = team->delay;
if (teams_move_up(engine->scene, team->prefabs_size[index], 1000))
manager->happiness -= 10;
prefab_load(engine, team->prefabs[index]);
}
if (!manager) {
my_printf("No game manager found. Teams is disabled.\n");
return;
}
if (engine->scene->is_paused)
return;
team->next_teams -= dtime;
if (team->next_teams < 0 && team->prefab_count) {
index = random() % team->prefab_count;
team->next_teams = team->delay;
if (teams_move_up(engine->scene, team->prefabs_size[index], 1000))
manager->happiness -= 10;
prefab_load(engine, team->prefabs[index]);
}
}
static void destroy(void *system)
{
(void)system;
(void)system;
}
const gc_system teams_system = {
name: "teams_system",
component_name: "teams_component",
size: sizeof(gc_system),
ctr: NULL,
dtr: NULL,
check_dependencies: &system_check_dependencies,
update_entity: &update_entity,
destroy: &destroy
name: "teams_system",
component_name: "teams_component",
size: sizeof(gc_system),
ctr: NULL,
dtr: NULL,
check_dependencies: &system_check_dependencies,
update_entity: &update_entity,
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 "components/game_manager.h"
@@ -10,26 +13,26 @@
bool absent_check(gc_engine *engine, gc_entity *entity)
{
gc_scene *scene = engine->scene;
gc_list *li = scene->get_entity_by_cmp(scene, "game_manager");
gc_scene *scene = engine->scene;
gc_list *li = scene->get_entity_by_cmp(scene, "game_manager");
if (!li)
return (false);
GETCMP(li->data, game_manager)->happiness += 3;
GETCMP(li->data, game_manager)->stupidity += random() % 5;
pm_clicked(engine, entity);
return (true);
if (!li)
return (false);
GETCMP(li->data, game_manager)->happiness += 3;
GETCMP(li->data, game_manager)->stupidity += random() % 5;
pm_clicked(engine, entity);
return (true);
}
bool absent_cross(gc_engine *engine, gc_entity *entity)
{
gc_scene *scene = engine->scene;
gc_list *li = scene->get_entity_by_cmp(scene, "game_manager");
gc_scene *scene = engine->scene;
gc_list *li = scene->get_entity_by_cmp(scene, "game_manager");
if (!li)
return (false);
GETCMP(li->data, game_manager)->happiness -= 3;
GETCMP(li->data, game_manager)->stupidity -= random() % 5;
pm_clicked(engine, entity);
return (true);
if (!li)
return (false);
GETCMP(li->data, game_manager)->happiness -= 3;
GETCMP(li->data, game_manager)->stupidity -= random() % 5;
pm_clicked(engine, entity);
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 "components/game_manager.h"
@@ -9,26 +12,26 @@
bool forgot_lmfao(gc_engine *engine, gc_entity *entity)
{
gc_scene *scene = engine->scene;
gc_list *li = scene->get_entity_by_cmp(scene, "game_manager");
gc_scene *scene = engine->scene;
gc_list *li = scene->get_entity_by_cmp(scene, "game_manager");
if (!li)
return (false);
GETCMP(li->data, game_manager)->happiness -= 5;
GETCMP(li->data, game_manager)->stupidity -= 5;
pm_clicked(engine, entity);
return (true);
if (!li)
return (false);
GETCMP(li->data, game_manager)->happiness -= 5;
GETCMP(li->data, game_manager)->stupidity -= 5;
pm_clicked(engine, entity);
return (true);
}
bool forgot_ok(gc_engine *engine, gc_entity *entity)
{
gc_scene *scene = engine->scene;
gc_list *li = scene->get_entity_by_cmp(scene, "game_manager");
gc_scene *scene = engine->scene;
gc_list *li = scene->get_entity_by_cmp(scene, "game_manager");
if (!li)
return (false);
GETCMP(li->data, game_manager)->happiness += 2;
GETCMP(li->data, game_manager)->stupidity += 6;
pm_clicked(engine, entity);
return (true);
if (!li)
return (false);
GETCMP(li->data, game_manager)->happiness += 2;
GETCMP(li->data, game_manager)->stupidity += 6;
pm_clicked(engine, entity);
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 <components/isometry/map_manager_component.h>
@@ -10,71 +13,71 @@
bool up_down(gc_engine *engine, gc_entity *entity, gc_vector2 _)
{
gc_scene *scene = engine->scene;
gc_list *list = scene->get_entity_by_cmp(scene, "map_manager_component");
struct map_manager_component *manager;
gc_scene *scene = engine->scene;
gc_list *list = scene->get_entity_by_cmp(scene, "map_manager_component");
struct map_manager_component *manager;
if (!list)
return (false);
manager = GETCMP(list->data, map_manager_component);
manager->brush = MOVE;
return (true);
if (!list)
return (false);
manager = GETCMP(list->data, map_manager_component);
manager->brush = MOVE;
return (true);
}
bool reset(gc_engine *engine, gc_entity *entity, gc_vector2 _)
{
gc_scene *scene = engine->scene;
gc_list *list = scene->get_entity_by_cmp(scene, "map_manager_component");
struct map_manager_component *manager;
gc_scene *scene = engine->scene;
gc_list *list = scene->get_entity_by_cmp(scene, "map_manager_component");
struct map_manager_component *manager;
if (!list)
return (false);
manager = GETCMP(list->data, map_manager_component);
manager->brush = RESET;
return (true);
if (!list)
return (false);
manager = GETCMP(list->data, map_manager_component);
manager->brush = RESET;
return (true);
}
bool rotate(gc_engine *engine, gc_entity *entity, gc_vector2 _)
{
gc_scene *scene = engine->scene;
gc_list *list = scene->get_entity_by_cmp(scene, "map_manager_component");
struct map_manager_component *manager;
gc_scene *scene = engine->scene;
gc_list *list = scene->get_entity_by_cmp(scene, "map_manager_component");
struct map_manager_component *manager;
if (!list)
return (false);
manager = GETCMP(list->data, map_manager_component);
manager->brush = ROTATE;
return (true);
if (!list)
return (false);
manager = GETCMP(list->data, map_manager_component);
manager->brush = ROTATE;
return (true);
}
bool texture(gc_engine *engine, gc_entity *entity, gc_vector2 _)
{
gc_scene *scene = engine->scene;
gc_list *list = scene->get_entity_by_cmp(scene, "map_manager_component");
struct map_manager_component *manager;
gc_scene *scene = engine->scene;
gc_list *list = scene->get_entity_by_cmp(scene, "map_manager_component");
struct map_manager_component *manager;
if (!list)
return (false);
manager = GETCMP(list->data, map_manager_component);
manager->brush = TEXTURE;
return (true);
if (!list)
return (false);
manager = GETCMP(list->data, map_manager_component);
manager->brush = TEXTURE;
return (true);
}
bool switch_texture(gc_engine *engine, gc_entity *entity, gc_vector2 _)
{
gc_scene *scene = engine->scene;
gc_list *list = scene->get_entity_by_cmp(scene, "map_manager_component");
struct map_manager_component *manager;
void **data = scene->get_data(scene, "tiles", NULL);
static int index = 0;
void *next = NULL;
gc_scene *scene = engine->scene;
gc_list *list = scene->get_entity_by_cmp(scene, "map_manager_component");
struct map_manager_component *manager;
void **data = scene->get_data(scene, "tiles", NULL);
static int index = 0;
void *next = NULL;
if (!list)
return (false);
manager = GETCMP(list->data, map_manager_component);
index++;
if (data)
next = data[index % (arraylen(data) - 1)];
manager->selected_texture = next;
return (true);
if (!list)
return (false);
manager = GETCMP(list->data, map_manager_component);
index++;
if (data)
next = data[index % (arraylen(data) - 1)];
manager->selected_texture = next;
return (true);
}