void Missile::RecvObject(RakNet::BitStream* bs, MyMsgIDs type) { char _deleted; switch (type) { case ID_UPDATEMISSILE: { bs->Read(_deleted); // So were we deleted this time? if (_deleted == 1) { deleted = 1; } else { // Since we weren't deleted, let's update ourselvs float x, y, w; bs->Read(x); bs->Read(y); bs->Read(w); UpdateLoc(x, y, w); bs->Read(x); SetVelocityX(x); bs->Read(y); SetVelocityY(y); } break; } } }
void PlayerObject::HandleEvent(Event* pEvent) { if (pEvent->GetEventID() == "playerKeyUp.Up") { SetVelocityY(0.0); ChangeAnimation("Idle"); } else if (pEvent->GetEventID() == "playerKeyUp.Down") { SetVelocityY(0.0); ChangeAnimation("Idle"); } else if (pEvent->GetEventID() == "playerKeyUp.Right") { SetVelocityX(0.0); ChangeAnimation("Idle"); m_Animations[m_currentAnimation]->SetScale(XMFLOAT2(1.0f, 1.0f)); } else if (pEvent->GetEventID() == "playerKeyUp.Left") { SetVelocityX(0.0); ChangeAnimation("Idle"); m_Animations[m_currentAnimation]->SetScale(XMFLOAT2(-1.0f, 1.0f)); } else if (pEvent->GetEventID() == "playerKeyDown.Up") { SetVelocityY(25.0f); ChangeAnimation("Walk"); } else if (pEvent->GetEventID() == "playerKeyDown.Down") { SetVelocityY(-25.0f); ChangeAnimation("Walk"); } else if (pEvent->GetEventID() == "playerKeyDown.Right") { SetVelocityX(25.0f); ChangeAnimation("Walk"); m_Animations[m_currentAnimation]->SetScale(XMFLOAT2(1.0f, 1.0f)); } else if (pEvent->GetEventID() == "playerKeyDown.Left") { SetVelocityX(-25.0f); ChangeAnimation("Walk"); m_Animations[m_currentAnimation]->SetScale(XMFLOAT2(-1.0f, 1.0f)); } }
void FallingObject::OnDestroy() { dying = true; SetPower(0); SetVelocityX(0); SetVelocityY(0); if( m_currentSprite == 24) { SetX(rand() % World::GetScreenWidth()); SetY(0); SetVelocityY(5 + rand() % 10); SetVelocityX(-4); SetPower(1); SetHealth(1); dying = false; m_currentSprite = 5; } }
void cFreePlayMenu::Step (uint32_t a_ElapsedMiliSec) { if (GetPosition() != GetPreviousPosition()) { sf::Vector3<double> l_Position = GetPosition(); m_Player1Label.setPosition(GetPosition().x, l_Position.y + 4); l_Position.y += m_pPlayer1Option->GetBoundingBox().height + 5; m_Player2Label.setPosition(GetPosition().x, l_Position.y + 4); l_Position.y += m_pPlayer2Option->GetBoundingBox().height + 5; m_GameSpeedLabel.setPosition(GetPosition().x, l_Position.y + 4); } // We can't post a message from inside the MessageReceived function, so it // gets deferred to here instead. // TODO: This might not actually be true. It might only be registering for // messages that is problematic. if (m_PostBackMessage) { sMessage l_Message; l_Message.m_From = GetUniqueId(); l_Message.m_Category = "Button"; l_Message.m_Key = "Menu Change"; l_Message.m_Value = "cMainMenu"; GetResources()->GetMessageDispatcher()->PostMessage(l_Message); m_PostBackMessage = false; } if (GetVelocity().x < 0) { if (GetPosition().x + m_Player1Label.getLocalBounds().width < GetResources()->GetWindow()->getSize().x / 2) { SetVelocityX(0, kNormal); } } else if (GetVelocity().x > 0) { if (GetPosition().x > GetResources()->GetWindow()->getSize().x) { SetVelocityX(0, kNormal); } } }
void cBonusShot::Initialize() { m_OriginalPosition = GetPosition(); // Initial angle starts away from destination m_AngleInRadians = atan2(m_Destination.y - m_OriginalPosition.y, m_Destination.x - m_OriginalPosition.x); m_AngleInRadians += g_kPI; SetVelocityX(cos(m_AngleInRadians) * m_Speed, kNormal); SetVelocityY(sin(m_AngleInRadians) * m_Speed, kNormal); }
Character::Character(World* world, int initialPosX, int initialPosY, int velX, int velY) : ControlableGameObject(world, initialPosX, initialPosY, CLIP_WIDTH, CLIP_HEIGHT , velX, velY, CHAR_HEALTH, CHAR_POWER, LOAD_PATH) { m_currentSprite = 0; jumpFrame = 0; SetVelocityX(0); SetVelocityY(0); currentFrame = 0; }
void cFreePlayMenu::MessageReceived(sMessage a_Message) { if (a_Message.m_From == m_pStartButton->GetUniqueId()) { //~ std::cout << "Start button pressed" << std::endl; GetResources()->SetActiveLevel("Level1", true); std::string l_Player1Option = m_pPlayer1Option->GetSelectedOption(); std::string l_Player2Option = m_pPlayer2Option->GetSelectedOption(); std::string l_GameSpeed = m_pGameSpeedOption->GetSelectedOption(); GetResources()->GetGameConfigData()->SetProperty("Player1", l_Player1Option); GetResources()->GetGameConfigData()->SetProperty("Player2", l_Player2Option); GetResources()->GetGameConfigData()->SetProperty("GameType", "FreePlay"); GetResources()->GetGameConfigData()->SetProperty("GameSpeed", l_GameSpeed); } else if (a_Message.m_From == m_pBackButton->GetUniqueId()) { SetVelocityX(1000, kNormal); m_PostBackMessage = true; } }
void cBonusShot::Step (uint32_t a_ElapsedMiliSec) { // Calculate angle to destination double l_AngleToDest = atan2(m_Destination.y - GetPosition().y, m_Destination.x - GetPosition().x); if (m_AngleInRadians < l_AngleToDest + g_kPI / 40 || m_AngleInRadians > l_AngleToDest - g_kPI / 40) { // We need to rotate our angle towards destination. Figure out direction. bool l_IsClockwise = false; if (l_AngleToDest < -g_kPI / 2.0) { l_IsClockwise = true; } double l_AngleDiff = l_AngleToDest - m_AngleInRadians; l_AngleDiff = std::fmod(l_AngleDiff, 2 * g_kPI); //~ if (l_AngleDiff > 0) //~ { //~ l_IsClockwise = false; //~ } //~ //~ if (l_AngleDiff > g_kPI) //~ { //~ l_IsClockwise = !l_IsClockwise; //~ } // Now rotate if (m_Speed < g_kMaxSpeed) { m_Speed += g_kAcceleration * a_ElapsedMiliSec / 1000; } //~ else //~ { //~ std::cout << "MAXXXXXXXXXXXX" << std::endl; //~ } double l_DistanceToRotate = m_Speed / 1000 * 4 * g_kPI * a_ElapsedMiliSec / 1000.0; if (l_DistanceToRotate > fabs(l_AngleDiff)) { m_AngleInRadians = l_AngleToDest; } else if (l_IsClockwise) { m_AngleInRadians -= l_DistanceToRotate; if (m_AngleInRadians < -g_kPI) { m_AngleInRadians += 2 * g_kPI; } } else { m_AngleInRadians += l_DistanceToRotate; if (m_AngleInRadians > g_kPI) { m_AngleInRadians -= 2 * g_kPI; } } } SetVelocityX(cos(m_AngleInRadians) * m_Speed, kNormal); SetVelocityY(sin(m_AngleInRadians) * m_Speed, kNormal); // If the destination is between our position and original position then we // made it. sf::Vector3<double> l_Distance1 = m_Destination - m_OriginalPosition; sf::Vector3<double> l_Distance2 = GetPosition() - m_OriginalPosition; if (fabs(l_Distance2.x) > fabs(l_Distance1.x)) { UnregisterObject(true); } }
// These functions are overloaded from cObject void cCloud::Initialize() { m_Speed += GetPosition().y/17; SetVelocityX(m_Speed, kNormal); }