public void WithWrongDescriptorValidatorFalseTest()
    {
        Descriptor descRight = ScriptableObject.CreateInstance <Descriptor>();

        descRight.name = "DescriptorRight";

        Descriptor descWrong = ScriptableObject.CreateInstance <Descriptor>();

        descWrong.name = "DescriptorWrong";

        DescriptorValidator val = ScriptableObject.CreateInstance <DescriptorValidator>();

        val.descriptor = descWrong;

        GameObject obj  = new GameObject();
        Item       item = obj.AddComponent <Item>();

        item.Descriptors.Add(descRight);

        Assert.IsFalse(val.ValidateItem(item));

        CleanUpScene();
        ScriptableObject.DestroyImmediate(descRight);
        ScriptableObject.DestroyImmediate(descWrong);
        ScriptableObject.DestroyImmediate(val);
    }
    public void SubDescriptorValidatorFalseTest()
    {
        // Child is accepted by Parent Validtor
        //  Parent
        //      \- Child
        //
        //  Goblin Chief
        //      \- Goblin
        Descriptor descParent = ScriptableObject.CreateInstance <Descriptor>();

        descParent.name = "DescriptorParent";

        Descriptor descChild = ScriptableObject.CreateInstance <Descriptor>();

        descChild.name = "DescriptorChild";

        descParent.children.Add(descChild);

        DescriptorValidator val = ScriptableObject.CreateInstance <DescriptorValidator>();

        val.descriptor = descChild;

        GameObject obj  = new GameObject();
        Item       item = obj.AddComponent <Item>();

        item.Descriptors.Add(descParent);

        Assert.IsTrue(val.ValidateItem(item));

        CleanUpScene();
        ScriptableObject.DestroyImmediate(descChild);
        ScriptableObject.DestroyImmediate(descParent);
        ScriptableObject.DestroyImmediate(val);
    }
    public void CombinationIsInitTwoTest()
    {
        Descriptor desc = ScriptableObject.CreateInstance <Descriptor>();

        desc.name = "Descriptor";

        DescriptorValidator descVal = ScriptableObject.CreateInstance <DescriptorValidator>();

        descVal.descriptor = desc;

        ItemValidator itemVal = ScriptableObject.CreateInstance <ItemValidator>();

        itemVal.name = "Item";

        Combination comb = ScriptableObject.CreateInstance <Combination>();

        comb.itemValidator1 = descVal;
        comb.itemValidator2 = itemVal;

        bool isInit = comb.IsInitialized();

        Assert.IsTrue(isInit);

        ScriptableObject.DestroyImmediate(comb);
        ScriptableObject.DestroyImmediate(itemVal);
        ScriptableObject.DestroyImmediate(descVal);
        ScriptableObject.DestroyImmediate(desc);
    }
    public void CombinationEventTest()
    {
        Descriptor desc = ScriptableObject.CreateInstance <Descriptor>();

        desc.name = "Descriptor";

        DescriptorValidator descVal = ScriptableObject.CreateInstance <DescriptorValidator>();

        descVal.descriptor = desc;

        ItemValidator itemVal = ScriptableObject.CreateInstance <ItemValidator>();

        itemVal.name = "Item";

        GameObject obj1  = new GameObject();
        Item       item1 = obj1.AddComponent <Item>();

        item1.Descriptors.Add(desc);

        GameObject obj2  = new GameObject();
        Item       item2 = obj2.AddComponent <Item>();

        item2.name = "Item";

        Combination comb = ScriptableObject.CreateInstance <Combination>();

        comb.itemValidator1 = descVal;
        comb.itemValidator2 = itemVal;

        bool success = false;

        comb.Subscribe(new CombinationEventHandler(() => success = true));
        if (comb.IsMatch(item1, item2))
        {
            comb.Execute(item1, item2);
        }

        Assert.IsTrue(success);

        CleanUpScene();
        ScriptableObject.DestroyImmediate(comb);
        ScriptableObject.DestroyImmediate(itemVal);
        ScriptableObject.DestroyImmediate(descVal);
        ScriptableObject.DestroyImmediate(desc);
    }
    public void DescriptorValidatorTrueTest()
    {
        Descriptor desc = ScriptableObject.CreateInstance <Descriptor>();

        desc.name = "DescriptorTest";

        DescriptorValidator val = ScriptableObject.CreateInstance <DescriptorValidator>();

        val.descriptor = desc;

        GameObject obj  = new GameObject();
        Item       item = obj.AddComponent <Item>();

        item.Descriptors.Add(desc);

        Assert.IsTrue(val.ValidateItem(item));

        CleanUpScene();
        ScriptableObject.DestroyImmediate(desc);
        ScriptableObject.DestroyImmediate(val);
    }
    public void WithoutDescriptorValidatorFalseTest()
    {
        Descriptor desc = ScriptableObject.CreateInstance <Descriptor>();

        desc.name = "DescriptorTest";

        DescriptorValidator val = ScriptableObject.CreateInstance <DescriptorValidator>();

        val.descriptor = desc;

        GameObject obj  = new GameObject();
        Item       item = obj.AddComponent <Item>();

        //item.Descriptors.Add(descWrong); //Desciptor is NOT added

        Assert.IsFalse(val.ValidateItem(item));

        CleanUpScene();
        ScriptableObject.DestroyImmediate(desc);
        ScriptableObject.DestroyImmediate(val);
    }
    public void CombinationIsInitOtherOneTest()
    {
        Descriptor desc = ScriptableObject.CreateInstance <Descriptor>();

        desc.name = "Descriptor";

        DescriptorValidator descVal = ScriptableObject.CreateInstance <DescriptorValidator>();

        descVal.descriptor = desc;

        Combination comb = ScriptableObject.CreateInstance <Combination>();

        comb.itemValidator2 = descVal;

        bool isInit = comb.IsInitialized();

        Assert.IsFalse(isInit);

        ScriptableObject.DestroyImmediate(comb);
        ScriptableObject.DestroyImmediate(descVal);
        ScriptableObject.DestroyImmediate(desc);
    }
Example #8
0
    static void OnPostprocessAllAssets(string[] importedAssets, string[] deletedAssets, string[] movedAssets, string[] movedFromAssetPaths)
    {
        AssetDatabase.Refresh();
        List <string> pathsVisited = new List <string>();

        for (int i = 0; i < movedAssets.Length; i++)
        {
            //Debug.Log("Moved Asset: " + movedAssets[i] + " from: " + movedFromAssetPaths[i]);
            if (movedAssets[i].Contains("/Descriptors/") && movedFromAssetPaths[i].Contains("/Descriptors/"))
            {
                int    startIndex    = movedAssets[i].LastIndexOf('/') + 1;
                string filename      = movedAssets[i].Substring(startIndex, movedAssets[i].Length - startIndex - 6);
                int    startIndexOld = movedFromAssetPaths[i].LastIndexOf('/') + 1;
                string filenameOld   = movedFromAssetPaths[i].Substring(startIndexOld, movedFromAssetPaths[i].Length - startIndexOld - 6);
                AssetDatabase.RenameAsset("Assets/Resources/Validators/" + filenameOld + ".asset", filename);

                pathsVisited.Add(movedAssets[i]);
                Debug.Log("DescriptorValidator " + filenameOld + " renamed to " + filename);
            }
        }
        AssetDatabase.SaveAssets();

        AssetDatabase.Refresh();
        foreach (string str in deletedAssets)
        {
            if (str.Contains("/Descriptors/"))
            {
                int    startIndex       = str.LastIndexOf('/') + 1;
                string filename         = str.Substring(startIndex, str.Length - startIndex - 6);
                DescriptorValidator val = AssetDatabase.LoadAssetAtPath <DescriptorValidator>("Assets/Resources/Validators/" + filename + ".asset");
                if (val != null)
                {
                    AssetDatabase.DeleteAsset("Assets/Resources/Validators/" + filename + ".asset");
                    Debug.Log("Delted DescriptorValidator " + filename);
                }
            }
        }
        AssetDatabase.SaveAssets();

        AssetDatabase.Refresh();
        foreach (string str in importedAssets)
        {
            if (pathsVisited.Contains(str))
            {
                continue;
            }
            if (str.Contains("/Descriptors/"))
            {
                int                 startIndex = str.LastIndexOf('/') + 1;
                string              filename   = str.Substring(startIndex, str.Length - startIndex - 6);
                Descriptor          des        = AssetDatabase.LoadAssetAtPath <Descriptor>("Assets/Resources/Descriptors/" + filename + ".asset");
                DescriptorValidator val        = AssetDatabase.LoadAssetAtPath <DescriptorValidator>("Assets/Resources/Validators/" + filename + ".asset");
                if (val == null)
                {
                    DescriptorValidator newVal = DescriptorValidator.CreateInstance <DescriptorValidator>();
                    newVal.descriptor = des;
                    AssetDatabase.CreateAsset(newVal, "Assets/Resources/Validators/" + filename + ".asset");
                    Debug.Log("DescriptorValidator " + filename + " created");
                }
                else if (val.descriptor != des)
                {
                    val.descriptor = des;
                    Debug.Log("DescriptorValidator " + filename + " updated");
                }
            }
        }
        AssetDatabase.SaveAssets();
    }