public bool GoTo(int cell, CellOffset[] offsets, NavTactic tactic) { if (offsets == null) { offsets = new CellOffset[1] { default(CellOffset) }; } targetLocator.transform.SetPosition(Grid.CellToPosCBC(cell, Grid.SceneLayer.Move)); return(GoTo(targetLocator, offsets, tactic)); }
public bool GoTo(KMonoBehaviour target, CellOffset[] offsets, NavTactic tactic) { if (tactic == null) { tactic = NavigationTactics.ReduceTravelDistance; } base.smi.GoTo(base.smi.sm.moving); base.smi.sm.moveTarget.Set(target.gameObject, base.smi); this.tactic = tactic; this.target = target; targetOffsets = offsets; ClearReservedCell(); AdvancePath(true); return(IsMoving()); }
public override void InitializeStates(out BaseState default_state) { default_state = fetching; Target(fetcher); fetching.DefaultState(fetching.next).Enter("ReservePickupables", delegate(StatesInstance smi) { smi.ReservePickupables(); }).Exit("UnreservePickupables", delegate(StatesInstance smi) { smi.UnreservePickupables(); }) .Enter("pickingup-on", delegate(StatesInstance smi) { smi.pickingup = true; }) .Exit("pickingup-off", delegate(StatesInstance smi) { smi.pickingup = false; }); fetching.next.Enter("SetupFetch", delegate(StatesInstance smi) { smi.SetupFetch(); }); ApproachSubState <Pickupable> movetopickupable = fetching.movetopickupable; TargetParameter mover = fetcher; TargetParameter move_target = fetchTarget; State pickup = fetching.pickup; State fetchfail = fetching.fetchfail; NavTactic reduceTravelDistance = NavigationTactics.ReduceTravelDistance; movetopickupable.InitializeStates(mover, move_target, pickup, fetchfail, null, reduceTravelDistance); fetching.pickup.DoPickup(fetchTarget, fetchResultTarget, fetchAmount, fetching.fetchcomplete, fetching.fetchfail); fetching.fetchcomplete.Enter(delegate(StatesInstance smi) { smi.FetchComplete(); }); fetching.fetchfail.Enter(delegate(StatesInstance smi) { smi.FetchFail(); }); delivering.DefaultState(delivering.next).OnSignal(currentdeliverycancelled, delivering.deliverfail).Enter("SetupDeliverables", delegate(StatesInstance smi) { smi.SetupDeliverables(); }) .Enter("delivering-on", delegate(StatesInstance smi) { smi.delivering = true; }) .Exit("delivering-off", delegate(StatesInstance smi) { smi.delivering = false; }); delivering.next.Enter("SetupDelivery", delegate(StatesInstance smi) { smi.SetupDelivery(); }); ApproachSubState <Storage> movetostorage = delivering.movetostorage; move_target = fetcher; mover = deliveryDestination; fetchfail = delivering.storing; pickup = delivering.deliverfail; reduceTravelDistance = NavigationTactics.ReduceTravelDistance; movetostorage.InitializeStates(move_target, mover, fetchfail, pickup, null, reduceTravelDistance).Enter(delegate(StatesInstance smi) { if ((UnityEngine.Object)deliveryObject.Get(smi) != (UnityEngine.Object)null && (UnityEngine.Object)deliveryObject.Get(smi).GetComponent <MinionIdentity>() != (UnityEngine.Object)null) { deliveryObject.Get(smi).transform.SetLocalPosition(Vector3.zero); KBatchedAnimTracker component = deliveryObject.Get(smi).GetComponent <KBatchedAnimTracker>(); component.symbol = new HashedString("snapTo_chest"); component.offset = new Vector3(0f, 0f, 1f); } }); delivering.storing.DoDelivery(fetcher, deliveryDestination, delivering.delivercomplete, delivering.deliverfail); delivering.deliverfail.Enter(delegate(StatesInstance smi) { smi.DeliverFail(); }); delivering.delivercomplete.Enter(delegate(StatesInstance smi) { smi.DeliverComplete(); }); }