Merge pull request 'master' (#95) from Alienjack/AxibugEmuOnline:master into master
Reviewed-on: #95
This commit is contained in:
commit
49d0a9aa86
.gitignoreUtility.cs
AxibugEmuOnline.Client
Assets
Resources/UIPrefabs
Scene
Script/AppMain
Manager
AppSettings/KeyMapperSetting/Model
InputDevicesManager/Devices
SaveSlotManager
UI
BgSettingsUI
GamesUI
InGameUI
InGameUI.csInGameUI_FilterSetting.csInGameUI_LoadStateQuick.csInGameUI_LoadStateQuick.cs.metaInGameUI_SaveStateMenu.csInGameUI_SaveStateMenu.cs.metaInGameUI_SaveStateQuick.csInGameUI_SaveStateQuick.cs.metaInGameUI_Scaler.cs
OptionUI
OptionUI.csOptionUI_ExecuteItem.csOptionUI_MenuItem.csOptionUI_SavSlotItem.csOptionUI_SavSlotItem.cs.metaOptionUI_ValueEditItem.cs
OverlayUI
ProjectSettings
3
.gitignore
vendored
3
.gitignore
vendored
@ -48,4 +48,5 @@
|
||||
AxibugEmuOnline.GameScreenConvert/bin/
|
||||
AxibugEmuOnline.GameScreenConvert/obj/
|
||||
|
||||
/.vs/
|
||||
/.vs/
|
||||
AxibugEmuOnline.Client/ProjectSettings/PackageManagerSettings.asset
|
||||
|
@ -35,7 +35,7 @@ RectTransform:
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 1}
|
||||
m_AnchorMax: {x: 0, y: 1}
|
||||
m_AnchoredPosition: {x: 143.5, y: -15.666667}
|
||||
m_AnchoredPosition: {x: 143.5, y: -20}
|
||||
m_SizeDelta: {x: 183, y: 26}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!222 &4761092020446986678
|
||||
@ -229,8 +229,8 @@ RectTransform:
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 1}
|
||||
m_AnchorMax: {x: 0, y: 1}
|
||||
m_AnchoredPosition: {x: 20, y: -15.666667}
|
||||
m_SizeDelta: {x: 40, y: 31.333334}
|
||||
m_AnchoredPosition: {x: 20, y: -20}
|
||||
m_SizeDelta: {x: 40, y: 40}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!222 &7860273967724122996
|
||||
CanvasRenderer:
|
||||
@ -325,8 +325,8 @@ RectTransform:
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 1}
|
||||
m_AnchorMax: {x: 0, y: 1}
|
||||
m_AnchoredPosition: {x: 40, y: -25.666668}
|
||||
m_SizeDelta: {x: 40, y: 31.333336}
|
||||
m_AnchoredPosition: {x: 40, y: -30}
|
||||
m_SizeDelta: {x: 40, y: 40}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!222 &6442047476311195174
|
||||
CanvasRenderer:
|
||||
@ -555,8 +555,8 @@ RectTransform:
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 1}
|
||||
m_AnchorMax: {x: 0, y: 1}
|
||||
m_AnchoredPosition: {x: 175.5, y: -134.66667}
|
||||
m_SizeDelta: {x: 311, y: 31.333334}
|
||||
m_AnchoredPosition: {x: 155, y: -165}
|
||||
m_SizeDelta: {x: 270, y: 40}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!114 &406189280625441644
|
||||
MonoBehaviour:
|
||||
@ -625,7 +625,7 @@ RectTransform:
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 1}
|
||||
m_AnchorMax: {x: 0, y: 1}
|
||||
m_AnchoredPosition: {x: 321, y: -25.666668}
|
||||
m_AnchoredPosition: {x: 321, y: -30}
|
||||
m_SizeDelta: {x: 20, y: 20}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!114 &8983615257379814102
|
||||
@ -904,8 +904,8 @@ RectTransform:
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 1}
|
||||
m_AnchorMax: {x: 0, y: 1}
|
||||
m_AnchoredPosition: {x: 175.5, y: -171.00002}
|
||||
m_SizeDelta: {x: 311, y: 31.333334}
|
||||
m_AnchoredPosition: {x: 155, y: -210}
|
||||
m_SizeDelta: {x: 270, y: 40}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!114 &1792874459052106251
|
||||
MonoBehaviour:
|
||||
@ -978,8 +978,8 @@ RectTransform:
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 1}
|
||||
m_AnchorMax: {x: 0, y: 1}
|
||||
m_AnchoredPosition: {x: 170.5, y: -25.666668}
|
||||
m_SizeDelta: {x: 341, y: 51.333336}
|
||||
m_AnchoredPosition: {x: 170.5, y: -146}
|
||||
m_SizeDelta: {x: 341, y: 60}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!114 &9142037267599823005
|
||||
MonoBehaviour:
|
||||
@ -1094,7 +1094,7 @@ RectTransform:
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 1}
|
||||
m_AnchorMax: {x: 0, y: 1}
|
||||
m_AnchoredPosition: {x: 284, y: -25.666668}
|
||||
m_AnchoredPosition: {x: 284, y: -30}
|
||||
m_SizeDelta: {x: 30, y: 30}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!222 &8134207541370216537
|
||||
@ -1155,6 +1155,104 @@ MonoBehaviour:
|
||||
m_FlexibleWidth: -1
|
||||
m_FlexibleHeight: -1
|
||||
m_LayoutPriority: 1
|
||||
--- !u!1 &3474088710924343098
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 6878964193873653430}
|
||||
- component: {fileID: 7910447946506517051}
|
||||
- component: {fileID: 1245427187698918444}
|
||||
- component: {fileID: 7858141028076829401}
|
||||
m_Layer: 5
|
||||
m_Name: Name
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!224 &6878964193873653430
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 3474088710924343098}
|
||||
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: 1100500336380202360}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 0}
|
||||
m_AnchorMax: {x: 0, y: 0}
|
||||
m_AnchoredPosition: {x: 0, y: 0}
|
||||
m_SizeDelta: {x: 0, y: 0}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!222 &7910447946506517051
|
||||
CanvasRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 3474088710924343098}
|
||||
m_CullTransparentMesh: 1
|
||||
--- !u!114 &1245427187698918444
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 3474088710924343098}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, 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_FontData:
|
||||
m_Font: {fileID: 12800000, guid: 33a3bdf8f6bd1ec4eba7c4bc58183212, type: 3}
|
||||
m_FontSize: 26
|
||||
m_FontStyle: 0
|
||||
m_BestFit: 0
|
||||
m_MinSize: 1
|
||||
m_MaxSize: 185
|
||||
m_Alignment: 0
|
||||
m_AlignByGeometry: 0
|
||||
m_RichText: 1
|
||||
m_HorizontalOverflow: 1
|
||||
m_VerticalOverflow: 1
|
||||
m_LineSpacing: 1
|
||||
m_Text: '[MenuName]'
|
||||
--- !u!114 &7858141028076829401
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 3474088710924343098}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 0848bff101191904ead4bb831f7084db, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_BlurFactor: 1
|
||||
m_Style: 1
|
||||
m_AdditionalShadows: []
|
||||
m_EffectColor: {r: 0, g: 0, b: 0, a: 0.5}
|
||||
m_EffectDistance: {x: 1.5, y: -1.5}
|
||||
m_UseGraphicAlpha: 1
|
||||
--- !u!1 &4124172888520656882
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
@ -1254,6 +1352,65 @@ RectTransform:
|
||||
m_AnchoredPosition: {x: 0, y: 0}
|
||||
m_SizeDelta: {x: 0, y: 0}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!1 &4476720122184876793
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 5970282275929291192}
|
||||
- component: {fileID: 2558056583130529771}
|
||||
m_Layer: 5
|
||||
m_Name: ScreenNode
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!224 &5970282275929291192
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 4476720122184876793}
|
||||
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:
|
||||
- {fileID: 7389645496847632176}
|
||||
- {fileID: 173892651193427531}
|
||||
- {fileID: 8150810211498757695}
|
||||
m_Father: {fileID: 1100500336380202360}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 0}
|
||||
m_AnchorMax: {x: 0, y: 0}
|
||||
m_AnchoredPosition: {x: 0, y: 0}
|
||||
m_SizeDelta: {x: 0, y: 0}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!114 &2558056583130529771
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 4476720122184876793}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_IgnoreLayout: 0
|
||||
m_MinWidth: -1
|
||||
m_MinHeight: -1
|
||||
m_PreferredWidth: 300
|
||||
m_PreferredHeight: 300
|
||||
m_FlexibleWidth: -1
|
||||
m_FlexibleHeight: -1
|
||||
m_LayoutPriority: 1
|
||||
--- !u!1 &4478785627166277609
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
@ -1288,6 +1445,7 @@ RectTransform:
|
||||
m_Children:
|
||||
- {fileID: 8581099496228509946}
|
||||
- {fileID: 2780569438310375802}
|
||||
- {fileID: 1100500336380202360}
|
||||
- {fileID: 278706555072840209}
|
||||
- {fileID: 2404013603202822047}
|
||||
m_Father: {fileID: 0}
|
||||
@ -1311,8 +1469,6 @@ MonoBehaviour:
|
||||
m_EditorClassIdentifier:
|
||||
MenuRoot: {fileID: 4478785627166277610}
|
||||
SelectBorder: {fileID: 7857863493876124730}
|
||||
TEMPLATE_EXECUTEITEM: {fileID: 3721725547312714320}
|
||||
TEMPLATE_VALUEEDITITEM: {fileID: 2621485483361375335}
|
||||
--- !u!114 &7033441668005100640
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
@ -1373,6 +1529,102 @@ MonoBehaviour:
|
||||
m_FlexibleWidth: -1
|
||||
m_FlexibleHeight: -1
|
||||
m_LayoutPriority: 1
|
||||
--- !u!1 &4531500821505527959
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 8450003830307438743}
|
||||
- component: {fileID: 1589970305948971308}
|
||||
- component: {fileID: 8043128130230171127}
|
||||
- component: {fileID: 2233123445426827155}
|
||||
m_Layer: 5
|
||||
m_Name: Icon
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!224 &8450003830307438743
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 4531500821505527959}
|
||||
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: 1100500336380202360}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 1}
|
||||
m_AnchorMax: {x: 0, y: 1}
|
||||
m_AnchoredPosition: {x: 170, y: -240.32788}
|
||||
m_SizeDelta: {x: 40, y: 40}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!222 &1589970305948971308
|
||||
CanvasRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 4531500821505527959}
|
||||
m_CullTransparentMesh: 1
|
||||
--- !u!114 &8043128130230171127
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 4531500821505527959}
|
||||
m_Enabled: 0
|
||||
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: 0}
|
||||
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!114 &2233123445426827155
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 4531500821505527959}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 306cc8c2b49d7114eaa3623786fc2126, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_IgnoreLayout: 1
|
||||
m_MinWidth: -1
|
||||
m_MinHeight: -1
|
||||
m_PreferredWidth: 40
|
||||
m_PreferredHeight: 40
|
||||
m_FlexibleWidth: -1
|
||||
m_FlexibleHeight: -1
|
||||
m_LayoutPriority: 1
|
||||
--- !u!1 &4565892069299376824
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
@ -1409,6 +1661,78 @@ RectTransform:
|
||||
m_AnchoredPosition: {x: -5, y: 0}
|
||||
m_SizeDelta: {x: -20, y: 0}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!1 &5162569472849600096
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 7389645496847632176}
|
||||
- component: {fileID: 714994651902078554}
|
||||
- component: {fileID: 1024458178917207864}
|
||||
m_Layer: 5
|
||||
m_Name: Screen
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!224 &7389645496847632176
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 5162569472849600096}
|
||||
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: 5970282275929291192}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 0}
|
||||
m_AnchorMax: {x: 1, y: 1}
|
||||
m_AnchoredPosition: {x: 0, y: 0}
|
||||
m_SizeDelta: {x: 0, y: 0}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!222 &714994651902078554
|
||||
CanvasRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 5162569472849600096}
|
||||
m_CullTransparentMesh: 1
|
||||
--- !u!114 &1024458178917207864
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 5162569472849600096}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 1344c3c82d62a2a41a3576d8abb8e3ea, 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_Texture: {fileID: 0}
|
||||
m_UVRect:
|
||||
serializedVersion: 2
|
||||
x: 0
|
||||
y: 0
|
||||
width: 1
|
||||
height: 1
|
||||
--- !u!1 &5174902406667317058
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
@ -1449,8 +1773,8 @@ RectTransform:
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 1}
|
||||
m_AnchorMax: {x: 0, y: 1}
|
||||
m_AnchoredPosition: {x: 170.5, y: -149.66667}
|
||||
m_SizeDelta: {x: 341, y: 196.66667}
|
||||
m_AnchoredPosition: {x: 150, y: -146}
|
||||
m_SizeDelta: {x: 300, y: 240}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!114 &2621485483361375335
|
||||
MonoBehaviour:
|
||||
@ -1651,8 +1975,8 @@ RectTransform:
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 1}
|
||||
m_AnchorMax: {x: 0, y: 1}
|
||||
m_AnchoredPosition: {x: 175.5, y: -98.333336}
|
||||
m_SizeDelta: {x: 311, y: 31.333334}
|
||||
m_AnchoredPosition: {x: 155, y: -120}
|
||||
m_SizeDelta: {x: 270, y: 40}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!114 &9093150501524936851
|
||||
MonoBehaviour:
|
||||
@ -1723,8 +2047,8 @@ RectTransform:
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 1}
|
||||
m_AnchorMax: {x: 0, y: 1}
|
||||
m_AnchoredPosition: {x: 175.5, y: -25.666668}
|
||||
m_SizeDelta: {x: 311, y: 31.333334}
|
||||
m_AnchoredPosition: {x: 155, y: -30}
|
||||
m_SizeDelta: {x: 270, y: 40}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!114 &6023196883469018230
|
||||
MonoBehaviour:
|
||||
@ -1787,8 +2111,8 @@ RectTransform:
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 1}
|
||||
m_AnchorMax: {x: 0, y: 1}
|
||||
m_AnchoredPosition: {x: 155.5, y: -15.666667}
|
||||
m_SizeDelta: {x: 311, y: 31.333334}
|
||||
m_AnchoredPosition: {x: 135, y: -20}
|
||||
m_SizeDelta: {x: 270, y: 40}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!222 &6646371810488858664
|
||||
CanvasRenderer:
|
||||
@ -1889,8 +2213,8 @@ RectTransform:
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 1}
|
||||
m_AnchorMax: {x: 0, y: 1}
|
||||
m_AnchoredPosition: {x: 106.66667, y: -15.666667}
|
||||
m_SizeDelta: {x: 213.33334, y: 31.333334}
|
||||
m_AnchoredPosition: {x: 89.58333, y: -20}
|
||||
m_SizeDelta: {x: 179.16666, y: 40}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!114 &5919193658528722431
|
||||
MonoBehaviour:
|
||||
@ -1998,8 +2322,8 @@ RectTransform:
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 1}
|
||||
m_AnchorMax: {x: 0, y: 1}
|
||||
m_AnchoredPosition: {x: 175.5, y: -62.000004}
|
||||
m_SizeDelta: {x: 311, y: 31.333334}
|
||||
m_AnchoredPosition: {x: 155, y: -75}
|
||||
m_SizeDelta: {x: 270, y: 40}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!114 &2814991476448031351
|
||||
MonoBehaviour:
|
||||
@ -2035,6 +2359,81 @@ MonoBehaviour:
|
||||
m_EditorClassIdentifier:
|
||||
slider: {fileID: 6489571631904078165}
|
||||
txt_value: {fileID: 6176548475786947694}
|
||||
--- !u!1 &6467406772825416429
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 173892651193427531}
|
||||
- component: {fileID: 4085094471767132086}
|
||||
- component: {fileID: 8350228378118296958}
|
||||
m_Layer: 5
|
||||
m_Name: Empty
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!224 &173892651193427531
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 6467406772825416429}
|
||||
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: 5970282275929291192}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 0}
|
||||
m_AnchorMax: {x: 1, y: 1}
|
||||
m_AnchoredPosition: {x: 0, y: 0}
|
||||
m_SizeDelta: {x: 0, y: 0}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!222 &4085094471767132086
|
||||
CanvasRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 6467406772825416429}
|
||||
m_CullTransparentMesh: 1
|
||||
--- !u!114 &8350228378118296958
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 6467406772825416429}
|
||||
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: 0, g: 0, b: 0, 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: 0}
|
||||
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!1 &6551251729527098609
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
@ -2070,8 +2469,8 @@ RectTransform:
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 1}
|
||||
m_AnchorMax: {x: 0, y: 1}
|
||||
m_AnchoredPosition: {x: 264.6667, y: -15.666667}
|
||||
m_SizeDelta: {x: 92.66667, y: 31.333334}
|
||||
m_AnchoredPosition: {x: 227.08331, y: -20}
|
||||
m_SizeDelta: {x: 85.83333, y: 40}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!222 &7323868397581272064
|
||||
CanvasRenderer:
|
||||
@ -2172,8 +2571,8 @@ RectTransform:
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 1}
|
||||
m_AnchorMax: {x: 0, y: 1}
|
||||
m_AnchoredPosition: {x: 106.66667, y: -15.666667}
|
||||
m_SizeDelta: {x: 213.33334, y: 31.333334}
|
||||
m_AnchoredPosition: {x: 89.58333, y: -20}
|
||||
m_SizeDelta: {x: 179.16666, y: 40}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!114 &6489571631904078165
|
||||
MonoBehaviour:
|
||||
@ -2281,7 +2680,7 @@ RectTransform:
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 1}
|
||||
m_AnchorMax: {x: 0, y: 1}
|
||||
m_AnchoredPosition: {x: 164.5, y: -25.666668}
|
||||
m_AnchoredPosition: {x: 164.5, y: -30}
|
||||
m_SizeDelta: {x: 185, y: 26}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!222 &6532365540230118336
|
||||
@ -2344,6 +2743,189 @@ MonoBehaviour:
|
||||
m_EffectColor: {r: 0, g: 0, b: 0, a: 0.5}
|
||||
m_EffectDistance: {x: 1.5, y: -1.5}
|
||||
m_UseGraphicAlpha: 1
|
||||
--- !u!1 &7099541800602849681
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 1100500336380202360}
|
||||
- component: {fileID: 20405450890320071}
|
||||
- component: {fileID: 1975302203658727050}
|
||||
m_Layer: 5
|
||||
m_Name: SavSlotItem_Template
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!224 &1100500336380202360
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 7099541800602849681}
|
||||
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:
|
||||
- {fileID: 5970282275929291192}
|
||||
- {fileID: 8450003830307438743}
|
||||
- {fileID: 6878964193873653430}
|
||||
m_Father: {fileID: 4478785627166277610}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 0}
|
||||
m_AnchorMax: {x: 0, y: 0}
|
||||
m_AnchoredPosition: {x: 0, y: 0}
|
||||
m_SizeDelta: {x: 0, y: 0}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!114 &20405450890320071
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 7099541800602849681}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 59f8146938fff824cb5fd77236b75775, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_Padding:
|
||||
m_Left: 20
|
||||
m_Right: 10
|
||||
m_Top: 10
|
||||
m_Bottom: 10
|
||||
m_ChildAlignment: 0
|
||||
m_Spacing: 10
|
||||
m_ChildForceExpandWidth: 1
|
||||
m_ChildForceExpandHeight: 1
|
||||
m_ChildControlWidth: 1
|
||||
m_ChildControlHeight: 1
|
||||
m_ChildScaleWidth: 0
|
||||
m_ChildScaleHeight: 0
|
||||
m_ReverseArrangement: 0
|
||||
--- !u!114 &1975302203658727050
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 7099541800602849681}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 688af9c7251c334489191abcae4e0164, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_MenuNameTxt: {fileID: 1245427187698918444}
|
||||
m_Icon: {fileID: 8043128130230171127}
|
||||
UI_ScreenShot: {fileID: 1024458178917207864}
|
||||
UI_Empty: {fileID: 8350228378118296958}
|
||||
UI_SavTime: {fileID: 13043593624240728}
|
||||
--- !u!1 &7141318786199574664
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 8150810211498757695}
|
||||
- component: {fileID: 7160219150891895322}
|
||||
- component: {fileID: 13043593624240728}
|
||||
- component: {fileID: 6806772567731511000}
|
||||
m_Layer: 5
|
||||
m_Name: SavTime
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!224 &8150810211498757695
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 7141318786199574664}
|
||||
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: 5970282275929291192}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 1, y: 1}
|
||||
m_AnchorMax: {x: 1, y: 1}
|
||||
m_AnchoredPosition: {x: -10, y: -10}
|
||||
m_SizeDelta: {x: 300, y: 18.613636}
|
||||
m_Pivot: {x: 1, y: 1}
|
||||
--- !u!222 &7160219150891895322
|
||||
CanvasRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 7141318786199574664}
|
||||
m_CullTransparentMesh: 1
|
||||
--- !u!114 &13043593624240728
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 7141318786199574664}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, 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_FontData:
|
||||
m_Font: {fileID: 12800000, guid: 33a3bdf8f6bd1ec4eba7c4bc58183212, type: 3}
|
||||
m_FontSize: 18
|
||||
m_FontStyle: 0
|
||||
m_BestFit: 0
|
||||
m_MinSize: 1
|
||||
m_MaxSize: 185
|
||||
m_Alignment: 2
|
||||
m_AlignByGeometry: 0
|
||||
m_RichText: 1
|
||||
m_HorizontalOverflow: 1
|
||||
m_VerticalOverflow: 1
|
||||
m_LineSpacing: 1
|
||||
m_Text: '111211
|
||||
|
||||
ddsadas'
|
||||
--- !u!114 &6806772567731511000
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 7141318786199574664}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 0848bff101191904ead4bb831f7084db, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_BlurFactor: 1
|
||||
m_Style: 1
|
||||
m_AdditionalShadows: []
|
||||
m_EffectColor: {r: 0, g: 0, b: 0, a: 0.5}
|
||||
m_EffectDistance: {x: 1.5, y: -1.5}
|
||||
m_UseGraphicAlpha: 1
|
||||
--- !u!1 &7579340952198812870
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
@ -2806,8 +3388,8 @@ RectTransform:
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 1}
|
||||
m_AnchorMax: {x: 0, y: 1}
|
||||
m_AnchoredPosition: {x: 264.6667, y: -15.666667}
|
||||
m_SizeDelta: {x: 92.66667, y: 31.333334}
|
||||
m_AnchoredPosition: {x: 227.08331, y: -20}
|
||||
m_SizeDelta: {x: 85.83333, y: 40}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!222 &7497419100168238325
|
||||
CanvasRenderer:
|
||||
@ -2981,8 +3563,8 @@ RectTransform:
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 1}
|
||||
m_AnchorMax: {x: 0, y: 1}
|
||||
m_AnchoredPosition: {x: 155.5, y: -15.666667}
|
||||
m_SizeDelta: {x: 311, y: 31.333334}
|
||||
m_AnchoredPosition: {x: 135, y: -20}
|
||||
m_SizeDelta: {x: 270, y: 40}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!222 &88244861463061753
|
||||
CanvasRenderer:
|
||||
|
@ -225,7 +225,7 @@ MonoBehaviour:
|
||||
bUseLocalWebApi: 0
|
||||
mLocalWebApi: http://localhost:5051
|
||||
bEditorUUID: 0
|
||||
bEditorOpenGUIJoyStick: 1
|
||||
bEditorOpenGUIJoyStick: 0
|
||||
--- !u!1 &1498586261
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 3
|
||||
|
@ -3,6 +3,7 @@ using AxibugEmuOnline.Client.InputDevices;
|
||||
using AxibugEmuOnline.Client.Settings;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using UnityEngine;
|
||||
|
||||
/// <summary>
|
||||
@ -19,7 +20,7 @@ public abstract class EmuCoreBinder<T> : InternalEmuCoreBinder,
|
||||
where T : Enum
|
||||
{
|
||||
//每一个实例代表一个对应模拟器平台的控制器索引
|
||||
List<ControllerBinder> m_bindingPages = new List<ControllerBinder>();
|
||||
List<ControllerBinder> m_controllerBinders = new List<ControllerBinder>();
|
||||
|
||||
public EmuCoreBinder()
|
||||
{
|
||||
@ -27,13 +28,15 @@ public abstract class EmuCoreBinder<T> : InternalEmuCoreBinder,
|
||||
|
||||
for (int i = 0; i < ControllerCount; i++)
|
||||
{
|
||||
m_bindingPages.Add(new ControllerBinder(i, this));
|
||||
m_controllerBinders.Add(new ControllerBinder(i, this));
|
||||
}
|
||||
|
||||
foreach (var device in App.input.GetDevices())
|
||||
{
|
||||
foreach (var binding in m_bindingPages)
|
||||
foreach (var binding in m_controllerBinders)
|
||||
{
|
||||
if (device.Exclusive && GetRegistedBinder(device) != null) continue;
|
||||
|
||||
binding.RegistInputDevice(device);
|
||||
}
|
||||
}
|
||||
@ -42,9 +45,23 @@ public abstract class EmuCoreBinder<T> : InternalEmuCoreBinder,
|
||||
App.input.OnDeviceConnected += InputDevicesMgr_OnDeviceConnected;
|
||||
}
|
||||
|
||||
/// <summary> 获取指定设备的注册Binder对象 </summary>
|
||||
/// <param name="device"></param>
|
||||
/// <returns>返回首个匹配对象</returns>
|
||||
public ControllerBinder GetRegistedBinder(InputDevice_D device)
|
||||
{
|
||||
foreach (var binding in m_controllerBinders)
|
||||
{
|
||||
if (device.Exclusive && GetRegistedBinder(device) != null) continue;
|
||||
if (binding.IsRegisted(device)) return binding;
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
private void InputDevicesMgr_OnDeviceConnected(InputDevice_D connectDevice)
|
||||
{
|
||||
foreach (var binding in m_bindingPages)
|
||||
foreach (var binding in m_controllerBinders)
|
||||
{
|
||||
binding.RegistInputDevice(connectDevice);
|
||||
}
|
||||
@ -52,7 +69,7 @@ public abstract class EmuCoreBinder<T> : InternalEmuCoreBinder,
|
||||
|
||||
private void InputDevicesMgr_OnDeviceLost(InputDevice_D lostDevice)
|
||||
{
|
||||
foreach (var binding in m_bindingPages)
|
||||
foreach (var binding in m_controllerBinders)
|
||||
{
|
||||
binding.UnregistInputDevice(lostDevice);
|
||||
}
|
||||
@ -71,7 +88,7 @@ public abstract class EmuCoreBinder<T> : InternalEmuCoreBinder,
|
||||
|
||||
public bool Start(T emuControl, int controllerIndex)
|
||||
{
|
||||
var binding = m_bindingPages[controllerIndex];
|
||||
var binding = m_controllerBinders[controllerIndex];
|
||||
foreach (var key in binding.GetBinding(emuControl))
|
||||
{
|
||||
if (key.Start) return true;
|
||||
@ -82,7 +99,7 @@ public abstract class EmuCoreBinder<T> : InternalEmuCoreBinder,
|
||||
|
||||
public bool Release(T emuControl, int controllerIndex)
|
||||
{
|
||||
var binding = m_bindingPages[controllerIndex];
|
||||
var binding = m_controllerBinders[controllerIndex];
|
||||
foreach (var key in binding.GetBinding(emuControl))
|
||||
{
|
||||
if (key.Release) return true;
|
||||
@ -100,7 +117,7 @@ public abstract class EmuCoreBinder<T> : InternalEmuCoreBinder,
|
||||
/// <returns></returns>
|
||||
public bool GetKey(T emuControl, int controllerIndex)
|
||||
{
|
||||
var binding = m_bindingPages[controllerIndex];
|
||||
var binding = m_controllerBinders[controllerIndex];
|
||||
foreach (var key in binding.GetBinding(emuControl))
|
||||
{
|
||||
if (key.Performing) return true;
|
||||
@ -116,7 +133,7 @@ public abstract class EmuCoreBinder<T> : InternalEmuCoreBinder,
|
||||
/// <returns></returns>
|
||||
public bool AnyKeyDown(int controllerIndex)
|
||||
{
|
||||
var binding = m_bindingPages[controllerIndex];
|
||||
var binding = m_controllerBinders[controllerIndex];
|
||||
return binding.AnyKeyDown();
|
||||
}
|
||||
|
||||
@ -130,7 +147,7 @@ public abstract class EmuCoreBinder<T> : InternalEmuCoreBinder,
|
||||
/// <returns></returns>
|
||||
public Vector2 GetVector2(T emuControl, int controllerIndex)
|
||||
{
|
||||
var binding = m_bindingPages[controllerIndex];
|
||||
var binding = m_controllerBinders[controllerIndex];
|
||||
foreach (var control in binding.GetBinding(emuControl))
|
||||
{
|
||||
if (!control.Performing) continue;
|
||||
@ -155,7 +172,7 @@ public abstract class EmuCoreBinder<T> : InternalEmuCoreBinder,
|
||||
var totalFloat = 0f;
|
||||
var totalControl = 0;
|
||||
|
||||
var binding = m_bindingPages[controllerIndex];
|
||||
var binding = m_controllerBinders[controllerIndex];
|
||||
foreach (var key in binding.GetBinding(emuControl))
|
||||
{
|
||||
if (!key.Performing) continue;
|
||||
@ -193,6 +210,10 @@ public abstract class EmuCoreBinder<T> : InternalEmuCoreBinder,
|
||||
{
|
||||
return m_registedDevices.ContainsKey(deviceType);
|
||||
}
|
||||
internal bool IsRegisted(InputDevice_D device)
|
||||
{
|
||||
return m_registedDevices.Values.Contains(device);
|
||||
}
|
||||
|
||||
internal void RegistInputDevice(InputDevice_D device)
|
||||
{
|
||||
|
@ -6,6 +6,8 @@ namespace AxibugEmuOnline.Client.InputDevices
|
||||
{
|
||||
public abstract class InputDevice_D
|
||||
{
|
||||
/// <summary> 指示该设备是否只能由一个Binder独占 </summary>
|
||||
public virtual bool Exclusive => true;
|
||||
public string UniqueName => m_resolver.GetDeviceName(this);
|
||||
|
||||
/// <summary> 指示该设备是否在线 </summary>
|
||||
|
@ -112,5 +112,6 @@ namespace AxibugEmuOnline.Client.InputDevices
|
||||
public Button_C ScrollLock;
|
||||
|
||||
public Keyboard_D(InputResolver resolver) : base(resolver) { }
|
||||
public override bool Exclusive => false;
|
||||
}
|
||||
}
|
@ -1,7 +1,6 @@
|
||||
using AxibugEmuOnline.Client.ClientCore;
|
||||
using AxibugEmuOnline.Client.Tools;
|
||||
using AxibugProtobuf;
|
||||
using MAME.Core;
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Runtime.InteropServices;
|
||||
@ -23,7 +22,7 @@ namespace AxibugEmuOnline.Client
|
||||
public RomPlatformType EmuPlatform { get; private set; }
|
||||
|
||||
/// <summary> 指示该存档是否为空 </summary>
|
||||
public bool IsEmpty { get; }
|
||||
public bool IsEmpty { get; private set; }
|
||||
/// <summary> 存档文件路径 </summary>
|
||||
public string FilePath
|
||||
{
|
||||
@ -39,9 +38,16 @@ namespace AxibugEmuOnline.Client
|
||||
}
|
||||
}
|
||||
|
||||
public event Action OnSavSuccessed;
|
||||
|
||||
/// <summary> 存档顺序号,用于判断云存档和本地存档的同步状态,是否存在冲突 </summary>
|
||||
public uint Sequecen { get; private set; }
|
||||
|
||||
SimpleFSM<SaveFile> FSM;
|
||||
byte[] m_savDataCaches;
|
||||
byte[] m_screenShotCaches;
|
||||
Header m_headerCache;
|
||||
bool m_cacheOutdate = true;
|
||||
|
||||
public SaveFile(int romID, RomPlatformType platform, int slotIndex)
|
||||
{
|
||||
@ -55,7 +61,7 @@ namespace AxibugEmuOnline.Client
|
||||
FSM.AddState<UploadingState>();
|
||||
FSM.AddState<SyncedState>();
|
||||
|
||||
IsEmpty = File.Exists(FilePath);
|
||||
IsEmpty = !File.Exists(FilePath);
|
||||
|
||||
if (IsEmpty) Sequecen = 0;
|
||||
else //从文件头读取存储序号
|
||||
@ -83,8 +89,28 @@ namespace AxibugEmuOnline.Client
|
||||
{
|
||||
FSM.Update();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获得存档的保存时间(UTC)
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public DateTime GetSavTimeUTC()
|
||||
{
|
||||
GetSavData(out _, out _);
|
||||
return new DateTime((long)m_headerCache.SavTicks, DateTimeKind.Utc);
|
||||
}
|
||||
|
||||
public unsafe void GetSavData(out byte[] savData, out byte[] screenShotData)
|
||||
{
|
||||
if (!m_cacheOutdate)
|
||||
{
|
||||
savData = m_savDataCaches;
|
||||
screenShotData = m_screenShotCaches;
|
||||
return;
|
||||
}
|
||||
|
||||
m_cacheOutdate = false;
|
||||
|
||||
savData = null;
|
||||
screenShotData = null;
|
||||
|
||||
@ -99,17 +125,21 @@ namespace AxibugEmuOnline.Client
|
||||
return;
|
||||
}
|
||||
|
||||
var header = new Header();
|
||||
IntPtr ptr = Marshal.AllocHGlobal(headerSize);
|
||||
Marshal.StructureToPtr(header, ptr, false);
|
||||
Marshal.Copy(raw, 0, ptr, headerSize);
|
||||
Marshal.FreeHGlobal(ptr);
|
||||
m_headerCache = new Header();
|
||||
fixed (Header* headPtr = &m_headerCache)
|
||||
{
|
||||
var headP = (byte*)headPtr;
|
||||
Marshal.Copy(raw, 0, (IntPtr)headP, sizeof(Header));
|
||||
}
|
||||
|
||||
savData = new byte[header.DataLength];
|
||||
savData = new byte[m_headerCache.DataLength];
|
||||
Array.Copy(raw, headerSize, savData, 0, savData.Length);
|
||||
screenShotData = new byte[header.ScreenShotLength];
|
||||
screenShotData = new byte[m_headerCache.ScreenShotLength];
|
||||
Array.Copy(raw, headerSize + savData.Length, screenShotData, 0, screenShotData.Length);
|
||||
|
||||
m_savDataCaches = savData;
|
||||
m_screenShotCaches = screenShotData;
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
@ -121,8 +151,9 @@ namespace AxibugEmuOnline.Client
|
||||
{
|
||||
Sequence = sequence,
|
||||
RomID = RomID,
|
||||
DataLength = savData.Length,
|
||||
ScreenShotLength = screenShotData.Length
|
||||
SavTicks = (ulong)DateTime.UtcNow.Ticks,
|
||||
DataLength = (uint)savData.Length,
|
||||
ScreenShotLength = (uint)screenShotData.Length,
|
||||
};
|
||||
int headerSize = Marshal.SizeOf(typeof(Header));
|
||||
IntPtr ptr = Marshal.AllocHGlobal(headerSize);
|
||||
@ -144,6 +175,14 @@ namespace AxibugEmuOnline.Client
|
||||
|
||||
File.WriteAllBytes(filePath, raw);
|
||||
Sequecen = sequence;
|
||||
|
||||
m_headerCache = header;
|
||||
m_savDataCaches = savData;
|
||||
m_screenShotCaches = screenShotData;
|
||||
|
||||
IsEmpty = false;
|
||||
|
||||
OnSavSuccessed?.Invoke();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@ -157,7 +196,7 @@ namespace AxibugEmuOnline.Client
|
||||
}
|
||||
|
||||
|
||||
[StructLayout(LayoutKind.Explicit, Size = 16)]
|
||||
[StructLayout(LayoutKind.Explicit, Size = 24)]
|
||||
struct Header
|
||||
{
|
||||
[FieldOffset(0)]
|
||||
@ -165,9 +204,11 @@ namespace AxibugEmuOnline.Client
|
||||
[FieldOffset(4)]
|
||||
public int RomID;
|
||||
[FieldOffset(8)]
|
||||
public int DataLength;
|
||||
[FieldOffset(12)]
|
||||
public int ScreenShotLength;
|
||||
public ulong SavTicks;
|
||||
[FieldOffset(16)]
|
||||
public uint DataLength;
|
||||
[FieldOffset(20)]
|
||||
public uint ScreenShotLength;
|
||||
}
|
||||
|
||||
public enum EnumState
|
||||
|
@ -51,7 +51,7 @@ namespace AxibugEmuOnline.Client
|
||||
{
|
||||
if (Datacontext != null && Datacontext.Paramerters.Count > 0)
|
||||
{
|
||||
var opts = new List<OptionMenu>();
|
||||
var opts = new List<InternalOptionMenu>();
|
||||
opts.Add(new Opt_CreatePreset(Datacontext));
|
||||
opts.AddRange(Datacontext.Presets.Select(p => new Opt_Presets(Datacontext, p)));
|
||||
|
||||
@ -101,7 +101,7 @@ namespace AxibugEmuOnline.Client
|
||||
private Filter m_filter;
|
||||
private FilterPreset m_preset;
|
||||
private OptionUI_MenuItem m_ui;
|
||||
private List<OptionMenu> m_menu;
|
||||
private List<InternalOptionMenu> m_menu;
|
||||
|
||||
public override string Name => m_preset.Name;
|
||||
|
||||
@ -110,7 +110,7 @@ namespace AxibugEmuOnline.Client
|
||||
m_filter = filter;
|
||||
m_preset = preset;
|
||||
|
||||
m_menu = new List<OptionMenu>();
|
||||
m_menu = new List<InternalOptionMenu>();
|
||||
m_menu.Add(new Opt_Delete(m_filter, m_preset));
|
||||
foreach (var p in m_filter.Paramerters)
|
||||
{
|
||||
@ -142,7 +142,7 @@ namespace AxibugEmuOnline.Client
|
||||
App.settings.Filter.EnableFilter(m_filter);
|
||||
}
|
||||
|
||||
protected override List<OptionMenu> GetOptionMenus()
|
||||
protected override List<InternalOptionMenu> GetOptionMenus()
|
||||
{
|
||||
return m_menu;
|
||||
}
|
||||
|
@ -21,13 +21,13 @@ namespace AxibugEmuOnline.Client
|
||||
}
|
||||
}
|
||||
|
||||
private List<OptionMenu> m_options;
|
||||
private List<InternalOptionMenu> m_options;
|
||||
|
||||
protected override void Awake()
|
||||
{
|
||||
base.Awake();
|
||||
|
||||
m_options = new List<OptionMenu>()
|
||||
m_options = new List<InternalOptionMenu>()
|
||||
{
|
||||
new OptMenu_Search(this),
|
||||
new OptMenu_ShowAll(this),
|
||||
|
@ -13,7 +13,7 @@ namespace AxibugEmuOnline.Client
|
||||
private object m_state;
|
||||
private StepPerformer m_stepPerformer;
|
||||
|
||||
private readonly List<OptionMenu> menus = new List<OptionMenu>();
|
||||
private readonly List<InternalOptionMenu> menus = new List<InternalOptionMenu>();
|
||||
public static InGameUI Instance { get; private set; }
|
||||
|
||||
public RomFile RomFile { get; private set; }
|
||||
@ -45,8 +45,9 @@ namespace AxibugEmuOnline.Client
|
||||
menus.Add(new InGameUI_FilterSetting(this));
|
||||
menus.Add(new InGameUI_Scaler(this));
|
||||
menus.Add(new InGameUI_Reset(this));
|
||||
menus.Add(new InGameUI_SaveState(this));
|
||||
menus.Add(new InGameUI_LoadState(this));
|
||||
menus.Add(new InGameUI_SaveStateQuick(this));
|
||||
menus.Add(new InGameUI_LoadStateQuick(this));
|
||||
menus.Add(new InGameUI_SaveStateMenu(this));
|
||||
menus.Add(new InGameUI_QuitGame(this));
|
||||
|
||||
base.Awake();
|
||||
|
@ -15,11 +15,11 @@ namespace AxibugEmuOnline.Client
|
||||
m_gameUI = gameUI;
|
||||
}
|
||||
|
||||
protected override List<OptionMenu> GetOptionMenus()
|
||||
protected override List<InternalOptionMenu> GetOptionMenus()
|
||||
{
|
||||
List<OptionMenu> menus = new List<OptionMenu>();
|
||||
List<InternalOptionMenu> menus = new List<InternalOptionMenu>();
|
||||
menus.Add(new FilterNone(m_gameUI.RomFile));
|
||||
menus.AddRange(App.settings.Filter.Filters.Select(f => new FilterMenu(m_gameUI.RomFile, f) as OptionMenu));
|
||||
menus.AddRange(App.settings.Filter.Filters.Select(f => new FilterMenu(m_gameUI.RomFile, f) as InternalOptionMenu));
|
||||
return menus;
|
||||
}
|
||||
|
||||
@ -44,7 +44,7 @@ namespace AxibugEmuOnline.Client
|
||||
public class FilterMenu : ExpandMenu
|
||||
{
|
||||
private Filter m_filter;
|
||||
private List<OptionMenu> m_presetsMenuItems;
|
||||
private List<InternalOptionMenu> m_presetsMenuItems;
|
||||
|
||||
public override bool IsApplied
|
||||
{
|
||||
@ -62,11 +62,11 @@ namespace AxibugEmuOnline.Client
|
||||
public FilterMenu(RomFile rom, Filter filter)
|
||||
{
|
||||
m_filter = filter;
|
||||
m_presetsMenuItems = new List<OptionMenu> { new FilterPresetMenu(rom, m_filter, m_filter.DefaultPreset) };
|
||||
m_presetsMenuItems = new List<InternalOptionMenu> { new FilterPresetMenu(rom, m_filter, m_filter.DefaultPreset) };
|
||||
m_presetsMenuItems.AddRange(m_filter.Presets.Select(preset => new FilterPresetMenu(rom, m_filter, preset)));
|
||||
}
|
||||
|
||||
protected override List<OptionMenu> GetOptionMenus()
|
||||
protected override List<InternalOptionMenu> GetOptionMenus()
|
||||
{
|
||||
return m_presetsMenuItems;
|
||||
}
|
||||
|
@ -1,12 +1,12 @@
|
||||
namespace AxibugEmuOnline.Client
|
||||
{
|
||||
public class InGameUI_LoadState : ExecuteMenu
|
||||
public class InGameUI_LoadStateQuick : ExecuteMenu
|
||||
{
|
||||
private InGameUI m_gameUI;
|
||||
public override bool Visible => !m_gameUI.IsNetPlay;
|
||||
public override string Name => "读取快照";
|
||||
public override bool Visible => !m_gameUI.IsNetPlay && m_gameUI.GetQuickState() != null;
|
||||
public override string Name => "快速读取";
|
||||
|
||||
public InGameUI_LoadState(InGameUI gameUI)
|
||||
public InGameUI_LoadStateQuick(InGameUI gameUI)
|
||||
{
|
||||
m_gameUI = gameUI;
|
||||
}
|
@ -0,0 +1,102 @@
|
||||
using AxibugEmuOnline.Client.ClientCore;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
|
||||
namespace AxibugEmuOnline.Client
|
||||
{
|
||||
public class InGameUI_SaveStateMenu : ExpandMenu
|
||||
{
|
||||
private InGameUI m_gameUI;
|
||||
|
||||
public override string Name => "存档";
|
||||
|
||||
public InGameUI_SaveStateMenu(InGameUI inGameUI)
|
||||
{
|
||||
m_gameUI = inGameUI;
|
||||
}
|
||||
|
||||
protected override List<InternalOptionMenu> GetOptionMenus()
|
||||
{
|
||||
var saveFiles = App.SavMgr.GetSlotSaves(m_gameUI.RomFile.ID, m_gameUI.RomFile.Platform);
|
||||
List<InternalOptionMenu> result = new List<InternalOptionMenu>();
|
||||
foreach (var savFile in saveFiles)
|
||||
{
|
||||
result.Add(new SaveSlotMenu(m_gameUI, savFile));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
/// <summary> 存档侧边选项UI </summary>
|
||||
public class SaveSlotMenu : ExpandMenu
|
||||
{
|
||||
public override Type MenuUITemplateType => typeof(OptionUI_SavSlotItem);
|
||||
public SaveFile SavFile { get; private set; }
|
||||
|
||||
List<InternalOptionMenu> m_subOptions = new List<InternalOptionMenu>();
|
||||
public override string Name => SavFile.AutoSave ? "自动存档" : $"存档{SavFile.SlotIndex}";
|
||||
|
||||
public SaveSlotMenu(InGameUI inGameui, SaveFile savFile)
|
||||
{
|
||||
SavFile = savFile;
|
||||
|
||||
//非自动存档,增加保存选项
|
||||
if (!savFile.AutoSave) m_subOptions.Add(new SaveMenuItem(inGameui, savFile));
|
||||
//添加读取选项
|
||||
m_subOptions.Add(new LoadMenuItem(inGameui, savFile));
|
||||
}
|
||||
|
||||
protected override List<InternalOptionMenu> GetOptionMenus()
|
||||
{
|
||||
return m_subOptions;
|
||||
}
|
||||
|
||||
public class SaveMenuItem : ExecuteMenu
|
||||
{
|
||||
SaveFile m_savFile;
|
||||
InGameUI m_ingameUI;
|
||||
public override string Name => "保存";
|
||||
|
||||
public SaveMenuItem(InGameUI inGameui, SaveFile savFile)
|
||||
{
|
||||
m_ingameUI = inGameui;
|
||||
m_savFile = savFile;
|
||||
}
|
||||
|
||||
public override void OnExcute(OptionUI optionUI, ref bool cancelHide)
|
||||
{
|
||||
var stateData = m_ingameUI.Core.GetStateBytes();
|
||||
var tex = m_ingameUI.Core.OutputPixel;
|
||||
var screenData = tex.ToJPG();
|
||||
|
||||
m_savFile.Save(m_savFile.Sequecen, stateData, screenData);
|
||||
}
|
||||
}
|
||||
|
||||
public class LoadMenuItem : ExecuteMenu
|
||||
{
|
||||
SaveFile m_savFile;
|
||||
InGameUI m_ingameUI;
|
||||
public override string Name => "读取";
|
||||
|
||||
public LoadMenuItem(InGameUI inGameui, SaveFile savFile)
|
||||
{
|
||||
m_ingameUI = inGameui;
|
||||
m_savFile = savFile;
|
||||
}
|
||||
|
||||
public override void OnExcute(OptionUI optionUI, ref bool cancelHide)
|
||||
{
|
||||
cancelHide = true;
|
||||
m_savFile.GetSavData(out byte[] savData, out var _);
|
||||
if (savData != null)
|
||||
{
|
||||
m_ingameUI.Core.LoadStateFromBytes(savData);
|
||||
}
|
||||
|
||||
OverlayManager.HideSideBar();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 62f9d15054674d646b218039b90d8dd4
|
@ -3,14 +3,14 @@ using System.Diagnostics;
|
||||
|
||||
namespace AxibugEmuOnline.Client
|
||||
{
|
||||
public class InGameUI_SaveState : ExecuteMenu
|
||||
public class InGameUI_SaveStateQuick : ExecuteMenu
|
||||
{
|
||||
private InGameUI m_gameUI;
|
||||
|
||||
public override bool Visible => !m_gameUI.IsNetPlay;
|
||||
public override string Name => "保存快照";
|
||||
public override string Name => "快速保存";
|
||||
|
||||
public InGameUI_SaveState(InGameUI gameUI)
|
||||
public InGameUI_SaveStateQuick(InGameUI gameUI)
|
||||
{
|
||||
m_gameUI = gameUI;
|
||||
}
|
@ -7,7 +7,7 @@ namespace AxibugEmuOnline.Client
|
||||
{
|
||||
public class InGameUI_Scaler : ExpandMenu
|
||||
{
|
||||
private List<OptionMenu> m_subMenus = new List<OptionMenu>();
|
||||
private List<InternalOptionMenu> m_subMenus = new List<InternalOptionMenu>();
|
||||
public override string Name => "屏幕比例";
|
||||
public InGameUI_Scaler(InGameUI inGameUI)
|
||||
{
|
||||
@ -18,7 +18,7 @@ namespace AxibugEmuOnline.Client
|
||||
}
|
||||
}
|
||||
|
||||
protected override List<OptionMenu> GetOptionMenus()
|
||||
protected override List<InternalOptionMenu> GetOptionMenus()
|
||||
{
|
||||
return m_subMenus;
|
||||
}
|
||||
|
@ -13,10 +13,7 @@ namespace AxibugEmuOnline.Client
|
||||
[SerializeField]
|
||||
Selector SelectBorder;
|
||||
|
||||
[Space]
|
||||
[Header("模板")]
|
||||
[SerializeField] OptionUI_ExecuteItem TEMPLATE_EXECUTEITEM;
|
||||
[SerializeField] OptionUI_ValueEditItem TEMPLATE_VALUEEDITITEM;
|
||||
Dictionary<Type, OptionUI_MenuItem> m_menuUI_templates = new Dictionary<Type, OptionUI_MenuItem>();
|
||||
|
||||
private OptionUI m_child;
|
||||
private OptionUI m_parent;
|
||||
@ -67,8 +64,11 @@ namespace AxibugEmuOnline.Client
|
||||
|
||||
protected override void Awake()
|
||||
{
|
||||
TEMPLATE_EXECUTEITEM.gameObject.SetActiveEx(false);
|
||||
TEMPLATE_VALUEEDITITEM.gameObject.SetActiveEx(false);
|
||||
foreach (var templateIns in GetComponentsInChildren<OptionUI_MenuItem>(true))
|
||||
{
|
||||
m_menuUI_templates[templateIns.GetType()] = templateIns;
|
||||
templateIns.gameObject.SetActiveEx(false);
|
||||
}
|
||||
|
||||
SelectBorder.gameObject.SetActiveEx(false);
|
||||
base.Awake();
|
||||
@ -117,6 +117,7 @@ namespace AxibugEmuOnline.Client
|
||||
if (m_runtimeMenuItems[currentSelect].Visible)
|
||||
{
|
||||
find = true;
|
||||
break;
|
||||
}
|
||||
currentSelect++;
|
||||
}
|
||||
@ -154,7 +155,7 @@ namespace AxibugEmuOnline.Client
|
||||
/// 当菜单弹出时,动态添加一个菜单选项
|
||||
/// </summary>
|
||||
/// <param name="menu"></param>
|
||||
public void AddOptionMenuWhenPoping(OptionMenu menu)
|
||||
public void AddOptionMenuWhenPoping(InternalOptionMenu menu)
|
||||
{
|
||||
if (!m_bPoped) return;
|
||||
|
||||
@ -166,7 +167,7 @@ namespace AxibugEmuOnline.Client
|
||||
SelectBorder.Target = optionUI_MenuItem.transform as RectTransform;
|
||||
}
|
||||
|
||||
public void Pop<T>(List<T> menus, int defaultIndex = 0, Action onClose = null) where T : OptionMenu
|
||||
public void Pop<T>(List<T> menus, int defaultIndex = 0, Action onClose = null) where T : InternalOptionMenu
|
||||
{
|
||||
m_onClose = onClose;
|
||||
ReleaseRuntimeMenus();
|
||||
@ -220,14 +221,21 @@ namespace AxibugEmuOnline.Client
|
||||
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 关闭这个侧边栏选项UI
|
||||
/// </summary>
|
||||
public void Hide()
|
||||
{
|
||||
if (m_bPoped)
|
||||
{
|
||||
if (m_child != null)
|
||||
{
|
||||
m_child.Hide();
|
||||
}
|
||||
|
||||
Vector2 start = new Vector2(-MenuRoot.rect.width, MenuRoot.anchoredPosition.y);
|
||||
Vector2 end = new Vector2(0, MenuRoot.anchoredPosition.y);
|
||||
|
||||
|
||||
ReleaseRuntimeMenus();
|
||||
m_runtimeMenuItems.Clear();
|
||||
|
||||
@ -270,25 +278,18 @@ namespace AxibugEmuOnline.Client
|
||||
}
|
||||
}
|
||||
|
||||
private void CreateRuntimeMenuItem(OptionMenu menuData)
|
||||
private void CreateRuntimeMenuItem(InternalOptionMenu menuData)
|
||||
{
|
||||
if (menuData is ExecuteMenu)
|
||||
m_menuUI_templates.TryGetValue(menuData.MenuUITemplateType, out var template);
|
||||
if (template == null)
|
||||
{
|
||||
ExecuteMenu executeMenu = (ExecuteMenu)menuData;
|
||||
var menuUI = Instantiate(TEMPLATE_EXECUTEITEM.gameObject, TEMPLATE_EXECUTEITEM.transform.parent).GetComponent<OptionUI_ExecuteItem>();
|
||||
menuUI.gameObject.SetActive(true);
|
||||
menuUI.SetData(this, executeMenu);
|
||||
m_runtimeMenuItems.Add(menuUI);
|
||||
}
|
||||
else if (menuData is ValueSetMenu)
|
||||
{
|
||||
var valueSetMenu = (ValueSetMenu)menuData;
|
||||
var menuUI = Instantiate(TEMPLATE_VALUEEDITITEM.gameObject, TEMPLATE_VALUEEDITITEM.transform.parent).GetComponent<OptionUI_ValueEditItem>();
|
||||
menuUI.gameObject.SetActive(true);
|
||||
menuUI.SetData(this, valueSetMenu);
|
||||
m_runtimeMenuItems.Add(menuUI);
|
||||
}
|
||||
else throw new NotImplementedException($"暂不支持的菜单类型{menuData.GetType().Name}");
|
||||
throw new NotImplementedException($"{menuData.GetType().Name}指定的MenuUI类型实例未在OptionUI中找到");
|
||||
}
|
||||
|
||||
var menuUI = Instantiate(template.gameObject, template.transform.parent).GetComponent<OptionUI_MenuItem>();
|
||||
menuUI.gameObject.SetActive(true);
|
||||
menuUI.SetData(this, menuData);
|
||||
m_runtimeMenuItems.Add(menuUI);
|
||||
}
|
||||
|
||||
private void ReleaseRuntimeMenus()
|
||||
@ -361,7 +362,7 @@ namespace AxibugEmuOnline.Client
|
||||
/// <param name="menus"></param>
|
||||
/// <param name="defaultIndex"></param>
|
||||
/// <param name="onClose"></param>
|
||||
public void ExpandSubMenu<T>(List<T> menus, int defaultIndex = 0, Action onClose = null) where T : OptionMenu
|
||||
public void ExpandSubMenu<T>(List<T> menus, int defaultIndex = 0, Action onClose = null) where T : InternalOptionMenu
|
||||
{
|
||||
if (m_child == null)
|
||||
{
|
||||
@ -392,8 +393,9 @@ namespace AxibugEmuOnline.Client
|
||||
/// <summary>
|
||||
/// 带有执行行为的菜单
|
||||
/// </summary>
|
||||
public abstract class ExecuteMenu : OptionMenu
|
||||
public abstract class ExecuteMenu : InternalOptionMenu
|
||||
{
|
||||
public override Type MenuUITemplateType => typeof(OptionUI_ExecuteItem);
|
||||
/// <summary> 设置这个值以控制菜单中显示"已应用"标记 </summary>
|
||||
public virtual bool IsApplied { get; }
|
||||
|
||||
@ -413,13 +415,14 @@ namespace AxibugEmuOnline.Client
|
||||
optionUI.ExpandSubMenu(GetOptionMenus());
|
||||
}
|
||||
|
||||
protected abstract List<OptionMenu> GetOptionMenus();
|
||||
protected abstract List<InternalOptionMenu> GetOptionMenus();
|
||||
}
|
||||
/// <summary>
|
||||
/// 带有值类型显示和编辑的菜单
|
||||
/// </summary>
|
||||
public abstract class ValueSetMenu : OptionMenu
|
||||
public abstract class ValueSetMenu : InternalOptionMenu
|
||||
{
|
||||
public override Type MenuUITemplateType => typeof(OptionUI_ValueEditItem);
|
||||
protected ValueSetMenu() : base() { }
|
||||
|
||||
public abstract Type ValueType { get; }
|
||||
@ -430,8 +433,9 @@ namespace AxibugEmuOnline.Client
|
||||
}
|
||||
|
||||
/// <summary> 不要直接继承这个类 </summary>
|
||||
public abstract class OptionMenu
|
||||
public abstract class InternalOptionMenu
|
||||
{
|
||||
public abstract Type MenuUITemplateType { get; }
|
||||
public abstract string Name { get; }
|
||||
public virtual Sprite Icon { get; }
|
||||
public virtual bool Visible => true;
|
||||
@ -439,7 +443,6 @@ namespace AxibugEmuOnline.Client
|
||||
|
||||
public virtual void OnFocus() { }
|
||||
public virtual void OnShow(OptionUI_MenuItem ui) { }
|
||||
public virtual void OnHide() { }
|
||||
public virtual void OnHide() { }
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -7,7 +7,7 @@ namespace AxibugEmuOnline.Client
|
||||
public GameObject ExpandFlag;
|
||||
public GameObject ApplyFlag;
|
||||
|
||||
protected override void OnSetData(OptionMenu menuData)
|
||||
protected override void OnSetData(InternalOptionMenu menuData)
|
||||
{
|
||||
base.OnSetData(menuData);
|
||||
|
||||
|
@ -12,9 +12,9 @@ namespace AxibugEmuOnline.Client
|
||||
|
||||
public bool Visible => m_Menu.Visible;
|
||||
public OptionUI OptionUI { get; private set; }
|
||||
protected OptionMenu m_Menu;
|
||||
protected InternalOptionMenu m_Menu;
|
||||
|
||||
public void SetData(OptionUI optionUI, OptionMenu menuData)
|
||||
public void SetData(OptionUI optionUI, InternalOptionMenu menuData)
|
||||
{
|
||||
OptionUI = optionUI;
|
||||
m_Menu = menuData;
|
||||
@ -33,7 +33,7 @@ namespace AxibugEmuOnline.Client
|
||||
public bool IsExpandMenu => m_Menu is ExpandMenu;
|
||||
public bool IsApplied => m_Menu is ExecuteMenu om && om.IsApplied;
|
||||
|
||||
protected abstract void OnSetData(OptionMenu menuData);
|
||||
protected abstract void OnSetData(InternalOptionMenu menuData);
|
||||
|
||||
public abstract void OnExecute(OptionUI optionUI, ref bool cancelHide);
|
||||
public virtual void OnLeft() { }
|
||||
@ -44,11 +44,11 @@ namespace AxibugEmuOnline.Client
|
||||
}
|
||||
|
||||
public abstract class OptionUI_MenuItem<T> : OptionUI_MenuItem
|
||||
where T : OptionMenu
|
||||
where T : InternalOptionMenu
|
||||
{
|
||||
protected T MenuData => m_Menu as T;
|
||||
|
||||
protected override void OnSetData(OptionMenu menuData)
|
||||
protected override void OnSetData(InternalOptionMenu menuData)
|
||||
{
|
||||
MenuData.OnShow(this);
|
||||
}
|
||||
|
@ -0,0 +1,71 @@
|
||||
using UnityEngine;
|
||||
using UnityEngine.UI;
|
||||
using static AxibugEmuOnline.Client.InGameUI_SaveStateMenu;
|
||||
|
||||
namespace AxibugEmuOnline.Client
|
||||
{
|
||||
public class OptionUI_SavSlotItem : OptionUI_MenuItem<SaveSlotMenu>
|
||||
{
|
||||
public RawImage UI_ScreenShot;
|
||||
public Image UI_Empty;
|
||||
public Text UI_SavTime;
|
||||
|
||||
Texture2D m_screenTex;
|
||||
|
||||
protected override void OnSetData(InternalOptionMenu menuData)
|
||||
{
|
||||
base.OnSetData(menuData);
|
||||
|
||||
RefreshUI();
|
||||
|
||||
MenuData.SavFile.OnSavSuccessed += RefreshUI;
|
||||
}
|
||||
|
||||
private void RefreshUI()
|
||||
{
|
||||
bool isEmpty = MenuData.SavFile.IsEmpty;
|
||||
UI_ScreenShot.gameObject.SetActiveEx(!isEmpty);
|
||||
UI_Empty.gameObject.SetActiveEx(isEmpty);
|
||||
UI_SavTime.gameObject.SetActiveEx(true);
|
||||
|
||||
if (isEmpty)
|
||||
{
|
||||
UI_SavTime.text = "没有数据";
|
||||
if (m_screenTex)
|
||||
{
|
||||
Destroy(m_screenTex);
|
||||
m_screenTex = null;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
var savTime = MenuData.SavFile.GetSavTimeUTC().ToLocalTime();
|
||||
UI_SavTime.text = $"{savTime.Year}/{savTime.Month:00}/{savTime.Day:00}\n{savTime.Hour}:{savTime.Minute}:{savTime.Second}";
|
||||
MenuData.SavFile.GetSavData(out byte[] _, out byte[] screenShotData);
|
||||
|
||||
if (!m_screenTex) m_screenTex = new Texture2D(1, 1);
|
||||
|
||||
m_screenTex.LoadImage(screenShotData);
|
||||
UI_ScreenShot.texture = m_screenTex;
|
||||
}
|
||||
}
|
||||
|
||||
public override void OnHide()
|
||||
{
|
||||
base.OnHide();
|
||||
|
||||
if (m_screenTex)
|
||||
{
|
||||
Destroy(m_screenTex);
|
||||
m_screenTex = null;
|
||||
}
|
||||
|
||||
MenuData.SavFile.OnSavSuccessed -= RefreshUI;
|
||||
}
|
||||
|
||||
public override void OnExecute(OptionUI optionUI, ref bool cancelHide)
|
||||
{
|
||||
MenuData.OnExcute(optionUI, ref cancelHide);
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 688af9c7251c334489191abcae4e0164
|
@ -16,7 +16,7 @@ namespace AxibugEmuOnline.Client
|
||||
|
||||
IValueEditControl m_currentCom;
|
||||
|
||||
protected override void OnSetData(OptionMenu menuData)
|
||||
protected override void OnSetData(InternalOptionMenu menuData)
|
||||
{
|
||||
com_floatEdit.gameObject.SetActive(false);
|
||||
com_intEdit.gameObject.SetActive(false);
|
||||
|
@ -34,14 +34,20 @@ namespace AxibugEmuOnline.Client
|
||||
#endif
|
||||
}
|
||||
|
||||
public static void PopSideBar<T>(List<T> menus, int defaultIndex = 0, Action onClose = null) where T : OptionMenu
|
||||
public static void PopSideBar<T>(List<T> menus, int defaultIndex = 0, Action onClose = null) where T : InternalOptionMenu
|
||||
{
|
||||
s_ins.m_OptionUI.Pop(menus, defaultIndex, onClose);
|
||||
}
|
||||
|
||||
public static void HideSideBar()
|
||||
{
|
||||
s_ins.m_OptionUI.Hide();
|
||||
}
|
||||
|
||||
public static void PopTip(string msg)
|
||||
{
|
||||
s_ins.m_popTipsUI.Pop(msg);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -54,5 +54,38 @@ namespace AxibugEmuOnline.Client
|
||||
}));
|
||||
|
||||
}
|
||||
|
||||
public static byte[] ToJPG(this Texture texture)
|
||||
{
|
||||
Texture2D outputTex = null;
|
||||
if (texture is RenderTexture rt)
|
||||
{
|
||||
outputTex = ConvertFromRenderTexture(rt);
|
||||
}
|
||||
else if (texture is Texture2D)
|
||||
{
|
||||
outputTex = texture as Texture2D;
|
||||
}
|
||||
|
||||
return outputTex.EncodeToJPG();
|
||||
}
|
||||
|
||||
private static Texture2D ConvertFromRenderTexture(RenderTexture rt)
|
||||
{
|
||||
// 创建临时RenderTexture并拷贝内容
|
||||
RenderTexture tempRT = RenderTexture.GetTemporary(rt.width, rt.height, 0, RenderTextureFormat.ARGB32);
|
||||
Graphics.Blit(rt, tempRT);
|
||||
|
||||
// 读取到Texture2D
|
||||
Texture2D tex = new Texture2D(rt.width, rt.height, TextureFormat.RGBA32, false);
|
||||
RenderTexture.active = tempRT;
|
||||
tex.ReadPixels(new Rect(0, 0, tempRT.width, tempRT.height), 0, 0);
|
||||
tex.Apply();
|
||||
|
||||
// 释放资源
|
||||
RenderTexture.active = null;
|
||||
RenderTexture.ReleaseTemporary(tempRT);
|
||||
return tex;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,37 +0,0 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!114 &1
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 53
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 13964, guid: 0000000000000000e000000000000000, type: 0}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_EnablePreReleasePackages: 0
|
||||
m_AdvancedSettingsExpanded: 1
|
||||
m_ScopedRegistriesSettingsExpanded: 1
|
||||
m_SeeAllPackageVersions: 0
|
||||
m_DismissPreviewPackagesInUse: 0
|
||||
oneTimeWarningShown: 0
|
||||
oneTimeDeprecatedPopUpShown: 0
|
||||
m_Registries:
|
||||
- m_Id: main
|
||||
m_Name:
|
||||
m_Url: https://packages.unity.com
|
||||
m_Scopes: []
|
||||
m_IsDefault: 1
|
||||
m_Capabilities: 7
|
||||
m_ConfigSource: 0
|
||||
m_UserSelectedRegistryName:
|
||||
m_UserAddingNewScopedRegistry: 0
|
||||
m_RegistryInfoDraft:
|
||||
m_Modified: 0
|
||||
m_ErrorMessage:
|
||||
m_UserModificationsInstanceId: -882
|
||||
m_OriginalInstanceId: -884
|
||||
m_LoadAssets: 0
|
Loading…
Reference in New Issue
Block a user