Files
UltimateFishing/Assets/Scripts/Assembly-CSharp/LE_LevelEditor/UI/LE_GUIInterface.cs
2026-02-21 16:45:37 +08:00

659 lines
17 KiB
C#

using System;
using LE_LevelEditor.Core;
using UnityEngine;
namespace LE_LevelEditor.UI
{
public class LE_GUIInterface : MonoBehaviour
{
public class Delegates
{
public enum ETerrainUIMode
{
CREATE = 0,
EDIT = 1
}
public enum EDraggedObjectState
{
NONE = 0,
IN_3D_PREVIEW = 1,
NOT_PLACEABLE = 2
}
public delegate bool GetBoolFunction();
public delegate float GetFloatFunction();
public GetBoolFunction IsCursorOverUI;
public GetFloatFunction GetCameraPerspectiveGizmoRightPixelOffset;
public GetFloatFunction GetObliqueCameraPerspectiveRightPixelOffset;
public Action<Texture2D> SetLevelIcon;
public Action<int> SetTerrainWidth;
public Action<int> SetTerrainLength;
public Action<int> SetTerrainHeight;
public Action<Texture2D[], int> SetTerrainBaseTextures;
public Action<Texture2D[], int> SetTerrainBrushes;
public Action<Texture2D[], Texture2D[], int, bool> SetTerrainPaintTextures;
public Action<float> SetTerrainEditBrushSize;
public Action<float> SetTerrainEditBrushAmount;
public Action<float> SetTerrainEditBrushTargetValue;
public Action<float> SetTerrainEditBrushTextureTargetValue;
public Action<bool> SetTerrainIsReadingPaintHeight;
public Action<ETerrainUIMode> SetTerrainUIMode;
public Action<LE_ObjectMap> SetObjects;
public GetBoolFunction IsObjectDragged;
public Action<string> SetDraggableObjectMessage;
public Action<EDraggedObjectState> SetDraggableObjectState;
public Action<bool> SetIsSelectedObjectFocusBtnInteractable;
public Action<bool> SetIsSelectedObjectDuplicateBtnInteractable;
public Action<bool> SetIsSelectedObjectDeleteBtnInteractable;
public Action<bool> SetIsSelectedPrefabFindBtnInteractable;
public Action<bool> SetIsSelectedObjectSleepPropertyInteractable;
public Action<bool> SetSelectedObjectIsSleepOnStartPropertyValue;
public Action<bool> SetIsSelectedObjectColorPropertyInteractable;
public Action<Color> SetSelectedObjectColorPropertyValue;
public Action<int, LE_ObjectVariationBase[]> SetSelectedObjectVariationPropertyValue;
public Action<Action<bool>> ShowPopupConfirmDeleteObject;
public Action ShowWP8RenderLevelIconBugDialog;
public void OnDestroy()
{
IsCursorOverUI = null;
GetCameraPerspectiveGizmoRightPixelOffset = null;
GetObliqueCameraPerspectiveRightPixelOffset = null;
SetLevelIcon = null;
SetTerrainWidth = null;
SetTerrainLength = null;
SetTerrainHeight = null;
SetTerrainBaseTextures = null;
SetTerrainBrushes = null;
SetTerrainPaintTextures = null;
SetTerrainEditBrushSize = null;
SetTerrainEditBrushAmount = null;
SetTerrainEditBrushTargetValue = null;
SetTerrainEditBrushTextureTargetValue = null;
SetTerrainIsReadingPaintHeight = null;
SetTerrainUIMode = null;
IsObjectDragged = null;
SetObjects = null;
SetDraggableObjectMessage = null;
SetDraggableObjectState = null;
SetIsSelectedObjectFocusBtnInteractable = null;
SetIsSelectedObjectDuplicateBtnInteractable = null;
SetIsSelectedObjectDeleteBtnInteractable = null;
SetIsSelectedPrefabFindBtnInteractable = null;
SetIsSelectedObjectSleepPropertyInteractable = null;
SetSelectedObjectIsSleepOnStartPropertyValue = null;
SetIsSelectedObjectColorPropertyInteractable = null;
SetSelectedObjectColorPropertyValue = null;
SetSelectedObjectVariationPropertyValue = null;
ShowPopupConfirmDeleteObject = null;
ShowWP8RenderLevelIconBugDialog = null;
}
}
public class EventHandlers
{
public enum ETerrainChangeHeightMode
{
RAISE = 0,
LOWER = 1
}
public class BoolEventArgs : EventArgs
{
public readonly bool Value;
public BoolEventArgs(bool p_value)
{
Value = p_value;
}
}
public class IntEventArgs : EventArgs
{
public readonly int Value;
public IntEventArgs(int p_value)
{
Value = p_value;
}
}
public class FloatEventArgs : EventArgs
{
public readonly float Value;
public FloatEventArgs(float p_value)
{
Value = p_value;
}
}
public class StringEventArgs : EventArgs
{
public readonly string Value;
public StringEventArgs(string p_value)
{
Value = p_value;
}
}
public class ColorEventArgs : EventArgs
{
public readonly Color Value;
public ColorEventArgs(Color p_value)
{
Value = p_value;
}
}
public class TextureEventArgs : EventArgs
{
public readonly Texture2D Value;
public TextureEventArgs(Texture2D p_value)
{
Value = p_value;
}
}
public class EditModeEventArgs : EventArgs
{
public readonly LE_EEditMode EditMode;
public EditModeEventArgs(LE_EEditMode p_editMode)
{
EditMode = p_editMode;
}
}
public class TerrainEditModeEventArgs : EventArgs
{
public readonly LE_ETerrainEditMode EditMode;
public TerrainEditModeEventArgs(LE_ETerrainEditMode p_editMode)
{
EditMode = p_editMode;
}
}
public class TerrainChangeHeightModeEventArgs : EventArgs
{
public readonly ETerrainChangeHeightMode ChangeHeightMode;
public TerrainChangeHeightModeEventArgs(ETerrainChangeHeightMode p_changeHeightMode)
{
ChangeHeightMode = p_changeHeightMode;
}
}
public class ObjectEditSpaceEventArgs : EventArgs
{
public readonly LE_EObjectEditSpace EditSpace;
public ObjectEditSpaceEventArgs(LE_EObjectEditSpace p_editSpace)
{
EditSpace = p_editSpace;
}
}
public class ObjectEditModeEventArgs : EventArgs
{
public readonly LE_EObjectEditMode EditMode;
public ObjectEditModeEventArgs(LE_EObjectEditMode p_editMode)
{
EditMode = p_editMode;
}
}
public class ObjectSelectDraggableEventArgs : EventArgs
{
public readonly LE_Object ObjPrefab;
public readonly string ResourcePath;
public ObjectSelectDraggableEventArgs(LE_Object p_objPrefab, string p_resourcePath)
{
ObjPrefab = p_objPrefab;
ResourcePath = p_resourcePath;
}
}
public EventHandler<EditModeEventArgs> OnEditModeBtn;
public System.EventHandler OnUndoBtn;
public System.EventHandler OnRedoBtn;
public EventHandler<StringEventArgs> OnTerrainWidthChanged;
public EventHandler<StringEventArgs> OnTerrainLengthChanged;
public EventHandler<StringEventArgs> OnTerrainHeightChanged;
public EventHandler<IntEventArgs> OnTerrainBaseTextureChanged;
public EventHandler<IntEventArgs> OnTerrainBrushChanged;
public EventHandler<IntEventArgs> OnTerrainPaintTextureChanged;
public EventHandler<TextureEventArgs> OnTerrainPaintTextureAdded;
public EventHandler<FloatEventArgs> OnTerrainEditBrushSizeChanged;
public EventHandler<FloatEventArgs> OnTerrainEditBrushAmountChanged;
public EventHandler<FloatEventArgs> OnTerrainEditBrushTargetValueChanged;
public EventHandler<FloatEventArgs> OnTerrainEditBrushTextureTargetValueChanged;
public EventHandler<FloatEventArgs> OnTerrainEditDirectionChanged;
public EventHandler<TerrainChangeHeightModeEventArgs> OnTerrainChangeHeightModeChanged;
public EventHandler<BoolEventArgs> OnTerrainIsDirectedSmoothChanged;
public System.EventHandler OnTerrainCreateBtn;
public EventHandler<TerrainEditModeEventArgs> OnTerrainEditModeBtn;
public System.EventHandler OnTerrainReadPaintHeightBtn;
public EventHandler<ObjectEditSpaceEventArgs> OnObjectEditSpaceBtn;
public EventHandler<ObjectEditModeEventArgs> OnObjectEditModeBtn;
public EventHandler<ObjectSelectDraggableEventArgs> OnObjectSelectDraggable;
public System.EventHandler OnSelectedObjectFocusBtn;
public System.EventHandler OnSelectedObjectDuplicateBtn;
public System.EventHandler OnSelectedObjectDeleteBtn;
public EventHandler<BoolEventArgs> OnSelectedObjectIsSleepOnStartChanged;
public EventHandler<ColorEventArgs> OnSelectedObjectColorChanged;
public EventHandler<IntEventArgs> OnSelectedObjectVariationIndexChanged;
public System.EventHandler OnSelectedPrefabFindBtn;
public System.EventHandler OnLevelSaveBtn;
public System.EventHandler OnLevelLoadBtn;
public System.EventHandler OnLevelRenderIconBtn;
public void OnDestroy()
{
OnEditModeBtn = null;
OnUndoBtn = null;
OnRedoBtn = null;
OnTerrainWidthChanged = null;
OnTerrainLengthChanged = null;
OnTerrainHeightChanged = null;
OnTerrainBaseTextureChanged = null;
OnTerrainPaintTextureChanged = null;
OnTerrainPaintTextureAdded = null;
OnTerrainBrushChanged = null;
OnTerrainEditBrushSizeChanged = null;
OnTerrainEditBrushAmountChanged = null;
OnTerrainEditBrushTargetValueChanged = null;
OnTerrainEditBrushTextureTargetValueChanged = null;
OnTerrainEditDirectionChanged = null;
OnTerrainChangeHeightModeChanged = null;
OnTerrainIsDirectedSmoothChanged = null;
OnTerrainCreateBtn = null;
OnTerrainEditModeBtn = null;
OnTerrainReadPaintHeightBtn = null;
OnObjectEditSpaceBtn = null;
OnObjectEditModeBtn = null;
OnObjectSelectDraggable = null;
OnSelectedObjectFocusBtn = null;
OnSelectedObjectDuplicateBtn = null;
OnSelectedObjectDeleteBtn = null;
OnSelectedObjectIsSleepOnStartChanged = null;
OnSelectedObjectColorChanged = null;
OnSelectedObjectVariationIndexChanged = null;
OnSelectedPrefabFindBtn = null;
OnLevelSaveBtn = null;
OnLevelLoadBtn = null;
OnLevelRenderIconBtn = null;
}
}
private static LE_GUIInterface s_instance;
public readonly Delegates delegates = new Delegates();
public readonly EventHandlers events = new EventHandlers();
public static LE_GUIInterface Instance
{
get
{
return s_instance;
}
}
private void Awake()
{
if (s_instance != null)
{
Debug.LogError("LE_GUIInterface: there is already an instance of LE_GUIInterface in this scene!");
}
s_instance = this;
}
private void OnDestroy()
{
if (s_instance == this)
{
s_instance = null;
}
events.OnDestroy();
delegates.OnDestroy();
}
public void OnEditModeBtn(int p_editMode)
{
if (events.OnEditModeBtn != null)
{
events.OnEditModeBtn(this, new EventHandlers.EditModeEventArgs((LE_EEditMode)p_editMode));
}
}
public void OnUndoBtn()
{
if (events.OnUndoBtn != null)
{
events.OnUndoBtn(this, EventArgs.Empty);
}
}
public void OnRedoBtn()
{
if (events.OnRedoBtn != null)
{
events.OnRedoBtn(this, EventArgs.Empty);
}
}
public void OnTerrainWidthChanged(string p_widthIntegerValue)
{
if (events.OnTerrainWidthChanged != null)
{
events.OnTerrainWidthChanged(this, new EventHandlers.StringEventArgs(p_widthIntegerValue));
}
}
public void OnTerrainLengthChanged(string p_lengthIntegerValue)
{
if (events.OnTerrainLengthChanged != null)
{
events.OnTerrainLengthChanged(this, new EventHandlers.StringEventArgs(p_lengthIntegerValue));
}
}
public void OnTerrainHeightChanged(string p_heightIntegerValue)
{
if (events.OnTerrainHeightChanged != null)
{
events.OnTerrainHeightChanged(this, new EventHandlers.StringEventArgs(p_heightIntegerValue));
}
}
public void OnTerrainBaseTextureChanged(int p_baseTextureIndex)
{
if (events.OnTerrainBaseTextureChanged != null)
{
events.OnTerrainBaseTextureChanged(this, new EventHandlers.IntEventArgs(p_baseTextureIndex));
}
}
public void OnTerrainPaintTextureChanged(int p_paintTextureIndex)
{
if (events.OnTerrainPaintTextureChanged != null)
{
events.OnTerrainPaintTextureChanged(this, new EventHandlers.IntEventArgs(p_paintTextureIndex));
}
}
public void OnTerrainPaintTextureAdded(Texture2D p_texture)
{
if (events.OnTerrainPaintTextureAdded != null)
{
events.OnTerrainPaintTextureAdded(this, new EventHandlers.TextureEventArgs(p_texture));
}
}
public void OnTerrainBrushChanged(int p_brushIndex)
{
if (events.OnTerrainBrushChanged != null)
{
events.OnTerrainBrushChanged(this, new EventHandlers.IntEventArgs(p_brushIndex));
}
}
public void OnTerrainEditBrushSizeChanged(float p_brushSize)
{
if (events.OnTerrainEditBrushSizeChanged != null)
{
events.OnTerrainEditBrushSizeChanged(this, new EventHandlers.FloatEventArgs(p_brushSize));
}
}
public void OnTerrainEditBrushAmountChanged(float p_brushAmount)
{
if (events.OnTerrainEditBrushAmountChanged != null)
{
events.OnTerrainEditBrushAmountChanged(this, new EventHandlers.FloatEventArgs(p_brushAmount));
}
}
public void OnTerrainEditBrushTargetValueChanged(float p_brushTargetValue)
{
if (events.OnTerrainEditBrushTargetValueChanged != null)
{
events.OnTerrainEditBrushTargetValueChanged(this, new EventHandlers.FloatEventArgs(p_brushTargetValue));
}
}
public void OnTerrainEditBrushTextureTargetValueChanged(float p_brushTargetValue)
{
if (events.OnTerrainEditBrushTextureTargetValueChanged != null)
{
events.OnTerrainEditBrushTextureTargetValueChanged(this, new EventHandlers.FloatEventArgs(p_brushTargetValue));
}
}
public void OnTerrainEditDirectionChanged(float p_direction)
{
if (events.OnTerrainEditDirectionChanged != null)
{
events.OnTerrainEditDirectionChanged(this, new EventHandlers.FloatEventArgs(p_direction));
}
}
public void OnTerrainChangeHeightModeChanged(bool p_isRaiseHeight)
{
if (events.OnTerrainChangeHeightModeChanged != null)
{
events.OnTerrainChangeHeightModeChanged(this, new EventHandlers.TerrainChangeHeightModeEventArgs((!p_isRaiseHeight) ? EventHandlers.ETerrainChangeHeightMode.LOWER : EventHandlers.ETerrainChangeHeightMode.RAISE));
}
}
public void OnTerrainIsDirectedSmoothChanged(bool p_isDirectedSmooth)
{
if (events.OnTerrainIsDirectedSmoothChanged != null)
{
events.OnTerrainIsDirectedSmoothChanged(this, new EventHandlers.BoolEventArgs(p_isDirectedSmooth));
}
}
public void OnTerrainCreateBtn()
{
if (events.OnTerrainCreateBtn != null)
{
events.OnTerrainCreateBtn(this, EventArgs.Empty);
}
}
public void OnTerrainEditModeBtn(int p_editMode)
{
if (events.OnTerrainEditModeBtn != null)
{
events.OnTerrainEditModeBtn(this, new EventHandlers.TerrainEditModeEventArgs((LE_ETerrainEditMode)p_editMode));
}
}
public void OnTerrainReadPaintHeightBtn()
{
if (events.OnTerrainReadPaintHeightBtn != null)
{
events.OnTerrainReadPaintHeightBtn(this, EventArgs.Empty);
}
}
public void OnObjectEditSpaceBtn(bool p_falseForLocal_trueForGlobal)
{
if (events.OnObjectEditSpaceBtn != null)
{
events.OnObjectEditSpaceBtn(this, new EventHandlers.ObjectEditSpaceEventArgs(p_falseForLocal_trueForGlobal ? LE_EObjectEditSpace.WORLD : LE_EObjectEditSpace.SELF));
}
}
public void OnObjectEditModeBtn(int p_editMode)
{
if (events.OnObjectEditModeBtn != null)
{
events.OnObjectEditModeBtn(this, new EventHandlers.ObjectEditModeEventArgs((LE_EObjectEditMode)p_editMode));
}
}
public void OnObjectSelectDraggable(LE_Object p_objPrefab, string p_resourcePath)
{
if (events.OnObjectSelectDraggable != null)
{
events.OnObjectSelectDraggable(this, new EventHandlers.ObjectSelectDraggableEventArgs(p_objPrefab, p_resourcePath));
}
}
public void OnSelectedObjectFocusBtn()
{
if (events.OnSelectedObjectFocusBtn != null)
{
events.OnSelectedObjectFocusBtn(this, EventArgs.Empty);
}
}
public void OnSelectedObjectDuplicateBtn()
{
if (events.OnSelectedObjectDuplicateBtn != null)
{
events.OnSelectedObjectDuplicateBtn(this, EventArgs.Empty);
}
}
public void OnSelectedObjectDeleteBtn()
{
if (events.OnSelectedObjectDeleteBtn != null)
{
events.OnSelectedObjectDeleteBtn(this, EventArgs.Empty);
}
}
public void OnSelectedObjectIsSleepOnStartChanged(bool p_isSleepingOnStart)
{
if (events.OnSelectedObjectIsSleepOnStartChanged != null)
{
events.OnSelectedObjectIsSleepOnStartChanged(this, new EventHandlers.BoolEventArgs(p_isSleepingOnStart));
}
}
public void OnSelectedObjectColorChanged(Color p_color)
{
if (events.OnSelectedObjectColorChanged != null)
{
events.OnSelectedObjectColorChanged(this, new EventHandlers.ColorEventArgs(p_color));
}
}
public void OnSelectedObjectVariationIndexChanged(int p_variationIndex)
{
if (events.OnSelectedObjectVariationIndexChanged != null)
{
events.OnSelectedObjectVariationIndexChanged(this, new EventHandlers.IntEventArgs(p_variationIndex));
}
}
public void OnSelectedPrefabFindBtn()
{
if (events.OnSelectedPrefabFindBtn != null)
{
events.OnSelectedPrefabFindBtn(this, EventArgs.Empty);
}
}
public void OnLevelSaveBtn()
{
if (events.OnLevelSaveBtn != null)
{
events.OnLevelSaveBtn(this, EventArgs.Empty);
}
}
public void OnLevelLoadBtn()
{
if (events.OnLevelLoadBtn != null)
{
events.OnLevelLoadBtn(this, EventArgs.Empty);
}
}
public void OnLevelRenderIconBtn()
{
if (events.OnLevelRenderIconBtn != null)
{
events.OnLevelRenderIconBtn(this, EventArgs.Empty);
}
}
}
}