#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(idir = 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); } }