Pull request #37: Finish integrating level selector
Merge in CGD/gather-and-defend from feature/integrateLevelSelector to main * commit '9696ee614e4666d93da40bcec686e87ac6a30559': spawners n'apparaissent plus + beau back button finish integrating level selector
This commit is contained in:
commit
fb80cc3c9b
@ -7,6 +7,8 @@ public class LevelManagerEditor : Editor
|
||||
public override void OnInspectorGUI()
|
||||
{
|
||||
DrawDefaultInspector();
|
||||
if (Application.isPlaying)
|
||||
{
|
||||
if (GUILayout.Button("Save"))
|
||||
{
|
||||
LevelManager.Instance.SaveFile();
|
||||
@ -17,3 +19,4 @@ public class LevelManagerEditor : Editor
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
2256
Assets/Prefabs/UI/WorldMap/LevelSelection.prefab
Normal file
2256
Assets/Prefabs/UI/WorldMap/LevelSelection.prefab
Normal file
File diff suppressed because it is too large
Load Diff
7
Assets/Prefabs/UI/WorldMap/LevelSelection.prefab.meta
Normal file
7
Assets/Prefabs/UI/WorldMap/LevelSelection.prefab.meta
Normal file
@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 096f5f6b487dccb41a48faf69f87fae9
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@ -538,7 +538,7 @@ Camera:
|
||||
m_Depth: -1
|
||||
m_CullingMask:
|
||||
serializedVersion: 2
|
||||
m_Bits: 4294967295
|
||||
m_Bits: 55
|
||||
m_RenderingPath: -1
|
||||
m_TargetTexture: {fileID: 0}
|
||||
m_TargetDisplay: 0
|
||||
@ -783,6 +783,14 @@ PrefabInstance:
|
||||
propertyPath: m_Name
|
||||
value: LevelManager
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3028288566889208750, guid: 02daecb0115395844b4932445d039051, type: 3}
|
||||
propertyPath: _gameScene
|
||||
value: Game
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3028288566889208750, guid: 02daecb0115395844b4932445d039051, type: 3}
|
||||
propertyPath: _firstLevel
|
||||
value:
|
||||
objectReference: {fileID: 11400000, guid: a6e34739c9325da4cac4fbaea30d052c, type: 2}
|
||||
- target: {fileID: 3028288566889208751, guid: 02daecb0115395844b4932445d039051, type: 3}
|
||||
propertyPath: m_RootOrder
|
||||
value: 2
|
||||
@ -926,6 +934,7 @@ RectTransform:
|
||||
- {fileID: 115274809}
|
||||
- {fileID: 1709530844}
|
||||
- {fileID: 2019202047}
|
||||
- {fileID: 2064630363}
|
||||
m_Father: {fileID: 0}
|
||||
m_RootOrder: 4
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
@ -1808,3 +1817,152 @@ CanvasRenderer:
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 2019202046}
|
||||
m_CullTransparentMesh: 1
|
||||
--- !u!1 &2064630362
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 2064630363}
|
||||
- component: {fileID: 2064630366}
|
||||
- component: {fileID: 2064630365}
|
||||
- component: {fileID: 2064630364}
|
||||
- component: {fileID: 2064630367}
|
||||
m_Layer: 5
|
||||
m_Name: TemporaryGoBackButton
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!224 &2064630363
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 2064630362}
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 1092900232}
|
||||
m_RootOrder: 5
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0.5, y: 0.5}
|
||||
m_AnchorMax: {x: 0.5, y: 0.5}
|
||||
m_AnchoredPosition: {x: 786, y: 603.62}
|
||||
m_SizeDelta: {x: 97.7374, y: 78.499}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!114 &2064630364
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 2064630362}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_Navigation:
|
||||
m_Mode: 3
|
||||
m_WrapAround: 0
|
||||
m_SelectOnUp: {fileID: 0}
|
||||
m_SelectOnDown: {fileID: 0}
|
||||
m_SelectOnLeft: {fileID: 0}
|
||||
m_SelectOnRight: {fileID: 0}
|
||||
m_Transition: 1
|
||||
m_Colors:
|
||||
m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
|
||||
m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
|
||||
m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
|
||||
m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
|
||||
m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
|
||||
m_ColorMultiplier: 1
|
||||
m_FadeDuration: 0.1
|
||||
m_SpriteState:
|
||||
m_HighlightedSprite: {fileID: 0}
|
||||
m_PressedSprite: {fileID: 0}
|
||||
m_SelectedSprite: {fileID: 0}
|
||||
m_DisabledSprite: {fileID: 0}
|
||||
m_AnimationTriggers:
|
||||
m_NormalTrigger: Normal
|
||||
m_HighlightedTrigger: Highlighted
|
||||
m_PressedTrigger: Pressed
|
||||
m_SelectedTrigger: Selected
|
||||
m_DisabledTrigger: Disabled
|
||||
m_Interactable: 1
|
||||
m_TargetGraphic: {fileID: 2064630365}
|
||||
m_OnClick:
|
||||
m_PersistentCalls:
|
||||
m_Calls:
|
||||
- m_Target: {fileID: 2064630367}
|
||||
m_TargetAssemblyTypeName: ChangeScene, GameAssembly
|
||||
m_MethodName: LoadScene
|
||||
m_Mode: 1
|
||||
m_Arguments:
|
||||
m_ObjectArgument: {fileID: 0}
|
||||
m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
|
||||
m_IntArgument: 0
|
||||
m_FloatArgument: 0
|
||||
m_StringArgument:
|
||||
m_BoolArgument: 0
|
||||
m_CallState: 2
|
||||
--- !u!114 &2064630365
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 2064630362}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_Material: {fileID: 0}
|
||||
m_Color: {r: 1, g: 1, b: 1, a: 1}
|
||||
m_RaycastTarget: 1
|
||||
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
|
||||
m_Maskable: 1
|
||||
m_OnCullStateChanged:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
m_Sprite: {fileID: 21300000, guid: 40f4f2cff86c68f4aaccce14435eba65, type: 3}
|
||||
m_Type: 0
|
||||
m_PreserveAspect: 0
|
||||
m_FillCenter: 1
|
||||
m_FillMethod: 4
|
||||
m_FillAmount: 1
|
||||
m_FillClockwise: 1
|
||||
m_FillOrigin: 0
|
||||
m_UseSpriteMesh: 0
|
||||
m_PixelsPerUnitMultiplier: 1
|
||||
--- !u!222 &2064630366
|
||||
CanvasRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 2064630362}
|
||||
m_CullTransparentMesh: 1
|
||||
--- !u!114 &2064630367
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 2064630362}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 5013085c123fae4499f80b0a896f63af, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
scene: LevelSelect
|
||||
sceneAction: 0
|
||||
loadSceneMode: 0
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
37
Assets/Scripts/ChangeScene.cs
Normal file
37
Assets/Scripts/ChangeScene.cs
Normal file
@ -0,0 +1,37 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using UnityEngine.SceneManagement;
|
||||
|
||||
public class ChangeScene : MonoBehaviour
|
||||
{
|
||||
[Scene]
|
||||
public string scene;
|
||||
public SceneActionType sceneAction;
|
||||
public LoadSceneMode loadSceneMode;
|
||||
public enum SceneActionType
|
||||
{
|
||||
Load,
|
||||
Unload
|
||||
}
|
||||
public void LoadScene()
|
||||
{
|
||||
if (sceneAction == SceneActionType.Load)
|
||||
{
|
||||
SceneManager.LoadScene(scene, loadSceneMode);
|
||||
}
|
||||
else if (sceneAction == SceneActionType.Unload)
|
||||
{
|
||||
for (int i = 0; i < SceneManager.sceneCount; i++)
|
||||
{
|
||||
var scene = SceneManager.GetSceneAt(i);
|
||||
if (scene.name == this.scene)
|
||||
{
|
||||
SceneManager.UnloadSceneAsync(scene);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
11
Assets/Scripts/ChangeScene.cs.meta
Normal file
11
Assets/Scripts/ChangeScene.cs.meta
Normal file
@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 5013085c123fae4499f80b0a896f63af
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@ -5,7 +5,7 @@ public class ObjectPlaceholder : DraggablePlaceholder
|
||||
public GameObject Prefab { get; set; }
|
||||
public override void Place()
|
||||
{
|
||||
Prefab.Create(transform.position);
|
||||
Prefab.Create(transform.position, parent : LevelManager.Instance.LevelTransform);
|
||||
}
|
||||
public override bool CanBePlacedHere()
|
||||
{
|
||||
|
||||
@ -132,7 +132,12 @@ namespace GatherAndDefend.LevelEditor
|
||||
|
||||
//get grid
|
||||
var grid = GameObject.FindObjectOfType<Grid>();
|
||||
if (!grid) grid = new GameObject("Grid").AddComponent<Grid>();
|
||||
if (!grid)
|
||||
{
|
||||
var levelMgrScript = GameObject.FindObjectOfType<LevelManagerScript>();
|
||||
grid = new GameObject("Grid").AddComponent<Grid>();
|
||||
grid.transform.SetParent(levelMgrScript.transform.parent);
|
||||
}
|
||||
|
||||
//get tilemap by name
|
||||
var tilemap = grid.GetComponentInChildren<Tilemap>(key);
|
||||
|
||||
@ -96,8 +96,9 @@ public class LevelManager : Singleton<LevelManager>
|
||||
|
||||
#region [Level management]
|
||||
|
||||
public void UpdateLevel()
|
||||
public void AddAndRemoveObjects()
|
||||
{
|
||||
//add and remove
|
||||
var toAdd = new List<ILevelObject>(_toAdd);
|
||||
toAdd.ForEach(addedObject =>
|
||||
{
|
||||
@ -113,27 +114,18 @@ public class LevelManager : Singleton<LevelManager>
|
||||
_levelObjects.Remove(removedObject);
|
||||
removedObject.LevelDestroy();
|
||||
});
|
||||
}
|
||||
|
||||
public void UpdateLevel()
|
||||
{
|
||||
AddAndRemoveObjects();
|
||||
|
||||
_levelObjects.ForEach(levelObject =>
|
||||
{
|
||||
levelObject.LevelUpdate();
|
||||
});
|
||||
|
||||
toAdd = new List<ILevelObject>(_toAdd);
|
||||
toAdd.ForEach(addedObject =>
|
||||
{
|
||||
_toAdd.Remove(addedObject);
|
||||
_levelObjects.Add(addedObject);
|
||||
addedObject.LevelStart();
|
||||
});
|
||||
|
||||
toRemove = new List<ILevelObject>(_toRemove);
|
||||
toRemove.ForEach(removedObject =>
|
||||
{
|
||||
_toRemove.Remove(removedObject);
|
||||
_levelObjects.Remove(removedObject);
|
||||
removedObject.LevelDestroy();
|
||||
});
|
||||
AddAndRemoveObjects();
|
||||
}
|
||||
|
||||
public void ClearLevel()
|
||||
@ -162,7 +154,9 @@ public class LevelManager : Singleton<LevelManager>
|
||||
//create new grid if there is none
|
||||
if (!grid)
|
||||
{
|
||||
var levelMgrScript = Object.FindObjectOfType<LevelManagerScript>();
|
||||
grid = new GameObject("Grid").AddComponent<Grid>();
|
||||
grid.transform.SetParent(levelMgrScript.transform);
|
||||
}
|
||||
//remove all tilemaps if there is a grid
|
||||
else
|
||||
@ -199,11 +193,6 @@ public class LevelManager : Singleton<LevelManager>
|
||||
ClearLevel();
|
||||
}
|
||||
|
||||
foreach (var ob in Database.Instance.ScriptableObjects)
|
||||
{
|
||||
Debug.Log(ob);
|
||||
}
|
||||
|
||||
//fetch level from database
|
||||
_currentLevel = Database.Instance.ScriptableObjects[levelName] as Level;
|
||||
|
||||
@ -290,10 +279,5 @@ public class LevelManager : Singleton<LevelManager>
|
||||
|
||||
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// align camera to the rightmost tile of the tilemap
|
||||
/// </summary>
|
||||
|
||||
#endregion
|
||||
}
|
||||
@ -1,14 +1,15 @@
|
||||
using UnityEngine;
|
||||
using GatherAndDefend.LevelEditor;
|
||||
|
||||
public class LevelManagerScript : SingletonBehaviour<LevelManagerScript>
|
||||
using UnityEngine.SceneManagement;
|
||||
using Level = GatherAndDefend.LevelEditor.Level;
|
||||
public class LevelManagerScript : MonoBehaviour
|
||||
{
|
||||
public Level firstLevel;
|
||||
[Scene][SerializeField]
|
||||
private string _gameScene;
|
||||
[SerializeField]
|
||||
private Level _firstLevel;
|
||||
private void Start()
|
||||
{
|
||||
DontDestroyOnLoad(gameObject);
|
||||
if (!firstLevel) throw new System.Exception("there is no first level set in the level manager script");
|
||||
|
||||
LevelManager.Instance.LevelTransform = transform;
|
||||
int levelToLoadFromWorldMap = PlayerPrefs.GetInt("LevelToLoad", -1);
|
||||
if (levelToLoadFromWorldMap != -1)
|
||||
{
|
||||
@ -16,8 +17,14 @@ public class LevelManagerScript : SingletonBehaviour<LevelManagerScript>
|
||||
LevelManager.Instance.LoadLevel(lvlName, true);
|
||||
return;
|
||||
}
|
||||
|
||||
LevelManager.Instance.LoadLevel(firstLevel, true);
|
||||
else if (_firstLevel)
|
||||
{
|
||||
LevelManager.Instance.LoadLevel(_firstLevel, true);
|
||||
}
|
||||
else
|
||||
{
|
||||
Debug.LogWarning("there is no first level set in the level manager script");
|
||||
}
|
||||
}
|
||||
|
||||
void Update()
|
||||
|
||||
55
Assets/Scripts/SceneDrawer.cs
Normal file
55
Assets/Scripts/SceneDrawer.cs
Normal file
@ -0,0 +1,55 @@
|
||||
using UnityEditor;
|
||||
using UnityEngine;
|
||||
|
||||
|
||||
public class SceneAttribute : PropertyAttribute { }
|
||||
|
||||
[CustomPropertyDrawer(typeof(SceneAttribute))]
|
||||
public class SceneDrawer : PropertyDrawer
|
||||
{
|
||||
|
||||
public override void OnGUI(Rect position, SerializedProperty property, GUIContent label)
|
||||
{
|
||||
|
||||
if (property.propertyType == SerializedPropertyType.String)
|
||||
{
|
||||
var sceneObject = GetSceneObject(property.stringValue);
|
||||
var scene = EditorGUI.ObjectField(position, label, sceneObject, typeof(SceneAsset), true);
|
||||
if (scene == null)
|
||||
{
|
||||
property.stringValue = "";
|
||||
}
|
||||
else if (scene.name != property.stringValue)
|
||||
{
|
||||
var sceneObj = GetSceneObject(scene.name);
|
||||
if (sceneObj == null)
|
||||
{
|
||||
Debug.LogWarning("The scene " + scene.name + " cannot be used. To use this scene add it to the build settings for the project");
|
||||
}
|
||||
else
|
||||
{
|
||||
property.stringValue = scene.name;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
EditorGUI.LabelField(position, label.text, "Use [Scene] with strings.");
|
||||
}
|
||||
protected SceneAsset GetSceneObject(string sceneObjectName)
|
||||
{
|
||||
if (string.IsNullOrEmpty(sceneObjectName))
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
foreach (var editorScene in EditorBuildSettings.scenes)
|
||||
{
|
||||
if (editorScene.path.IndexOf(sceneObjectName) != -1)
|
||||
{
|
||||
return AssetDatabase.LoadAssetAtPath(editorScene.path, typeof(SceneAsset)) as SceneAsset;
|
||||
}
|
||||
}
|
||||
Debug.LogWarning("Scene [" + sceneObjectName + "] cannot be used. Add this scene to the 'Scenes in the Build' in build settings.");
|
||||
return null;
|
||||
}
|
||||
}
|
||||
11
Assets/Scripts/SceneDrawer.cs.meta
Normal file
11
Assets/Scripts/SceneDrawer.cs.meta
Normal file
@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 389cc3c423055324fb8d7de50f62f709
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@ -16,6 +16,8 @@ public class WorldMapManager : MonoBehaviour
|
||||
private Sprite _lockedIcon;
|
||||
[SerializeField]
|
||||
private Sprite _savedIcon;
|
||||
[Scene][SerializeField]
|
||||
private string gameScene;
|
||||
|
||||
private WorldMapSave _worldMapSave;
|
||||
|
||||
@ -70,12 +72,10 @@ public class WorldMapManager : MonoBehaviour
|
||||
|
||||
public void CallLevelWorld1(int levelToCall)
|
||||
{
|
||||
string levelToGet = "1-" + levelToCall;
|
||||
if (_buttonList[levelToCall - 1].GetComponent<Image>().sprite.name != "worldmap_level_locked")
|
||||
{
|
||||
PlayerPrefs.SetInt("LevelToLoad", levelToCall);
|
||||
SceneManager.LoadScene("Game");
|
||||
//LevelManager.Instance.LoadLevel(levelToGet, true);
|
||||
SceneManager.LoadScene(gameScene);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user