175 lines
4.6 KiB
C
175 lines
4.6 KiB
C
#include "state_test.h"
|
|
#include "report.h"
|
|
#include "globals.h"
|
|
#include "AnimData.h"
|
|
#include "EntityManager.h"
|
|
#include "PTime.h"
|
|
|
|
int openTestState() {
|
|
report(DEBUG, "openTestState", "all ur bogomips r belong to us\n");
|
|
memset(&keys, 0, KEY_COUNT);
|
|
|
|
player_animation = loadResource(g_animdata, "gfx/cyb_pl.anim");
|
|
|
|
struct Entity *player_entity = newEntity();
|
|
player_id = addEntity(&g_entity_manager, player_entity);
|
|
if (player_id < 0) {
|
|
printf("ERRORORORORO\n");
|
|
}
|
|
setEntityAnimation(&g_entity_manager, player_id, "gfx/cyb_pl.anim");
|
|
setEntitySet(&g_entity_manager, player_id, "walk");
|
|
setEntityFace(&g_entity_manager, player_id, "s");
|
|
|
|
printf("player id: %d\n", player_id);
|
|
printf("anim: %d\n", getEntity(&g_entity_manager, player_id)->anim.anim_id);
|
|
current_anim = getResourceById(g_animdata, player_entity->anim.anim_id);
|
|
printf("anim: %d\n", getEntity(&g_entity_manager, player_id)->anim.anim_id);
|
|
|
|
|
|
struct Entity *current_entity = getEntity(&g_entity_manager, player_id);
|
|
|
|
current_anim = getResourceById(g_animdata, player_animation);
|
|
current_set = getResourceById(current_anim, current_entity->anim.set_id);
|
|
current_face = getResource(current_set, "se");
|
|
current_frame = ¤t_face->frames[0];
|
|
frame = 0;
|
|
|
|
if (loadResource(g_sprites, current_frame->file) < 0) {
|
|
printf("err\n");
|
|
}
|
|
printf("current frame is %s!\n", current_frame->file);
|
|
|
|
x = y = 0;
|
|
|
|
return 0;
|
|
}
|
|
|
|
void closeTestState() {
|
|
freeResource(g_sprites, "gfx/cyb_pl/idle/s/0000.png");
|
|
report(DEBUG, "closeTestState", "bai\n");
|
|
}
|
|
|
|
void handleTestState(SDL_Event event) {
|
|
switch(event.type) {
|
|
// TODO: read from keybinds configuration
|
|
case SDL_KEYDOWN:
|
|
switch(event.key.keysym.sym) {
|
|
case SDLK_a:
|
|
keys[WEST] = 1;
|
|
break;
|
|
case SDLK_d:
|
|
keys[EAST] = 1;
|
|
break;
|
|
case SDLK_w:
|
|
keys[NORTH] = 1;
|
|
break;
|
|
case SDLK_s:
|
|
keys[SOUTH] = 1;
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
case SDL_KEYUP:
|
|
switch(event.key.keysym.sym) {
|
|
case SDLK_a:
|
|
keys[WEST] = 0;
|
|
break;
|
|
case SDLK_d:
|
|
keys[EAST] = 0;
|
|
break;
|
|
case SDLK_w:
|
|
keys[NORTH] = 0;
|
|
break;
|
|
case SDLK_s:
|
|
keys[SOUTH] = 0;
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
void processTestState() {
|
|
//report(DEBUG, "process", "delta(%ld): %ldns %ldms\n", g_delta.n, g_tickrate.n, g_tickrate.m);
|
|
int i = 0;
|
|
int moving = 0;
|
|
struct Entity *current_entity = getEntity(&g_entity_manager, player_id);
|
|
while(i<KEY_COUNT) {
|
|
if (keys[i] == 1) {
|
|
switch(i) {
|
|
case NORTH:
|
|
current_entity->dir = 8;
|
|
moving = 1;
|
|
y--;
|
|
break;
|
|
case EAST:
|
|
current_entity->dir = 6;
|
|
moving = 1;
|
|
x++;
|
|
break;
|
|
case WEST:
|
|
current_entity->dir = 4;
|
|
moving = 1;
|
|
x--;
|
|
break;
|
|
case SOUTH:
|
|
current_entity->dir = 2;
|
|
moving = 1;
|
|
y++;
|
|
break;
|
|
default:
|
|
printf("who knows b\n");
|
|
break;
|
|
}
|
|
}
|
|
i++;
|
|
}
|
|
switch(current_entity->dir) {
|
|
case 8: // n
|
|
setEntityFace(&g_entity_manager, player_id, "n");
|
|
printf("SETTING to north: %d\n", current_entity->anim.face_id);
|
|
break;
|
|
case 6: // e
|
|
setEntityFace(&g_entity_manager, player_id, "n");
|
|
break;
|
|
case 4: // w
|
|
setEntityFace(&g_entity_manager, player_id, "w");
|
|
break;
|
|
case 2: // s
|
|
setEntityFace(&g_entity_manager, player_id, "s");
|
|
break;
|
|
}
|
|
/*test++;
|
|
if (test >= 2) {
|
|
if (frame < current_face->frame_count) {
|
|
current_frame = ¤t_face->frames[frame++];
|
|
} else {
|
|
frame = 0;
|
|
}
|
|
test = 0;
|
|
}*/
|
|
}
|
|
|
|
void renderTestState() {
|
|
struct Entity *entity;
|
|
int i;
|
|
for (i = 0; i < g_entity_manager.index.size;i++) {
|
|
entity = getEntity(&g_entity_manager, i);
|
|
if (entity == NULL) continue;
|
|
struct Resource *current_anim = getResourceById(g_animdata, entity->anim.anim_id);
|
|
if (current_anim == NULL) continue;
|
|
struct Resource *current_set = getResourceById(current_anim, entity->anim.set_id);
|
|
if (current_set == NULL) continue;
|
|
struct FaceData *current_face = getResourceById(current_set, entity->anim.face_id);
|
|
printf("face is %d!\n", entity->anim.face_id);
|
|
if (current_face == NULL) continue;
|
|
struct FrameData *current_frame = getFrame(current_face, entity->anim.frame);
|
|
renderSprite(getResourceById(g_sprites, loadResource(g_sprites, current_frame->file)), 64+x, 64+y);
|
|
}
|
|
}
|