Ejemplo n.º 1
0
    private string GenerateUpgradeString(UpgradePerk[] availableUpgradeUpgradePerk)
    {
        string text = "";

        foreach (var upgradePerk in availableUpgradeUpgradePerk)
        {
            ClickerComponent component = upgradePerk.TargetBuilding ??
                                         (ClickerComponent)upgradePerk.TargetClickable ?? upgradePerk.TargetCurrency;
            text += string.Format("{0}s {1} to {2}", upgradePerk.Operation, upgradePerk.Amount, component.name);
        }

        return(text);
    }
Ejemplo n.º 2
0
        static void OnPostprocessAllAssets(string[] importedAssets, string[] deletedAssets, string[] movedAssets,
                                           string[] movedFromAssetPaths)
        {
            bool rebuildRuntimeDB = false;

            foreach (string assetPath in importedAssets)
            {
                ClickerComponent component = AssetDatabase.LoadAssetAtPath <ClickerComponent>(assetPath);
                if (component == null)
                {
                    continue;
                }

                Guid clickerGuid;
                int  index = ClickerSettings.Instance.ClickerComponentAssetGUIDs.IndexOf(
                    AssetDatabase.AssetPathToGUID(assetPath));
                if (index >= 0)
                {
                    clickerGuid = ClickerSettings.Instance.ClickerComponentGUIDContainers[index].Guid;
                }
                else
                {
                    clickerGuid = System.Guid.NewGuid();
                }

                SerializedObject so = new SerializedObject(component);
                so.Update();
                SerializedProperty serializedProperty = so.FindProperty("GUIDContainer._serializedGuid");

                if (clickerGuid.ToString() != serializedProperty.stringValue)
                {
                    // Update DB as this is a new GUID
                    if (index == -1)
                    {
                        ClickerSettings.Instance.ClickerComponentAssetGUIDs.Add(
                            AssetDatabase.AssetPathToGUID(assetPath));
                        ClickerSettings.Instance.ClickerComponentGUIDContainers.Add(new GUIDContainer(clickerGuid));
                    }

                    serializedProperty.stringValue = clickerGuid.ToString();
                    so.ApplyModifiedProperties();
                    AssetDatabase.ImportAsset(assetPath);
                    rebuildRuntimeDB = true;
                }
            }

            foreach (string assetPath in deletedAssets)
            {
                int index = ClickerSettings.Instance.ClickerComponentAssetGUIDs.IndexOf(
                    AssetDatabase.AssetPathToGUID(assetPath));
                if (index >= 0)
                {
                    Debug.LogFormat("Removing GUID {0}", assetPath);
                    ClickerSettings.Instance.ClickerComponentAssetGUIDs.RemoveAt(index);
                    ClickerSettings.Instance.ClickerComponentGUIDContainers.RemoveAt(index);
                    rebuildRuntimeDB = true;
                }
            }

            ClickerSettings.Instance.Save();
            EditorUtility.SetDirty(ClickerSettings.Instance);

            if (rebuildRuntimeDB)
            {
                ClickerComponent.RuntimeLookup.Clear();
                foreach (ClickerComponent clickerComponent in AssetDatabase.FindAssets("t:ClickerComponent")
                         .Select(AssetDatabase.GUIDToAssetPath).Select(AssetDatabase.LoadAssetAtPath <ClickerComponent>))
                {
                    clickerComponent.OnAfterDeserialize();
                }
            }
        }