// Donning life jacket =============================================================== protected override void DonLifeJacket() { ActionQueueInit(Consts.Skills.DonLifeJacket, true); if (canDonLifeJacketChild) { ActionQueueAdd(Consts.HighlightGroupType.LifeJacketChild, true, Consts.MIN_SEL_REACH_DIST, (SpriteBase sprite) => { HoldItem(sprite as ItemBase); }); } if (canDonLifeJacketSelf) { ActionQueueAdd(Consts.HighlightGroupType.LifeJacketAdult, true, Consts.MIN_SEL_REACH_DIST, OnContactLifeJacketSelf); } ActionQueueRun((SpriteBase jacketSprite) => { LifeJacket jacket = jacketSprite as LifeJacket; if (jacket.size == Consts.FitSizes.child) { ActionQueueAccSplitIdx(0, jacketSprite); // Can shut path splitting off at this point and map out the rest linearly ActPathSplitOff(); ActionQueueAdd(Consts.HighlightGroupType.Children, true, Consts.MIN_SEL_REACH_DIST, (SpriteBase childSprite) => { // Add child for completion Callback activeChar = childSprite as CharChild; activeChar.SetStateDazed(true); AnimTrigger("DonLifeJacketChild"); }); ActionQueueRun(Consts.DON_RATE, StepTimerBarFill, () => { (activeChar as CharChild).PlaceJacketTransform(ItemHeld.transform); ItemWeight -= ItemHeld.Weight; activeChar.WearItem(ItemHeld); activeChar.IsWearingLifeJacket = true; activeChar.CharState = Consts.CharState.Default; activeChar.SetStateDazed(false); ItemHeld = null; EndAction(); //(selectObjQueue[0] as ItemBase).RetPosLocal = (selectObjQueue[0] as ItemBase).transform.localPosition; }); } else { // Index will differ based on which actions were available to be added above. ActionQueueAccSplitIdx(canDonLifeJacketChild ? 1 : 0, jacketSprite); ActionQueueRun(Consts.DON_RATE, StepTimerBarFill, OnDonLifeJacketComplete); } }); }
private void ReturnItem(ItemBase item) { if (item is LifeJacket) { LifeJacket jacket = item as LifeJacket; if (jacket.size == Consts.FitSizes.child) { lifeJacketsChild.Add(jacket); } else { lifeJacketsAdult.Add(jacket); } } else if (item is ItemCanScoop) { itemsCanScoop.Add(item as ItemCanScoop); } else if (item is RepairKit) { repairKits.Add(item as RepairKit); } }