private void DropSparePartsToken() { Action Callback = Phases.CurrentSubPhase.CallBack; DecisionSubPhase.ConfirmDecisionNoCallback(); HostUpgrade.State.SpendCharge(); ManeuverTemplate dropTemplate = new ManeuverTemplate(ManeuverBearing.Straight, ManeuverDirection.Forward, ManeuverSpeed.Speed1, isBombTemplate: true); dropTemplate.ApplyTemplate(HostShip, HostShip.GetBack(), Direction.Bottom); Debris spareParts = new Debris("Spare Parts", "spareparts"); spareParts.Spawn("Spare Parts " + HostShip.ShipId, Board.GetBoard()); ObstaclesManager.AddObstacle(spareParts); spareParts.ObstacleGO.transform.position = dropTemplate.GetFinalPosition(); spareParts.ObstacleGO.transform.eulerAngles = dropTemplate.GetFinalAngles(); spareParts.IsPlaced = true; GameManagerScript.Wait( 1, delegate { Messages.ShowInfo("Spare Parts are dropped"); dropTemplate.DestroyTemplate(); BreakAllLocksRecursive(Callback); } ); }
private void DropCargoToken() { Action Callback = Phases.CurrentSubPhase.CallBack; DecisionSubPhase.ConfirmDecisionNoCallback(); HostUpgrade.State.SpendCharge(); ManeuverTemplate dropTemplate = new ManeuverTemplate(ManeuverBearing.Straight, ManeuverDirection.Forward, ManeuverSpeed.Speed1, isBombTemplate: true); dropTemplate.ApplyTemplate(HostShip, HostShip.GetBack(), Direction.Bottom); Debris looseCargo = new Debris("Loose Cargo", "loosecargo"); looseCargo.Spawn("Loose Cargo " + HostShip.ShipId, Board.GetBoard()); ObstaclesManager.AddObstacle(looseCargo); looseCargo.ObstacleGO.transform.position = dropTemplate.GetFinalPosition(); looseCargo.ObstacleGO.transform.eulerAngles = dropTemplate.GetFinalAngles(); looseCargo.IsPlaced = true; GameManagerScript.Wait( 1, delegate { dropTemplate.DestroyTemplate(); Callback(); } ); }
private void ShowBarrelRollTemplate() { SelectedTemplate.ApplyTemplate( TheShip, (SelectedDirectionPrimary == Direction.Left) ? TheShip.GetLeft() : TheShip.GetRight(), SelectedDirectionPrimary ); }
private void ShowBombAndLaunchTemplate(ManeuverTemplate bombDropTemplate) { bombDropTemplate.ApplyTemplate(Selection.ThisShip, Selection.ThisShip.GetPosition(), Direction.Top); Vector3 bombPosition = bombDropTemplate.GetFinalPosition(); Quaternion bombRotation = bombDropTemplate.GetFinalRotation(); CreateBombObject(bombPosition, bombRotation); BombObjects[0].transform.position = bombPosition; SelectedBombLaunchHelper = bombDropTemplate; }
private void ShowBombAndDropTemplate(ManeuverTemplate bombDropTemplate) { GenericBomb bomb = BombsManager.CurrentDevice as GenericBomb; bombDropTemplate.ApplyTemplate(Selection.ThisShip, Selection.ThisShip.GetBack(), Direction.Bottom); Vector3 bombPosition = bombDropTemplate.GetFinalPosition(); Quaternion bombRotation = bombDropTemplate.GetFinalRotation(); CreateBombObject(bombPosition, bombRotation); for (int i = 0; i < BombObjects.Count; i++) { switch (i) { case 0: BombObjects[i].transform.position = bombPosition; break; case 1: BombObjects[i].transform.position = bombPosition + BombObjects.First().transform.TransformVector(new Vector3( bomb.bombSideDistanceX, 0, bomb.bombSideDistanceZ ) ); break; case 2: BombObjects[i].transform.position = bombPosition + BombObjects.First().transform.TransformVector(new Vector3( -bomb.bombSideDistanceX, 0, bomb.bombSideDistanceZ ) ); break; default: break; } BombObjects[i].transform.rotation = bombRotation; } SelectedBombDropHelper = bombDropTemplate; }
private void ShowRemoteAndDropTemplate(ManeuverTemplate bombDropTemplate) { bombDropTemplate.ApplyTemplate(Selection.ThisShip, Selection.ThisShip.GetBack(), Direction.Bottom); Vector3 bombPosition = bombDropTemplate.GetFinalPosition(); Quaternion bombRotation = bombDropTemplate.GetFinalRotation(); // TODO: get type of remote from upgrade ShipFactory.SpawnRemote( (GenericRemote)Activator.CreateInstance(BombsManager.CurrentDevice.UpgradeInfo.RemoteType, Selection.ThisShip.Owner), bombPosition, bombRotation ); SelectedBombDropHelper = bombDropTemplate; }