public InvItem getCurrentInvItem() { InvItem currentInvItem = invItems.Where(elem => elem.id == currentStateId).First(); // if smokebomb is enabled then just return currentInvItem if (cachedIsSmokeBombEnabledOnThisLevel) { return(currentInvItem); } // if smokebomb is not enabled on this level then the default invitem is the inactive drill else { return(currentInvItem.id == InvItem.IDType.SmokeBombInactive ? invItems.Where(elem => elem.id == InvItem.IDType.DrillInactive).First() : currentInvItem); } }
public override void Execute() { // only do anything if the game is running if (gameModel.pauseStatus != PauseStatus.RUN) { return; } // cache the current inventory item InvItem currentInvItem = inventoryModel.getCurrentInvItem(); // if the current invetory item is smoke bomb and the action is at the start phase then spawn one if (currentInvItem.id == InvItem.IDType.SmokeBombActive && startOrStop && smokeBombCircleModel.isTouchWithinEllipse(touchScreenPosition) && TBUtil.IsTouchOnWater(touchScreenPosition) && inventoryModel.smokeBombsLeft > 0) { smokeBombExplodeSignal.Dispatch(touchScreenPosition); } // embark or disembark submarine if (currentInvItem.id == InvItem.IDType.UBoat && startOrStop) { playerUBoatEmbarkSignal.Dispatch(!playerModel.isEmbarkedUBoat); } // mount bomb if (currentInvItem.id == InvItem.IDType.TimeBombActive) { timeBombMountingSignal.Dispatch(startOrStop); } // drill if (currentInvItem.id == InvItem.IDType.DrillActive) { drillingSignal.Dispatch(startOrStop); } }