void Unit::Order_NukeGround() { unk_move_waypoint = order_target_pos; int sight_range = GetSightRange(false) * 32; int dist = Distance(exact_position, Point32(order_target_pos) * 256 + Point32(128, 128)) / 256; if (ai && dist <= sight_range * 3) Ai_Cloak(); if (dist > sight_range) { if (move_target_update_timer == 0) ChangeMovementTarget(order_target_pos); // What, it is not moving? } else { bw::StopMoving(this); if (position != unk_move_waypoint) { auto pos = sprite->position; int diff = facing_direction - bw::GetFacingDirection(pos.x, pos.y, unk_move_waypoint.x, unk_move_waypoint.y); if (diff < -1 || diff > 1) return; } Unit *silo = nullptr; for (Unit *unit : bw::first_player_unit[player]) { if (unit->Type() == UnitId::NuclearSilo && unit->silo.has_nuke) { silo = unit; break; } } if (!silo) { OrderDone(); return; } Unit *nuke = silo->silo.nuke; silo->silo.nuke = nullptr; silo->silo.has_nuke = 0; bw::PlaySound(Sound::NukeLaser, this, 1, 0); nuke->IssueOrderTargetingGround(OrderId::NukeLaunch, order_target_pos); related = nuke; nuke->related = this; nuke->sprite->SetDirection32(0); bw::ShowUnit(nuke); IssueOrderTargetingGround(OrderId::NukeTrack, sprite->position); if (!IsDisabled() || Type().IsBuilding()) // Huh? buttons = 0xed; RefreshUi(); } }
///////////////////////Private///////////////////////////// void DataSearchConfig::InitUi() { ui->combo_DBdriver->clear(); ui->combo_DBdriver->addItems(QSqlDatabase::drivers()); if(ReadConfigFile()) { RefreshUi(); } else { QMessageBox::critical(this, tr("Error"), tr("Could not read config file")); } }
void DataSearchConfig::on_btn_BrowseDsnFile_clicked() { QString fileName = QFileDialog::getOpenFileName(this, tr("Open DSN file"), QDir::currentPath(), tr("DSN files (*.dsn)")); if(!fileName.isEmpty()) { mDataBaseName = fileName; RefreshUi(); } else { QMessageBox::critical(this, tr("Error"), tr("The dsn file selected is not proper, dsn is not changed")); } }
void Neutralize(int player) { Assert(player >= 0 && player < Limits::Players); if (IsCheatActive(Cheats::Staying_Alive) && IsHumanPlayer(player)) return; if (bw::game_data->got.victory_conditions == 4 || bw::game_data->got.victory_conditions == 5) { Unit *next = bw::first_player_unit[player]; while (next != nullptr) { Unit *unit = next; next = unit->player_units.next; if (units_dat_flags[unit->unit_id] & UnitFlags::Subunit || unit->sprite == nullptr) continue; if (unit->order == Order::Die) continue; if (units_dat_flags[unit->unit_id] & UnitFlags::SingleEntity && unit->powerup.carrying_unit != nullptr) { Unit *worker = unit->powerup.carrying_unit; if (worker->carried_powerup_flags != 0) { DeletePowerupImages(worker); if (worker->worker.powerup) { worker->worker.powerup->order_flags |= 0x4; worker->worker.powerup->Kill(nullptr); } worker->worker.powerup = nullptr; worker->carried_powerup_flags = 0; } } else { unit->Kill(nullptr); } } } else { Unit *next = bw::first_player_unit[player]; while (next != nullptr) { Unit *unit = next; next = unit->player_units.next; NeutralizeUnit(unit); } RefreshUi(); } if (*bw::team_game) { for (int i = 0; i < Limits::ActivePlayers; i++) { if (bw::players[player].team == bw::players[i].team) MarkPlayerNeutral(i); } } else { MarkPlayerNeutral(player); } if (IsReplay()) { *bw::replay_visions &= ~(1 << player); *bw::player_visions &= ~(1 << player); *bw::player_exploration_visions &= ~(0x100 << player); } }