コード例 #1
0
ファイル: world.cpp プロジェクト: budokaii/ozifi
void TWorld::OnControl(size_t playerId, Space::TControl control) {
    if (Players.find(playerId) == Players.end()) {
        qDebug() << "error: player not found, id: " << playerId;
        return;
    }
    TPlayer& player = Players[playerId];
    size_t planetFrom = control.planetfrom();
    size_t planetTo = control.planetto();
    if (control.has_playername()) {
        player.Name = QString::fromStdString(control.playername());
    }
    if (planetFrom >= (size_t)Planets.size() || planetTo >= (size_t)Planets.size()) {
        return;
    }
    if (planetFrom == planetTo) {
        return;
    }
    TPlanet& from = Planets[planetFrom];
    TPlanet& to = Planets[planetTo];
    if (from.PlayerId != (int)player.Id) {
        return;
    }
    float energyPercents = 0.01 * control.energypercent();
    if (from.Energy * energyPercents >= 2.0) {
        SpawnShips(from, to, energyPercents, playerId);
    }
}
コード例 #2
0
void EnemyController::CheckPlayerHit(void)
{
	for (int ship = 0; ship < 6; ship++)
	{
		if (p_Ship[ship]->m_Active)
		{
			if (p_Ship[ship]->CheckPlayerHit() || p_Ship[ship]->CheckUFOHit())
			{
				SpawnExplosion(p_Ship[ship]->m_Position, 1);
				p_Ship[ship]->Deactivate();
			}

			if (p_Ship[ship]->CheckPlayerHit())
				p_Player->GotPoints(200);
		}

	}


	for (int pair = 0; pair < 3; pair++)
	{
		if (p_Pair[pair]->m_Active)
		{
			if (p_Pair[pair]->CheckPlayerHit() || p_Pair[pair]->CheckUFOHit())
			{
				SpawnExplosion(p_Pair[pair]->m_Position, 2);
				SpawnShips(pair);
				p_Pair[pair]->Deactivate();
			}

			if (p_Pair[pair]->CheckPlayerHit())
				p_Player->GotPoints(100);
		}
	}

	if (p_Pod->m_Active)
	{
		if (p_Pod->CheckPlayerHit() || p_Pod->CheckUFOHit())
		{
			SpawnExplosion(p_Pod->m_Position, 3);
			SpawnPairs();
			p_Pod->Deactivate();
		}

		if (p_Pod->CheckPlayerHit())
			p_Player->GotPoints(50);
	}
}
コード例 #3
0
ファイル: control.cpp プロジェクト: budokaii/ozifi
void TControl::OnMouseEvent(QMouseEvent event, bool pressed) {
    if (pressed) {
        SelectionFrom = event.pos();
        MousePressed = true;
        CheckSelection(SelectionFrom, event.pos());
        TargetSelection = !World->SelectedPlanets.empty();
    } else {
        MousePressed = false;
        CheckSelection(SelectionFrom, event.pos());
        World->Selection.reset();
        if (World->SelectedTarget.is_initialized()) {
            SpawnShips();
            World->SelectedTarget.reset();
        }
        if (TargetSelection) {
            World->SelectedPlanets.clear();
        }
    }
}
コード例 #4
0
ファイル: control.cpp プロジェクト: GoBudokai/ozifi
void TControl::OnMouseEvent(QMouseEvent event, bool mouseDown) {
    if (State == CS_None) {
        CheckSelection(event.pos(), event.pos());
        if (!World->SelectedPlanets.empty()) {
            State = CS_TargetSelection;
        } else if (mouseDown) {
            State = CS_PlanetSelection;
            SelectionFrom = event.pos();
        }
    } else if (State == CS_PlanetSelection && !mouseDown) {
        if (!World->SelectedPlanets.empty()) {
            State = CS_TargetSelection;
            World->Selection.reset();
        } else {
            State = CS_None;
            World->SelectedPlanets.clear();
            World->Selection.reset();
            World->SelectedTarget.reset();
        }
    } else if (State == CS_TargetSelection && !mouseDown) {
        CheckTargetSelection(event.pos());
        if (World->SelectedTarget.is_initialized()) {
            if (World->SelectedPlanets.size() == 1 &&
                    *World->SelectedPlanets.begin() == *World->SelectedTarget)
            {
                CheckSelection(event.pos(), event.pos());
            } else {
                SpawnShips();
                State = CS_None;
                World->SelectedPlanets.clear();
                World->Selection.reset();
                World->SelectedTarget.reset();
            }
        } else {
            State = CS_None;
            World->SelectedPlanets.clear();
            World->Selection.reset();
            World->SelectedTarget.reset();
        }
    }
}