begin stats

This commit is contained in:
bgiraudr 2022-01-23 00:53:07 +01:00
parent 9ef1c5daf8
commit bb32aef7ad
13 changed files with 73 additions and 268 deletions

View File

@ -40,6 +40,8 @@ set(SOURCES
src/player.c
src/util.c
src/animation.c
src/battle.c
src/stats.c
)
set(ASSETS_cg

View File

@ -16,6 +16,7 @@ def convert_map(input, output, params, target):
TILE_DOOR_OUT = 3
TILE_TALKABLE = 4
TILE_TELEPORTER = 5
TILE_GRASS = 6
DIALOG_LAYOUT = "dialog"
TELEPORTER_LAYOUT = "teleporter"
@ -56,6 +57,8 @@ def convert_map(input, output, params, target):
value = TILE_BRIDGE
elif type == "teleporter":
value = TILE_TELEPORTER
elif type == "grass":
value = TILE_GRASS
else:
value = TILE_AIR

View File

@ -4,21 +4,6 @@
<export target="tileset.json" format="json"/>
</editorsettings>
<image source="../tileset.png" width="464" height="256"/>
<tile id="0"/>
<tile id="1"/>
<tile id="2"/>
<tile id="3"/>
<tile id="4"/>
<tile id="5"/>
<tile id="6"/>
<tile id="7"/>
<tile id="8"/>
<tile id="9"/>
<tile id="10"/>
<tile id="11"/>
<tile id="12"/>
<tile id="13"/>
<tile id="14"/>
<tile id="15" type="solid"/>
<tile id="16" type="solid"/>
<tile id="17" type="solid"/>
@ -30,211 +15,48 @@
<tile id="23" type="solid"/>
<tile id="24" type="solid"/>
<tile id="25" type="solid"/>
<tile id="26"/>
<tile id="27"/>
<tile id="28"/>
<tile id="29"/>
<tile id="30"/>
<tile id="31"/>
<tile id="32"/>
<tile id="33"/>
<tile id="34"/>
<tile id="35"/>
<tile id="36"/>
<tile id="37"/>
<tile id="38"/>
<tile id="39"/>
<tile id="40"/>
<tile id="41"/>
<tile id="42"/>
<tile id="43"/>
<tile id="44" type="solid"/>
<tile id="45" type="solid"/>
<tile id="46" type="solid"/>
<tile id="47" type="solid"/>
<tile id="48" type="talkable"/>
<tile id="49" type="talkable"/>
<tile id="50"/>
<tile id="51"/>
<tile id="52" type="solid"/>
<tile id="53" type="solid"/>
<tile id="54" type="solid"/>
<tile id="55"/>
<tile id="56" type="talkable"/>
<tile id="57" type="talkable"/>
<tile id="58"/>
<tile id="59"/>
<tile id="60"/>
<tile id="61"/>
<tile id="62"/>
<tile id="63"/>
<tile id="64"/>
<tile id="65"/>
<tile id="66"/>
<tile id="67"/>
<tile id="68"/>
<tile id="69"/>
<tile id="70"/>
<tile id="71"/>
<tile id="72"/>
<tile id="73"/>
<tile id="74"/>
<tile id="75"/>
<tile id="76"/>
<tile id="77"/>
<tile id="78" type="solid"/>
<tile id="79" type="solid"/>
<tile id="80" type="solid"/>
<tile id="81" type="solid"/>
<tile id="82" type="solid"/>
<tile id="83" type="solid"/>
<tile id="84"/>
<tile id="85"/>
<tile id="86"/>
<tile id="87"/>
<tile id="88"/>
<tile id="89"/>
<tile id="90"/>
<tile id="91"/>
<tile id="92"/>
<tile id="93"/>
<tile id="94"/>
<tile id="95"/>
<tile id="96"/>
<tile id="97"/>
<tile id="98"/>
<tile id="99"/>
<tile id="100"/>
<tile id="101"/>
<tile id="102"/>
<tile id="103"/>
<tile id="104"/>
<tile id="105"/>
<tile id="106"/>
<tile id="107" type="solid"/>
<tile id="108"/>
<tile id="109" type="solid"/>
<tile id="110" type="solid"/>
<tile id="111"/>
<tile id="112" type="solid"/>
<tile id="113"/>
<tile id="114"/>
<tile id="115"/>
<tile id="116"/>
<tile id="117"/>
<tile id="118"/>
<tile id="119"/>
<tile id="120"/>
<tile id="121"/>
<tile id="122"/>
<tile id="123"/>
<tile id="124"/>
<tile id="125"/>
<tile id="126"/>
<tile id="127"/>
<tile id="128"/>
<tile id="129"/>
<tile id="130"/>
<tile id="131"/>
<tile id="132"/>
<tile id="133"/>
<tile id="134"/>
<tile id="135"/>
<tile id="136" type="solid"/>
<tile id="137" type="solid"/>
<tile id="138" type="solid"/>
<tile id="139" type="solid"/>
<tile id="140" type="solid"/>
<tile id="141" type="solid"/>
<tile id="142"/>
<tile id="143"/>
<tile id="144"/>
<tile id="145"/>
<tile id="146"/>
<tile id="147"/>
<tile id="148"/>
<tile id="149"/>
<tile id="150"/>
<tile id="151"/>
<tile id="152"/>
<tile id="153"/>
<tile id="154"/>
<tile id="155"/>
<tile id="156"/>
<tile id="157"/>
<tile id="158"/>
<tile id="159"/>
<tile id="160"/>
<tile id="161"/>
<tile id="162"/>
<tile id="163"/>
<tile id="164"/>
<tile id="165" type="solid"/>
<tile id="166"/>
<tile id="167" type="solid"/>
<tile id="168" type="solid"/>
<tile id="169" type="solid"/>
<tile id="170" type="solid"/>
<tile id="171"/>
<tile id="172"/>
<tile id="173"/>
<tile id="174"/>
<tile id="175"/>
<tile id="176"/>
<tile id="177"/>
<tile id="178"/>
<tile id="179"/>
<tile id="180"/>
<tile id="181"/>
<tile id="182"/>
<tile id="183"/>
<tile id="184"/>
<tile id="185"/>
<tile id="186"/>
<tile id="187"/>
<tile id="188"/>
<tile id="189"/>
<tile id="190"/>
<tile id="191"/>
<tile id="192"/>
<tile id="193"/>
<tile id="194" type="solid"/>
<tile id="195"/>
<tile id="196" type="solid"/>
<tile id="197" type="solid"/>
<tile id="198"/>
<tile id="199" type="solid"/>
<tile id="200" type="bridge"/>
<tile id="201" type="bridge"/>
<tile id="202" type="bridge"/>
<tile id="203"/>
<tile id="204"/>
<tile id="205"/>
<tile id="206"/>
<tile id="207"/>
<tile id="208"/>
<tile id="209"/>
<tile id="210"/>
<tile id="211"/>
<tile id="212"/>
<tile id="213"/>
<tile id="214"/>
<tile id="215"/>
<tile id="216"/>
<tile id="217"/>
<tile id="218"/>
<tile id="219"/>
<tile id="220"/>
<tile id="221"/>
<tile id="222"/>
<tile id="223" type="solid"/>
<tile id="224" type="solid"/>
<tile id="225" type="solid"/>
<tile id="226"/>
<tile id="227"/>
<tile id="228"/>
<tile id="229"/>
<tile id="230"/>
<tile id="231" type="bridge"/>
<tile id="232" type="solid"/>
<tile id="233" type="solid"/>
@ -262,9 +84,6 @@
<tile id="255" type="bridge"/>
<tile id="256" type="bridge"/>
<tile id="257" type="solid"/>
<tile id="258"/>
<tile id="259"/>
<tile id="260"/>
<tile id="261" type="solid"/>
<tile id="262" type="solid"/>
<tile id="263" type="solid"/>
@ -276,7 +95,6 @@
<property name="text" value=""/>
</properties>
</tile>
<tile id="267"/>
<tile id="268" type="solid"/>
<tile id="269" type="solid"/>
<tile id="270" type="solid"/>
@ -296,27 +114,19 @@
<tile id="284" type="bridge"/>
<tile id="285" type="bridge"/>
<tile id="286" type="solid"/>
<tile id="287"/>
<tile id="288"/>
<tile id="289"/>
<tile id="290" type="solid"/>
<tile id="291" type="solid"/>
<tile id="292" type="solid"/>
<tile id="293"/>
<tile id="294"/>
<tile id="295"/>
<tile id="296"/>
<tile id="293" type="grass"/>
<tile id="294" type="grass"/>
<tile id="297" type="solid"/>
<tile id="298" type="solid"/>
<tile id="299" type="solid"/>
<tile id="300"/>
<tile id="301" type="solid"/>
<tile id="302" type="solid"/>
<tile id="303" type="solid"/>
<tile id="304" type="solid"/>
<tile id="305" type="solid"/>
<tile id="306"/>
<tile id="307"/>
<tile id="308" type="solid"/>
<tile id="309" type="bridge"/>
<tile id="310" type="bridge"/>
@ -325,9 +135,6 @@
<tile id="313" type="bridge"/>
<tile id="314" type="bridge"/>
<tile id="315" type="solid"/>
<tile id="316"/>
<tile id="317"/>
<tile id="318"/>
<tile id="319" type="solid"/>
<tile id="320" type="solid"/>
<tile id="321" type="solid"/>
@ -346,7 +153,6 @@
<tile id="334" type="solid"/>
<tile id="335" type="solid"/>
<tile id="336" type="solid"/>
<tile id="337"/>
<tile id="338" type="solid"/>
<tile id="339" type="solid"/>
<tile id="340" type="solid"/>
@ -354,9 +160,6 @@
<tile id="342" type="bridge"/>
<tile id="343" type="bridge"/>
<tile id="344" type="solid"/>
<tile id="345"/>
<tile id="346"/>
<tile id="347"/>
<tile id="348" type="solid"/>
<tile id="349" type="solid"/>
<tile id="350" type="solid"/>
@ -375,17 +178,6 @@
<tile id="363" type="solid"/>
<tile id="364" type="solid"/>
<tile id="365" type="solid"/>
<tile id="366"/>
<tile id="367"/>
<tile id="368"/>
<tile id="369"/>
<tile id="370"/>
<tile id="371"/>
<tile id="372"/>
<tile id="373"/>
<tile id="374"/>
<tile id="375"/>
<tile id="376"/>
<tile id="377" type="solid"/>
<tile id="378" type="solid"/>
<tile id="379" type="solid"/>
@ -404,75 +196,18 @@
<tile id="392" type="solid"/>
<tile id="393" type="solid"/>
<tile id="394" type="solid"/>
<tile id="395"/>
<tile id="396"/>
<tile id="397"/>
<tile id="398"/>
<tile id="399"/>
<tile id="400"/>
<tile id="401"/>
<tile id="402"/>
<tile id="403"/>
<tile id="404"/>
<tile id="405"/>
<tile id="406"/>
<tile id="407"/>
<tile id="408"/>
<tile id="409"/>
<tile id="410"/>
<tile id="411"/>
<tile id="412" type="solid"/>
<tile id="413" type="door_in"/>
<tile id="414" type="solid"/>
<tile id="415" type="solid"/>
<tile id="416"/>
<tile id="417"/>
<tile id="418"/>
<tile id="419"/>
<tile id="420" type="solid"/>
<tile id="421" type="solid"/>
<tile id="422" type="solid"/>
<tile id="423" type="solid"/>
<tile id="424"/>
<tile id="425"/>
<tile id="426"/>
<tile id="427"/>
<tile id="428"/>
<tile id="429"/>
<tile id="430"/>
<tile id="431"/>
<tile id="432"/>
<tile id="433"/>
<tile id="434"/>
<tile id="435"/>
<tile id="436"/>
<tile id="437"/>
<tile id="438"/>
<tile id="439"/>
<tile id="440"/>
<tile id="441"/>
<tile id="442"/>
<tile id="443"/>
<tile id="444"/>
<tile id="445"/>
<tile id="446"/>
<tile id="447"/>
<tile id="448"/>
<tile id="449" type="solid"/>
<tile id="450" type="door_in"/>
<tile id="451" type="solid"/>
<tile id="452" type="solid"/>
<tile id="453"/>
<tile id="454"/>
<tile id="455"/>
<tile id="456"/>
<tile id="457"/>
<tile id="458"/>
<tile id="459"/>
<tile id="460"/>
<tile id="461"/>
<tile id="462"/>
<tile id="463"/>
<wangsets>
<wangset name="Herbe" type="corner" tile="-1">
<wangcolor name="Herbe" color="#ff0000" tile="0" probability="1"/>

4
include/battle.h Normal file
View File

@ -0,0 +1,4 @@
#pragma once
#include "player.h"
void create_battle(struct Player *player);

View File

@ -19,7 +19,8 @@ enum action {
DIR_RIGHT = 3,
ACTION_SHIFT = 4,
ACTION_ALPHA = 5,
ACTION_F1 = 6
ACTION_F1 = 6,
ACTION_OPTN = 7
};
/*get the input with a timeout*/

View File

@ -30,6 +30,7 @@ enum map_state {
TILE_DOOR_OUT = 3,
TILE_TALKABLE = 4,
TILE_TELEPORTER = 5,
TILE_GRASS = 6,
};
/*check if a tile is walkable*/

View File

@ -2,12 +2,15 @@
#include "animation.h"
#include "engine.h"
#include "vec2.h"
#include "stats.h"
struct Player {
/*current position of the player on the map - Tile*/
struct Vec2 pos;
/*current position of the player on the map - pixels */
struct Vec2f pos_visual;
struct Stats stats;
/*player mid - offset pixels*/
int x_mid, y_mid;
/*the direction the player facing to*/

11
include/stats.h Normal file
View File

@ -0,0 +1,11 @@
#pragma once
struct Stats {
int atk;
int def;
int pv;
int level;
int xp;
};
void draw_stats(struct Stats stats);

10
src/battle.c Normal file
View File

@ -0,0 +1,10 @@
#include <gint/display.h>
#include <gint/keyboard.h>
#include "engine.h"
#include "battle.h"
#include "util.h"
void create_battle(struct Player *player) {
player->stats.level++;
}

View File

@ -10,6 +10,7 @@
#include "talkable.h"
#include "camera.h"
#include "vec2.h"
#include "battle.h"
/*draw the current state of the game*/
void engine_draw(struct Game const *game) {
@ -125,6 +126,9 @@ void engine_action(struct Game const *game, int action) {
if(action == ACTION_F1) {
game->player->sprint = game->player->sprint ? 0 : 1;
}
if(action == ACTION_OPTN) {
draw_stats(game->player->stats);
}
}
/*check the current position of the player. To perform action depends of his location*/
@ -155,6 +159,9 @@ void engine_check_position(struct Game *game) {
}
engine_center_camera(game);
}
if(player_curr_tile == TILE_GRASS) {
create_battle(game->player);
}
}
void engine_center_camera(struct Game *game) {

View File

@ -39,5 +39,6 @@ int get_inputs(void) {
if(key == KEY_SHIFT) return ACTION_SHIFT;
if(key == KEY_ALPHA) return ACTION_ALPHA;
if(key == KEY_F1) return ACTION_F1;
if(key == KEY_OPTN) return ACTION_OPTN;
}
}

View File

@ -1,11 +1,22 @@
#include "player.h"
#include "define.h"
#include "map.h"
#include "stats.h"
struct Player init_player(void) {
struct Stats stats = {
.atk = 1,
.def = 1,
.level = 1,
.pv = 10,
.xp = 0
};
struct Player player = {
.pos = VEC2(32, 30),
.pos_visual = VEC2F(32*TILE_SIZE, 30*TILE_SIZE),
.stats = stats,
.x_mid = 6,
.y_mid = 1,
.show_x = 12,

16
src/stats.c Normal file
View File

@ -0,0 +1,16 @@
#include <gint/display.h>
#include <gint/keyboard.h>
#include "stats.h"
#include "util.h"
void draw_stats(struct Stats stats) {
drect(DWIDTH-110,0,DWIDTH,DHEIGHT,C_WHITE);
dprint(300,20,C_BLACK,"PV : %d",stats.pv);
dprint(300,40,C_BLACK,"Level : %d",stats.level);
dprint(300,60,C_BLACK,"XP : %d",stats.xp);
dprint(300,80,C_BLACK,"ATK : %d",stats.atk);
dprint(300,100,C_BLACK,"DEF : %d",stats.def);
dupdate();
wait_for_input(KEY_OPTN);
}