@@ -2,33 +2,51 @@
using System.Collections;
using UnityEngine.Events;
using System.Collections.Generic;
using FullInspector;

namespace CCC.Manager
{
public class BaseManager : MonoBehaviour
/// <summary>
/// NE PAS HÉRITER DIRECTEMENT DE CETTE CLASSE. UTILIEZ BaseManager(T)
/// </summary>
public abstract class BaseManager : BaseBehavior
{
static public BaseManager instance;
public class BaseManagerEvent: UnityEvent<BaseManager> { }
public abstract void Init();
public class BaseManagerEvent : UnityEvent<BaseManager> { }
[HideInInspector]
public BaseManagerEvent onCompleteInit = new BaseManagerEvent();
[HideInInspector]
public bool initComplete = false;

protected virtual void Awake()
protected void CompleteInit()
{
instance = this;
DontDestroyOnLoad(gameObject);
initComplete = true;
onCompleteInit.Invoke(this);
}
}
public abstract class BaseManager<T> : BaseManager where T :class
{
static public T instance;

public virtual void Init()
protected override void Awake()
{
base.Awake();

}
if (!(this is T))
{
Debug.LogError("Trying to make a BaseManager<" + typeof(T).Name + "> but instance is a " + this.GetType().Name + ".");
return;
}

protected void CompleteInit()
{
initComplete = true;
onCompleteInit.Invoke(this);
if (instance == null)
{
instance = this as T;
DontDestroyOnLoad(gameObject);
}
else
{
Destroy(this.gameObject);
}
}
}
}
@@ -4,29 +4,26 @@

namespace CCC.Manager
{
public class DelayManager : BaseManager
public class DelayManager : BaseManager<DelayManager>
{
static DelayManager manager;

static public void CallTo(UnityAction action, float delay, bool realTime = true)
{
if (manager == null)
if (instance == null)
{
Debug.LogError("Tried to call a delay, but the manager is null. Was it properly loaded by MasterManager ?");
return;
}
manager.InstanceCallTo(action, delay, realTime);
instance.InstanceCallTo(action, delay, realTime);
}

protected override void Awake()
{
base.Awake();
manager = this;
instance = this;
}

public override void Init()
{
base.Init();
CompleteInit();
}

This file was deleted.

@@ -1,67 +1,34 @@
using UnityEngine;
using System.Collections;
using UnityEngine.Events;
using System.Collections.Generic;
using System.Collections.Generic;
using CCC.Input;

namespace CCC.Manager
{
public class InputManager : BaseManager
public class InputManager : BaseBankManager<InputMapping>
{
[SerializeField]
private InputBank bank;
public bool overwriteDefaultsOnLaunch = true;

public override void Init()
{
base.Init();
bank.SaveAsDefaults();
Load();
CompleteInit();
}
List<InputMapping> startMappings = ToList();

/// <summary>
/// Set the specified key to the specified keycode. This does not save the change permanently. Call Save() if necessary.
/// </summary>
public void SetKey(Key key, KeyCode to)
{
bank.SetKey(key, to);
}
//Ceci marche parce que le jeu va toujours load avec les parametre preset du scriptableObject
if (overwriteDefaultsOnLaunch)
foreach (InputMapping mapping in startMappings)
{
mapping.SaveAsDefaults();
}

/// <summary>
/// Return TRUE if there is a conlfict.
/// </summary>
public bool CheckConflict(Key key, KeyCode newKeycode)
{
foreach(Key akey in bank.keys)
foreach (InputMapping mapping in startMappings)
{
if (akey != key && akey.GetKeyCode() == newKeycode) return true;
mapping.Load();
}
return false;
}

public Key GetKeyByName(string name)
{
return bank.GetKeyByName(name);
}

public List<Key> GetAllKeys() { return bank.keys; }

#region Load/Save

public void LoadDefaults()
{
bank.LoadDefaults();
}

public void Load()
{
bank.Load();
CompleteInit();
}

public void Save()
protected override string Convert(InputMapping obj)
{
bank.Save();
return obj.name;
}

#endregion
}
}
@@ -5,12 +5,11 @@

namespace CCC.Manager
{
public class MainThread : BaseManager
public class MainThread : BaseManager<MainThread>
{
static List<UnityAction> actionList = new List<UnityAction>();
public override void Init()
{
base.Init();
CompleteInit();
}

@@ -6,7 +6,7 @@

namespace CCC.Manager
{
public class Scenes : BaseManager
public class Scenes : BaseManager<Scenes>
{
class ScenePromise
{
@@ -24,7 +24,6 @@ public ScenePromise(string name, UnityAction<Scene> callback)

public override void Init()
{
base.Init();
SceneManager.sceneLoaded += OnSceneLoading;
CompleteInit();
}
@@ -12,9 +12,8 @@

namespace CCC.Manager
{
public class SoundManager : BaseManager
public class SoundManager : BaseManager<SoundManager>
{
new static SoundManager instance;
[System.Serializable]
public class VolumeSave
{
@@ -37,7 +36,6 @@ protected override void Awake()

public override void Init()
{
base.Init();
Load();
CompleteInit();
}
@@ -1,6 +1,6 @@
using UnityEngine;

[CreateAssetMenu(menuName = "SpriteBank")]
[CreateAssetMenu(menuName = "CCC/SpriteBank")]
public class SpriteBank : ScriptableObject
{
static private SpriteBank instance;
@@ -1,12 +1,11 @@

namespace CCC.Manager
{
public class SpriteBankManager : BaseManager
public class SpriteBankManager : BaseManager<SpriteBankManager>
{
public SpriteBank bank;
public override void Init()
{
base.Init();
bank.SetAsInstance();
CompleteInit();
}
@@ -0,0 +1,315 @@
//using UnityEngine;
//using System.Collections;
//using System.Collections.Generic;
//using UnityEngine.Events;
//using System.Runtime.Serialization.Formatters.Binary;
//using System.IO;

//#if UNITY_EDITOR
//using UnityEditor;
//#endif
//namespace CCC.Manager
//{
// [System.Serializable]
// public class KeySave
// {
// public string keyName;
// public KeyCode keycode = KeyCode.Exclaim;

// public KeySave(string name, KeyCode keycode)
// {
// this.keyName = name;
// this.keycode = keycode;
// }
// }

// [System.Serializable]
// public class Key
// {
// [SerializeField]
// string name;
// [SerializeField]
// KeyCode keyCode = KeyCode.Exclaim;
// public bool openInInspector = false;
// public UnityEvent onModify = new UnityEvent();

// public static bool CompareName(Key a, Key b)
// {
// return a.name == b.name;
// }

// public Key(string name, KeyCode keycode)
// {
// this.name = name;
// this.keyCode = keycode;
// }

// public void Copy(Key key)
// {
// name = key.name;
// keyCode = key.keyCode;
// }

// public KeyCode GetKeyCode() { return keyCode; }
// public void SetKeyCode(KeyCode keycode)
// {
// this.keyCode = keycode;
// onModify.Invoke();
// }
// public string GetName() { return name; }
// public void SetName(string name)
// {
// if (Application.isPlaying)
// {
// Debug.LogError("Cannot modify the name of a Key in runtime.");
// return;
// }
// this.name = name;
// }

// public bool GetDown()
// {
// return Input.GetKeyDown(keyCode);
// }
// public bool GetUp()
// {
// return Input.GetKeyUp(keyCode);
// }
// public bool Get()
// {
// return Input.GetKey(keyCode);
// }
// }

// [CreateAssetMenu(menuName = "Input Bank")]
// public class InputBank : ScriptableObject
// {
// [System.Serializable]
// public class SaveClass
// {
// public List<KeySave> keySaves = new List<KeySave>();

// public KeySave Get(Key key)
// {
// foreach (KeySave keySave in keySaves)
// {
// if (keySave.keyName == key.GetName()) return keySave;
// }
// return null;
// }

// public void Set(Key key)
// {
// //Vérifier si la save existe déjà, si oui, la remplacer
// KeySave keySave = Get(key);
// if (keySave == null)
// {
// keySave = new KeySave(key.GetName(), key.GetKeyCode());
// keySaves.Add(keySave);
// }
// else
// {
// keySave.keycode = key.GetKeyCode();
// }
// }

// public void CopyFrom(SaveClass save)
// {
// this.keySaves = save.keySaves;
// }
// }

// public static string defaultKeysPath = "/defaultKeys.dat";
// public static string playerKeysPath = "/playerKeys.dat";
// //public Dictionary<string, KeyCode> keys = new Dictionary<string, KeyCode>();
// public List<Key> keys;
// SaveClass save = new SaveClass();

// public Key GetKeyByName(string name)
// {
// foreach (Key key in keys)
// {
// if (key.GetName() == name) return key;
// }
// return null;
// }

// public void SetKey(Key key, KeyCode to)
// {
// key.SetKeyCode(to);
// save.Set(key);
// }

// public void MoveBy(Key key, int amount)
// {
// if (!keys.Contains(key)) return;

// int a = keys.IndexOf(key);
// int b = a + amount;
// b = Mathf.Clamp(b, 0, keys.Count - 1);
// if (a == b) return;

// Key bKey = keys[b];

// keys.Remove(key);
// keys.Insert(b, key);
// keys.Remove(bKey);
// keys.Insert(a, bKey);
// }

// public void Save()
// {
// SaveTo(Application.persistentDataPath + playerKeysPath);
// }

// public void SaveAsDefaults()
// {
// save.keySaves = new List<KeySave>();
// foreach (Key key in keys)
// {
// save.Set(key);
// }
// SaveTo(Application.persistentDataPath + defaultKeysPath);
// }

// public bool Load()
// {
// return LoadFrom(Application.persistentDataPath + playerKeysPath);
// }

// public void LoadDefaults()
// {
// LoadFrom(Application.persistentDataPath + defaultKeysPath);
// }

// public void ClearDefaults()
// {
// if (Application.isPlaying)
// {
// Debug.LogError("Should not SaveAsDefaults while application is running.");
// return;
// }

// if (File.Exists(Application.persistentDataPath + defaultKeysPath))
// {
// File.Delete(Application.persistentDataPath + defaultKeysPath);
// }
// save.keySaves = new List<KeySave>();
// }

// private void SaveTo(string path)
// {
// BinaryFormatter bf = new BinaryFormatter();
// FileStream file = File.Open(path, FileMode.OpenOrCreate);
// bf.Serialize(file, save);
// file.Close();
// }

// private bool LoadFrom(string path)
// {
// if (File.Exists(path))
// {
// //Load class
// BinaryFormatter bf = new BinaryFormatter();
// FileStream file = File.Open(path, FileMode.Open);
// SaveClass saveCopy = (SaveClass)bf.Deserialize(file);
// save.CopyFrom(saveCopy);

// //Apply class to 'keys'
// foreach (KeySave keySave in save.keySaves)
// {
// Key key = GetKeyByName(keySave.keyName);
// if (key != null) key.SetKeyCode(keySave.keycode);
// }
// file.Close();

// return true;
// }
// return false;
// }
// }

//#if UNITY_EDITOR
// [CustomEditor(typeof(InputBank))]
// public class InputBankEditor : Editor
// {
// public override void OnInspectorGUI()
// {
// //base.OnInspectorGUI();
// InputBank bank = target as InputBank;

// //Create List
// if (bank.keys == null)
// {
// bank.keys = new List<Key>();
// }

// //Keys
// for (int i = 0; i < bank.keys.Count; i++)
// {
// if (i >= bank.keys.Count) continue;

// Key key = bank.keys[i];

// key.openInInspector = EditorGUILayout.Foldout(key.openInInspector, "key: " + key.GetName());

// if (key.openInInspector)
// {
// key.SetName(EditorGUILayout.TextField("name", key.GetName()));
// key.SetKeyCode((KeyCode)EditorGUILayout.EnumPopup("KeyCode", key.GetKeyCode()));
// GUILayout.BeginHorizontal();
// if (!Application.isPlaying && GUILayout.Button("Remove", GUILayout.Width(100)))
// {
// bank.keys.Remove(key); // Remove Key
// }
// if (GUILayout.Button("^", GUILayout.Width(30)))
// {
// bank.MoveBy(key, -1); // Move up
// }//
// if (GUILayout.Button("v", GUILayout.Width(30)))
// {
// bank.MoveBy(key, 1); // Move down
// }

// GUILayout.EndHorizontal();
// EditorGUILayout.Space();
// }
// }

// //Add Key
// EditorGUILayout.Space();
// EditorGUILayout.Space();

// if (!Application.isPlaying && GUILayout.Button("Add Key"))
// {
// bank.keys.Add(new Key("", KeyCode.Asterisk)); // Add
// }
// EditorGUILayout.Space();
// EditorGUILayout.Space();

// GUILayout.BeginHorizontal();
// if (!Application.isPlaying && GUILayout.Button("Save as defaults"))
// {
// bank.SaveAsDefaults();
// AssetDatabase.SaveAssets();
// Debug.LogWarning("Default keys saved to: " + Application.persistentDataPath + InputBank.defaultKeysPath);
// }

// if (!Application.isPlaying && GUILayout.Button("Load from defaults"))
// {
// bank.LoadDefaults();
// Debug.LogWarning("Default keys loaded from: " + Application.persistentDataPath + InputBank.defaultKeysPath);
// }

// if (!Application.isPlaying && GUILayout.Button("Clear defaults"))
// {
// bank.ClearDefaults();
// Debug.LogWarning("Default keys loaded from: " + Application.persistentDataPath + InputBank.defaultKeysPath);
// }
// GUILayout.EndHorizontal();

// EditorUtility.SetDirty(bank);
// }
// }
//#endif
//}
File renamed without changes.
@@ -0,0 +1,66 @@
//using UnityEngine;
//using System.Collections;
//using UnityEngine.Events;
//using System.Collections.Generic;

//namespace CCC.Manager
//{
// public class InputManager : BaseManager<InputManager>
// {
// [SerializeField]
// private InputBank bank;

// public override void Init()
// {
// bank.SaveAsDefaults();
// Load();
// CompleteInit();
// }

// /// <summary>
// /// Set the specified key to the specified keycode. This does not save the change permanently. Call Save() if necessary.
// /// </summary>
// public void SetKey(Key key, KeyCode to)
// {
// bank.SetKey(key, to);
// }

// /// <summary>
// /// Return TRUE if there is a conlfict.
// /// </summary>
// public bool CheckConflict(Key key, KeyCode newKeycode)
// {
// foreach(Key akey in bank.keys)
// {
// if (akey != key && akey.GetKeyCode() == newKeycode) return true;
// }
// return false;
// }

// public Key GetKeyByName(string name)
// {
// return bank.GetKeyByName(name);
// }

// public List<Key> GetAllKeys() { return bank.keys; }

// #region Load/Save

// public void LoadDefaults()
// {
// bank.LoadDefaults();
// }

// public void Load()
// {
// bank.Load();
// }

// public void Save()
// {
// bank.Save();
// }

// #endregion
// }
//}
@@ -51,6 +51,12 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: c001838f3aa5aa84abffe4a891b117c2, type: 3}
m_Name:
m_EditorClassIdentifier:
_objectReferences: []
_serializedStateKeys:
- onCompleteInit
_serializedStateValues:
- '{"m_PersistentCalls":{"m_Calls":[]},"m_TypeName":"CCC.Manager.BaseManager+BaseManagerEvent,
Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null"}'
initComplete: 0
--- !u!114 &114819508062346158
MonoBehaviour:
@@ -63,4 +69,10 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: c001838f3aa5aa84abffe4a891b117c2, type: 3}
m_Name:
m_EditorClassIdentifier:
_objectReferences: []
_serializedStateKeys:
- onCompleteInit
_serializedStateValues:
- '{"m_PersistentCalls":{"m_Calls":[]},"m_TypeName":"CCC.Manager.BaseManager+BaseManagerEvent,
Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null"}'
initComplete: 0

This file was deleted.

@@ -1,68 +1,71 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &-1401182164
--- !u!1001 &100100000
Prefab:
m_ObjectHideFlags: 1
serializedVersion: 2
m_Modification:
m_TransformParent: {fileID: 0}
m_Modifications: []
m_RemovedComponents: []
m_ParentPrefab: {fileID: 0}
m_RootGameObject: {fileID: 1570502827218702}
m_IsPrefabParent: 1
--- !u!1 &1570502827218702
GameObject:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
serializedVersion: 5
m_Component:
- component: {fileID: 472916}
- component: {fileID: 114653878517780566}
- component: {fileID: 4799831621495600}
- component: {fileID: 114013571490058024}
m_Layer: 0
m_Name: InputManager
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!114 &-540044652
MonoBehaviour:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 8d97fd119083ccc448e3cebecb6eb4e3, type: 3}
m_Name:
m_EditorClassIdentifier:
initComplete: 0
bank: {fileID: 11400000, guid: 59676288ca4706c40885f955e4af0ef4, type: 2}
--- !u!4 &472916
--- !u!4 &4799831621495600
Transform:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: -1401182164}
m_GameObject: {fileID: 1570502827218702}
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_Children: []
m_Father: {fileID: 0}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1001 &100100000
Prefab:
m_ObjectHideFlags: 1
serializedVersion: 2
m_Modification:
m_TransformParent: {fileID: 0}
m_Modifications: []
m_RemovedComponents: []
m_ParentPrefab: {fileID: 0}
m_RootGameObject: {fileID: 0}
m_IsPrefabParent: 1
--- !u!114 &114653878517780566
--- !u!114 &114013571490058024
MonoBehaviour:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: -1401182164}
m_GameObject: {fileID: 1570502827218702}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 8d97fd119083ccc448e3cebecb6eb4e3, type: 3}
m_Script: {fileID: 11500000, guid: fab78f0b1fcff1241afa5c1b1d0db9d0, type: 3}
m_Name:
m_EditorClassIdentifier:
_objectReferences:
- {fileID: 11400000, guid: d128cca74f3a75e48ab9f6d3c5857bc8, type: 2}
_serializedStateKeys:
- onCompleteInit
- bank
- addList
- removeList
_serializedStateValues:
- '{"m_PersistentCalls":{"m_Calls":[]},"m_TypeName":"CCC.Manager.BaseManager+BaseManagerEvent,
Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null"}'
- '{"InputMapping_Test":0}'
- '[]'
- '[]'
initComplete: 0
bank: {fileID: 11400000, guid: 59676288ca4706c40885f955e4af0ef4, type: 2}
addList: []
removeList: []
removeElement:
overwriteDefaultsOnLaunch: 1
@@ -0,0 +1,18 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: b943fb073374d2f4f8281144aa5409ba, type: 3}
m_Name: InputMapping_Test
m_EditorClassIdentifier:
_objectReferences: []
_serializedStateKeys:
- keys
_serializedStateValues:
- '{"Fire":{"primary":{"first":"Mouse0","second":"None"},"secondary":{"first":"None","second":"None"}},"Run":{"primary":{"first":"Quote","second":"None"},"secondary":{"first":"None","second":"None"}},"Jump":{"primary":{"first":"Plus","second":"None"},"secondary":{"first":"None","second":"None"}}}'
@@ -0,0 +1,60 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1001 &100100000
Prefab:
m_ObjectHideFlags: 1
serializedVersion: 2
m_Modification:
m_TransformParent: {fileID: 0}
m_Modifications: []
m_RemovedComponents: []
m_ParentPrefab: {fileID: 0}
m_RootGameObject: {fileID: 1144916879850256}
m_IsPrefabParent: 1
--- !u!1 &1144916879850256
GameObject:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
serializedVersion: 5
m_Component:
- component: {fileID: 4880852366607112}
- component: {fileID: 114509703560827570}
m_Layer: 0
m_Name: MainThread
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &4880852366607112
Transform:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 1144916879850256}
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_Children: []
m_Father: {fileID: 0}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &114509703560827570
MonoBehaviour:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 1144916879850256}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 972ae13c1abcf2a4f9b099ee20f504f1, type: 3}
m_Name:
m_EditorClassIdentifier:
_objectReferences: []
_serializedStateKeys:
- onCompleteInit
_serializedStateValues:
- '{"m_PersistentCalls":{"m_Calls":[]},"m_TypeName":"CCC.Manager.BaseManager+BaseManagerEvent,
Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null"}'
initComplete: 0
@@ -0,0 +1,60 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1001 &100100000
Prefab:
m_ObjectHideFlags: 1
serializedVersion: 2
m_Modification:
m_TransformParent: {fileID: 0}
m_Modifications: []
m_RemovedComponents: []
m_ParentPrefab: {fileID: 0}
m_RootGameObject: {fileID: 1296570520514928}
m_IsPrefabParent: 1
--- !u!1 &1296570520514928
GameObject:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
serializedVersion: 5
m_Component:
- component: {fileID: 4011933865959188}
- component: {fileID: 114867773809360870}
m_Layer: 0
m_Name: Scenes
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &4011933865959188
Transform:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 1296570520514928}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 1.7773414, y: 4.56221, z: -2.4332676}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &114867773809360870
MonoBehaviour:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 1296570520514928}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: c12ce9f34b7a60e4db1351b311e39651, type: 3}
m_Name:
m_EditorClassIdentifier:
_objectReferences: []
_serializedStateKeys:
- onCompleteInit
_serializedStateValues:
- '{"m_PersistentCalls":{"m_Calls":[]},"m_TypeName":"CCC.Manager.BaseManager+BaseManagerEvent,
Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null"}'
initComplete: 0
@@ -384,6 +384,14 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: fa093b00f2d299c43942743a714fdaa8, type: 3}
m_Name:
m_EditorClassIdentifier:
_objectReferences: []
_serializedStateKeys:
- onCompleteInit
- save
_serializedStateValues:
- '{"m_PersistentCalls":{"m_Calls":[]},"m_TypeName":"CCC.Manager.BaseManager+BaseManagerEvent,
Assembly-CSharp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null"}'
- '{"master":0.0,"voice":0.0,"sfx":0.0,"music":0.0}'
initComplete: 0
stdSource: {fileID: 82000013686115900}
musicSource: {fileID: 82000010634974186}

This file was deleted.

This file was deleted.

@@ -1,6 +1,4 @@
using UnityEngine;
using System.Collections;
using CCC.Utility;
using System.Collections.Generic;
using FullInspector;

@@ -17,7 +15,7 @@ public abstract class Bank<T> : Singleton<Bank<T>>
public string removeElement;

[InspectorButton(), InspectorOrder(2), InspectorHideIf("HidePushList")]
private void PushList()
protected void PushList()
{
if (!Application.isEditor)
return;
@@ -29,7 +27,7 @@ private void PushList()
addList.Clear();
}
[InspectorButton(), InspectorOrder(4), InspectorHideIf("HideRemoveFromList")]
private void RemoveFromList()
protected void RemoveFromList()
{
if (!Application.isEditor)
return;
@@ -42,7 +40,7 @@ private void RemoveFromList()
removeList.Clear();
}
[InspectorButton(), InspectorOrder(5)]
private void RebuildBankIds()
protected void RebuildBankIds()
{
if (!Application.isEditor)
return;
@@ -69,17 +67,17 @@ private bool HideRemoveFromList()
return removeElement == "" && removeList.Count <= 0;
}

private bool LocalRemove(string id)
protected bool LocalRemove(string id)
{
if (string.IsNullOrEmpty(id))
return false;
return bank.Remove(id);
}
private bool LocalRemove(T obj)
protected bool LocalRemove(T obj)
{
return bank.Remove(Convert(obj));
}
private void LocalAdd(T item)
protected void LocalAdd(T item)
{
string id = Convert(item);
if (string.IsNullOrEmpty(id))
@@ -90,22 +88,22 @@ private void LocalAdd(T item)
bank.Add(id, item);
}

private bool LocalHas(string id)
protected bool LocalHas(string id)
{
return bank.ContainsKey(id);
}
private bool LocalHas(T obj)
protected bool LocalHas(T obj)
{
return bank.ContainsValue(obj);
}
private T LocalGet(string id)
protected T LocalGet(string id)
{
if (LocalHas(id))
return bank[id];
else
return default(T);
}
private T LocalGetRandom()
protected T LocalGetRandom()
{
int index = Random.Range(0, bank.Count);
Dictionary<string, T>.ValueCollection.Enumerator enumerator = bank.Values.GetEnumerator();
@@ -120,6 +118,17 @@ private T LocalGetRandom()

return default(T);
}
protected List<T> LocalToList()
{
List<T> list = new List<T>(bank.Count);
Dictionary<string, T>.ValueCollection.Enumerator enumerator = bank.Values.GetEnumerator();

while (enumerator.MoveNext())
{
list.Add(enumerator.Current);
}
return list;
}

abstract protected string Convert(T obj);

@@ -129,5 +138,6 @@ private T LocalGetRandom()
static public bool Remove(T item) { return instance.LocalRemove(item); }
static public bool Has(string id) { return instance.LocalHas(id); }
static public bool Has(T item) { return instance.LocalHas(item); }
static public List<T> ToList() { return instance.LocalToList(); }
static public T GetRandom() { return instance.LocalGetRandom(); }
}
@@ -37,6 +37,12 @@ static public void ThreadLoad(string path, UnityAction<object> onComplete)

static void ThreadLoadMethod(string path, UnityAction<object> onComplete)
{
if (!Exists(path))
{
onComplete.Invoke(null);
return;
}

BinaryFormatter bf = new BinaryFormatter();
FileStream file = File.Open(path, FileMode.Open);
object obj = bf.Deserialize(file);
@@ -62,6 +68,8 @@ static public void InstantSave(string path, object graph)

static public object InstantLoad(string path)
{
if (!Exists(path))
return null;
BinaryFormatter bf = new BinaryFormatter();
FileStream file = File.Open(path, FileMode.Open);
object obj = bf.Deserialize(file);
@@ -74,9 +82,13 @@ static public bool Exists(string path)
return File.Exists(path);
}

static public void Delete(string path)
static public bool Delete(string path)
{
if (!Exists(path))
return false;

File.Delete(path);
return true;
}
}
}
@@ -19,6 +19,8 @@ GameObject:
serializedVersion: 5
m_Component:
- component: {fileID: 4578759684849362}
- component: {fileID: 114886422775329900}
- component: {fileID: 114891865049736824}
m_Layer: 0
m_Name: fiPersistentEditorStorage
m_TagString: Untagged
@@ -39,3 +41,86 @@ Transform:
m_Father: {fileID: 0}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &114886422775329900
MonoBehaviour:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 1643334539454102}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: f3b5fe0e79f64584a83676f21be2d2a7, type: 3}
m_Name:
m_EditorClassIdentifier:
_keys:
- {fileID: 11400000, guid: d128cca74f3a75e48ab9f6d3c5857bc8, type: 2}
- {fileID: 114819508062346158, guid: db9f7109b6145274db92b091807919fa, type: 2}
- {fileID: 114013571490058024, guid: 527ea6377c522924b99d7b47e967edd0, type: 2}
- {fileID: 114867773809360870, guid: 22da252712b18d8418e5c287dafe097b, type: 2}
- {fileID: 114509703560827570, guid: 4dda4e5581d9b9647bb900b538f28843, type: 2}
_values:
- _keys: []
_values: []
_target: {fileID: 11400000, guid: d128cca74f3a75e48ab9f6d3c5857bc8, type: 2}
- _keys: []
_values: []
_target: {fileID: 114819508062346158, guid: db9f7109b6145274db92b091807919fa,
type: 2}
- _keys:
- DefaultBehaviorEditor.bank.EditProperty
- DefaultBehaviorEditor.addList.EditProperty
- DefaultBehaviorEditor.removeList.EditProperty
_values:
- _showDropdown: 0
_serializedIsActive: 1
- _showDropdown: 0
_serializedIsActive: 1
- _showDropdown: 0
_serializedIsActive: 1
_target: {fileID: 114013571490058024, guid: 527ea6377c522924b99d7b47e967edd0,
type: 2}
- _keys: []
_values: []
_target: {fileID: 114867773809360870, guid: 22da252712b18d8418e5c287dafe097b,
type: 2}
- _keys: []
_values: []
_target: {fileID: 114509703560827570, guid: 4dda4e5581d9b9647bb900b538f28843,
type: 2}
--- !u!114 &114891865049736824
MonoBehaviour:
m_ObjectHideFlags: 1
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 100100000}
m_GameObject: {fileID: 1643334539454102}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: be205b8c5a2f88c408c5e5343719637c, type: 3}
m_Name:
m_EditorClassIdentifier:
_keys:
- {fileID: 11400000, guid: d128cca74f3a75e48ab9f6d3c5857bc8, type: 2}
- {fileID: 114819508062346158, guid: db9f7109b6145274db92b091807919fa, type: 2}
- {fileID: 114013571490058024, guid: 527ea6377c522924b99d7b47e967edd0, type: 2}
- {fileID: 114867773809360870, guid: 22da252712b18d8418e5c287dafe097b, type: 2}
- {fileID: 114509703560827570, guid: 4dda4e5581d9b9647bb900b538f28843, type: 2}
_values:
- _keys: []
_values: []
_target: {fileID: 11400000, guid: d128cca74f3a75e48ab9f6d3c5857bc8, type: 2}
- _keys: []
_values: []
_target: {fileID: 114819508062346158, guid: db9f7109b6145274db92b091807919fa,
type: 2}
- _keys: []
_values: []
_target: {fileID: 114013571490058024, guid: 527ea6377c522924b99d7b47e967edd0,
type: 2}
- _keys: []
_values: []
_target: {fileID: 114867773809360870, guid: 22da252712b18d8418e5c287dafe097b,
type: 2}
- _keys: []
_values: []
_target: {fileID: 114509703560827570, guid: 4dda4e5581d9b9647bb900b538f28843,
type: 2}
@@ -331,8 +331,20 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: be205b8c5a2f88c408c5e5343719637c, type: 3}
m_Name:
m_EditorClassIdentifier:
_keys: []
_values: []
_keys:
- {fileID: 11400000, guid: d128cca74f3a75e48ab9f6d3c5857bc8, type: 2}
- {fileID: 0}
- {fileID: 1818360623}
_values:
- _keys: []
_values: []
_target: {fileID: 11400000, guid: d128cca74f3a75e48ab9f6d3c5857bc8, type: 2}
- _keys: []
_values: []
_target: {fileID: 0}
- _keys: []
_values: []
_target: {fileID: 1818360623}
--- !u!114 &967333607
MonoBehaviour:
m_ObjectHideFlags: 1
@@ -344,8 +356,20 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: f3b5fe0e79f64584a83676f21be2d2a7, type: 3}
m_Name:
m_EditorClassIdentifier:
_keys: []
_values: []
_keys:
- {fileID: 11400000, guid: d128cca74f3a75e48ab9f6d3c5857bc8, type: 2}
- {fileID: 0}
- {fileID: 1818360623}
_values:
- _keys: []
_values: []
_target: {fileID: 11400000, guid: d128cca74f3a75e48ab9f6d3c5857bc8, type: 2}
- _keys: []
_values: []
_target: {fileID: 0}
- _keys: []
_values: []
_target: {fileID: 1818360623}
--- !u!4 &967333608
Transform:
m_ObjectHideFlags: 1
@@ -359,80 +383,6 @@ Transform:
m_Father: {fileID: 0}
m_RootOrder: 3
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &995722843
GameObject:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
serializedVersion: 5
m_Component:
- component: {fileID: 995722846}
- component: {fileID: 995722845}
- component: {fileID: 995722844}
m_Layer: 5
m_Name: Text
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!114 &995722844
MonoBehaviour:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 995722843}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 708705254, guid: f70555f144d8491a825f0804e09c671c, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1}
m_RaycastTarget: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
m_FontData:
m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0}
m_FontSize: 14
m_FontStyle: 0
m_BestFit: 0
m_MinSize: 10
m_MaxSize: 40
m_Alignment: 0
m_AlignByGeometry: 0
m_RichText: 1
m_HorizontalOverflow: 0
m_VerticalOverflow: 0
m_LineSpacing: 1
m_Text: New Text
--- !u!222 &995722845
CanvasRenderer:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 995722843}
--- !u!224 &995722846
RectTransform:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 995722843}
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_Children: []
m_Father: {fileID: 1818360622}
m_RootOrder: 2
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: 0, y: 0}
m_SizeDelta: {x: 160, y: 30}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!1 &1073949382
GameObject:
m_ObjectHideFlags: 0
@@ -461,74 +411,6 @@ Transform:
m_Father: {fileID: 0}
m_RootOrder: 4
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &1445921568
GameObject:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
serializedVersion: 5
m_Component:
- component: {fileID: 1445921571}
- component: {fileID: 1445921570}
- component: {fileID: 1445921569}
m_Layer: 5
m_Name: Image1
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!114 &1445921569
MonoBehaviour:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1445921568}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
m_Sprite: {fileID: 0}
m_Type: 0
m_PreserveAspect: 0
m_FillCenter: 1
m_FillMethod: 4
m_FillAmount: 1
m_FillClockwise: 1
m_FillOrigin: 0
--- !u!222 &1445921570
CanvasRenderer:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1445921568}
--- !u!224 &1445921571
RectTransform:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1445921568}
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_Children: []
m_Father: {fileID: 1818360622}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0.5}
m_AnchorMax: {x: 0, y: 0.5}
m_AnchoredPosition: {x: 200, y: 0}
m_SizeDelta: {x: 100, y: 100}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!1 &1635034170
GameObject:
m_ObjectHideFlags: 1
@@ -582,7 +464,6 @@ GameObject:
- component: {fileID: 1818360620}
- component: {fileID: 1818360619}
- component: {fileID: 1818360623}
- component: {fileID: 1818360624}
m_Layer: 5
m_Name: Canvas
m_TagString: Untagged
@@ -655,10 +536,7 @@ RectTransform:
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 0, y: 0, z: 0}
m_Children:
- {fileID: 1445921571}
- {fileID: 1891362690}
- {fileID: 995722846}
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 5
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
@@ -678,89 +556,6 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: ce29cb859d78b634c9d7b447327d88d7, type: 3}
m_Name:
m_EditorClassIdentifier:
skippedUpdates: 5
skippedFixedUpdates: 5
image1: {fileID: 1445921569}
image2: {fileID: 1891362688}
--- !u!114 &1818360624
MonoBehaviour:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1818360618}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: f64cd9b3f6620564089f2922f5c3be05, type: 3}
m_Name:
m_EditorClassIdentifier:
skippedUpdates: 5
skippedFixedUpdates: 5
display: {fileID: 995722844}
--- !u!1 &1891362687
GameObject:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
serializedVersion: 5
m_Component:
- component: {fileID: 1891362690}
- component: {fileID: 1891362689}
- component: {fileID: 1891362688}
m_Layer: 5
m_Name: Image2
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!114 &1891362688
MonoBehaviour:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1891362687}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_TypeName: UnityEngine.UI.MaskableGraphic+CullStateChangedEvent, UnityEngine.UI,
Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
m_Sprite: {fileID: 0}
m_Type: 0
m_PreserveAspect: 0
m_FillCenter: 1
m_FillMethod: 4
m_FillAmount: 1
m_FillClockwise: 1
m_FillOrigin: 0
--- !u!222 &1891362689
CanvasRenderer:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1891362687}
--- !u!224 &1891362690
RectTransform:
m_ObjectHideFlags: 0
m_PrefabParentObject: {fileID: 0}
m_PrefabInternal: {fileID: 0}
m_GameObject: {fileID: 1891362687}
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_Children: []
m_Father: {fileID: 1818360622}
m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 1, y: 0.5}
m_AnchorMax: {x: 1, y: 0.5}
m_AnchoredPosition: {x: -200, y: 0}
m_SizeDelta: {x: 100, y: 100}
m_Pivot: {x: 0.5, y: 0.5}
_objectReferences: []
_serializedStateKeys: []
_serializedStateValues: []