コード例 #1
0
 protected override void UnsubscribeFromOccupant()
 {
     base.UnsubscribeFromOccupant();
     Object.Destroy(tracker);
     tracker = null;
     UpdateProgress();
 }
コード例 #2
0
    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);
    }
コード例 #3
0
    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;
        }
    }
コード例 #4
0
 public override void OrderRemoveOccupant()
 {
     Object.Destroy(tracker);
     tracker = null;
     storage.DropAll(false, false, default(Vector3), true);
     base.occupyingObject = null;
     ClearOccupant();
 }
コード例 #5
0
    private void RemoveTracker(GameObject go)
    {
        KBatchedAnimTracker component = go.GetComponent <KBatchedAnimTracker>();

        if ((Object)component != (Object)null)
        {
            Object.Destroy(component);
        }
    }
コード例 #6
0
 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();
 }
コード例 #7
0
    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;
        }
    }
コード例 #8
0
 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]);
     }
 }
コード例 #9
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";
     }
 }
コード例 #10
0
        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);
        }
コード例 #11
0
    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);
    }
コード例 #12
0
    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);
    }
コード例 #13
0
        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");
     });
 }
コード例 #15
0
    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);
    }
コード例 #16
0
    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>();
        }
    }
コード例 #17
0
 protected override void OnCleanUp()
 {
     base.OnCleanUp();
     UnityEngine.Object.Destroy(tracker);
     tracker = null;
 }