private void CpDialog_Response(object sender, SampSharp.GameMode.Events.DialogResponseEventArgs e) { if (e.Player.Equals(player)) { if (e.DialogButton == DialogButton.Left) { Checkpoint cp = editingRace.checkpoints[checkpointIndex]; switch (e.ListItem) { case 0: // Edit checkpoint position { if (moverObject == null) { moverObject = new PlayerObject( player, moverObjectModelID, cp.Position + moverObjectOffset, new Vector3(0.0, 0.0, 0.0)); moverObject.Edit(); moverObject.Edited += moverObject_Edited; } else { moverObject.Position = cp.Position; moverObject.Edit(); } break; } case 1: // Edit checkpoint size { InputDialog cpSizeDialog = new InputDialog("Checkpoint size", "Current size: " + cp.Size.ToString(), false, "Set", "Cancel"); cpSizeDialog.Show(player); cpSizeDialog.Response += CpSizeDialog_Response; break; } case 2: // Change checkpoint type { // TODO: A corriger, ne fonctionne pas if (e.ListItem == 0) // To Air { if (cp.Type == CheckpointType.Normal) { editingRace.checkpoints[checkpointIndex].Type = CheckpointType.Air; } else if (cp.Type == CheckpointType.Finish) { editingRace.checkpoints[checkpointIndex].Type = CheckpointType.AirFinish; } UpdatePlayerCheckpoint(); player.Notificate("Updated"); ShowCheckpointDialog(); break; } if (e.ListItem == 1) // To Normal { if (cp.Type == CheckpointType.Air) { cp.Type = CheckpointType.Normal; } else if (cp.Type == CheckpointType.AirFinish) { cp.Type = CheckpointType.Finish; } UpdatePlayerCheckpoint(); player.Notificate("Updated"); ShowCheckpointDialog(); break; } break; } case 3: // Edit events { ShowCheckpointEventDialog(); break; } } } } }
private void RaceDialog_Response(object sender, SampSharp.GameMode.Events.DialogResponseEventArgs e) { if (e.Player.Equals(player)) { if (e.DialogButton == DialogButton.Left) { Checkpoint cp = editingRace.checkpoints[checkpointIndex]; switch (e.ListItem) { case 0: // Select starting vehicle { InputDialog cpStartCarNameDialog = new InputDialog("Vehicle name", "Enter the vehicle name:", false, "Find", "Cancel"); cpStartCarNameDialog.Show(player); cpStartCarNameDialog.Response += (sender, eventArgs) => { if (eventArgs.DialogButton == DialogButton.Left) { editingRace.StartingVehicle = Utils.GetVehicleModelType(eventArgs.InputText); player.Notificate("Updated"); ShowRaceDialog(); } else { player.Notificate("Cancelled"); ShowRaceDialog(); } }; break; } case 1: // Edit race name { InputDialog cpRaceNameDialog = new InputDialog("Race name", "Enter the race name:", false, "Edit", "Cancel"); cpRaceNameDialog.Show(player); cpRaceNameDialog.Response += (sender, eventArgs) => { if (eventArgs.DialogButton == DialogButton.Left) { editingRace.Name = eventArgs.InputText; player.Notificate("Updated"); ShowRaceDialog(); } else { player.Notificate("Cancelled"); ShowRaceDialog(); } }; break; } case 2: // Set/Edit spawn position { checkpointIndex = 0; UpdatePlayerCheckpoint(); editingMode = EditingMode.SpawnPos; hud.SetEditingMode(editingMode); player.DisableRemoteVehicleCollisions(true); foreach (BaseVehicle veh in spawnVehicles) { if (veh != null) { veh.Dispose(); } } if (editingRace.startingSpawn[0].Position == Vector3.Zero) { spawnVehicles[0] = BaseVehicle.Create(editingRace.StartingVehicle.GetValueOrDefault(VehicleModelType.Infernus), editingRace.checkpoints[editingRace.checkpoints.Count - 1].Position, 0.0f, 0, 0); } else { int idx = 0; foreach (Vector3R spawn in editingRace.startingSpawn) { if (spawn.Position != Vector3.Zero) { spawnVehicles[idx++] = BaseVehicle.Create(editingRace.StartingVehicle.GetValueOrDefault(VehicleModelType.Infernus), spawn.Position, spawn.Rotation, 0, 0); } } } //TODO: canceledit UpdatePlayerSpawnMover(); moverObject.Edit(); break; } case 3: // Laps { InputDialog cpRaceLapsDialog = new InputDialog("Race laps", "Enter the number of laps the race have:", false, "Set", "Cancel"); cpRaceLapsDialog.Show(player); cpRaceLapsDialog.Response += (sender, eventArgs) => { if (eventArgs.DialogButton == DialogButton.Left) { try { editingRace.Laps = Convert.ToInt32(eventArgs.InputText); player.Notificate("Updated"); } catch (Exception e) { player.SendClientMessage(Color.Red, "There was an error trying to set this value."); player.Notificate("Error"); } ShowRaceDialog(); } else { player.Notificate("Cancelled"); ShowRaceDialog(); } }; break; } } } } }