Esempio n. 1
0
void DSKY::KeyRelCallback(PanelSwitchItem* s)
{
	if (s->GetState() == 1)
	{
		KeyDown_KeyRel = true;
		KeyRel();
	}
	else
	{
		ResetKeyDown();
	}
}
Esempio n. 2
0
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;
            }
        }
    }
}
Esempio n. 3
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();
		}
	}

}