void PlayerManager::Update(VideoPtr video, InputPtr input, ShootManagerPtr shootManager, SpritePtr playerSprite, SpritePtr shootSprite) { static Vector2 hitPos, releasePos; static int turn = 0; if (input->GetTouchState(0) == GSKS_HIT) { if (IsInArea(GetAbsolutePos(input, video), Rect2Df(GetPlayer(turn)->GetPos(), playerSprite->GetRect().size), Vector2(0.5f, 0.5f), video)) { hitPos = input->GetTouchPos(0, video); } else { hitPos = GS_NO_TOUCH; } } if (input->GetTouchState(0) == GSKS_DOWN) { releasePos = hitPos - input->GetTouchPos(0, video); } if (input->GetTouchState(0) == GSKS_RELEASE && hitPos != GS_NO_TOUCH) { { Vector2 pos = m_simulator->GetPosition(GetPlayer(turn)->GetBodyId()); shootManager->Shoot(pos, turn, releasePos); turn = !turn; } } if (hitPos == GS_NO_TOUCH) { video->MoveCamera(input->GetTouchMove(0) * -1); } }
void TouchButton::UpdateButton(VideoPtr video, InputPtr input, AudioPtr audio, SpriteResourceManager& spr, AudioResourceManager& aud) { SpritePtr sprite = spr.GetSprite(video, m_buttonSprite); const Vector2 frameSize(GetButtonSize(sprite)); const Vector2 currentTouch(input->GetTouchPos(0, video)); if (input->GetTouchState(0) == GSKS_HIT && currentTouch != GS_NO_TOUCH) m_hitPos = currentTouch; if (m_status == SACTIVATED) { m_status = ACTIVATED; } if (currentTouch != GS_NO_TOUCH) { m_lastTouch = currentTouch; if (IsInArea(currentTouch, Rect2Df(m_pos, frameSize), m_origin) && IsInArea(m_hitPos, Rect2Df(m_pos, frameSize), m_origin)) { m_status = PRESSED; } else { m_status = IDLE; } } if (input->GetTouchState(0) == GSKS_RELEASE) { if (IsInArea(m_lastTouch, Rect2Df(m_pos, frameSize), m_origin) && IsInArea(m_hitPos, Rect2Df(m_pos, frameSize), m_origin)) { m_status = SACTIVATED; if (m_soundEffect != GS_L("")) { aud.GetSample(audio, m_soundEffect)->Play(); } } } }