예제 #1
0
    private void triggerList()
    {
        if (LinearSetup.ListBricks != null)
        {
            List<BrickStepParam> paramlist = LinearSetup.ListBricks.FindAll((BrickStepParam para) => para.stepID == _CURRENTSTEP.stepID);

            foreach (BrickStepParam _parameter in paramlist)
            {
                currParam = _parameter;
                currModBrick = findBrick();
                attributeWaypoint();
                giveDirections();
                enableBrick();
                disableBrick();
                setupTowerLength();
                swapTowerRotation();
            }
        }
    }
예제 #2
0
    public override void OnInspectorGUI()
    {
        step = (LinearLevelSetup)target;
        boxSize = maxSize / 10 ;
        stepSize = maxSize / 6;
        GUIEditorSkin customSkin = Resources.Load("Tools/Skins/LvlEditor") as GUIEditorSkin;
        brpm = BrickStepParam.CreateInstance("BrickStepParam") as BrickStepParam;

        base.OnInspectorGUI();
        if (step.LvlParam == null)
        {
            Debug.Log("Check for parameters in setups");
        }

        // GET INGAME BRICKS THANKS TO MAGIC
        ingameBricks = step.LvlParam.getBrickGameList();
        string gameBricks = "Ingame defined bricks \n";
        foreach (LevelBrick _brick in ingameBricks)
        {
            string parse = _brick.type.ToString() + " " + _brick.brickId ;
            if (_brick.GetComponent<PatrolBrick>())
            {
                parse += " ";
                parse += _brick.GetComponent<PatrolBrick>().brickPath.id;
            }
            parse += "\n";
            gameBricks += parse;
        }
        EditorGUILayout.HelpBox(gameBricks, MessageType.Info,true);
        autoAttributeWPM();

        // LOAD STEPS
        if (GUILayout.Button("LoadSteps", GUILayout.ExpandWidth(true)))
        {
            LinearStep[] listSteps = Resources.LoadAll<LinearStep>("Maps/" + step.LvlParam.NAME +"/Steps/");
            step.LinearSteps.Clear();
            foreach (LinearStep stp in listSteps)
            {
                step.LinearSteps.Add(stp);
            }
            step.LinearSteps.Sort(delegate (LinearStep x, LinearStep y)
                                       {
                if (x.stepID < y.stepID) return -1;
                if (x.stepID > y.stepID) return 1;
                else return 0;
            });
        }

        if (step.LinearSteps.Count > 0)
        {
            EditorGUILayout.BeginVertical(GUILayout.Width(maxSize));
            displayStepHeader();
            displayStepInfo(step.LinearSteps);
            EditorGUILayout.EndVertical();
        }

        if (step.ListBricks.Count > 0)
        {
            GUI.color = customSkin.col1;
            EditorGUILayout.BeginVertical(GUILayout.Width(maxSize));
            GUI.color = customSkin.col3;
            displayBrickHeader(brpm);
            if (GUILayout.Button("SortID", GUILayout.Width(boxSize)))
            {
                step.ListBricks.Sort(delegate (BrickStepParam x, BrickStepParam y)
                                     {
                    if (x.stepID < y.stepID) return -1;
                    if (x.stepID > y.stepID) return 1;
                    else return 0;
                });
            }
            EditorGUILayout.EndHorizontal(); // End
            foreach(BrickStepParam _prm in step.ListBricks)
            {
                if (_prm != null)
                {
                    EditorGUILayout.BeginHorizontal(GUILayout.Width(maxSize));
                    displayBrickInfo(AssetDatabase.LoadAssetAtPath( AssetDatabase.GetAssetPath(_prm), typeof(BrickStepParam)) as BrickStepParam);
                    EditorUtility.SetDirty(AssetDatabase.LoadAssetAtPath( AssetDatabase.GetAssetPath(_prm), typeof(BrickStepParam)) as BrickStepParam);
                    if (GUILayout.Button("Remove", GUILayout.Width(boxSize)))
                    {
                        AssetDatabase.DeleteAsset(AssetDatabase.GetAssetPath(_prm));
                        step.ListBricks.Remove(_prm);
                    }
                    EditorGUILayout.EndHorizontal();
                }
            }
            EditorGUILayout.EndVertical();
        }

        EditorGUILayout.BeginHorizontal(GUILayout.Width(maxSize));
        //		displayBrickInfo(brpm);
        if (GUILayout.Button("Add a brick", GUILayout.ExpandWidth(true)))
        {
            if (step.ListBricks == null)
            {
                step.ListBricks = new List<BrickStepParam>();
            }
            AssetDatabase.CreateAsset(brpm , "Assets/Resources/Maps/" + step.LvlParam.NAME + "/Parameters/" + Random.Range(0,1000000).ToString() +".asset");
            EditorUtility.SetDirty(brpm);
            step.ListBricks.Add(brpm);
        }
        EditorGUILayout.EndHorizontal();

        EditorUtility.SetDirty(step);
        EditorUtility.SetDirty(step.LvlParam);
    }
예제 #3
0
    private void displayBrickInfo(BrickStepParam _prm)
    {
        _prm.Brick 					= (LevelBrick.typeList)System.Enum.Parse(typeof(LevelBrick.typeList) , EditorGUILayout.EnumPopup("", _prm.Brick, GUILayout.Width(boxSize*1.5f)).ToString());
        _prm.stepID					= EditorGUILayout.IntField("", _prm.stepID, GUILayout.Width(boxSize / 1.5f));
        _prm.ID						= EditorGUILayout.IntField("", _prm.ID, GUILayout.Width(boxSize));
        _prm.WaypointsAttributed 	= EditorGUILayout.TextField("", _prm.WaypointsAttributed, GUILayout.Width(boxSize));
        _prm.Enable 				= EditorGUILayout.Toggle("", _prm.Enable, GUILayout.Width(boxSize));
        _prm.Disable 				= EditorGUILayout.Toggle("", _prm.Disable, GUILayout.Width(boxSize));

        if (_prm.Brick == LevelBrick.typeList.BladeTower || _prm.Brick == LevelBrick.typeList.ArrowTower)
        {
            _prm.Directions = EditorGUILayout.TextField("", _prm.Directions, GUILayout.Width(boxSize));
            if (_prm.Brick == LevelBrick.typeList.BladeTower)
            {
                _prm.TowerLength = EditorGUILayout.IntField("", _prm.TowerLength, GUILayout.Width(boxSize));
            }
            else
            {
                GUILayout.Box("",GUILayout.Width(boxSize));
                _prm.TowerLength = 0;
            }
        }
        else
        {
            GUILayout.Box("",GUILayout.Width(boxSize));
            GUILayout.Box("",GUILayout.Width(boxSize));
            _prm.Directions = "";
        }

        if (_prm.Brick == LevelBrick.typeList.BladeTower ||
            _prm.Brick == LevelBrick.typeList.Chainsaw ||
            _prm.Brick == LevelBrick.typeList.Bird)
        {
            _prm.Invert = EditorGUILayout.Toggle("", _prm.Invert, GUILayout.Width(boxSize));
        }
        else
        {
            GUILayout.Box("",GUILayout.Width(boxSize));
            _prm.Invert = false;
        }
    }
예제 #4
0
 private string serializeBrickSetup(BrickStepParam _brk)
 {
     // SERIALIZE BRICK INFO TO DISPLAY ENABLED BRICKS.
     string res = "";
     res += "[";
     res += _brk.Brick.ToString();
     res += "] [ID=";
     res += _brk.ID.ToString();
     res += "] [WP=";
     res += _brk.WaypointsAttributed;
     res += "]";
     if (_brk.Enable == true)
     {
         res += "[Enabled] ";
     }
     if (_brk.Disable == true)
     {
         res += " [Disabled]";
     }
     res += "[Dir=";
     res += _brk.Directions;
     res += "] [TwLen_";
     res += _brk.TowerLength.ToString();
     res += "]";
     if (_brk.Invert == true)
     {
         res += " [Inverted]";
     }
     return res;
 }
예제 #5
0
 private void displayBrickHeader(BrickStepParam _prm)
 {
     // NOTES FOR DESIGNER
     EditorGUILayout.BeginHorizontal(GUILayout.Width(maxSize));
     GUILayout.Box("Type",GUILayout.Width(boxSize * 1.5f));
     GUILayout.Box("Step",GUILayout.Width(boxSize / 1.5f));
     GUILayout.Box("ID",GUILayout.Width(boxSize));
     GUILayout.Box("WayP",GUILayout.Width(boxSize) );
     GUILayout.Box("Enable", GUILayout.Width(boxSize));
     GUILayout.Box("Disabled", GUILayout.Width(boxSize));
     GUILayout.Box("Directio", GUILayout.Width(boxSize));
     GUILayout.Box("Length", GUILayout.Width(boxSize));
     GUILayout.Box("Invert", GUILayout.Width(boxSize));
 }