@@ -24,24 +24,80 @@ void UpdateTimers() {
2424 }
2525}
2626
27- void handleInput (SDL_Event * event , int * game_active , int * keyInput ) {
27+ void handlePlayerMovement (SDL_FRect * p_sprite , int * directional_inputs ) {
28+ int speed = 7 ;
29+
30+ if (directional_inputs [Dash ] > 0 && BitCheck (cooldowns , 0 ) == 0 ) {
31+ speed = 100 ;
32+ cooldowns = BitSet (cooldowns , 0 );
33+ }
34+
35+ p_sprite -> x +=
36+ (- directional_inputs [Left ] + directional_inputs [Right ]) * speed ;
37+ p_sprite -> y += (- directional_inputs [Up ] + directional_inputs [Down ]) * speed ;
38+
39+ // Collision
40+ if (p_sprite -> x < 0 )
41+ p_sprite -> x = 0 ;
42+ if (p_sprite -> x > 948 - p_sprite -> w )
43+ p_sprite -> x = 948 - p_sprite -> w ; // Screen width
44+
45+ if (p_sprite -> y < 0 )
46+ p_sprite -> y = 0 ;
47+ if (p_sprite -> y > 680 - p_sprite -> h )
48+ p_sprite -> y = 680 - p_sprite -> h ; // Screen width
49+ }
50+
51+ void handleCombat (entity * plr , unsigned char isAtk ) {
52+ int pPoint ;
53+ if (isAtk ) {
54+ // if (inventory[1] > 1){
55+ int x , y ;
56+ SDL_GetMouseState (& x , & y );
57+ pPoint = x + y ;
58+
59+ inventory [1 ]-- ;
60+ // printf("Inventory Seeds: %i\n", inventory[0]);
61+ // }
62+ } else {
63+ pPoint = plr -> sprite .x + plr -> sprite .y + ((plr -> sprite .w + plr -> sprite .h ) / 2 );
64+ cooldowns = BitSet (cooldowns , 2 );
65+ }
66+
67+ for (int i = 0 ; i < world .size ; i ++ ) {
68+ hitbox (world .elements + i , i , plr -> components [1 ], pPoint , atk_range );
69+ }
70+ printf ("HP: %d\n" , (int ) plr -> components [0 ]);
71+ }
72+
73+ #define range 30
74+ void handleItems (entity * plr ) {
75+
76+ int pPoint = plr -> sprite .x + plr -> sprite .y + ((plr -> sprite .w + plr -> sprite .h ) / 2 );
77+ for (int i = ITEM_BUFFER_LEN ; i > -1 ; i -= 2 ) {
78+ int iPoint = item_buffer [i ].sprite .x + item_buffer [i ].sprite .y + ((item_buffer [i ].sprite .w + item_buffer [i ].sprite .h ) / 2 );
79+ if (abs (pPoint - iPoint ) <= range ){
80+ add_item (inventory , Inventory_Slots , item_buffer [i ].id , item_buffer [i ].amount );
81+ item_buffer [i ] = item_buffer [item_buff_size -- ]; // TODO: check if this works as expectedt
82+ }
83+ }
84+ }
85+
86+ void handleInput (SDL_Event * event , entity * plr , int * game_active , int * keyInput ) {
2887 while (SDL_PollEvent (event ))
2988 if (event -> type == SDL_QUIT )
3089 * game_active = 0 ;
3190
3291 else if (event -> button .button == SDL_BUTTON_LEFT ) {
33- if (event -> type == SDL_MOUSEBUTTONDOWN && !BitCheck (cooldowns , 1 ))
34- handle
35- // keyInput[Atk] = 1;
36- else if (event -> type == SDL_MOUSEBUTTONUP )
37- // keyInput[Atk] = 0;
92+ if (event -> type == SDL_MOUSEBUTTONDOWN && !BitCheck (cooldowns , 1 )){
93+ handleCombat (plr , 1 );
94+ handleItems (plr );
95+ }
3896 }
3997
4098 else if (event -> button .button == SDL_BUTTON_RIGHT ) {
4199 if (event -> type == SDL_MOUSEBUTTONDOWN && BitCheck (cooldowns , 2 ) == 0 )
42- keyInput [Side ] = 1 ;
43- else if (event -> type == SDL_MOUSEBUTTONUP )
44- keyInput [Side ] = 0 ;
100+ handleCombat (plr , 0 );
45101 }
46102
47103 else if (event -> type == SDL_KEYDOWN )
@@ -122,60 +178,3 @@ void handleInput(SDL_Event *event, int *game_active, int *keyInput) {
122178 // keyInput[2], keyInput[3]);
123179}
124180
125- void handlePlayerMovement (SDL_FRect * p_sprite , int * directional_inputs ) {
126- int speed = 7 ;
127-
128- if (directional_inputs [Dash ] > 0 && BitCheck (cooldowns , 0 ) == 0 ) {
129- speed = 100 ;
130- cooldowns = BitSet (cooldowns , 0 );
131- }
132-
133- p_sprite -> x +=
134- (- directional_inputs [Left ] + directional_inputs [Right ]) * speed ;
135- p_sprite -> y += (- directional_inputs [Up ] + directional_inputs [Down ]) * speed ;
136-
137- // Collision
138- if (p_sprite -> x < 0 )
139- p_sprite -> x = 0 ;
140- if (p_sprite -> x > 948 - p_sprite -> w )
141- p_sprite -> x = 948 - p_sprite -> w ; // Screen width
142-
143- if (p_sprite -> y < 0 )
144- p_sprite -> y = 0 ;
145- if (p_sprite -> y > 680 - p_sprite -> h )
146- p_sprite -> y = 680 - p_sprite -> h ; // Screen width
147- }
148-
149- void handleCombat (entity * plr , unsigned char isAtk ) {
150- int pPoint ;
151- if (isAtk ) {
152- // if (inventory[1] > 1){
153- int x , y ;
154- SDL_GetMouseState (& x , & y );
155- pPoint = x + y ;
156-
157- inventory [1 ]-- ;
158- printf ("Inventory Seeds: %i\n" , inventory [0 ]);
159- // }
160- } else {
161- pPoint = plr -> sprite .x + plr -> sprite .y + ((plr -> sprite .w + plr -> sprite .h ) / 2 );
162- cooldowns = BitSet (cooldowns , 2 );
163- }
164-
165- for (int i = 0 ; i < world .size ; i ++ ) {
166- hitbox (world .elements + i , i , plr -> components [1 ], pPoint , atk_range );
167- }
168- }
169-
170- #define range 30
171- void handleItems (entity * plr ) {
172-
173- int pPoint = plr -> sprite .x + plr -> sprite .y + ((plr -> sprite .w + plr -> sprite .h ) / 2 );
174- for (int i = ITEM_BUFFER_LEN ; i > -1 ; i -= 2 ) {
175- int iPoint = item_buffer [i ]-> sprite .x + item_buffer [i ]-> sprite .y + ((item_buffer [i ]-> sprite .w + item_buffer [i ]-> sprite .h ) / 2 );
176- if (abs (pPoint - iPoint ) <= range ){
177- add_item (inventory , Inventory_Slots , item_buffer [i ].id , item_buffer [i ].amount );
178- item_buffer [i ] = item_buffer [item_buff_size -- ]; // TODO: check if this works as expectedt
179- }
180- }
181- }
0 commit comments