Exemplo n.º 1
0
        public void TestPersistence()
        {
            var cache = new HashCache();

            cache.Put("test_key", "test_value");
            Assert.AreEqual(cache.Get("test_key"), "test_value");
        }
Exemplo n.º 2
0
    public void Refresh()
    {
        List <ToggleInfo> list = new List <ToggleInfo>();

        if (tagCategoryMap == null)
        {
            int building_index = 0;
            tagCategoryMap = new Dictionary <Tag, HashedString>();
            tagOrderMap    = new Dictionary <Tag, int>();
            if (TUNING.BUILDINGS.PLANORDER.Count > 12)
            {
                DebugUtil.LogWarningArgs("Insufficient keys to cover root plan menu", "Max of 12 keys supported but TUNING.BUILDINGS.PLANORDER has " + TUNING.BUILDINGS.PLANORDER.Count);
            }
            toggleEntries.Clear();
            for (int i = 0; i < TUNING.BUILDINGS.PLANORDER.Count; i++)
            {
                PlanInfo   planInfo   = TUNING.BUILDINGS.PLANORDER[i];
                Action     hotkey     = (Action)((i >= 12) ? 247 : (36 + i));
                string     icon       = iconNameMap[planInfo.category];
                string     str        = HashCache.Get().Get(planInfo.category).ToUpper();
                ToggleInfo toggleInfo = new ToggleInfo(UI.StripLinkFormatting(Strings.Get("STRINGS.UI.BUILDCATEGORIES." + str + ".NAME")), icon, planInfo.category, hotkey, Strings.Get("STRINGS.UI.BUILDCATEGORIES." + str + ".TOOLTIP"), string.Empty);
                list.Add(toggleInfo);
                PopulateOrderInfo(planInfo.category, planInfo.data, tagCategoryMap, tagOrderMap, ref building_index);
                List <BuildingDef> list2 = new List <BuildingDef>();
                foreach (BuildingDef buildingDef in Assets.BuildingDefs)
                {
                    HashedString value;
                    if (!buildingDef.Deprecated && tagCategoryMap.TryGetValue(buildingDef.Tag, out value) && !(value != planInfo.category))
                    {
                        list2.Add(buildingDef);
                    }
                }
                toggleEntries.Add(new ToggleEntry(toggleInfo, planInfo.category, list2, planInfo.hideIfNotResearched));
            }
            Setup(list);
            toggles.ForEach(delegate(KToggle to)
            {
                ImageToggleState[] components = to.GetComponents <ImageToggleState>();
                ImageToggleState[] array      = components;
                foreach (ImageToggleState imageToggleState in array)
                {
                    if ((UnityEngine.Object)imageToggleState.TargetImage.sprite != (UnityEngine.Object)null && imageToggleState.TargetImage.name == "FG" && !imageToggleState.useSprites)
                    {
                        imageToggleState.SetSprites(Assets.GetSprite(imageToggleState.TargetImage.sprite.name + "_disabled"), imageToggleState.TargetImage.sprite, imageToggleState.TargetImage.sprite, Assets.GetSprite(imageToggleState.TargetImage.sprite.name + "_disabled"));
                    }
                }
                to.GetComponent <KToggle>().soundPlayer.Enabled = false;
            });
            for (int j = 0; j < toggleEntries.Count; j++)
            {
                ToggleEntry value2 = toggleEntries[j];
                value2.CollectToggleImages();
                toggleEntries[j] = value2;
            }
        }
    }
Exemplo n.º 3
0
    public void WriteAnimData(int start_index, float[] data)
    {
        List <KAnim.Anim.Frame>        animFrames        = GetAnimFrames();
        List <KAnim.Anim.FrameElement> animFrameElements = GetAnimFrameElements();
        int num = 1 + ((animFrames.Count != 0) ? animFrames.Count : symbolFrameInstances.Count);

        if (animFrames.Count == 0 && symbolFrameInstances.Count == 0 && animFrameElements.Count == 0)
        {
            Debug.LogError("Eh, no data " + animFrames.Count + " " + symbolFrameInstances.Count + " " + animFrameElements.Count);
        }
        data[start_index++] = (float)num;
        data[start_index++] = (float)animFrames.Count;
        data[start_index++] = (float)animFrameElements.Count;
        data[start_index++] = (float)symbolFrameInstances.Count;
        if (animFrames.Count == 0)
        {
            for (int i = 0; i < symbolFrameInstances.Count; i++)
            {
                WriteAnimFrame(data, start_index, i, i, 1, i);
                start_index += 4;
            }
            for (int j = 0; j < symbolFrameInstances.Count; j++)
            {
                WriteAnimFrameElement(data, start_index, j, j, Matrix2x3.identity, Color.white, 0);
                start_index += 16;
            }
        }
        else
        {
            for (int k = 0; k < animFrames.Count; k++)
            {
                Write(data, start_index, k, animFrames[k]);
                start_index += 4;
            }
            for (int l = 0; l < animFrameElements.Count; l++)
            {
                KAnim.Anim.FrameElement element = animFrameElements[l];
                if (element.symbol == KGlobalAnimParser.MISSING_SYMBOL)
                {
                    WriteAnimFrameElement(data, start_index, -1, l, Matrix2x3.identity, Color.white, 0);
                }
                else
                {
                    KAnim.Build.Symbol buildSymbol = GetBuildSymbol(element.symbolIdx);
                    if (buildSymbol == null)
                    {
                        Debug.LogError("Missing symbol for Anim Frame Element: [" + HashCache.Get().Get(element.symbol) + ": " + element.symbol + "]");
                    }
                    int frameIdx = buildSymbol.GetFrameIdx(element.frame);
                    Write(data, start_index, frameIdx, l, element);
                }
                start_index += 16;
            }
        }
    }
    private void ApplyShape(KAnim.Build.Symbol variation_symbol, KBatchedAnimController controller, KAnimFile shapes_file, HashedString symbol_name_in_shape_file, bool should_use_sideways_symbol)
    {
        HashedString hashedString = HASH_NEUTRAL;

        if (currentExpression != null)
        {
            hashedString = currentExpression.face.hash;
        }
        KAnim.Anim anim = null;
        KAnim.Anim.FrameElement frameElement = default(KAnim.Anim.FrameElement);
        bool flag  = false;
        bool flag2 = false;

        for (int i = 0; i < shapes_file.GetData().animCount; i++)
        {
            if (flag)
            {
                break;
            }
            KAnim.Anim anim2 = shapes_file.GetData().GetAnim(i);
            if (anim2.hash == hashedString)
            {
                anim = anim2;
                KAnim.Anim.Frame frame = anim.GetFrame(shapes_file.GetData().build.batchTag, 0);
                for (int j = 0; j < frame.numElements; j++)
                {
                    KBatchGroupData batchGroupData = KAnimBatchManager.Instance().GetBatchGroupData(shapes_file.GetData().animBatchTag);
                    frameElement = batchGroupData.GetFrameElement(frame.firstElementIdx + j);
                    if (!(frameElement.symbol != symbol_name_in_shape_file))
                    {
                        if (flag2 || !should_use_sideways_symbol)
                        {
                            flag = true;
                        }
                        flag2 = true;
                        break;
                    }
                }
            }
        }
        if (anim == null)
        {
            DebugUtil.Assert(false, "Could not find shape for expression: " + HashCache.Get().Get(hashedString));
        }
        if (!flag2)
        {
            DebugUtil.Assert(false, "Could not find shape element for shape:" + HashCache.Get().Get(variation_symbol.hash));
        }
        KAnim.Build.Symbol symbol          = KAnimBatchManager.Instance().GetBatchGroupData(controller.batchGroupID).GetSymbol(symbol_name_in_shape_file);
        KBatchGroupData    batchGroupData2 = KAnimBatchManager.Instance().GetBatchGroupData(variation_symbol.build.batchTag);

        KAnim.Build.SymbolFrameInstance symbol_frame_instance = batchGroupData2.symbolFrameInstances[variation_symbol.firstFrameIdx + frameElement.frame];
        symbol_frame_instance.buildImageIdx = GetComponent <SymbolOverrideController>().GetAtlasIdx(variation_symbol.build.GetTexture(0));
        controller.SetSymbolOverride(symbol.firstFrameIdx, symbol_frame_instance);
    }
    private static void ParseHashTable(FastReader reader)
    {
        int num = reader.ReadInt32();

        for (int i = 0; i < num; i++)
        {
            int    hash = reader.ReadInt32();
            string text = reader.ReadKleiString();
            HashCache.Get().Add(hash, text);
        }
    }
 public static KCompBuilder.BodyData CreateBodyData(Personality p)
 {
     KCompBuilder.BodyData result = default(KCompBuilder.BodyData);
     result.eyes      = HashCache.Get().Add($"eyes_{p.eyes:000}");
     result.hair      = HashCache.Get().Add($"hair_{p.hair:000}");
     result.headShape = HashCache.Get().Add($"headshape_{p.headShape:000}");
     result.mouth     = HashCache.Get().Add($"mouth_{p.mouth:000}");
     result.neck      = HashCache.Get().Add($"neck_{p.neck:000}");
     result.arms      = HashCache.Get().Add($"arm_{p.body:000}");
     result.body      = HashCache.Get().Add($"body_{p.body:000}");
     result.hat       = HashedString.Invalid;
     return(result);
 }
Exemplo n.º 7
0
 public override void BeginTransition(Navigator navigator, Navigator.ActiveTransition transition)
 {
     base.BeginTransition(navigator, transition);
     CreatureCalorieMonitor.Instance sMI = navigator.GetSMI <CreatureCalorieMonitor.Instance>();
     if (sMI != null && sMI.stomach.IsReadyToPoop())
     {
         KBatchedAnimController component = navigator.GetComponent <KBatchedAnimController>();
         string s = HashCache.Get().Get(transition.anim.HashValue) + "_full";
         if (component.HasAnimation(s))
         {
             transition.anim = s;
         }
     }
 }
    public void Configure(HashedString category, int depth, object data, Dictionary <HashedString, List <BuildingDef> > categorized_building_map, Dictionary <HashedString, List <HashedString> > categorized_category_map, BuildMenuBuildingsScreen buildings_screen)
    {
        this.category          = category;
        categorizedBuildingMap = categorized_building_map;
        categorizedCategoryMap = categorized_category_map;
        buildingsScreen        = buildings_screen;
        List <ToggleInfo> list = new List <ToggleInfo>();

        if (typeof(IList <BuildMenu.BuildingInfo>).IsAssignableFrom(data.GetType()))
        {
            buildingInfos = (IList <BuildMenu.BuildingInfo>)data;
        }
        else if (typeof(IList <BuildMenu.DisplayInfo>).IsAssignableFrom(data.GetType()))
        {
            subcategories = new List <HashedString>();
            IList <BuildMenu.DisplayInfo> list2 = (IList <BuildMenu.DisplayInfo>)data;
            foreach (BuildMenu.DisplayInfo item2 in list2)
            {
                BuildMenu.DisplayInfo current = item2;
                string iconName = current.iconName;
                string text     = HashCache.Get().Get(current.category).ToUpper();
                text = text.Replace(" ", string.Empty);
                ToggleInfo item = new ToggleInfo(Strings.Get("STRINGS.UI.NEWBUILDCATEGORIES." + text + ".NAME"), iconName, new UserData
                {
                    category          = current.category,
                    depth             = depth,
                    requirementsState = PlanScreen.RequirementsState.Tech
                }, current.hotkey, Strings.Get("STRINGS.UI.NEWBUILDCATEGORIES." + text + ".TOOLTIP"), string.Empty);
                list.Add(item);
                subcategories.Add(current.category);
            }
            Setup(list);
            toggles.ForEach(delegate(KToggle to)
            {
                ImageToggleState[] components = to.GetComponents <ImageToggleState>();
                ImageToggleState[] array      = components;
                foreach (ImageToggleState imageToggleState in array)
                {
                    if ((UnityEngine.Object)imageToggleState.TargetImage.sprite != (UnityEngine.Object)null && imageToggleState.TargetImage.name == "FG" && !imageToggleState.useSprites)
                    {
                        imageToggleState.SetSprites(Assets.GetSprite(imageToggleState.TargetImage.sprite.name + "_disabled"), imageToggleState.TargetImage.sprite, imageToggleState.TargetImage.sprite, Assets.GetSprite(imageToggleState.TargetImage.sprite.name + "_disabled"));
                    }
                }
                to.GetComponent <KToggle>().soundPlayer.Enabled = false;
            });
        }
        UpdateBuildableStates(true);
    }
Exemplo n.º 9
0
 public void CopyBuildingOrder(Building building)
 {
     foreach (PlanInfo item in TUNING.BUILDINGS.PLANORDER)
     {
         PlanInfo current = item;
         foreach (string item2 in (List <string>)current.data)
         {
             if (building.Def.PrefabID == item2)
             {
                 OpenCategoryByName(HashCache.Get().Get(current.category));
                 OnSelectBuilding(ActiveToggles[building.Def].gameObject, building.Def);
                 productInfoScreen.materialSelectionPanel.SelectSourcesMaterials(building);
                 break;
             }
         }
     }
 }
Exemplo n.º 10
0
 private static void AddBindings(HashedString parent_category, BuildMenu.DisplayInfo display_info, List <BindingEntry> bindings)
 {
     if (display_info.data != null)
     {
         Type type = display_info.data.GetType();
         if (typeof(IList <BuildMenu.DisplayInfo>).IsAssignableFrom(type))
         {
             IList <BuildMenu.DisplayInfo> list = (IList <BuildMenu.DisplayInfo>)display_info.data;
             foreach (BuildMenu.DisplayInfo item2 in list)
             {
                 AddBindings(display_info.category, item2, bindings);
             }
         }
         else if (typeof(IList <BuildMenu.BuildingInfo>).IsAssignableFrom(type))
         {
             string       str      = HashCache.Get().Get(parent_category);
             TextInfo     textInfo = new CultureInfo("en-US", false).TextInfo;
             string       group    = textInfo.ToTitleCase(str) + " Menu";
             BindingEntry item     = new BindingEntry(group, GamepadButton.NumButtons, display_info.keyCode, Modifier.None, display_info.hotkey, true, true);
             bindings.Add(item);
         }
     }
 }
Exemplo n.º 11
0
 /// <summary>
 /// Warms up the game hash cache. This is run every load for some reason...
 /// </summary>
 private static void LoadGameHashes()
 {
     foreach (object gh in Enum.GetValues(typeof(GameHashes)))
     {
         if (gh is GameHashes hash)
         {
             HashCache.Get().Add((int)hash, hash.ToString());
         }
     }
     foreach (object uh in Enum.GetValues(typeof(UtilHashes)))
     {
         if (uh is UtilHashes hash)
         {
             HashCache.Get().Add((int)hash, hash.ToString());
         }
     }
     foreach (object ih in Enum.GetValues(typeof(UIHashes)))
     {
         if (ih is UIHashes hash)
         {
             HashCache.Get().Add((int)hash, hash.ToString());
         }
     }
 }
    public void AddAccessories(KAnimFile default_build, ResourceSet parent)
    {
        KAnim.Build        build  = file.GetData().build;
        KAnim.Build.Symbol symbol = default_build.GetData().build.GetSymbol(targetSymbolId);
        string             text   = Id.ToLower();

        if (symbol != null)
        {
            string    id        = text + "_DEFAULT";
            Accessory accessory = new Accessory(id, parent, this, default_build.batchTag, symbol);
            accessories.Add(accessory);
            HashCache.Get().Add(accessory.IdHash.HashValue, accessory.Id);
        }
        for (int i = 0; i < build.symbols.Length; i++)
        {
            string text2 = HashCache.Get().Get(build.symbols[i].hash);
            if (text2.StartsWith(text))
            {
                Accessory accessory2 = new Accessory(text2, parent, this, file.batchTag, build.symbols[i]);
                accessories.Add(accessory2);
                HashCache.Get().Add(accessory2.IdHash.HashValue, accessory2.Id);
            }
        }
    }
 public static void PostParse(KBatchGroupData data)
 {
     for (int i = 0; i < data.GetSymbolCount(); i++)
     {
         KAnim.Build.Symbol symbol = data.GetSymbol(i);
         if (symbol == null)
         {
             Debug.LogWarning("Symbol null for [" + data.groupID + "] idx: [" + i + "]");
         }
         else
         {
             if (symbol.numLookupFrames <= 0)
             {
                 int num = symbol.numFrames;
                 for (int j = symbol.firstFrameIdx; j < symbol.firstFrameIdx + symbol.numFrames; j++)
                 {
                     KAnim.Build.SymbolFrameInstance symbolFrameInstance = data.GetSymbolFrameInstance(j);
                     num = Mathf.Max(num, symbolFrameInstance.symbolFrame.sourceFrameNum + symbolFrameInstance.symbolFrame.duration);
                 }
                 symbol.numLookupFrames = num;
             }
             symbol.frameLookup = new int[symbol.numLookupFrames];
             if (symbol.numLookupFrames <= 0)
             {
                 Debug.LogWarning("No lookup frames for  [" + data.groupID + "] build: [" + symbol.build.name + "] idx: [" + i + "] id: [" + symbol.hash + "]");
             }
             else
             {
                 for (int k = 0; k < symbol.numLookupFrames; k++)
                 {
                     symbol.frameLookup[k] = -1;
                 }
                 for (int l = symbol.firstFrameIdx; l < symbol.firstFrameIdx + symbol.numFrames; l++)
                 {
                     KAnim.Build.SymbolFrameInstance symbolFrameInstance2 = data.GetSymbolFrameInstance(l);
                     if (symbolFrameInstance2.symbolFrame == null)
                     {
                         Debug.LogWarning("No symbol frame  [" + data.groupID + "] symFrameIdx: [" + l + "] id: [" + symbol.hash + "]");
                     }
                     else
                     {
                         for (int m = symbolFrameInstance2.symbolFrame.sourceFrameNum; m < symbolFrameInstance2.symbolFrame.sourceFrameNum + symbolFrameInstance2.symbolFrame.duration; m++)
                         {
                             if (m >= symbol.frameLookup.Length)
                             {
                                 Debug.LogWarning("Too many lookup frames [" + m + ">=" + symbol.frameLookup.Length + "] for  [" + data.groupID + "] idx: [" + i + "] id: [" + symbol.hash + "]");
                             }
                             else
                             {
                                 symbol.frameLookup[m] = l;
                             }
                         }
                     }
                 }
                 string text = HashCache.Get().Get(symbol.path);
                 if (!string.IsNullOrEmpty(text))
                 {
                     int num2 = text.IndexOf("/");
                     if (num2 != -1)
                     {
                         string text2 = text.Substring(0, num2);
                         symbol.folder = new KAnimHashedString(text2);
                         HashCache.Get().Add(symbol.folder.HashValue, text2);
                     }
                 }
             }
         }
     }
 }
 public static void SetPortraitData(IAssignableIdentity identityObject, KBatchedAnimController controller, bool useDefaultExpression = true)
 {
     if (identityObject == null)
     {
         controller.gameObject.SetActive(false);
     }
     else
     {
         MinionIdentity minionIdentity = identityObject as MinionIdentity;
         if ((UnityEngine.Object)minionIdentity == (UnityEngine.Object)null)
         {
             MinionAssignablesProxy minionAssignablesProxy = identityObject as MinionAssignablesProxy;
             if ((UnityEngine.Object)minionAssignablesProxy != (UnityEngine.Object)null && minionAssignablesProxy.target != null)
             {
                 minionIdentity = (minionAssignablesProxy.target as MinionIdentity);
             }
         }
         controller.gameObject.SetActive(true);
         controller.Play("ui_idle", KAnim.PlayMode.Once, 1f, 0f);
         SymbolOverrideController component = controller.GetComponent <SymbolOverrideController>();
         component.RemoveAllSymbolOverrides(0);
         if ((UnityEngine.Object)minionIdentity != (UnityEngine.Object)null)
         {
             Accessorizer component2 = minionIdentity.GetComponent <Accessorizer>();
             foreach (AccessorySlot resource in Db.Get().AccessorySlots.resources)
             {
                 Accessory accessory = component2.GetAccessory(resource);
                 if (accessory != null)
                 {
                     component.AddSymbolOverride(resource.targetSymbolId, accessory.symbol, 0);
                     controller.SetSymbolVisiblity(resource.targetSymbolId, true);
                 }
             }
             component.AddSymbolOverride(Db.Get().AccessorySlots.HatHair.targetSymbolId, Db.Get().AccessorySlots.HatHair.Lookup("hat_" + HashCache.Get().Get(component2.GetAccessory(Db.Get().AccessorySlots.Hair).symbol.hash)).symbol, 1);
             RefreshHat(minionIdentity, controller);
         }
         else
         {
             StoredMinionIdentity storedMinionIdentity = identityObject as StoredMinionIdentity;
             if ((UnityEngine.Object)storedMinionIdentity == (UnityEngine.Object)null)
             {
                 MinionAssignablesProxy minionAssignablesProxy2 = identityObject as MinionAssignablesProxy;
                 if ((UnityEngine.Object)minionAssignablesProxy2 != (UnityEngine.Object)null && minionAssignablesProxy2.target != null)
                 {
                     storedMinionIdentity = (minionAssignablesProxy2.target as StoredMinionIdentity);
                 }
             }
             if (!((UnityEngine.Object)storedMinionIdentity != (UnityEngine.Object)null))
             {
                 controller.gameObject.SetActive(false);
                 return;
             }
             foreach (AccessorySlot resource2 in Db.Get().AccessorySlots.resources)
             {
                 Accessory accessory2 = storedMinionIdentity.GetAccessory(resource2);
                 if (accessory2 != null)
                 {
                     component.AddSymbolOverride(resource2.targetSymbolId, accessory2.symbol, 0);
                     controller.SetSymbolVisiblity(resource2.targetSymbolId, true);
                 }
             }
             component.AddSymbolOverride(Db.Get().AccessorySlots.HatHair.targetSymbolId, Db.Get().AccessorySlots.HatHair.Lookup("hat_" + HashCache.Get().Get(storedMinionIdentity.GetAccessory(Db.Get().AccessorySlots.Hair).symbol.hash)).symbol, 1);
             RefreshHat(storedMinionIdentity, controller);
         }
         float animScale = 1f;
         if ((UnityEngine.Object)GameScreenManager.Instance != (UnityEngine.Object)null && (UnityEngine.Object)GameScreenManager.Instance.ssOverlayCanvas != (UnityEngine.Object)null)
         {
             animScale = 0.2f * (1f / GameScreenManager.Instance.ssOverlayCanvas.GetComponent <KCanvasScaler>().GetUserScale());
         }
         controller.animScale = animScale;
         string s = "ui";
         controller.Play(s, KAnim.PlayMode.Loop, 1f, 0f);
         controller.SetSymbolVisiblity("snapTo_neck", false);
         controller.SetSymbolVisiblity("snapTo_goggles", false);
     }
 }
    public void Configure(HashedString category, IList <BuildMenu.BuildingInfo> building_infos)
    {
        ClearButtons();
        SetHasFocus(true);
        List <ToggleInfo> list = new List <ToggleInfo>();
        string            text = HashCache.Get().Get(category).ToUpper();

        text            = text.Replace(" ", string.Empty);
        titleLabel.text = Strings.Get("STRINGS.UI.NEWBUILDCATEGORIES." + text + ".BUILDMENUTITLE");
        foreach (BuildMenu.BuildingInfo building_info in building_infos)
        {
            BuildMenu.BuildingInfo current = building_info;
            BuildingDef            def     = Assets.GetBuildingDef(current.id);
            if (def.ShowInBuildMenu && !def.Deprecated)
            {
                ToggleInfo item = new ToggleInfo(def.Name, new UserData(def, PlanScreen.RequirementsState.Tech), def.HotKey, () => def.GetUISprite("ui", false));
                list.Add(item);
            }
        }
        Setup(list);
        for (int i = 0; i < toggleInfo.Count; i++)
        {
            RefreshToggle(toggleInfo[i]);
        }
        int         num         = 0;
        IEnumerator enumerator2 = gridSizer.transform.GetEnumerator();

        try
        {
            while (enumerator2.MoveNext())
            {
                Transform transform = (Transform)enumerator2.Current;
                if (transform.gameObject.activeSelf)
                {
                    num++;
                }
            }
        }
        finally
        {
            IDisposable disposable;
            if ((disposable = (enumerator2 as IDisposable)) != null)
            {
                disposable.Dispose();
            }
        }
        gridSizer.constraintCount = Mathf.Min(num, 3);
        int     num2      = Mathf.Min(num, gridSizer.constraintCount);
        int     num3      = (num + gridSizer.constraintCount - 1) / gridSizer.constraintCount;
        int     num4      = num2 - 1;
        int     num5      = num3 - 1;
        float   num6      = (float)num2;
        Vector2 cellSize  = gridSizer.cellSize;
        float   num7      = num6 * cellSize.x;
        float   num8      = (float)num4;
        Vector2 spacing   = gridSizer.spacing;
        float   x         = num7 + num8 * spacing.x + (float)gridSizer.padding.left + (float)gridSizer.padding.right;
        float   num9      = (float)num3;
        Vector2 cellSize2 = gridSizer.cellSize;
        float   num10     = num9 * cellSize2.y;
        float   num11     = (float)num5;
        Vector2 spacing2  = gridSizer.spacing;
        Vector2 vector    = new Vector2(x, num10 + num11 * spacing2.y + (float)gridSizer.padding.top + (float)gridSizer.padding.bottom);

        contentSizeLayout.minWidth  = vector.x;
        contentSizeLayout.minHeight = vector.y;
    }
Exemplo n.º 16
0
    protected override void OnSpawn()
    {
        if (addToIdentityList)
        {
            ValidateProxy();
            CleanupLimboMinions();
        }
        PathProber component = GetComponent <PathProber>();

        if ((UnityEngine.Object)component != (UnityEngine.Object)null)
        {
            component.SetGroupProber(MinionGroupProber.Get());
        }
        SetName(name);
        if (nameStringKey == null)
        {
            nameStringKey = name;
        }
        SetGender(gender);
        if (genderStringKey == null)
        {
            genderStringKey = "NB";
        }
        if (addToIdentityList)
        {
            Components.MinionIdentities.Add(this);
            if (!base.gameObject.HasTag(GameTags.Dead))
            {
                Components.LiveMinionIdentities.Add(this);
            }
        }
        SymbolOverrideController component2 = GetComponent <SymbolOverrideController>();

        if ((UnityEngine.Object)component2 != (UnityEngine.Object)null)
        {
            Accessorizer component3 = base.gameObject.GetComponent <Accessorizer>();
            if ((UnityEngine.Object)component3 != (UnityEngine.Object)null)
            {
                bodyData = default(KCompBuilder.BodyData);
                component3.GetBodySlots(ref bodyData);
                string text = HashCache.Get().Get(component3.GetAccessory(Db.Get().AccessorySlots.HeadShape).symbol.hash);
                string str  = text.Replace("headshape", "cheek");
                component2.AddSymbolOverride("snapto_cheek", Assets.GetAnim("head_swap_kanim").GetData().build.GetSymbol(str), 1);
                component2.AddSymbolOverride(Db.Get().AccessorySlots.HairAlways.targetSymbolId, component3.GetAccessory(Db.Get().AccessorySlots.Hair).symbol, 1);
                component2.AddSymbolOverride(Db.Get().AccessorySlots.HatHair.targetSymbolId, Db.Get().AccessorySlots.HatHair.Lookup("hat_" + HashCache.Get().Get(component3.GetAccessory(Db.Get().AccessorySlots.Hair).symbol.hash)).symbol, 1);
            }
        }
        voiceId  = "0";
        voiceId += (voiceIdx + 1).ToString();
        Prioritizable component4 = GetComponent <Prioritizable>();

        if ((UnityEngine.Object)component4 != (UnityEngine.Object)null)
        {
            component4.showIcon = false;
        }
        Pickupable component5 = GetComponent <Pickupable>();

        if ((UnityEngine.Object)component5 != (UnityEngine.Object)null)
        {
            component5.carryAnimOverride = Assets.GetAnim("anim_incapacitated_carrier_kanim");
        }
        ApplyCustomGameSettings();
    }
Exemplo n.º 17
0
        public void TestGetInvalidKey()
        {
            var cache = new HashCache();

            cache.Get("Doesn't exist");
        }
Exemplo n.º 18
0
 public void LoadAll()
 {
     Debug.Assert(!hasCompletedLoadAll, "You cannot load all the anim data twice!");
     fileData.Clear();
     for (int i = 0; i < groups.Count; i++)
     {
         if (!groups[i].id.IsValid)
         {
             Debug.LogErrorFormat("Group invalid groupIndex [{0}]", i);
         }
         KBatchGroupData kBatchGroupData = null;
         kBatchGroupData = ((!groups[i].target.IsValid) ? KAnimBatchManager.Instance().GetBatchGroupData(groups[i].id) : KAnimBatchManager.Instance().GetBatchGroupData(groups[i].target));
         HashedString batchTag = groups[i].id;
         if (groups[i].renderType == KAnimBatchGroup.RendererType.AnimOnly)
         {
             if (!groups[i].swapTarget.IsValid)
             {
                 continue;
             }
             kBatchGroupData = KAnimBatchManager.Instance().GetBatchGroupData(groups[i].swapTarget);
             batchTag        = groups[i].swapTarget;
         }
         for (int j = 0; j < groups[i].files.Count; j++)
         {
             KAnimFile kAnimFile = groups[i].files[j];
             if ((UnityEngine.Object)kAnimFile != (UnityEngine.Object)null && kAnimFile.buildBytes != null && !fileData.ContainsKey(kAnimFile.GetInstanceID()))
             {
                 if (kAnimFile.buildBytes.Length == 0)
                 {
                     Debug.LogWarning("Build File [" + kAnimFile.GetData().name + "] has 0 bytes");
                 }
                 else
                 {
                     HashedString hash = new HashedString(kAnimFile.name);
                     HashCache.Get().Add(hash.HashValue, kAnimFile.name);
                     KAnimFileData file = KGlobalAnimParser.Get().GetFile(kAnimFile);
                     file.maxVisSymbolFrames = 0;
                     file.batchTag           = batchTag;
                     file.buildIndex         = KGlobalAnimParser.ParseBuildData(kBatchGroupData, hash, new FastReader(kAnimFile.buildBytes), kAnimFile.textureList);
                     fileData.Add(kAnimFile.GetInstanceID(), file);
                 }
             }
         }
     }
     for (int k = 0; k < groups.Count; k++)
     {
         if (groups[k].renderType == KAnimBatchGroup.RendererType.AnimOnly)
         {
             KBatchGroupData batchGroupData  = KAnimBatchManager.Instance().GetBatchGroupData(groups[k].swapTarget);
             KBatchGroupData batchGroupData2 = KAnimBatchManager.Instance().GetBatchGroupData(groups[k].animTarget);
             for (int l = 0; l < batchGroupData.builds.Count; l++)
             {
                 KAnim.Build build = batchGroupData.builds[l];
                 if (build != null && build.symbols != null)
                 {
                     for (int m = 0; m < build.symbols.Length; m++)
                     {
                         KAnim.Build.Symbol symbol = build.symbols[m];
                         if (symbol != null && symbol.hash.IsValid() && batchGroupData2.GetFirstIndex(symbol.hash) == -1)
                         {
                             KAnim.Build.Symbol symbol2 = new KAnim.Build.Symbol();
                             symbol2.build                    = build;
                             symbol2.hash                     = symbol.hash;
                             symbol2.path                     = symbol.path;
                             symbol2.colourChannel            = symbol.colourChannel;
                             symbol2.flags                    = symbol.flags;
                             symbol2.firstFrameIdx            = batchGroupData2.symbolFrameInstances.Count;
                             symbol2.numFrames                = symbol.numFrames;
                             symbol2.symbolIndexInSourceBuild = batchGroupData2.frameElementSymbols.Count;
                             for (int n = 0; n < symbol2.numFrames; n++)
                             {
                                 KAnim.Build.SymbolFrameInstance symbolFrameInstance = batchGroupData.GetSymbolFrameInstance(n + symbol.firstFrameIdx);
                                 KAnim.Build.SymbolFrameInstance item = default(KAnim.Build.SymbolFrameInstance);
                                 item.symbolFrame   = symbolFrameInstance.symbolFrame;
                                 item.buildImageIdx = -1;
                                 item.symbolIdx     = batchGroupData2.GetSymbolCount();
                                 batchGroupData2.symbolFrameInstances.Add(item);
                             }
                             batchGroupData2.AddBuildSymbol(symbol2);
                         }
                     }
                 }
             }
         }
     }
     for (int num = 0; num < groups.Count; num++)
     {
         if (!groups[num].id.IsValid)
         {
             Debug.LogErrorFormat("Group invalid groupIndex [{0}]", num);
         }
         if (groups[num].renderType != KAnimBatchGroup.RendererType.DontRender)
         {
             KBatchGroupData kBatchGroupData2 = null;
             if (groups[num].animTarget.IsValid)
             {
                 kBatchGroupData2 = KAnimBatchManager.Instance().GetBatchGroupData(groups[num].animTarget);
                 if (kBatchGroupData2 == null)
                 {
                     Debug.LogErrorFormat("Anim group is null for [{0}] -> [{1}]", groups[num].id, groups[num].animTarget);
                 }
             }
             else
             {
                 kBatchGroupData2 = KAnimBatchManager.Instance().GetBatchGroupData(groups[num].id);
                 if (kBatchGroupData2 == null)
                 {
                     Debug.LogErrorFormat("Anim group is null for [{0}]", groups[num].id);
                 }
             }
             for (int num2 = 0; num2 < groups[num].files.Count; num2++)
             {
                 KAnimFile kAnimFile2 = groups[num].files[num2];
                 if ((UnityEngine.Object)kAnimFile2 != (UnityEngine.Object)null && kAnimFile2.animBytes != null)
                 {
                     if (kAnimFile2.animBytes.Length == 0)
                     {
                         Debug.LogWarning("Anim File [" + kAnimFile2.GetData().name + "] has 0 bytes");
                     }
                     else
                     {
                         if (!fileData.ContainsKey(kAnimFile2.GetInstanceID()))
                         {
                             KAnimFileData file2 = KGlobalAnimParser.Get().GetFile(kAnimFile2);
                             file2.maxVisSymbolFrames = 0;
                             file2.batchTag           = groups[num].id;
                             fileData.Add(kAnimFile2.GetInstanceID(), file2);
                         }
                         HashedString  fileNameHash = new HashedString(kAnimFile2.name);
                         FastReader    reader       = new FastReader(kAnimFile2.animBytes);
                         KAnimFileData animFile     = fileData[kAnimFile2.GetInstanceID()];
                         KGlobalAnimParser.ParseAnimData(kBatchGroupData2, fileNameHash, reader, animFile);
                     }
                 }
             }
         }
     }
     for (int num3 = 0; num3 < groups.Count; num3++)
     {
         if (!groups[num3].id.IsValid)
         {
             Debug.LogErrorFormat("Group invalid groupIndex [{0}]", num3);
         }
         KBatchGroupData kBatchGroupData3 = null;
         if (groups[num3].target.IsValid)
         {
             kBatchGroupData3 = KAnimBatchManager.Instance().GetBatchGroupData(groups[num3].target);
             if (kBatchGroupData3 == null)
             {
                 Debug.LogErrorFormat("Group is null for  [{0}] target [{1}]", groups[num3].id, groups[num3].target);
             }
         }
         else
         {
             kBatchGroupData3 = KAnimBatchManager.Instance().GetBatchGroupData(groups[num3].id);
             if (kBatchGroupData3 == null)
             {
                 Debug.LogErrorFormat("Group is null for [{0}]", groups[num3].id);
             }
         }
         KGlobalAnimParser.PostParse(kBatchGroupData3);
     }
     hasCompletedLoadAll = true;
 }
Exemplo n.º 19
0
 private static HashedString CacheHashString(string str)
 {
     return(HashCache.Get().Add(str));
 }
    public static void ParseAnimData(KBatchGroupData data, HashedString fileNameHash, FastReader reader, KAnimFileData animFile)
    {
        CheckHeader("ANIM", reader);
        uint num = reader.ReadUInt32();

        Assert(num == 5, "Invalid anim.bytes version");
        reader.ReadInt32();
        reader.ReadInt32();
        int num2 = reader.ReadInt32();

        animFile.maxVisSymbolFrames = 0;
        animFile.animCount          = 0;
        animFile.frameCount         = 0;
        animFile.elementCount       = 0;
        animFile.firstAnimIndex     = data.anims.Count;
        animFile.animBatchTag       = data.groupID;
        data.animIndex.Add(fileNameHash, data.anims.Count);
        animFile.firstElementIndex = data.frameElements.Count;
        for (int i = 0; i < num2; i++)
        {
            KAnim.Anim anim = new KAnim.Anim(animFile, data.anims.Count);
            anim.name = reader.ReadKleiString();
            string text = animFile.name + "." + anim.name;
            anim.id = text;
            HashCache.Get().Add(anim.name);
            HashCache.Get().Add(text);
            anim.hash = anim.name;
            anim.rootSymbol.HashValue = reader.ReadInt32();
            anim.frameRate            = reader.ReadSingle();
            anim.firstFrameIdx        = data.animFrames.Count;
            anim.numFrames            = reader.ReadInt32();
            anim.totalTime            = (float)anim.numFrames / anim.frameRate;
            anim.scaledBoundingRadius = 0f;
            for (int j = 0; j < anim.numFrames; j++)
            {
                KAnim.Anim.Frame item = default(KAnim.Anim.Frame);
                float            num3 = reader.ReadSingle();
                float            num4 = reader.ReadSingle();
                float            num5 = reader.ReadSingle();
                float            num6 = reader.ReadSingle();
                item.bbox = new AABB3(new Vector3(num3 - num5 * 0.5f, 0f - (num4 + num6 * 0.5f), 0f) * 0.005f, new Vector3(num3 + num5 * 0.5f, 0f - (num4 - num6 * 0.5f), 0f) * 0.005f);
                float num7 = Math.Max(Math.Abs(item.bbox.max.x), Math.Abs(item.bbox.min.x));
                float num8 = Math.Max(Math.Abs(item.bbox.max.y), Math.Abs(item.bbox.min.y));
                float num9 = Math.Max(num7, num8);
                anim.unScaledSize.x       = Math.Max(anim.unScaledSize.x, num7 / 0.005f);
                anim.unScaledSize.y       = Math.Max(anim.unScaledSize.y, num8 / 0.005f);
                anim.scaledBoundingRadius = Math.Max(anim.scaledBoundingRadius, Mathf.Sqrt(num9 * num9 + num9 * num9));
                item.idx             = data.animFrames.Count;
                item.firstElementIdx = data.frameElements.Count;
                item.numElements     = reader.ReadInt32();
                int num10 = 0;
                for (int k = 0; k < item.numElements; k++)
                {
                    KAnim.Anim.FrameElement item2 = default(KAnim.Anim.FrameElement);
                    item2.fileHash = fileNameHash;
                    item2.symbol   = new KAnimHashedString(reader.ReadInt32());
                    item2.frame    = reader.ReadInt32();
                    item2.folder   = new KAnimHashedString(reader.ReadInt32());
                    item2.flags    = reader.ReadInt32();
                    float a = reader.ReadSingle();
                    float b = reader.ReadSingle();
                    float g = reader.ReadSingle();
                    float r = reader.ReadSingle();
                    item2.multColour = new Color(r, g, b, a);
                    float m  = reader.ReadSingle();
                    float m2 = reader.ReadSingle();
                    float m3 = reader.ReadSingle();
                    float m4 = reader.ReadSingle();
                    float m5 = reader.ReadSingle();
                    float m6 = reader.ReadSingle();
                    reader.ReadSingle();
                    item2.transform.m00 = m;
                    item2.transform.m01 = m3;
                    item2.transform.m02 = m5;
                    item2.transform.m10 = m2;
                    item2.transform.m11 = m4;
                    item2.transform.m12 = m6;
                    int symbolIndex = data.GetSymbolIndex(item2.symbol);
                    if (symbolIndex == -1)
                    {
                        num10++;
                        item2.symbol = MISSING_SYMBOL;
                    }
                    else
                    {
                        item2.symbolIdx = symbolIndex;
                        data.frameElements.Add(item2);
                        animFile.elementCount++;
                    }
                }
                item.numElements -= num10;
                data.animFrames.Add(item);
                animFile.frameCount++;
            }
            data.AddAnim(anim);
            animFile.animCount++;
        }
        Debug.Assert(num2 == animFile.animCount);
        data.animCount[fileNameHash] = animFile.animCount;
        animFile.maxVisSymbolFrames  = Math.Max(animFile.maxVisSymbolFrames, reader.ReadInt32());
        data.UpdateMaxVisibleSymbols(animFile.maxVisSymbolFrames);
        ParseHashTable(reader);
    }
Exemplo n.º 21
0
 private void SetPortraitAnimator(IAssignableIdentity identity)
 {
     if (identity != null && !identity.IsNull())
     {
         if ((UnityEngine.Object)animController == (UnityEngine.Object)null)
         {
             animController = Util.KInstantiateUI(Assets.GetPrefab(new Tag("FullMinionUIPortrait")), duplicantAnimAnchor.gameObject, false).GetComponent <KBatchedAnimController>();
             animController.gameObject.SetActive(true);
             KCanvasScaler kCanvasScaler = UnityEngine.Object.FindObjectOfType <KCanvasScaler>();
             animController.animScale = baseCharacterScale * (1f / kCanvasScaler.GetCanvasScale());
             ScreenResize instance = ScreenResize.Instance;
             instance.OnResize = (System.Action)Delegate.Combine(instance.OnResize, new System.Action(OnResize));
         }
         string       value     = string.Empty;
         Accessorizer component = animController.GetComponent <Accessorizer>();
         for (int num = component.GetAccessories().Count - 1; num >= 0; num--)
         {
             component.RemoveAccessory(component.GetAccessories()[num].Get());
         }
         MinionIdentity       minionIdentity       = identity as MinionIdentity;
         StoredMinionIdentity storedMinionIdentity = identity as StoredMinionIdentity;
         Accessorizer         accessorizer         = null;
         if ((UnityEngine.Object)minionIdentity != (UnityEngine.Object)null)
         {
             accessorizer = minionIdentity.GetComponent <Accessorizer>();
             foreach (ResourceRef <Accessory> accessory in accessorizer.GetAccessories())
             {
                 component.AddAccessory(accessory.Get());
             }
             value = minionIdentity.GetComponent <MinionResume>().CurrentHat;
         }
         else if ((UnityEngine.Object)storedMinionIdentity != (UnityEngine.Object)null)
         {
             foreach (ResourceRef <Accessory> accessory2 in storedMinionIdentity.accessories)
             {
                 component.AddAccessory(accessory2.Get());
             }
             value = storedMinionIdentity.currentHat;
         }
         HashedString name = "anim_idle_healthy_kanim";
         idle_anim = Assets.GetAnim(name);
         if ((UnityEngine.Object)idle_anim != (UnityEngine.Object)null)
         {
             animController.AddAnimOverrides(idle_anim, 0f);
         }
         animController.Queue("idle_default", KAnim.PlayMode.Loop, 1f, 0f);
         AccessorySlot hat = Db.Get().AccessorySlots.Hat;
         animController.SetSymbolVisiblity(hat.targetSymbolId, (!string.IsNullOrEmpty(value)) ? true : false);
         animController.SetSymbolVisiblity(Db.Get().AccessorySlots.Hair.targetSymbolId, string.IsNullOrEmpty(value) ? true : false);
         animController.SetSymbolVisiblity(Db.Get().AccessorySlots.HatHair.targetSymbolId, (!string.IsNullOrEmpty(value)) ? true : false);
         KAnim.Build.Symbol source_symbol  = null;
         KAnim.Build.Symbol source_symbol2 = null;
         if ((bool)accessorizer)
         {
             source_symbol  = accessorizer.GetAccessory(Db.Get().AccessorySlots.Hair).symbol;
             source_symbol2 = Db.Get().AccessorySlots.HatHair.Lookup("hat_" + HashCache.Get().Get(accessorizer.GetAccessory(Db.Get().AccessorySlots.Hair).symbol.hash)).symbol;
         }
         else if ((UnityEngine.Object)storedMinionIdentity != (UnityEngine.Object)null)
         {
             source_symbol  = storedMinionIdentity.GetAccessory(Db.Get().AccessorySlots.Hair).symbol;
             source_symbol2 = Db.Get().AccessorySlots.HatHair.Lookup("hat_" + HashCache.Get().Get(storedMinionIdentity.GetAccessory(Db.Get().AccessorySlots.Hair).symbol.hash)).symbol;
         }
         animController.GetComponent <SymbolOverrideController>().AddSymbolOverride(Db.Get().AccessorySlots.HairAlways.targetSymbolId, source_symbol, 1);
         animController.GetComponent <SymbolOverrideController>().AddSymbolOverride(Db.Get().AccessorySlots.HatHair.targetSymbolId, source_symbol2, 1);
     }
 }