Beispiel #1
0
    public override void OnInspectorGUI()
    {
        BSPVirtualMapGeneratorBehaviour t = (BSPVirtualMapGeneratorBehaviour)target;
        GeneratorBehaviour gen            = t.gameObject.GetComponent <GeneratorBehaviour>();
        int maxSplits = 2;

        if (gen != null)
        {
            maxSplits = Mathf.Min(gen.MapHeight, gen.MapWidth) / 4; // No more than these splits or it will behave strangely!
        }

        // Entrance/Exit (COMMON)
        EditorGUILayout.BeginHorizontal();
        t.createStartAndEnd = EditorGUILayout.Toggle("Create Entrance and Exit", t.createStartAndEnd);
        if (t.HasRooms && t.createStartAndEnd)
        {
            t.forceStartAndEndInRooms = EditorGUILayout.Toggle("Force in Room", t.forceStartAndEndInRooms);
        }
        EditorGUILayout.EndHorizontal();
        if (t.createStartAndEnd)
        {
            EditorGUILayout.MinMaxSlider(new GUIContent("Min & Max distance % between entrance and exit"), ref t.minimumDistanceBetweenStartAndEnd, ref t.maximumDistanceBetweenStartAndEnd, 0, 100);
        }



        t.nSplits    = EditorGUILayout.IntSlider(new GUIContent("Number of splits", "The higher this is, the more and smaller rooms you get."), t.nSplits, 0, maxSplits);
        t.splitRange = EditorGUILayout.Slider(new GUIContent("Split range", "Max range for splitting dungeon sections"), t.splitRange, 0f, 0.5f);
        EditorGUILayout.MinMaxSlider(new GUIContent("Room size range", "Min & Max range for room size"), ref t.roomSizeMinRange, ref t.roomSizeMaxRange, 0f, 1f);
        t.maxCorridorWidth = EditorGUILayout.IntSlider(new GUIContent("Max corridor width", "Large corridors are sometimes added."), t.maxCorridorWidth, 1, 4);
    }
Beispiel #2
0
    // Moving agent to a point
    public void moveTo(Point point)
    {
        // if the truck is driving / moving then move it
        if ((currStatus == TruckStatus.DRIVING || currStatus == TruckStatus.BOOSTED) && point != null)
        {
            // Moving is now using translate to make the game more consistent
            Vector2 dir = point.getCurrPosition() - position;
            this.transform.Translate(dir.normalized * property.speed * Time.deltaTime * (currStatus == TruckStatus.BOOSTED ? 2f : 1f), Space.World);
            position = this.gameObject.transform.position;

            if (isNowAt(point.getCurrPosition()) && point.getIsGenerator())
            {
                // Check if the answer you give is correct answer and despawn the truck
                GeneratorBehaviour generator = point.gameObject.GetComponent <GeneratorBehaviour>();
                GameEvents.current.TruckAnswerEnter();
                generator.checkAnswer(charCharge);
                despawn();
            }
            else if (isNowAt(point.getCurrPosition()))
            {
                // If the agent reach a destination that is not end point
                changeTargetFromCurrPoint(point);
            }
        }
    }
	override public PhysicalMap Generate(VirtualMap[] maps, GeneratorBehaviour generator, MapInterpreter interpreter){
        PrefabSectionsPhysicalMap physMap = ScriptableObject.CreateInstance<PrefabSectionsPhysicalMap>();
		physMap.Initialise(maps,generator,interpreter);	
		physMap.behaviour = this;
		physMap.Generate();
		return physMap;	
	}
Beispiel #4
0
    public override void OnInspectorGUI()
    {
        MapInterpreterBehaviour t = (MapInterpreterBehaviour)target;

        if (g == null)
        {
            g = t.gameObject.GetComponent <GeneratorBehaviour>();
        }
        if (p == null)
        {
            p = t.gameObject.GetComponent <PhysicalMapBehaviour>();
        }
        if (v == null)
        {
            v = t.gameObject.GetComponent <VirtualMapGeneratorBehaviour>();
        }

        t.drawRocks       = EditorGUILayout.Toggle("Draw Rocks", t.drawRocks);
        t.drawWallCorners = EditorGUILayout.Toggle("Draw Wall Corners", t.drawWallCorners);
        t.drawDoors       = EditorGUILayout.Toggle("Place Doors in Passages", t.drawDoors);

        if (v != null && v.HasRooms)
        {
            t.createColumnsInRooms = EditorGUILayout.Toggle("Draw Columns in Rooms", t.createColumnsInRooms);
        }

        t.useDirectionalFloors = EditorGUILayout.Toggle("Use Directional Floors", t.useDirectionalFloors);

        if (t.useDirectionalFloors)
        {
            t.randomOrientations = false;
        }
        else
        {
            t.randomOrientations = EditorGUILayout.Toggle("Randomize Orientations", t.randomOrientations);
        }

        if (t.useDirectionalFloors)
        {
            t.isolateDirectionalWallsForRooms = EditorGUILayout.Toggle(new GUIContent("Isolate Rooms", "If enabled, room corners will be isolated from the rest of the dungeon."), t.isolateDirectionalWallsForRooms);
        }

        t.usePerimeter = EditorGUILayout.Toggle("Use Perimeter Walls", t.usePerimeter);
//		if (t.usePerimeter) t.internalPerimeter =EditorGUILayout.Toggle("Internal Perimeter",t.internalPerimeter);

        if (g.mapDimensionsType == MapDimensionsType.THREE_DEE)
        {
            t.addCeilingToCorridors = EditorGUILayout.Toggle("Add Ceiling to Corridors", t.addCeilingToCorridors);
            if (v.HasRooms)
            {
                t.addCeilingToRooms = EditorGUILayout.Toggle("Add Ceiling To Rooms", t.addCeilingToRooms);
            }
        }
    }
Beispiel #5
0
        public override void OnInspectorGUI()
        {
            DrawDefaultInspector();
            GeneratorBehaviour generator = target as GeneratorBehaviour;

            if (!generator)
            {
                return;
            }

            //generator.Parameter.ChunkSize = EditorGUILayout.IntField("Chunk Resolution", generator.Parameter.ChunkSize);
            EditorGUI.BeginDisabledGroup(!generator.Network || !generator.Network.UseLocalGenerator && !generator.Network.Connected || generator.PendingChunks);
            if (GUILayout.Button("Generate"))
            {
                generator.GenerateMap();
            }
            EditorGUI.EndDisabledGroup();
        }
    public override void OnInspectorGUI()
    {
        PhysicalMapBehaviour t = (PhysicalMapBehaviour)target;

        if (g == null)
        {
            g = t.gameObject.GetComponent <GeneratorBehaviour>();
        }
        if (i == null)
        {
            i = t.gameObject.GetComponent <MapInterpreterBehaviour>();
        }
        if (v == null)
        {
            v = t.gameObject.GetComponent <VirtualMapGeneratorBehaviour>();
        }

        if (v.createStartAndEnd)
        {
            t.createEntranceAndExit = EditorGUILayout.Toggle("Add Entrance and Exit", t.createEntranceAndExit);

            if (t.createEntranceAndExit)
            {
                //			EditorGUILayout.BeginHorizontal();
                t.createPlayer = EditorGUILayout.Toggle("Add Player", t.createPlayer);
                if (t.createPlayer)
                {
                    t.playerPrefab = EditorGUILayout.ObjectField("Player Prefab", t.playerPrefab, typeof(GameObject), true) as GameObject;
                }
                //			EditorGUILayout.EndHorizontal();
            }
        }

        if (!t.AutomaticBatching)
        {
            t.enabledBatching = EditorGUILayout.Toggle("Perform Batching", t.enabledBatching);
        }
        if (!t.AutomaticOrientation && !t.ForcedOrientation)
        {
            t.mapPlaneOrientation = (MapPlaneOrientation)EditorGUILayout.EnumPopup("Orientation", t.mapPlaneOrientation);
        }
    }
Beispiel #7
0
    public override void OnInspectorGUI()
    {
        errorStyle = new GUIStyle();
        errorStyle.normal.textColor = Color.red;

        GeneratorBehaviour           t = (GeneratorBehaviour)target;
        PhysicalMapBehaviour         physicalMapBehaviour   = t.gameObject.GetComponent <PhysicalMapBehaviour>();
        MapInterpreterBehaviour      interpreterBehaviour   = t.gameObject.GetComponent <MapInterpreterBehaviour>();
        VirtualMapGeneratorBehaviour vmapGeneratorBehaviour = t.gameObject.GetComponent <VirtualMapGeneratorBehaviour>();

        targetInstance = t;

        t.mapDimensionsType = (MapDimensionsType)EditorGUILayout.EnumPopup("Map Dimensions Type", t.mapDimensionsType);

        t.MapWidth  = EditorGUILayout.IntSlider("Map Width", t.MapWidth, 2, GeneratorBehaviour.MAX_SIZE);
        t.MapHeight = EditorGUILayout.IntSlider("Map Length", t.MapHeight, 2, GeneratorBehaviour.MAX_SIZE);

        EditorGUILayout.BeginHorizontal();
        t.useSeed = EditorGUILayout.Toggle("Use seed", t.useSeed);
        EditorGUI.BeginDisabledGroup(t.useSeed == false);
        t.seed = EditorGUILayout.IntSlider("Seed", t.seed, 0, 10000);
        EditorGUI.EndDisabledGroup();
        EditorGUILayout.EndHorizontal();

        if (t.mapDimensionsType == MapDimensionsType.THREE_DEE)
        {
            t.multiStorey = EditorGUILayout.Toggle("Multi-Storey", t.multiStorey);
            if (t.multiStorey)
            {
                t.numberOfStoreys = EditorGUILayout.IntSlider("Number of Storeys", t.numberOfStoreys, 1, 10);
            }
            else
            {
                t.numberOfStoreys = 1;
            }
        }
        else
        {
            t.multiStorey     = false;
            t.numberOfStoreys = 1;
        }

        this.showAdvanced = EditorGUILayout.Foldout(this.showAdvanced, "Advanced Options");
        if (this.showAdvanced)
        {
            GUILayout.BeginHorizontal();
            t.printTimings = EditorGUILayout.Toggle("Print Timings", t.printTimings);
            GUILayout.EndHorizontal();
            EditorGUILayout.LabelField("Last used seed: " + t.lastUsedSeed);
            showDebugCoordinates = EditorGUILayout.Toggle("Show Debug Coordinates", showDebugCoordinates);
            showDebugConnections = EditorGUILayout.Toggle("Show Debug Connections", showDebugConnections);
        }

        EditorGUI.BeginDisabledGroup(Application.isPlaying == true);
        bool canGenerate = true;

        if (vmapGeneratorBehaviour == null)
        {
            GUILayout.Label("Attach a Virtual Map Generator Behaviour to enable generation!", errorStyle);
            canGenerate = false;
        }
        if (physicalMapBehaviour == null)
        {
            GUILayout.Label("Attach a Physical Map Behaviour to enable generation!", errorStyle);
            canGenerate = false;
        }
        else if (t.mapDimensionsType == MapDimensionsType.THREE_DEE && !physicalMapBehaviour.SupportsThreeDeeMap)
        {
            GUILayout.Label("The attached Physical Map Behaviour does not support a 3D map!", errorStyle);
            canGenerate = false;
        }
        if (interpreterBehaviour == null)
        {
            GUILayout.Label("Attach a Map Interpreter Behaviour to enable generation!", errorStyle);
            canGenerate = false;
        }

        EditorGUI.BeginDisabledGroup(!canGenerate);
        if (GUILayout.Button("Generate!"))
        {
            t.Generate();
        }
        EditorGUI.EndDisabledGroup();

        #region Save/Load buttons
        EditorGUILayout.BeginHorizontal();
        if (GUILayout.Button("Save"))
        {
            SavePrefab();
        }
        EditorGUILayout.EndHorizontal();
        #endregion
        EditorGUI.EndDisabledGroup();
    }
    public void Start()
    {
        this.generator = this.gameObject.GetComponent <GeneratorBehaviour>();

        GenerateNewMap();
    }
    void OnGUI()
    {
        this.generator = EditorGUILayout.ObjectField(this.generator, typeof(GeneratorBehaviour), true) as GeneratorBehaviour;

        if (debugger == null)
        {
            debugger = new GeneratorDebugger();
        }

        if (generator != null)
        {
            debugger.generator = generator;

//			if (debugger == null) {
//				GUIStyle style = new GUIStyle();
//				style.normal.textColor = Color.red;
//				GUILayout.Label("Add a Generator Debugger component to the generator you want to debug!",style);
//				return;
//			}

            EditorGUI.BeginDisabledGroup(Application.isPlaying == true);

            PhysicalMap physicalMap = generator.physicalMap;

            if (physicalMap == null)
            {
                GUIStyle style = new GUIStyle();
                style.normal.textColor = Color.red;
                GUILayout.Label("No map has been generated, generate first!", style);
            }

            EditorGUI.BeginDisabledGroup(physicalMap == null || generator == null);

//			int i = 0;
//			foreach(PhysicalMapZone zone in physicalMap.zones){
            for (int i = 0; i < physicalMap.zones.Count; i++)
            {
                if (GUILayout.Button("Select Storey " + i))
                {
                    List <GameObject> gos = debugger.SelectObjectsByZone(i);
                    if (gos != null)
                    {
                        Selection.objects = gos.ToArray();
                    }
                }
//				i++;
            }
            foreach (SelectionObjectType sot in System.Enum.GetValues(typeof(SelectionObjectType)).Cast <SelectionObjectType>())
            {
                if (GUILayout.Button("Select " + sot))
                {
                    List <GameObject> gos = debugger.SelectObjects(sot);
                    if (gos != null)
                    {
                        Selection.objects = gos.ToArray();
                    }
                }
            }
            if (GUILayout.Button("Clear"))
            {
                debugger.Clear();
//				Debug.Log (Selection.objects);
//				Debug.Log (debugger);
                Selection.objects = new Object[0];
            }
            EditorGUI.EndDisabledGroup();
        }
        else
        {
            GUILayout.Label("Link your GeneratorBehaviour here.");
        }
    }