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/bin/
|
||||||
AxibugEmuOnline.GameScreenConvert/obj/
|
AxibugEmuOnline.GameScreenConvert/obj/
|
||||||
|
|
||||||
/.vs/
|
/.vs/
|
||||||
|
AxibugEmuOnline.Client/ProjectSettings/PackageManagerSettings.asset
|
||||||
|
@ -35,7 +35,7 @@ RectTransform:
|
|||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
m_AnchorMin: {x: 0, y: 1}
|
m_AnchorMin: {x: 0, y: 1}
|
||||||
m_AnchorMax: {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_SizeDelta: {x: 183, y: 26}
|
||||||
m_Pivot: {x: 0.5, y: 0.5}
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
--- !u!222 &4761092020446986678
|
--- !u!222 &4761092020446986678
|
||||||
@ -229,8 +229,8 @@ RectTransform:
|
|||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
m_AnchorMin: {x: 0, y: 1}
|
m_AnchorMin: {x: 0, y: 1}
|
||||||
m_AnchorMax: {x: 0, y: 1}
|
m_AnchorMax: {x: 0, y: 1}
|
||||||
m_AnchoredPosition: {x: 20, y: -15.666667}
|
m_AnchoredPosition: {x: 20, y: -20}
|
||||||
m_SizeDelta: {x: 40, y: 31.333334}
|
m_SizeDelta: {x: 40, y: 40}
|
||||||
m_Pivot: {x: 0.5, y: 0.5}
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
--- !u!222 &7860273967724122996
|
--- !u!222 &7860273967724122996
|
||||||
CanvasRenderer:
|
CanvasRenderer:
|
||||||
@ -325,8 +325,8 @@ RectTransform:
|
|||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
m_AnchorMin: {x: 0, y: 1}
|
m_AnchorMin: {x: 0, y: 1}
|
||||||
m_AnchorMax: {x: 0, y: 1}
|
m_AnchorMax: {x: 0, y: 1}
|
||||||
m_AnchoredPosition: {x: 40, y: -25.666668}
|
m_AnchoredPosition: {x: 40, y: -30}
|
||||||
m_SizeDelta: {x: 40, y: 31.333336}
|
m_SizeDelta: {x: 40, y: 40}
|
||||||
m_Pivot: {x: 0.5, y: 0.5}
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
--- !u!222 &6442047476311195174
|
--- !u!222 &6442047476311195174
|
||||||
CanvasRenderer:
|
CanvasRenderer:
|
||||||
@ -555,8 +555,8 @@ RectTransform:
|
|||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
m_AnchorMin: {x: 0, y: 1}
|
m_AnchorMin: {x: 0, y: 1}
|
||||||
m_AnchorMax: {x: 0, y: 1}
|
m_AnchorMax: {x: 0, y: 1}
|
||||||
m_AnchoredPosition: {x: 175.5, y: -134.66667}
|
m_AnchoredPosition: {x: 155, y: -165}
|
||||||
m_SizeDelta: {x: 311, y: 31.333334}
|
m_SizeDelta: {x: 270, y: 40}
|
||||||
m_Pivot: {x: 0.5, y: 0.5}
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
--- !u!114 &406189280625441644
|
--- !u!114 &406189280625441644
|
||||||
MonoBehaviour:
|
MonoBehaviour:
|
||||||
@ -625,7 +625,7 @@ RectTransform:
|
|||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
m_AnchorMin: {x: 0, y: 1}
|
m_AnchorMin: {x: 0, y: 1}
|
||||||
m_AnchorMax: {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_SizeDelta: {x: 20, y: 20}
|
||||||
m_Pivot: {x: 0.5, y: 0.5}
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
--- !u!114 &8983615257379814102
|
--- !u!114 &8983615257379814102
|
||||||
@ -904,8 +904,8 @@ RectTransform:
|
|||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
m_AnchorMin: {x: 0, y: 1}
|
m_AnchorMin: {x: 0, y: 1}
|
||||||
m_AnchorMax: {x: 0, y: 1}
|
m_AnchorMax: {x: 0, y: 1}
|
||||||
m_AnchoredPosition: {x: 175.5, y: -171.00002}
|
m_AnchoredPosition: {x: 155, y: -210}
|
||||||
m_SizeDelta: {x: 311, y: 31.333334}
|
m_SizeDelta: {x: 270, y: 40}
|
||||||
m_Pivot: {x: 0.5, y: 0.5}
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
--- !u!114 &1792874459052106251
|
--- !u!114 &1792874459052106251
|
||||||
MonoBehaviour:
|
MonoBehaviour:
|
||||||
@ -978,8 +978,8 @@ RectTransform:
|
|||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
m_AnchorMin: {x: 0, y: 1}
|
m_AnchorMin: {x: 0, y: 1}
|
||||||
m_AnchorMax: {x: 0, y: 1}
|
m_AnchorMax: {x: 0, y: 1}
|
||||||
m_AnchoredPosition: {x: 170.5, y: -25.666668}
|
m_AnchoredPosition: {x: 170.5, y: -146}
|
||||||
m_SizeDelta: {x: 341, y: 51.333336}
|
m_SizeDelta: {x: 341, y: 60}
|
||||||
m_Pivot: {x: 0.5, y: 0.5}
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
--- !u!114 &9142037267599823005
|
--- !u!114 &9142037267599823005
|
||||||
MonoBehaviour:
|
MonoBehaviour:
|
||||||
@ -1094,7 +1094,7 @@ RectTransform:
|
|||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
m_AnchorMin: {x: 0, y: 1}
|
m_AnchorMin: {x: 0, y: 1}
|
||||||
m_AnchorMax: {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_SizeDelta: {x: 30, y: 30}
|
||||||
m_Pivot: {x: 0.5, y: 0.5}
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
--- !u!222 &8134207541370216537
|
--- !u!222 &8134207541370216537
|
||||||
@ -1155,6 +1155,104 @@ MonoBehaviour:
|
|||||||
m_FlexibleWidth: -1
|
m_FlexibleWidth: -1
|
||||||
m_FlexibleHeight: -1
|
m_FlexibleHeight: -1
|
||||||
m_LayoutPriority: 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
|
--- !u!1 &4124172888520656882
|
||||||
GameObject:
|
GameObject:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
@ -1254,6 +1352,65 @@ RectTransform:
|
|||||||
m_AnchoredPosition: {x: 0, y: 0}
|
m_AnchoredPosition: {x: 0, y: 0}
|
||||||
m_SizeDelta: {x: 0, y: 0}
|
m_SizeDelta: {x: 0, y: 0}
|
||||||
m_Pivot: {x: 0.5, y: 0.5}
|
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
|
--- !u!1 &4478785627166277609
|
||||||
GameObject:
|
GameObject:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
@ -1288,6 +1445,7 @@ RectTransform:
|
|||||||
m_Children:
|
m_Children:
|
||||||
- {fileID: 8581099496228509946}
|
- {fileID: 8581099496228509946}
|
||||||
- {fileID: 2780569438310375802}
|
- {fileID: 2780569438310375802}
|
||||||
|
- {fileID: 1100500336380202360}
|
||||||
- {fileID: 278706555072840209}
|
- {fileID: 278706555072840209}
|
||||||
- {fileID: 2404013603202822047}
|
- {fileID: 2404013603202822047}
|
||||||
m_Father: {fileID: 0}
|
m_Father: {fileID: 0}
|
||||||
@ -1311,8 +1469,6 @@ MonoBehaviour:
|
|||||||
m_EditorClassIdentifier:
|
m_EditorClassIdentifier:
|
||||||
MenuRoot: {fileID: 4478785627166277610}
|
MenuRoot: {fileID: 4478785627166277610}
|
||||||
SelectBorder: {fileID: 7857863493876124730}
|
SelectBorder: {fileID: 7857863493876124730}
|
||||||
TEMPLATE_EXECUTEITEM: {fileID: 3721725547312714320}
|
|
||||||
TEMPLATE_VALUEEDITITEM: {fileID: 2621485483361375335}
|
|
||||||
--- !u!114 &7033441668005100640
|
--- !u!114 &7033441668005100640
|
||||||
MonoBehaviour:
|
MonoBehaviour:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
@ -1373,6 +1529,102 @@ MonoBehaviour:
|
|||||||
m_FlexibleWidth: -1
|
m_FlexibleWidth: -1
|
||||||
m_FlexibleHeight: -1
|
m_FlexibleHeight: -1
|
||||||
m_LayoutPriority: 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
|
--- !u!1 &4565892069299376824
|
||||||
GameObject:
|
GameObject:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
@ -1409,6 +1661,78 @@ RectTransform:
|
|||||||
m_AnchoredPosition: {x: -5, y: 0}
|
m_AnchoredPosition: {x: -5, y: 0}
|
||||||
m_SizeDelta: {x: -20, y: 0}
|
m_SizeDelta: {x: -20, y: 0}
|
||||||
m_Pivot: {x: 0.5, y: 0.5}
|
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
|
--- !u!1 &5174902406667317058
|
||||||
GameObject:
|
GameObject:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
@ -1449,8 +1773,8 @@ RectTransform:
|
|||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
m_AnchorMin: {x: 0, y: 1}
|
m_AnchorMin: {x: 0, y: 1}
|
||||||
m_AnchorMax: {x: 0, y: 1}
|
m_AnchorMax: {x: 0, y: 1}
|
||||||
m_AnchoredPosition: {x: 170.5, y: -149.66667}
|
m_AnchoredPosition: {x: 150, y: -146}
|
||||||
m_SizeDelta: {x: 341, y: 196.66667}
|
m_SizeDelta: {x: 300, y: 240}
|
||||||
m_Pivot: {x: 0.5, y: 0.5}
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
--- !u!114 &2621485483361375335
|
--- !u!114 &2621485483361375335
|
||||||
MonoBehaviour:
|
MonoBehaviour:
|
||||||
@ -1651,8 +1975,8 @@ RectTransform:
|
|||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
m_AnchorMin: {x: 0, y: 1}
|
m_AnchorMin: {x: 0, y: 1}
|
||||||
m_AnchorMax: {x: 0, y: 1}
|
m_AnchorMax: {x: 0, y: 1}
|
||||||
m_AnchoredPosition: {x: 175.5, y: -98.333336}
|
m_AnchoredPosition: {x: 155, y: -120}
|
||||||
m_SizeDelta: {x: 311, y: 31.333334}
|
m_SizeDelta: {x: 270, y: 40}
|
||||||
m_Pivot: {x: 0.5, y: 0.5}
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
--- !u!114 &9093150501524936851
|
--- !u!114 &9093150501524936851
|
||||||
MonoBehaviour:
|
MonoBehaviour:
|
||||||
@ -1723,8 +2047,8 @@ RectTransform:
|
|||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
m_AnchorMin: {x: 0, y: 1}
|
m_AnchorMin: {x: 0, y: 1}
|
||||||
m_AnchorMax: {x: 0, y: 1}
|
m_AnchorMax: {x: 0, y: 1}
|
||||||
m_AnchoredPosition: {x: 175.5, y: -25.666668}
|
m_AnchoredPosition: {x: 155, y: -30}
|
||||||
m_SizeDelta: {x: 311, y: 31.333334}
|
m_SizeDelta: {x: 270, y: 40}
|
||||||
m_Pivot: {x: 0.5, y: 0.5}
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
--- !u!114 &6023196883469018230
|
--- !u!114 &6023196883469018230
|
||||||
MonoBehaviour:
|
MonoBehaviour:
|
||||||
@ -1787,8 +2111,8 @@ RectTransform:
|
|||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
m_AnchorMin: {x: 0, y: 1}
|
m_AnchorMin: {x: 0, y: 1}
|
||||||
m_AnchorMax: {x: 0, y: 1}
|
m_AnchorMax: {x: 0, y: 1}
|
||||||
m_AnchoredPosition: {x: 155.5, y: -15.666667}
|
m_AnchoredPosition: {x: 135, y: -20}
|
||||||
m_SizeDelta: {x: 311, y: 31.333334}
|
m_SizeDelta: {x: 270, y: 40}
|
||||||
m_Pivot: {x: 0.5, y: 0.5}
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
--- !u!222 &6646371810488858664
|
--- !u!222 &6646371810488858664
|
||||||
CanvasRenderer:
|
CanvasRenderer:
|
||||||
@ -1889,8 +2213,8 @@ RectTransform:
|
|||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
m_AnchorMin: {x: 0, y: 1}
|
m_AnchorMin: {x: 0, y: 1}
|
||||||
m_AnchorMax: {x: 0, y: 1}
|
m_AnchorMax: {x: 0, y: 1}
|
||||||
m_AnchoredPosition: {x: 106.66667, y: -15.666667}
|
m_AnchoredPosition: {x: 89.58333, y: -20}
|
||||||
m_SizeDelta: {x: 213.33334, y: 31.333334}
|
m_SizeDelta: {x: 179.16666, y: 40}
|
||||||
m_Pivot: {x: 0.5, y: 0.5}
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
--- !u!114 &5919193658528722431
|
--- !u!114 &5919193658528722431
|
||||||
MonoBehaviour:
|
MonoBehaviour:
|
||||||
@ -1998,8 +2322,8 @@ RectTransform:
|
|||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
m_AnchorMin: {x: 0, y: 1}
|
m_AnchorMin: {x: 0, y: 1}
|
||||||
m_AnchorMax: {x: 0, y: 1}
|
m_AnchorMax: {x: 0, y: 1}
|
||||||
m_AnchoredPosition: {x: 175.5, y: -62.000004}
|
m_AnchoredPosition: {x: 155, y: -75}
|
||||||
m_SizeDelta: {x: 311, y: 31.333334}
|
m_SizeDelta: {x: 270, y: 40}
|
||||||
m_Pivot: {x: 0.5, y: 0.5}
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
--- !u!114 &2814991476448031351
|
--- !u!114 &2814991476448031351
|
||||||
MonoBehaviour:
|
MonoBehaviour:
|
||||||
@ -2035,6 +2359,81 @@ MonoBehaviour:
|
|||||||
m_EditorClassIdentifier:
|
m_EditorClassIdentifier:
|
||||||
slider: {fileID: 6489571631904078165}
|
slider: {fileID: 6489571631904078165}
|
||||||
txt_value: {fileID: 6176548475786947694}
|
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
|
--- !u!1 &6551251729527098609
|
||||||
GameObject:
|
GameObject:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
@ -2070,8 +2469,8 @@ RectTransform:
|
|||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
m_AnchorMin: {x: 0, y: 1}
|
m_AnchorMin: {x: 0, y: 1}
|
||||||
m_AnchorMax: {x: 0, y: 1}
|
m_AnchorMax: {x: 0, y: 1}
|
||||||
m_AnchoredPosition: {x: 264.6667, y: -15.666667}
|
m_AnchoredPosition: {x: 227.08331, y: -20}
|
||||||
m_SizeDelta: {x: 92.66667, y: 31.333334}
|
m_SizeDelta: {x: 85.83333, y: 40}
|
||||||
m_Pivot: {x: 0.5, y: 0.5}
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
--- !u!222 &7323868397581272064
|
--- !u!222 &7323868397581272064
|
||||||
CanvasRenderer:
|
CanvasRenderer:
|
||||||
@ -2172,8 +2571,8 @@ RectTransform:
|
|||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
m_AnchorMin: {x: 0, y: 1}
|
m_AnchorMin: {x: 0, y: 1}
|
||||||
m_AnchorMax: {x: 0, y: 1}
|
m_AnchorMax: {x: 0, y: 1}
|
||||||
m_AnchoredPosition: {x: 106.66667, y: -15.666667}
|
m_AnchoredPosition: {x: 89.58333, y: -20}
|
||||||
m_SizeDelta: {x: 213.33334, y: 31.333334}
|
m_SizeDelta: {x: 179.16666, y: 40}
|
||||||
m_Pivot: {x: 0.5, y: 0.5}
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
--- !u!114 &6489571631904078165
|
--- !u!114 &6489571631904078165
|
||||||
MonoBehaviour:
|
MonoBehaviour:
|
||||||
@ -2281,7 +2680,7 @@ RectTransform:
|
|||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
m_AnchorMin: {x: 0, y: 1}
|
m_AnchorMin: {x: 0, y: 1}
|
||||||
m_AnchorMax: {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_SizeDelta: {x: 185, y: 26}
|
||||||
m_Pivot: {x: 0.5, y: 0.5}
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
--- !u!222 &6532365540230118336
|
--- !u!222 &6532365540230118336
|
||||||
@ -2344,6 +2743,189 @@ MonoBehaviour:
|
|||||||
m_EffectColor: {r: 0, g: 0, b: 0, a: 0.5}
|
m_EffectColor: {r: 0, g: 0, b: 0, a: 0.5}
|
||||||
m_EffectDistance: {x: 1.5, y: -1.5}
|
m_EffectDistance: {x: 1.5, y: -1.5}
|
||||||
m_UseGraphicAlpha: 1
|
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
|
--- !u!1 &7579340952198812870
|
||||||
GameObject:
|
GameObject:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
@ -2806,8 +3388,8 @@ RectTransform:
|
|||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
m_AnchorMin: {x: 0, y: 1}
|
m_AnchorMin: {x: 0, y: 1}
|
||||||
m_AnchorMax: {x: 0, y: 1}
|
m_AnchorMax: {x: 0, y: 1}
|
||||||
m_AnchoredPosition: {x: 264.6667, y: -15.666667}
|
m_AnchoredPosition: {x: 227.08331, y: -20}
|
||||||
m_SizeDelta: {x: 92.66667, y: 31.333334}
|
m_SizeDelta: {x: 85.83333, y: 40}
|
||||||
m_Pivot: {x: 0.5, y: 0.5}
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
--- !u!222 &7497419100168238325
|
--- !u!222 &7497419100168238325
|
||||||
CanvasRenderer:
|
CanvasRenderer:
|
||||||
@ -2981,8 +3563,8 @@ RectTransform:
|
|||||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
m_AnchorMin: {x: 0, y: 1}
|
m_AnchorMin: {x: 0, y: 1}
|
||||||
m_AnchorMax: {x: 0, y: 1}
|
m_AnchorMax: {x: 0, y: 1}
|
||||||
m_AnchoredPosition: {x: 155.5, y: -15.666667}
|
m_AnchoredPosition: {x: 135, y: -20}
|
||||||
m_SizeDelta: {x: 311, y: 31.333334}
|
m_SizeDelta: {x: 270, y: 40}
|
||||||
m_Pivot: {x: 0.5, y: 0.5}
|
m_Pivot: {x: 0.5, y: 0.5}
|
||||||
--- !u!222 &88244861463061753
|
--- !u!222 &88244861463061753
|
||||||
CanvasRenderer:
|
CanvasRenderer:
|
||||||
|
@ -225,7 +225,7 @@ MonoBehaviour:
|
|||||||
bUseLocalWebApi: 0
|
bUseLocalWebApi: 0
|
||||||
mLocalWebApi: http://localhost:5051
|
mLocalWebApi: http://localhost:5051
|
||||||
bEditorUUID: 0
|
bEditorUUID: 0
|
||||||
bEditorOpenGUIJoyStick: 1
|
bEditorOpenGUIJoyStick: 0
|
||||||
--- !u!1 &1498586261
|
--- !u!1 &1498586261
|
||||||
GameObject:
|
GameObject:
|
||||||
m_ObjectHideFlags: 3
|
m_ObjectHideFlags: 3
|
||||||
|
@ -3,6 +3,7 @@ using AxibugEmuOnline.Client.InputDevices;
|
|||||||
using AxibugEmuOnline.Client.Settings;
|
using AxibugEmuOnline.Client.Settings;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -19,7 +20,7 @@ public abstract class EmuCoreBinder<T> : InternalEmuCoreBinder,
|
|||||||
where T : Enum
|
where T : Enum
|
||||||
{
|
{
|
||||||
//每一个实例代表一个对应模拟器平台的控制器索引
|
//每一个实例代表一个对应模拟器平台的控制器索引
|
||||||
List<ControllerBinder> m_bindingPages = new List<ControllerBinder>();
|
List<ControllerBinder> m_controllerBinders = new List<ControllerBinder>();
|
||||||
|
|
||||||
public EmuCoreBinder()
|
public EmuCoreBinder()
|
||||||
{
|
{
|
||||||
@ -27,13 +28,15 @@ public abstract class EmuCoreBinder<T> : InternalEmuCoreBinder,
|
|||||||
|
|
||||||
for (int i = 0; i < ControllerCount; i++)
|
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 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);
|
binding.RegistInputDevice(device);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -42,9 +45,23 @@ public abstract class EmuCoreBinder<T> : InternalEmuCoreBinder,
|
|||||||
App.input.OnDeviceConnected += InputDevicesMgr_OnDeviceConnected;
|
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)
|
private void InputDevicesMgr_OnDeviceConnected(InputDevice_D connectDevice)
|
||||||
{
|
{
|
||||||
foreach (var binding in m_bindingPages)
|
foreach (var binding in m_controllerBinders)
|
||||||
{
|
{
|
||||||
binding.RegistInputDevice(connectDevice);
|
binding.RegistInputDevice(connectDevice);
|
||||||
}
|
}
|
||||||
@ -52,7 +69,7 @@ public abstract class EmuCoreBinder<T> : InternalEmuCoreBinder,
|
|||||||
|
|
||||||
private void InputDevicesMgr_OnDeviceLost(InputDevice_D lostDevice)
|
private void InputDevicesMgr_OnDeviceLost(InputDevice_D lostDevice)
|
||||||
{
|
{
|
||||||
foreach (var binding in m_bindingPages)
|
foreach (var binding in m_controllerBinders)
|
||||||
{
|
{
|
||||||
binding.UnregistInputDevice(lostDevice);
|
binding.UnregistInputDevice(lostDevice);
|
||||||
}
|
}
|
||||||
@ -71,7 +88,7 @@ public abstract class EmuCoreBinder<T> : InternalEmuCoreBinder,
|
|||||||
|
|
||||||
public bool Start(T emuControl, int controllerIndex)
|
public bool Start(T emuControl, int controllerIndex)
|
||||||
{
|
{
|
||||||
var binding = m_bindingPages[controllerIndex];
|
var binding = m_controllerBinders[controllerIndex];
|
||||||
foreach (var key in binding.GetBinding(emuControl))
|
foreach (var key in binding.GetBinding(emuControl))
|
||||||
{
|
{
|
||||||
if (key.Start) return true;
|
if (key.Start) return true;
|
||||||
@ -82,7 +99,7 @@ public abstract class EmuCoreBinder<T> : InternalEmuCoreBinder,
|
|||||||
|
|
||||||
public bool Release(T emuControl, int controllerIndex)
|
public bool Release(T emuControl, int controllerIndex)
|
||||||
{
|
{
|
||||||
var binding = m_bindingPages[controllerIndex];
|
var binding = m_controllerBinders[controllerIndex];
|
||||||
foreach (var key in binding.GetBinding(emuControl))
|
foreach (var key in binding.GetBinding(emuControl))
|
||||||
{
|
{
|
||||||
if (key.Release) return true;
|
if (key.Release) return true;
|
||||||
@ -100,7 +117,7 @@ public abstract class EmuCoreBinder<T> : InternalEmuCoreBinder,
|
|||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public bool GetKey(T emuControl, int controllerIndex)
|
public bool GetKey(T emuControl, int controllerIndex)
|
||||||
{
|
{
|
||||||
var binding = m_bindingPages[controllerIndex];
|
var binding = m_controllerBinders[controllerIndex];
|
||||||
foreach (var key in binding.GetBinding(emuControl))
|
foreach (var key in binding.GetBinding(emuControl))
|
||||||
{
|
{
|
||||||
if (key.Performing) return true;
|
if (key.Performing) return true;
|
||||||
@ -116,7 +133,7 @@ public abstract class EmuCoreBinder<T> : InternalEmuCoreBinder,
|
|||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public bool AnyKeyDown(int controllerIndex)
|
public bool AnyKeyDown(int controllerIndex)
|
||||||
{
|
{
|
||||||
var binding = m_bindingPages[controllerIndex];
|
var binding = m_controllerBinders[controllerIndex];
|
||||||
return binding.AnyKeyDown();
|
return binding.AnyKeyDown();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -130,7 +147,7 @@ public abstract class EmuCoreBinder<T> : InternalEmuCoreBinder,
|
|||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
public Vector2 GetVector2(T emuControl, int controllerIndex)
|
public Vector2 GetVector2(T emuControl, int controllerIndex)
|
||||||
{
|
{
|
||||||
var binding = m_bindingPages[controllerIndex];
|
var binding = m_controllerBinders[controllerIndex];
|
||||||
foreach (var control in binding.GetBinding(emuControl))
|
foreach (var control in binding.GetBinding(emuControl))
|
||||||
{
|
{
|
||||||
if (!control.Performing) continue;
|
if (!control.Performing) continue;
|
||||||
@ -155,7 +172,7 @@ public abstract class EmuCoreBinder<T> : InternalEmuCoreBinder,
|
|||||||
var totalFloat = 0f;
|
var totalFloat = 0f;
|
||||||
var totalControl = 0;
|
var totalControl = 0;
|
||||||
|
|
||||||
var binding = m_bindingPages[controllerIndex];
|
var binding = m_controllerBinders[controllerIndex];
|
||||||
foreach (var key in binding.GetBinding(emuControl))
|
foreach (var key in binding.GetBinding(emuControl))
|
||||||
{
|
{
|
||||||
if (!key.Performing) continue;
|
if (!key.Performing) continue;
|
||||||
@ -193,6 +210,10 @@ public abstract class EmuCoreBinder<T> : InternalEmuCoreBinder,
|
|||||||
{
|
{
|
||||||
return m_registedDevices.ContainsKey(deviceType);
|
return m_registedDevices.ContainsKey(deviceType);
|
||||||
}
|
}
|
||||||
|
internal bool IsRegisted(InputDevice_D device)
|
||||||
|
{
|
||||||
|
return m_registedDevices.Values.Contains(device);
|
||||||
|
}
|
||||||
|
|
||||||
internal void RegistInputDevice(InputDevice_D device)
|
internal void RegistInputDevice(InputDevice_D device)
|
||||||
{
|
{
|
||||||
|
@ -6,6 +6,8 @@ namespace AxibugEmuOnline.Client.InputDevices
|
|||||||
{
|
{
|
||||||
public abstract class InputDevice_D
|
public abstract class InputDevice_D
|
||||||
{
|
{
|
||||||
|
/// <summary> 指示该设备是否只能由一个Binder独占 </summary>
|
||||||
|
public virtual bool Exclusive => true;
|
||||||
public string UniqueName => m_resolver.GetDeviceName(this);
|
public string UniqueName => m_resolver.GetDeviceName(this);
|
||||||
|
|
||||||
/// <summary> 指示该设备是否在线 </summary>
|
/// <summary> 指示该设备是否在线 </summary>
|
||||||
|
@ -112,5 +112,6 @@ namespace AxibugEmuOnline.Client.InputDevices
|
|||||||
public Button_C ScrollLock;
|
public Button_C ScrollLock;
|
||||||
|
|
||||||
public Keyboard_D(InputResolver resolver) : base(resolver) { }
|
public Keyboard_D(InputResolver resolver) : base(resolver) { }
|
||||||
|
public override bool Exclusive => false;
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,7 +1,6 @@
|
|||||||
using AxibugEmuOnline.Client.ClientCore;
|
using AxibugEmuOnline.Client.ClientCore;
|
||||||
using AxibugEmuOnline.Client.Tools;
|
using AxibugEmuOnline.Client.Tools;
|
||||||
using AxibugProtobuf;
|
using AxibugProtobuf;
|
||||||
using MAME.Core;
|
|
||||||
using System;
|
using System;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Runtime.InteropServices;
|
using System.Runtime.InteropServices;
|
||||||
@ -23,7 +22,7 @@ namespace AxibugEmuOnline.Client
|
|||||||
public RomPlatformType EmuPlatform { get; private set; }
|
public RomPlatformType EmuPlatform { get; private set; }
|
||||||
|
|
||||||
/// <summary> 指示该存档是否为空 </summary>
|
/// <summary> 指示该存档是否为空 </summary>
|
||||||
public bool IsEmpty { get; }
|
public bool IsEmpty { get; private set; }
|
||||||
/// <summary> 存档文件路径 </summary>
|
/// <summary> 存档文件路径 </summary>
|
||||||
public string FilePath
|
public string FilePath
|
||||||
{
|
{
|
||||||
@ -39,9 +38,16 @@ namespace AxibugEmuOnline.Client
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public event Action OnSavSuccessed;
|
||||||
|
|
||||||
/// <summary> 存档顺序号,用于判断云存档和本地存档的同步状态,是否存在冲突 </summary>
|
/// <summary> 存档顺序号,用于判断云存档和本地存档的同步状态,是否存在冲突 </summary>
|
||||||
public uint Sequecen { get; private set; }
|
public uint Sequecen { get; private set; }
|
||||||
|
|
||||||
SimpleFSM<SaveFile> FSM;
|
SimpleFSM<SaveFile> FSM;
|
||||||
|
byte[] m_savDataCaches;
|
||||||
|
byte[] m_screenShotCaches;
|
||||||
|
Header m_headerCache;
|
||||||
|
bool m_cacheOutdate = true;
|
||||||
|
|
||||||
public SaveFile(int romID, RomPlatformType platform, int slotIndex)
|
public SaveFile(int romID, RomPlatformType platform, int slotIndex)
|
||||||
{
|
{
|
||||||
@ -55,7 +61,7 @@ namespace AxibugEmuOnline.Client
|
|||||||
FSM.AddState<UploadingState>();
|
FSM.AddState<UploadingState>();
|
||||||
FSM.AddState<SyncedState>();
|
FSM.AddState<SyncedState>();
|
||||||
|
|
||||||
IsEmpty = File.Exists(FilePath);
|
IsEmpty = !File.Exists(FilePath);
|
||||||
|
|
||||||
if (IsEmpty) Sequecen = 0;
|
if (IsEmpty) Sequecen = 0;
|
||||||
else //从文件头读取存储序号
|
else //从文件头读取存储序号
|
||||||
@ -83,8 +89,28 @@ namespace AxibugEmuOnline.Client
|
|||||||
{
|
{
|
||||||
FSM.Update();
|
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)
|
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;
|
savData = null;
|
||||||
screenShotData = null;
|
screenShotData = null;
|
||||||
|
|
||||||
@ -99,17 +125,21 @@ namespace AxibugEmuOnline.Client
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
var header = new Header();
|
m_headerCache = new Header();
|
||||||
IntPtr ptr = Marshal.AllocHGlobal(headerSize);
|
fixed (Header* headPtr = &m_headerCache)
|
||||||
Marshal.StructureToPtr(header, ptr, false);
|
{
|
||||||
Marshal.Copy(raw, 0, ptr, headerSize);
|
var headP = (byte*)headPtr;
|
||||||
Marshal.FreeHGlobal(ptr);
|
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);
|
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);
|
Array.Copy(raw, headerSize + savData.Length, screenShotData, 0, screenShotData.Length);
|
||||||
|
|
||||||
|
m_savDataCaches = savData;
|
||||||
|
m_screenShotCaches = screenShotData;
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -121,8 +151,9 @@ namespace AxibugEmuOnline.Client
|
|||||||
{
|
{
|
||||||
Sequence = sequence,
|
Sequence = sequence,
|
||||||
RomID = RomID,
|
RomID = RomID,
|
||||||
DataLength = savData.Length,
|
SavTicks = (ulong)DateTime.UtcNow.Ticks,
|
||||||
ScreenShotLength = screenShotData.Length
|
DataLength = (uint)savData.Length,
|
||||||
|
ScreenShotLength = (uint)screenShotData.Length,
|
||||||
};
|
};
|
||||||
int headerSize = Marshal.SizeOf(typeof(Header));
|
int headerSize = Marshal.SizeOf(typeof(Header));
|
||||||
IntPtr ptr = Marshal.AllocHGlobal(headerSize);
|
IntPtr ptr = Marshal.AllocHGlobal(headerSize);
|
||||||
@ -144,6 +175,14 @@ namespace AxibugEmuOnline.Client
|
|||||||
|
|
||||||
File.WriteAllBytes(filePath, raw);
|
File.WriteAllBytes(filePath, raw);
|
||||||
Sequecen = sequence;
|
Sequecen = sequence;
|
||||||
|
|
||||||
|
m_headerCache = header;
|
||||||
|
m_savDataCaches = savData;
|
||||||
|
m_screenShotCaches = screenShotData;
|
||||||
|
|
||||||
|
IsEmpty = false;
|
||||||
|
|
||||||
|
OnSavSuccessed?.Invoke();
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@ -157,7 +196,7 @@ namespace AxibugEmuOnline.Client
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
[StructLayout(LayoutKind.Explicit, Size = 16)]
|
[StructLayout(LayoutKind.Explicit, Size = 24)]
|
||||||
struct Header
|
struct Header
|
||||||
{
|
{
|
||||||
[FieldOffset(0)]
|
[FieldOffset(0)]
|
||||||
@ -165,9 +204,11 @@ namespace AxibugEmuOnline.Client
|
|||||||
[FieldOffset(4)]
|
[FieldOffset(4)]
|
||||||
public int RomID;
|
public int RomID;
|
||||||
[FieldOffset(8)]
|
[FieldOffset(8)]
|
||||||
public int DataLength;
|
public ulong SavTicks;
|
||||||
[FieldOffset(12)]
|
[FieldOffset(16)]
|
||||||
public int ScreenShotLength;
|
public uint DataLength;
|
||||||
|
[FieldOffset(20)]
|
||||||
|
public uint ScreenShotLength;
|
||||||
}
|
}
|
||||||
|
|
||||||
public enum EnumState
|
public enum EnumState
|
||||||
|
@ -51,7 +51,7 @@ namespace AxibugEmuOnline.Client
|
|||||||
{
|
{
|
||||||
if (Datacontext != null && Datacontext.Paramerters.Count > 0)
|
if (Datacontext != null && Datacontext.Paramerters.Count > 0)
|
||||||
{
|
{
|
||||||
var opts = new List<OptionMenu>();
|
var opts = new List<InternalOptionMenu>();
|
||||||
opts.Add(new Opt_CreatePreset(Datacontext));
|
opts.Add(new Opt_CreatePreset(Datacontext));
|
||||||
opts.AddRange(Datacontext.Presets.Select(p => new Opt_Presets(Datacontext, p)));
|
opts.AddRange(Datacontext.Presets.Select(p => new Opt_Presets(Datacontext, p)));
|
||||||
|
|
||||||
@ -101,7 +101,7 @@ namespace AxibugEmuOnline.Client
|
|||||||
private Filter m_filter;
|
private Filter m_filter;
|
||||||
private FilterPreset m_preset;
|
private FilterPreset m_preset;
|
||||||
private OptionUI_MenuItem m_ui;
|
private OptionUI_MenuItem m_ui;
|
||||||
private List<OptionMenu> m_menu;
|
private List<InternalOptionMenu> m_menu;
|
||||||
|
|
||||||
public override string Name => m_preset.Name;
|
public override string Name => m_preset.Name;
|
||||||
|
|
||||||
@ -110,7 +110,7 @@ namespace AxibugEmuOnline.Client
|
|||||||
m_filter = filter;
|
m_filter = filter;
|
||||||
m_preset = preset;
|
m_preset = preset;
|
||||||
|
|
||||||
m_menu = new List<OptionMenu>();
|
m_menu = new List<InternalOptionMenu>();
|
||||||
m_menu.Add(new Opt_Delete(m_filter, m_preset));
|
m_menu.Add(new Opt_Delete(m_filter, m_preset));
|
||||||
foreach (var p in m_filter.Paramerters)
|
foreach (var p in m_filter.Paramerters)
|
||||||
{
|
{
|
||||||
@ -142,7 +142,7 @@ namespace AxibugEmuOnline.Client
|
|||||||
App.settings.Filter.EnableFilter(m_filter);
|
App.settings.Filter.EnableFilter(m_filter);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override List<OptionMenu> GetOptionMenus()
|
protected override List<InternalOptionMenu> GetOptionMenus()
|
||||||
{
|
{
|
||||||
return m_menu;
|
return m_menu;
|
||||||
}
|
}
|
||||||
|
@ -21,13 +21,13 @@ namespace AxibugEmuOnline.Client
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private List<OptionMenu> m_options;
|
private List<InternalOptionMenu> m_options;
|
||||||
|
|
||||||
protected override void Awake()
|
protected override void Awake()
|
||||||
{
|
{
|
||||||
base.Awake();
|
base.Awake();
|
||||||
|
|
||||||
m_options = new List<OptionMenu>()
|
m_options = new List<InternalOptionMenu>()
|
||||||
{
|
{
|
||||||
new OptMenu_Search(this),
|
new OptMenu_Search(this),
|
||||||
new OptMenu_ShowAll(this),
|
new OptMenu_ShowAll(this),
|
||||||
|
@ -13,7 +13,7 @@ namespace AxibugEmuOnline.Client
|
|||||||
private object m_state;
|
private object m_state;
|
||||||
private StepPerformer m_stepPerformer;
|
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 static InGameUI Instance { get; private set; }
|
||||||
|
|
||||||
public RomFile RomFile { 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_FilterSetting(this));
|
||||||
menus.Add(new InGameUI_Scaler(this));
|
menus.Add(new InGameUI_Scaler(this));
|
||||||
menus.Add(new InGameUI_Reset(this));
|
menus.Add(new InGameUI_Reset(this));
|
||||||
menus.Add(new InGameUI_SaveState(this));
|
menus.Add(new InGameUI_SaveStateQuick(this));
|
||||||
menus.Add(new InGameUI_LoadState(this));
|
menus.Add(new InGameUI_LoadStateQuick(this));
|
||||||
|
menus.Add(new InGameUI_SaveStateMenu(this));
|
||||||
menus.Add(new InGameUI_QuitGame(this));
|
menus.Add(new InGameUI_QuitGame(this));
|
||||||
|
|
||||||
base.Awake();
|
base.Awake();
|
||||||
|
@ -15,11 +15,11 @@ namespace AxibugEmuOnline.Client
|
|||||||
m_gameUI = gameUI;
|
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.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;
|
return menus;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -44,7 +44,7 @@ namespace AxibugEmuOnline.Client
|
|||||||
public class FilterMenu : ExpandMenu
|
public class FilterMenu : ExpandMenu
|
||||||
{
|
{
|
||||||
private Filter m_filter;
|
private Filter m_filter;
|
||||||
private List<OptionMenu> m_presetsMenuItems;
|
private List<InternalOptionMenu> m_presetsMenuItems;
|
||||||
|
|
||||||
public override bool IsApplied
|
public override bool IsApplied
|
||||||
{
|
{
|
||||||
@ -62,11 +62,11 @@ namespace AxibugEmuOnline.Client
|
|||||||
public FilterMenu(RomFile rom, Filter filter)
|
public FilterMenu(RomFile rom, Filter filter)
|
||||||
{
|
{
|
||||||
m_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)));
|
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;
|
return m_presetsMenuItems;
|
||||||
}
|
}
|
||||||
|
@ -1,12 +1,12 @@
|
|||||||
namespace AxibugEmuOnline.Client
|
namespace AxibugEmuOnline.Client
|
||||||
{
|
{
|
||||||
public class InGameUI_LoadState : ExecuteMenu
|
public class InGameUI_LoadStateQuick : ExecuteMenu
|
||||||
{
|
{
|
||||||
private InGameUI m_gameUI;
|
private InGameUI m_gameUI;
|
||||||
public override bool Visible => !m_gameUI.IsNetPlay;
|
public override bool Visible => !m_gameUI.IsNetPlay && m_gameUI.GetQuickState() != null;
|
||||||
public override string Name => "读取快照";
|
public override string Name => "快速读取";
|
||||||
|
|
||||||
public InGameUI_LoadState(InGameUI gameUI)
|
public InGameUI_LoadStateQuick(InGameUI gameUI)
|
||||||
{
|
{
|
||||||
m_gameUI = 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
|
namespace AxibugEmuOnline.Client
|
||||||
{
|
{
|
||||||
public class InGameUI_SaveState : ExecuteMenu
|
public class InGameUI_SaveStateQuick : ExecuteMenu
|
||||||
{
|
{
|
||||||
private InGameUI m_gameUI;
|
private InGameUI m_gameUI;
|
||||||
|
|
||||||
public override bool Visible => !m_gameUI.IsNetPlay;
|
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;
|
m_gameUI = gameUI;
|
||||||
}
|
}
|
@ -7,7 +7,7 @@ namespace AxibugEmuOnline.Client
|
|||||||
{
|
{
|
||||||
public class InGameUI_Scaler : ExpandMenu
|
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 override string Name => "屏幕比例";
|
||||||
public InGameUI_Scaler(InGameUI inGameUI)
|
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;
|
return m_subMenus;
|
||||||
}
|
}
|
||||||
|
@ -13,10 +13,7 @@ namespace AxibugEmuOnline.Client
|
|||||||
[SerializeField]
|
[SerializeField]
|
||||||
Selector SelectBorder;
|
Selector SelectBorder;
|
||||||
|
|
||||||
[Space]
|
Dictionary<Type, OptionUI_MenuItem> m_menuUI_templates = new Dictionary<Type, OptionUI_MenuItem>();
|
||||||
[Header("模板")]
|
|
||||||
[SerializeField] OptionUI_ExecuteItem TEMPLATE_EXECUTEITEM;
|
|
||||||
[SerializeField] OptionUI_ValueEditItem TEMPLATE_VALUEEDITITEM;
|
|
||||||
|
|
||||||
private OptionUI m_child;
|
private OptionUI m_child;
|
||||||
private OptionUI m_parent;
|
private OptionUI m_parent;
|
||||||
@ -67,8 +64,11 @@ namespace AxibugEmuOnline.Client
|
|||||||
|
|
||||||
protected override void Awake()
|
protected override void Awake()
|
||||||
{
|
{
|
||||||
TEMPLATE_EXECUTEITEM.gameObject.SetActiveEx(false);
|
foreach (var templateIns in GetComponentsInChildren<OptionUI_MenuItem>(true))
|
||||||
TEMPLATE_VALUEEDITITEM.gameObject.SetActiveEx(false);
|
{
|
||||||
|
m_menuUI_templates[templateIns.GetType()] = templateIns;
|
||||||
|
templateIns.gameObject.SetActiveEx(false);
|
||||||
|
}
|
||||||
|
|
||||||
SelectBorder.gameObject.SetActiveEx(false);
|
SelectBorder.gameObject.SetActiveEx(false);
|
||||||
base.Awake();
|
base.Awake();
|
||||||
@ -117,6 +117,7 @@ namespace AxibugEmuOnline.Client
|
|||||||
if (m_runtimeMenuItems[currentSelect].Visible)
|
if (m_runtimeMenuItems[currentSelect].Visible)
|
||||||
{
|
{
|
||||||
find = true;
|
find = true;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
currentSelect++;
|
currentSelect++;
|
||||||
}
|
}
|
||||||
@ -154,7 +155,7 @@ namespace AxibugEmuOnline.Client
|
|||||||
/// 当菜单弹出时,动态添加一个菜单选项
|
/// 当菜单弹出时,动态添加一个菜单选项
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="menu"></param>
|
/// <param name="menu"></param>
|
||||||
public void AddOptionMenuWhenPoping(OptionMenu menu)
|
public void AddOptionMenuWhenPoping(InternalOptionMenu menu)
|
||||||
{
|
{
|
||||||
if (!m_bPoped) return;
|
if (!m_bPoped) return;
|
||||||
|
|
||||||
@ -166,7 +167,7 @@ namespace AxibugEmuOnline.Client
|
|||||||
SelectBorder.Target = optionUI_MenuItem.transform as RectTransform;
|
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;
|
m_onClose = onClose;
|
||||||
ReleaseRuntimeMenus();
|
ReleaseRuntimeMenus();
|
||||||
@ -220,14 +221,21 @@ namespace AxibugEmuOnline.Client
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 关闭这个侧边栏选项UI
|
||||||
|
/// </summary>
|
||||||
public void Hide()
|
public void Hide()
|
||||||
{
|
{
|
||||||
if (m_bPoped)
|
if (m_bPoped)
|
||||||
{
|
{
|
||||||
|
if (m_child != null)
|
||||||
|
{
|
||||||
|
m_child.Hide();
|
||||||
|
}
|
||||||
|
|
||||||
Vector2 start = new Vector2(-MenuRoot.rect.width, MenuRoot.anchoredPosition.y);
|
Vector2 start = new Vector2(-MenuRoot.rect.width, MenuRoot.anchoredPosition.y);
|
||||||
Vector2 end = new Vector2(0, MenuRoot.anchoredPosition.y);
|
Vector2 end = new Vector2(0, MenuRoot.anchoredPosition.y);
|
||||||
|
|
||||||
|
|
||||||
ReleaseRuntimeMenus();
|
ReleaseRuntimeMenus();
|
||||||
m_runtimeMenuItems.Clear();
|
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;
|
throw new NotImplementedException($"{menuData.GetType().Name}指定的MenuUI类型实例未在OptionUI中找到");
|
||||||
var menuUI = Instantiate(TEMPLATE_EXECUTEITEM.gameObject, TEMPLATE_EXECUTEITEM.transform.parent).GetComponent<OptionUI_ExecuteItem>();
|
}
|
||||||
menuUI.gameObject.SetActive(true);
|
|
||||||
menuUI.SetData(this, executeMenu);
|
var menuUI = Instantiate(template.gameObject, template.transform.parent).GetComponent<OptionUI_MenuItem>();
|
||||||
m_runtimeMenuItems.Add(menuUI);
|
menuUI.gameObject.SetActive(true);
|
||||||
}
|
menuUI.SetData(this, menuData);
|
||||||
else if (menuData is ValueSetMenu)
|
m_runtimeMenuItems.Add(menuUI);
|
||||||
{
|
|
||||||
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}");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void ReleaseRuntimeMenus()
|
private void ReleaseRuntimeMenus()
|
||||||
@ -361,7 +362,7 @@ namespace AxibugEmuOnline.Client
|
|||||||
/// <param name="menus"></param>
|
/// <param name="menus"></param>
|
||||||
/// <param name="defaultIndex"></param>
|
/// <param name="defaultIndex"></param>
|
||||||
/// <param name="onClose"></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)
|
if (m_child == null)
|
||||||
{
|
{
|
||||||
@ -392,8 +393,9 @@ namespace AxibugEmuOnline.Client
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// 带有执行行为的菜单
|
/// 带有执行行为的菜单
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public abstract class ExecuteMenu : OptionMenu
|
public abstract class ExecuteMenu : InternalOptionMenu
|
||||||
{
|
{
|
||||||
|
public override Type MenuUITemplateType => typeof(OptionUI_ExecuteItem);
|
||||||
/// <summary> 设置这个值以控制菜单中显示"已应用"标记 </summary>
|
/// <summary> 设置这个值以控制菜单中显示"已应用"标记 </summary>
|
||||||
public virtual bool IsApplied { get; }
|
public virtual bool IsApplied { get; }
|
||||||
|
|
||||||
@ -413,13 +415,14 @@ namespace AxibugEmuOnline.Client
|
|||||||
optionUI.ExpandSubMenu(GetOptionMenus());
|
optionUI.ExpandSubMenu(GetOptionMenus());
|
||||||
}
|
}
|
||||||
|
|
||||||
protected abstract List<OptionMenu> GetOptionMenus();
|
protected abstract List<InternalOptionMenu> GetOptionMenus();
|
||||||
}
|
}
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 带有值类型显示和编辑的菜单
|
/// 带有值类型显示和编辑的菜单
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public abstract class ValueSetMenu : OptionMenu
|
public abstract class ValueSetMenu : InternalOptionMenu
|
||||||
{
|
{
|
||||||
|
public override Type MenuUITemplateType => typeof(OptionUI_ValueEditItem);
|
||||||
protected ValueSetMenu() : base() { }
|
protected ValueSetMenu() : base() { }
|
||||||
|
|
||||||
public abstract Type ValueType { get; }
|
public abstract Type ValueType { get; }
|
||||||
@ -430,8 +433,9 @@ namespace AxibugEmuOnline.Client
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary> 不要直接继承这个类 </summary>
|
/// <summary> 不要直接继承这个类 </summary>
|
||||||
public abstract class OptionMenu
|
public abstract class InternalOptionMenu
|
||||||
{
|
{
|
||||||
|
public abstract Type MenuUITemplateType { get; }
|
||||||
public abstract string Name { get; }
|
public abstract string Name { get; }
|
||||||
public virtual Sprite Icon { get; }
|
public virtual Sprite Icon { get; }
|
||||||
public virtual bool Visible => true;
|
public virtual bool Visible => true;
|
||||||
@ -439,7 +443,6 @@ namespace AxibugEmuOnline.Client
|
|||||||
|
|
||||||
public virtual void OnFocus() { }
|
public virtual void OnFocus() { }
|
||||||
public virtual void OnShow(OptionUI_MenuItem ui) { }
|
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 ExpandFlag;
|
||||||
public GameObject ApplyFlag;
|
public GameObject ApplyFlag;
|
||||||
|
|
||||||
protected override void OnSetData(OptionMenu menuData)
|
protected override void OnSetData(InternalOptionMenu menuData)
|
||||||
{
|
{
|
||||||
base.OnSetData(menuData);
|
base.OnSetData(menuData);
|
||||||
|
|
||||||
|
@ -12,9 +12,9 @@ namespace AxibugEmuOnline.Client
|
|||||||
|
|
||||||
public bool Visible => m_Menu.Visible;
|
public bool Visible => m_Menu.Visible;
|
||||||
public OptionUI OptionUI { get; private set; }
|
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;
|
OptionUI = optionUI;
|
||||||
m_Menu = menuData;
|
m_Menu = menuData;
|
||||||
@ -33,7 +33,7 @@ namespace AxibugEmuOnline.Client
|
|||||||
public bool IsExpandMenu => m_Menu is ExpandMenu;
|
public bool IsExpandMenu => m_Menu is ExpandMenu;
|
||||||
public bool IsApplied => m_Menu is ExecuteMenu om && om.IsApplied;
|
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 abstract void OnExecute(OptionUI optionUI, ref bool cancelHide);
|
||||||
public virtual void OnLeft() { }
|
public virtual void OnLeft() { }
|
||||||
@ -44,11 +44,11 @@ namespace AxibugEmuOnline.Client
|
|||||||
}
|
}
|
||||||
|
|
||||||
public abstract class OptionUI_MenuItem<T> : OptionUI_MenuItem
|
public abstract class OptionUI_MenuItem<T> : OptionUI_MenuItem
|
||||||
where T : OptionMenu
|
where T : InternalOptionMenu
|
||||||
{
|
{
|
||||||
protected T MenuData => m_Menu as T;
|
protected T MenuData => m_Menu as T;
|
||||||
|
|
||||||
protected override void OnSetData(OptionMenu menuData)
|
protected override void OnSetData(InternalOptionMenu menuData)
|
||||||
{
|
{
|
||||||
MenuData.OnShow(this);
|
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;
|
IValueEditControl m_currentCom;
|
||||||
|
|
||||||
protected override void OnSetData(OptionMenu menuData)
|
protected override void OnSetData(InternalOptionMenu menuData)
|
||||||
{
|
{
|
||||||
com_floatEdit.gameObject.SetActive(false);
|
com_floatEdit.gameObject.SetActive(false);
|
||||||
com_intEdit.gameObject.SetActive(false);
|
com_intEdit.gameObject.SetActive(false);
|
||||||
|
@ -34,14 +34,20 @@ namespace AxibugEmuOnline.Client
|
|||||||
#endif
|
#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);
|
s_ins.m_OptionUI.Pop(menus, defaultIndex, onClose);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void HideSideBar()
|
||||||
|
{
|
||||||
|
s_ins.m_OptionUI.Hide();
|
||||||
|
}
|
||||||
|
|
||||||
public static void PopTip(string msg)
|
public static void PopTip(string msg)
|
||||||
{
|
{
|
||||||
s_ins.m_popTipsUI.Pop(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