//make swork pick-up floating jumpPad public static void PickUpFloatingPad() { foreach (SwkSwork swork in AllSworks) { if (swork.CurrentState != SwkSwork.SworkStates.TargetInPlay) { continue; //skip swork if not in play } if (swork.Carrying) { continue; } foreach (SwkJumpPad jumpPad in AllJumpPads) { if (jumpPad.CurrentState != SwkJumpPad.JumpPadStates.Floating) { continue; //skip jumpPad if not floating } if (Vector3.Distance(jumpPad.JmpPTran.position, swork.SwkTran.position) > SwkGame.Tweaks.JumpPad.ActivateJumpPadRange) { continue; //skip jumppad if out-of-range } PickUpJumpPad(swork, jumpPad); //pick up jump _recentlyPickedUp = jumpPad; // return; } } }
// makes 'jumpPad' a child of 'swork' and moves into position private static void PickUpJumpPad(SwkSwork swork, SwkJumpPad jumpPad) { jumpPad.JmpPTran.parent = swork.transform; _desiredPos = Vector3.zero; _desiredPos.x = SwkGame.Tweaks.JumpPad.CarryPositionX; _desiredPos.y = SwkGame.Tweaks.JumpPad.CarryPositionY; jumpPad.JmpPTran.localPosition = _desiredPos; swork.Carrying = true; jumpPad.MakeCarrying(); }
//explode swork public static void ExplodeTargetSwork(Transform holdingArea) { //explode targer if (CurrentTargetSwork.Carrying) { if (CurrentTargetSwork.OnGround) { } //drop carrying else { } //float carrying } CurrentGameState.CurrentControlState = GameState.ControlState.ManualControl; CurrentCamera.Focused = false; //explode nearby sworks foreach (SwkSwork swork in AllSworks) { if (swork.CurrentState != SwkSwork.SworkStates.TargetInPlay) { continue; //check if possible for swork to explode } if (Vector3.Distance(CurrentTargetSwork.SwkTran.position, swork.SwkTran.position) > SwkGame.Tweaks.Swork.SworkExplosionEffectRange) { continue; //check if within range } if (swork.GetInstanceID() == CurrentTargetSwork.GetInstanceID()) { continue; //chat that 'isn't' target swork } if (swork.Carrying) { //drop carrying } swork.MakeStandby(holdingArea.position); } //explode nearby jumppads foreach (SwkJumpPad jumpPad in AllJumpPads) { if (jumpPad.CurrentState == SwkJumpPad.JumpPadStates.Floating) { continue; } if (Vector3.Distance(CurrentTargetSwork.SwkTran.position, jumpPad.JmpPTran.position) > SwkGame.Tweaks.Swork.SworkExplosionEffectRange) { continue; } jumpPad.MakeFloating(); StoredJumpPad = jumpPad; CurrentGameState.CurrentControlState = GameState.ControlState.WaitingForNextPickup; } StandBySworksQueue.Enqueue(CurrentTargetSwork); CurrentTargetSwork.MakeStandby(holdingArea.position); CurrentTargetSwork = null; }