void DSKY::KeyRelCallback(PanelSwitchItem* s) { if (s->GetState() == 1) { KeyDown_KeyRel = true; KeyRel(); } else { ResetKeyDown(); } }
void UpdateHero(Hero h) { if(levelUp) { if(lvlUp->frame < lvlUp->rows[lvlUp->row]-1) { NextFrame(lvlUp); } else { levelUp=0; } } if(UpTimer) { UpTimer--; UpPos.x = player.position.x-5; UpPos.y -= 0.05f + (UpTimer) * 0.001f; } if(player.attacking == 0) { if(KeyRel(KEY_LEFT) || KeyRel(KEY_RIGHT) || KeyRel(KEY_UP) || KeyRel(KEY_DOWN)) return; player.col = NONE; test = 0; for(int i = 0;i<wallsNum;i++) { if(AABB(player.position,walls[i])) { test = 1; player.col |= CheckColSide(walls[i],player.position,player.speed); } } if(key[KEY_LEFT] && player.col != LEFT) { if(player.a->row != 4+player.dir) { SetRow(player.a,4+player.dir); player.dir = 2; } else { NextFrame(player.a); } player.position.x -= player.speed; } else if(key[KEY_RIGHT] && player.col != RIGHT) { if(player.a->row != 4+player.dir) { SetRow(player.a,4+player.dir); player.dir = 0; } else { NextFrame(player.a); } player.position.x += player.speed; } else if(key[KEY_UP] && player.col != UP) { if(player.a->row != 4+player.dir) { SetRow(player.a,4+player.dir); player.dir = 1; } else { NextFrame(player.a); } player.position.y -= player.speed; } else if(key[KEY_DOWN] && player.col != DOWN) { if(player.a->row != 4+player.dir) { SetRow(player.a,4+player.dir); player.dir = 3; } else { NextFrame(player.a); } player.position.y += player.speed; } else { if(player.a->row != player.dir) { SetRow(player.a,player.dir); } else { NextFrame(player.a); } } if(KeyRel(KEY_SPACE)) { player.attacking = 1; } } else { if(player.a->row != 8+player.dir) { SetRow(player.a,8+player.dir); } else { if(player.a->frame == 1) { Point hDir; switch(player.dir) { case 0: hit.x = player.position.x + player.position.w; hit.y = player.position.y; hDir.x = 1; hDir.y = 0; break; case 1: hit.x = player.position.x; hit.y = player.position.y - player.position.h; hDir.x = 0; hDir.y = -1; break; case 2: hit.x = player.position.x - player.position.w; hit.y = player.position.y; hDir.x = -1; hDir.y = 0; break; case 3: hit.x = player.position.x; hit.y = player.position.y + player.position.h; hDir.x = 0; hDir.y = 1; break; } hit.w = player.position.w; hit.h = player.position.h; play_sample(swordSlash,fxVol,(player.position.x/Resolution.x)*255,1000,0); Zombie** z = &zombies; while((*z)!= NULL ) { if((*z)->hp >= 0 && AABB(hit,(*z)->position)) { HitZombie(z,player.damage); if(z!=NULL && (*z)!= NULL && (*z)->next != NULL) { (*z)->position.x += hDir.x * player.damage*2; (*z)->position.y += hDir.x * player.damage*2; } } if((*z) != NULL && (*z)->next != NULL) z = &(*z)->next; else { break; } } } if(player.a->frame < player.a->rows[player.a->row]-1) { NextAttFrame(player.a); } else { player.attacking = 0; } } } }
void DSKY::ProcessKeyPress(int mx, int my) { if (mx > 2 && mx < 39) { if (my > 21 && my < 59) { KeyDown_Verb = true; VerbPressed(); } if (my > 61 && my < 99) { KeyDown_Noun = true; NounPressed(); } } if (mx > 2+1*41 && mx < 39+1*41) { if (my > 1 && my < 39) { KeyDown_Plus = true; PlusPressed(); } if (my > 41 && my < 79) { KeyDown_Minus = true; MinusPressed(); } if (my > 81 && my < 119) { KeyDown_0 = true; NumberPressed(0); } } if (mx > 2+2*41 && mx < 39+2*41) { if (my > 1 && my < 39) { KeyDown_7 = true; NumberPressed(7); } if (my > 41 && my < 79) { KeyDown_4 = true; NumberPressed(4); } if (my > 81 && my < 119) { KeyDown_1 = true; NumberPressed(1); } } if (mx > 2+3*41 && mx < 39+3*41) { if (my > 1 && my < 39) { KeyDown_8 = true; NumberPressed(8); } if (my > 41 && my < 79) { KeyDown_5 = true; NumberPressed(5); } if (my > 81 && my < 119) { KeyDown_2 = true; NumberPressed(2); } } if (mx > 2+4*41 && mx < 39+4*41) { if (my > 1 && my < 39) { KeyDown_9 = true; NumberPressed(9); } if (my > 41 && my < 79) { KeyDown_6 = true; NumberPressed(6); } if (my > 81 && my < 119) { KeyDown_3 = true; NumberPressed(3); } } if (mx > 2+5*41 && mx < 39+5*41) { if (my > 1 && my < 39) { KeyDown_Clear = true; ClearPressed(); } if (my > 41 && my < 79) { KeyDown_Prog = true; ProgPressed(); } if (my > 81 && my < 119) { KeyDown_KeyRel = true; KeyRel(); } } if (mx > 2+6*41 && mx < 39+6*41) { if (my > 21 && my < 59) { KeyDown_Enter= true; EnterPressed(); } if (my > 61 && my < 99) { KeyDown_Reset = true; ResetPressed(); } } }