protected override void UnsubscribeFromOccupant() { base.UnsubscribeFromOccupant(); Object.Destroy(tracker); tracker = null; UpdateProgress(); }
private void SetAnimToInfo() { GameObject gameObject = Util.KInstantiate(Assets.GetPrefab("Meter".ToTag()), base.gameObject, null); GameObject prefab = Assets.GetPrefab(info.id); KBatchedAnimController component = GetComponent <KBatchedAnimController>(); KBatchedAnimController component2 = prefab.GetComponent <KBatchedAnimController>(); SymbolOverrideController component3 = prefab.GetComponent <SymbolOverrideController>(); KBatchedAnimController component4 = gameObject.GetComponent <KBatchedAnimController>(); component4.transform.SetLocalPosition(Vector3.forward); component4.AnimFiles = component2.AnimFiles; component4.isMovable = true; component4.animWidth = component2.animWidth; component4.animHeight = component2.animHeight; if ((Object)component3 != (Object)null) { SymbolOverrideController symbolOverrideController = SymbolOverrideControllerUtil.AddToPrefab(gameObject); SymbolOverrideController.SymbolEntry[] getSymbolOverrides = component3.GetSymbolOverrides; for (int i = 0; i < getSymbolOverrides.Length; i++) { SymbolOverrideController.SymbolEntry symbolEntry = getSymbolOverrides[i]; symbolOverrideController.AddSymbolOverride(symbolEntry.targetSymbol, symbolEntry.sourceSymbol, 0); } } component4.initialAnim = component2.initialAnim; component4.initialMode = KAnim.PlayMode.Loop; KBatchedAnimTracker component5 = gameObject.GetComponent <KBatchedAnimTracker>(); component5.controller = component; component5.symbol = new HashedString("snapTO_object"); component5.offset = new Vector3(0f, 0.5f, 0f); gameObject.SetActive(true); component.SetSymbolVisiblity("snapTO_object", false); new KAnimLink(component, component4); }
private void OnWorkableEvent(Workable.WorkableEvent e) { switch (e) { case Workable.WorkableEvent.WorkStarted: { ComplexRecipe currentWorkingOrder = refinery.CurrentWorkingOrder; if (currentWorkingOrder != null) { ComplexRecipe.RecipeElement[] ingredients = currentWorkingOrder.ingredients; if (ingredients.Length > 0) { ComplexRecipe.RecipeElement recipeElement = ingredients[0]; display_egg = refinery.buildStorage.FindFirst(recipeElement.material); PositionActiveEgg(); } } break; } case Workable.WorkableEvent.WorkCompleted: if ((bool)display_egg) { KBatchedAnimController component = display_egg.GetComponent <KBatchedAnimController>(); component.Play("hatching_pst", KAnim.PlayMode.Once, 1f, 0f); } break; case Workable.WorkableEvent.WorkStopped: UnityEngine.Object.Destroy(tracker); tracker = null; display_egg = null; break; } }
public override void OrderRemoveOccupant() { Object.Destroy(tracker); tracker = null; storage.DropAll(false, false, default(Vector3), true); base.occupyingObject = null; ClearOccupant(); }
private void RemoveTracker(GameObject go) { KBatchedAnimTracker component = go.GetComponent <KBatchedAnimTracker>(); if ((Object)component != (Object)null) { Object.Destroy(component); } }
protected override void SubscribeToOccupant() { base.SubscribeToOccupant(); if ((Object)base.occupyingObject != (Object)null) { tracker = base.occupyingObject.AddComponent <KBatchedAnimTracker>(); tracker.symbol = "egg_target"; tracker.forceAlwaysVisible = true; } UpdateProgress(); }
private void AddAnimTracker(GameObject go) { KAnimControllerBase component = go.GetComponent <KAnimControllerBase>(); if (!((Object)component == (Object)null) && component.AnimFiles != null && component.AnimFiles.Length > 0 && (Object)component.AnimFiles[0] != (Object)null && component.GetComponent <Pickupable>().trackOnPickup) { KBatchedAnimTracker kBatchedAnimTracker = go.AddComponent <KBatchedAnimTracker>(); kBatchedAnimTracker.useTargetPoint = false; kBatchedAnimTracker.fadeOut = false; kBatchedAnimTracker.symbol = new HashedString("snapTo_chest"); kBatchedAnimTracker.forceAlwaysVisible = true; } }
public MeterController(KAnimControllerBase building_controller, KBatchedAnimController meter_controller, params string[] symbol_names) { if (!((UnityEngine.Object)meter_controller == (UnityEngine.Object)null)) { meterController = meter_controller; link = new KAnimLink(building_controller, meter_controller); for (int i = 0; i < symbol_names.Length; i++) { building_controller.SetSymbolVisiblity(symbol_names[i], false); } KBatchedAnimTracker component = meterController.GetComponent <KBatchedAnimTracker>(); component.symbol = new HashedString(symbol_names[0]); } }
private void PositionActiveEgg() { if ((bool)display_egg) { KBatchedAnimController component = display_egg.GetComponent <KBatchedAnimController>(); component.enabled = true; component.SetSceneLayer(Grid.SceneLayer.BuildingUse); KSelectable component2 = display_egg.GetComponent <KSelectable>(); if ((UnityEngine.Object)component2 != (UnityEngine.Object)null) { component2.enabled = true; } tracker = display_egg.AddComponent <KBatchedAnimTracker>(); tracker.symbol = "snapto_egg"; } }
public VariantController( KAnimControllerBase controllerBase, string variantTarget, string variantAnimation, int totalVariants, Grid.SceneLayer renderLayer ) { this.totalVariants = totalVariants; string name = $"{controllerBase.name}.{variantAnimation}"; gameObject = UnityEngine.Object.Instantiate <GameObject>(Assets.GetPrefab(MeterConfig.ID)); gameObject.name = name; gameObject.SetActive(false); gameObject.transform.parent = controllerBase.transform; gameObject.GetComponent <KPrefabID>().PrefabTag = new Tag(name); var position = controllerBase.transform.GetPosition(); position.z = Grid.GetLayerZ(renderLayer); gameObject.transform.SetPosition(position); variantController = gameObject.GetComponent <KBatchedAnimController>(); variantController.AnimFiles = new KAnimFile[] { controllerBase.AnimFiles[0] }; variantController.initialAnim = variantAnimation; variantController.fgLayer = Grid.SceneLayer.NoLayer; variantController.initialMode = KAnim.PlayMode.Paused; variantController.isMovable = true; variantController.FlipX = controllerBase.FlipX; variantController.FlipY = controllerBase.FlipY; variantController.sceneLayer = renderLayer; variantTracker = gameObject.GetComponent <KBatchedAnimTracker>(); // variantTracker.offset = offset; variantTracker.symbol = variantTarget; gameObject.SetActive(true); controllerBase.SetSymbolVisiblity(variantTarget, false); variantLink = new KAnimLink(controllerBase, variantController); }
public static GameObject CreateFabricationVisualizer(GameObject result) { KBatchedAnimController component = result.GetComponent <KBatchedAnimController>(); GameObject gameObject = new GameObject(); gameObject.name = result.name + "Visualizer"; gameObject.SetActive(false); gameObject.transform.SetLocalPosition(Vector3.zero); KBatchedAnimController kBatchedAnimController = gameObject.AddComponent <KBatchedAnimController>(); kBatchedAnimController.AnimFiles = component.AnimFiles; kBatchedAnimController.initialAnim = "fabricating"; kBatchedAnimController.isMovable = true; KBatchedAnimTracker kBatchedAnimTracker = gameObject.AddComponent <KBatchedAnimTracker>(); kBatchedAnimTracker.symbol = new HashedString("meter_ration"); kBatchedAnimTracker.offset = Vector3.zero; kBatchedAnimTracker.skipInitialDisable = true; Object.DontDestroyOnLoad(gameObject); return(gameObject); }
private GameObject AddTrackedAnim(string name, KAnimFile tracked_anim_file, string anim_clip, Grid.SceneLayer layer, string symbol_name) { KBatchedAnimController assigneeController = GetAssigneeController(); if ((Object)assigneeController == (Object)null) { return(null); } string name2 = assigneeController.name + "." + name; GameObject gameObject = new GameObject(name2); gameObject.SetActive(false); gameObject.transform.parent = assigneeController.transform; KPrefabID kPrefabID = gameObject.AddComponent <KPrefabID>(); kPrefabID.PrefabTag = new Tag(name2); KBatchedAnimController kBatchedAnimController = gameObject.AddComponent <KBatchedAnimController>(); kBatchedAnimController.AnimFiles = new KAnimFile[1] { tracked_anim_file }; kBatchedAnimController.initialAnim = anim_clip; kBatchedAnimController.isMovable = true; kBatchedAnimController.sceneLayer = layer; KBatchedAnimTracker kBatchedAnimTracker = gameObject.AddComponent <KBatchedAnimTracker>(); kBatchedAnimTracker.symbol = symbol_name; bool symbolVisible; Vector4 column = assigneeController.GetSymbolTransform(symbol_name, out symbolVisible).GetColumn(3); Vector3 position = column; position.z = Grid.GetLayerZ(layer); gameObject.transform.SetPosition(position); gameObject.SetActive(true); kBatchedAnimController.Play(anim_clip, KAnim.PlayMode.Loop, 1f, 0f); return(gameObject); }
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(); }); }
public override void InitializeStates(out BaseState default_state) { default_state = approachIncapacitated; approachIncapacitated.InitializeStates(rescuer, rescueTarget, holding.pickup, failure, Grid.DefaultOffset, null).Enter(delegate(StatesInstance smi) { DeathMonitor.Instance sMI2 = rescueTarget.GetSMI <DeathMonitor.Instance>(smi); if (sMI2 == null || sMI2.IsDead()) { smi.StopSM("target died"); } }); holding.Target(rescuer).Enter(delegate(StatesInstance smi) { States states = this; smi.sm.rescueTarget.Get(smi).Subscribe(1623392196, delegate { smi.GoTo(states.holding.ditch); }); KAnimFile anim2 = Assets.GetAnim("anim_incapacitated_carrier_kanim"); smi.master.GetComponent <KAnimControllerBase>().RemoveAnimOverrides(anim2); smi.master.GetComponent <KAnimControllerBase>().AddAnimOverrides(anim2, 0f); }).Exit(delegate(StatesInstance smi) { KAnimFile anim = Assets.GetAnim("anim_incapacitated_carrier_kanim"); smi.master.GetComponent <KAnimControllerBase>().RemoveAnimOverrides(anim); }); holding.pickup.Target(rescuer).PlayAnim("pickup").Enter(delegate(StatesInstance smi) { rescueTarget.Get(smi).gameObject.GetComponent <KBatchedAnimController>().Play("pickup", KAnim.PlayMode.Once, 1f, 0f); }) .Exit(delegate(StatesInstance smi) { rescuer.Get(smi).GetComponent <Storage>().Store(rescueTarget.Get(smi), false, false, true, false); rescueTarget.Get(smi).transform.SetLocalPosition(Vector3.zero); KBatchedAnimTracker component = rescueTarget.Get(smi).GetComponent <KBatchedAnimTracker>(); component.symbol = new HashedString("snapTo_pivot"); component.offset = new Vector3(0f, 0f, 1f); }) .EventTransition(GameHashes.AnimQueueComplete, holding.delivering, null); holding.delivering.InitializeStates(rescuer, deliverTarget, holding.deposit, holding.ditch, null, null).Enter(delegate(StatesInstance smi) { DeathMonitor.Instance sMI = rescueTarget.GetSMI <DeathMonitor.Instance>(smi); if (sMI == null || sMI.IsDead()) { smi.StopSM("target died"); } }).Update(delegate(StatesInstance smi, float dt) { if ((UnityEngine.Object)deliverTarget.Get(smi) == (UnityEngine.Object)null) { smi.GoTo(holding.ditch); } }, UpdateRate.SIM_200ms, false); holding.deposit.PlayAnim("place").EventHandler(GameHashes.AnimQueueComplete, delegate(StatesInstance smi) { smi.master.DropIncapacitatedDuplicant(); smi.SetStatus(Status.Success); smi.StopSM("complete"); }); holding.ditch.PlayAnim("place").ScheduleGoTo(0.5f, failure).Exit(delegate(StatesInstance smi) { smi.master.DropIncapacitatedDuplicant(); }); failure.Enter(delegate(StatesInstance smi) { smi.SetStatus(Status.Failed); smi.StopSM("failed"); }); }
private void Initialize(KAnimControllerBase building_controller, string meter_target, string meter_animation, Meter.Offset front_back, Grid.SceneLayer user_specified_render_layer, Vector3 tracker_offset, params string[] symbols_to_hide) { string name = building_controller.name + "." + meter_animation; GameObject gameObject = UnityEngine.Object.Instantiate(Assets.GetPrefab(MeterConfig.ID)); gameObject.name = name; gameObject.SetActive(false); gameObject.transform.parent = building_controller.transform; this.gameObject = gameObject; KPrefabID component = gameObject.GetComponent <KPrefabID>(); component.PrefabTag = new Tag(name); Vector3 position = building_controller.transform.GetPosition(); switch (front_back) { case Meter.Offset.Behind: { Vector3 position3 = building_controller.transform.GetPosition(); position.z = position3.z + 0.1f; break; } case Meter.Offset.Infront: { Vector3 position2 = building_controller.transform.GetPosition(); position.z = position2.z - 0.1f; break; } case Meter.Offset.UserSpecified: position.z = Grid.GetLayerZ(user_specified_render_layer); break; } gameObject.transform.SetPosition(position); KBatchedAnimController component2 = gameObject.GetComponent <KBatchedAnimController>(); component2.AnimFiles = new KAnimFile[1] { building_controller.AnimFiles[0] }; component2.initialAnim = meter_animation; component2.fgLayer = Grid.SceneLayer.NoLayer; component2.initialMode = KAnim.PlayMode.Paused; component2.isMovable = true; component2.FlipX = building_controller.FlipX; component2.FlipY = building_controller.FlipY; if (front_back == Meter.Offset.UserSpecified) { component2.sceneLayer = user_specified_render_layer; } meterController = component2; KBatchedAnimTracker component3 = gameObject.GetComponent <KBatchedAnimTracker>(); component3.offset = tracker_offset; component3.symbol = new HashedString(meter_target); gameObject.SetActive(true); building_controller.SetSymbolVisiblity(meter_target, false); if (symbols_to_hide != null) { for (int i = 0; i < symbols_to_hide.Length; i++) { building_controller.SetSymbolVisiblity(symbols_to_hide[i], false); } } link = new KAnimLink(building_controller, component2); }
private void SetupLaserEffects(GameObject prefab) { GameObject gameObject = new GameObject("LaserEffect"); gameObject.transform.parent = prefab.transform; KBatchedAnimEventToggler kBatchedAnimEventToggler = gameObject.AddComponent <KBatchedAnimEventToggler>(); kBatchedAnimEventToggler.eventSource = prefab; kBatchedAnimEventToggler.enableEvent = "LaserOn"; kBatchedAnimEventToggler.disableEvent = "LaserOff"; kBatchedAnimEventToggler.entries = new List <KBatchedAnimEventToggler.Entry>(); LaserEffect[] array = new LaserEffect[13] { new LaserEffect { id = "DigEffect", animFile = "laser_kanim", anim = "idle", context = (HashedString)"dig" }, new LaserEffect { id = "BuildEffect", animFile = "construct_beam_kanim", anim = "loop", context = (HashedString)"build" }, new LaserEffect { id = "FetchLiquidEffect", animFile = "hose_fx_kanim", anim = "loop", context = (HashedString)"fetchliquid" }, new LaserEffect { id = "PaintEffect", animFile = "paint_beam_kanim", anim = "loop", context = (HashedString)"paint" }, new LaserEffect { id = "HarvestEffect", animFile = "plant_harvest_beam_kanim", anim = "loop", context = (HashedString)"harvest" }, new LaserEffect { id = "CaptureEffect", animFile = "net_gun_fx_kanim", anim = "loop", context = (HashedString)"capture" }, new LaserEffect { id = "AttackEffect", animFile = "attack_beam_fx_kanim", anim = "loop", context = (HashedString)"attack" }, new LaserEffect { id = "PickupEffect", animFile = "vacuum_fx_kanim", anim = "loop", context = (HashedString)"pickup" }, new LaserEffect { id = "StoreEffect", animFile = "vacuum_reverse_fx_kanim", anim = "loop", context = (HashedString)"store" }, new LaserEffect { id = "DisinfectEffect", animFile = "plant_spray_beam_kanim", anim = "loop", context = (HashedString)"disinfect" }, new LaserEffect { id = "TendEffect", animFile = "plant_tending_beam_fx_kanim", anim = "loop", context = (HashedString)"tend" }, new LaserEffect { id = "PowerTinkerEffect", animFile = "electrician_beam_fx_kanim", anim = "idle", context = (HashedString)"powertinker" }, new LaserEffect { id = "SpecialistDigEffect", animFile = "senior_miner_beam_fx_kanim", anim = "idle", context = (HashedString)"specialistdig" } }; KBatchedAnimController component = prefab.GetComponent <KBatchedAnimController>(); LaserEffect[] array2 = array; for (int i = 0; i < array2.Length; i++) { LaserEffect laserEffect = array2[i]; GameObject gameObject2 = new GameObject(laserEffect.id); gameObject2.transform.parent = gameObject.transform; KPrefabID kPrefabID = gameObject2.AddOrGet <KPrefabID>(); kPrefabID.PrefabTag = new Tag(laserEffect.id); KBatchedAnimTracker kBatchedAnimTracker = gameObject2.AddOrGet <KBatchedAnimTracker>(); kBatchedAnimTracker.controller = component; kBatchedAnimTracker.symbol = new HashedString("snapTo_rgtHand"); kBatchedAnimTracker.offset = new Vector3(195f, -35f, 0f); kBatchedAnimTracker.useTargetPoint = true; KBatchedAnimController kBatchedAnimController = gameObject2.AddOrGet <KBatchedAnimController>(); kBatchedAnimController.AnimFiles = new KAnimFile[1] { Assets.GetAnim(laserEffect.animFile) }; KBatchedAnimEventToggler.Entry entry = default(KBatchedAnimEventToggler.Entry); entry.anim = laserEffect.anim; entry.context = laserEffect.context; entry.controller = kBatchedAnimController; KBatchedAnimEventToggler.Entry item = entry; kBatchedAnimEventToggler.entries.Add(item); gameObject2.AddOrGet <LoopingSounds>(); } }
protected override void OnCleanUp() { base.OnCleanUp(); UnityEngine.Object.Destroy(tracker); tracker = null; }