Merge pull request '合特么的' (#74) from Alienjack/AxibugEmuOnline:master into master

Reviewed-on: sin365/AxibugEmuOnline#74
This commit is contained in:
sin365 2024-12-27 22:25:28 +08:00
commit 0cb4c85b4a
71 changed files with 7099 additions and 3794 deletions

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: e6f56a07c0ec38946a0257a1e0b8926d
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -143,6 +143,81 @@ AudioSource:
m_PreInfinity: 2
m_PostInfinity: 2
m_RotationOrder: 4
--- !u!1 &1832378132020391456
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 8057614414535643033}
- component: {fileID: 377334483991090399}
- component: {fileID: 4271988797887364570}
m_Layer: 5
m_Name: bg
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &8057614414535643033
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1832378132020391456}
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: 4232056520494431727}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 100, y: 100}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &377334483991090399
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1832378132020391456}
m_CullTransparentMesh: 1
--- !u!114 &4271988797887364570
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1832378132020391456}
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 &3297772745682094737
GameObject:
m_ObjectHideFlags: 0
@ -346,6 +421,7 @@ RectTransform:
m_LocalScale: {x: 0, y: 0, z: 0}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 8057614414535643033}
- {fileID: 4232056521759880275}
- {fileID: 1038087993597378172}
m_Father: {fileID: 4232056521131536011}

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 98ac562d730eabc42b9a3b12c715d114
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,857 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &29419265480821815
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 8126322204359135913}
- component: {fileID: 2718916271043989317}
- component: {fileID: 3380485461544738227}
- component: {fileID: 5273325483422179993}
m_Layer: 5
m_Name: Descript
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &8126322204359135913
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 29419265480821815}
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: 8789823129857705082}
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: 33}
m_Pivot: {x: 0, y: 1}
--- !u!222 &2718916271043989317
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 29419265480821815}
m_CullTransparentMesh: 1
--- !u!114 &3380485461544738227
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 29419265480821815}
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: 20
m_FontStyle: 0
m_BestFit: 0
m_MinSize: 2
m_MaxSize: 300
m_Alignment: 0
m_AlignByGeometry: 0
m_RichText: 1
m_HorizontalOverflow: 0
m_VerticalOverflow: 1
m_LineSpacing: 1
m_Text: DESCRIBTIONDESCRIBTIONDESCRIBTIONDESCRIBTIONDESCRIBTIONDESCRIBTIONDESCRIBTIONDESCRIBTIONDESCRIBTIONDESCRIBTIONDESCRIBTION
--- !u!114 &5273325483422179993
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 29419265480821815}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: cfabb0440166ab443bba8876756fdfa9, type: 3}
m_Name:
m_EditorClassIdentifier:
m_EffectColor: {r: 0, g: 0, b: 0, a: 0.3137255}
m_EffectDistance: {x: 3, y: -3}
m_UseGraphicAlpha: 1
--- !u!1 &734025543935719296
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1323634865265500141}
- component: {fileID: 5792146190930927166}
- component: {fileID: 2619187604372594158}
- component: {fileID: 1779247868001543556}
- component: {fileID: 4496630961732192070}
- component: {fileID: 2059277597780235898}
m_Layer: 5
m_Name: shadowIcon
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &1323634865265500141
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 734025543935719296}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 2}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 8754483333502849411}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0.5}
m_AnchorMax: {x: 0, y: 0.5}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 100, y: 100}
m_Pivot: {x: 0, y: 0.5}
--- !u!222 &5792146190930927166
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 734025543935719296}
m_CullTransparentMesh: 1
--- !u!114 &2619187604372594158
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 734025543935719296}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 0.4577373, 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: 21300000, guid: 8706af46c93329b4da3c86c0b13b886e, type: 3}
m_Type: 0
m_PreserveAspect: 0
m_FillCenter: 0
m_FillMethod: 4
m_FillAmount: 1
m_FillClockwise: 1
m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 1
--- !u!114 &1779247868001543556
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 734025543935719296}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: f8b2ed11d675446c5a49da1ea296d490, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Version: 300
m_EffectMaterial: {fileID: 21305736874167728, guid: aee96bc531e6eba468ec405e536f515f, type: 2}
m_EffectFactor: 0
m_ColorFactor: 0
m_BlurFactor: 0
m_EffectMode: 0
m_ColorMode: 1
m_BlurMode: 3
m_AdvancedBlur: 1
m_ShadowBlur: 1
m_ShadowStyle: 0
m_ShadowColor: {r: 0, g: 0, b: 0, a: 1}
m_EffectDistance: {x: 1, y: -1}
m_UseGraphicAlpha: 1
m_EffectColor: {r: 1, g: 1, b: 1, a: 1}
m_AdditionalShadows: []
--- !u!114 &4496630961732192070
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 734025543935719296}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 0848bff101191904ead4bb831f7084db, type: 3}
m_Name:
m_EditorClassIdentifier:
m_BlurFactor: 1
m_Style: 3
m_AdditionalShadows: []
m_EffectColor: {r: 1, g: 1, b: 1, a: 0}
m_EffectDistance: {x: 8, y: 8}
m_UseGraphicAlpha: 0
--- !u!95 &2059277597780235898
Animator:
serializedVersion: 7
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 734025543935719296}
m_Enabled: 1
m_Avatar: {fileID: 0}
m_Controller: {fileID: 9100000, guid: 0b3ccf7414d2ead43be0cd33b6e1b53c, type: 2}
m_CullingMode: 0
m_UpdateMode: 0
m_ApplyRootMotion: 0
m_LinearVelocityBlending: 0
m_StabilizeFeet: 0
m_AnimatePhysics: 0
m_WarningMessage:
m_HasTransformHierarchy: 1
m_AllowConstantClipSamplingOptimization: 1
m_KeepAnimatorStateOnDisable: 0
m_WriteDefaultValuesOnDisable: 0
--- !u!1 &1776357407830023228
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 6087025893861054323}
- component: {fileID: 7036072602178187444}
- component: {fileID: 6771349210554360888}
m_Layer: 5
m_Name: Icon
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &6087025893861054323
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1776357407830023228}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 2}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 8754483333502849411}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: -200, y: 0}
m_SizeDelta: {x: -396, y: 4}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &7036072602178187444
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1776357407830023228}
m_CullTransparentMesh: 1
--- !u!114 &6771349210554360888
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1776357407830023228}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Sprite: {fileID: 21300000, guid: 8706af46c93329b4da3c86c0b13b886e, type: 3}
m_Type: 0
m_PreserveAspect: 0
m_FillCenter: 0
m_FillMethod: 4
m_FillAmount: 1
m_FillClockwise: 1
m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 1
--- !u!1 &3189920797946144379
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1998281097548910301}
- component: {fileID: 5700455559359757662}
- component: {fileID: 5193921249193468402}
m_Layer: 5
m_Name: ScalerModeItemTemplate
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &1998281097548910301
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3189920797946144379}
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: 8754483333502849411}
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 500, y: 100}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &5700455559359757662
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3189920797946144379}
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: 200
m_PreferredHeight: 230
m_FlexibleWidth: -1
m_FlexibleHeight: -1
m_LayoutPriority: 1
--- !u!114 &5193921249193468402
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3189920797946144379}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 54c899f8fe0572f43ae3305039ea5e5c, type: 3}
m_Name:
m_EditorClassIdentifier:
Icon: {fileID: 6771349210554360888}
Txt: {fileID: 991446423622995247}
SubTitle: {fileID: 6534898873012636952}
spline: {fileID: 4812759387377418448}
Descript: {fileID: 3380485461544738227}
Root: {fileID: 8754483333502849411}
ShadowIcon: {fileID: 2619187604372594158}
InfoNode: {fileID: 6788248266412682264}
SubMenuItemGroup: {fileID: 0}
SelectScale: 1
UnSelectScale: 0.85
--- !u!1 &3993825260653792697
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 8789823129857705082}
- component: {fileID: 3252398029444565139}
- component: {fileID: 6788248266412682264}
- component: {fileID: 8081109478688381999}
- component: {fileID: 6660646139021869069}
m_Layer: 5
m_Name: InfoNode
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &8789823129857705082
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3993825260653792697}
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: 6095356919362338847}
- {fileID: 6797116381500671839}
- {fileID: 6673031368290035463}
- {fileID: 8126322204359135913}
m_Father: {fileID: 8754483333502849411}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 100, y: 0}
m_SizeDelta: {x: 600, y: 0}
m_Pivot: {x: 0, y: 0.5}
--- !u!114 &3252398029444565139
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3993825260653792697}
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: 0
m_Top: 13
m_Bottom: 0
m_ChildAlignment: 0
m_Spacing: 0
m_ChildForceExpandWidth: 1
m_ChildForceExpandHeight: 0
m_ChildControlWidth: 1
m_ChildControlHeight: 0
m_ChildScaleWidth: 0
m_ChildScaleHeight: 0
m_ReverseArrangement: 0
--- !u!225 &6788248266412682264
CanvasGroup:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3993825260653792697}
m_Enabled: 1
m_Alpha: 1
m_Interactable: 1
m_BlocksRaycasts: 1
m_IgnoreParentGroups: 0
--- !u!222 &8081109478688381999
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3993825260653792697}
m_CullTransparentMesh: 1
--- !u!114 &6660646139021869069
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3993825260653792697}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 0}
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 &5340761592919397836
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 6095356919362338847}
- component: {fileID: 7651669947470814669}
- component: {fileID: 991446423622995247}
- component: {fileID: 3090209070838977737}
m_Layer: 5
m_Name: Name
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &6095356919362338847
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5340761592919397836}
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: 8986746042327041630}
m_Father: {fileID: 8789823129857705082}
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: 33}
m_Pivot: {x: 0, y: 1}
--- !u!222 &7651669947470814669
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5340761592919397836}
m_CullTransparentMesh: 1
--- !u!114 &991446423622995247
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5340761592919397836}
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: 30
m_FontStyle: 0
m_BestFit: 0
m_MinSize: 2
m_MaxSize: 300
m_Alignment: 3
m_AlignByGeometry: 0
m_RichText: 1
m_HorizontalOverflow: 1
m_VerticalOverflow: 1
m_LineSpacing: 1
m_Text: NAME
--- !u!114 &3090209070838977737
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5340761592919397836}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: cfabb0440166ab443bba8876756fdfa9, type: 3}
m_Name:
m_EditorClassIdentifier:
m_EffectColor: {r: 0, g: 0, b: 0, a: 0.3137255}
m_EffectDistance: {x: 3, y: -3}
m_UseGraphicAlpha: 1
--- !u!1 &5468696000904882177
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 8986746042327041630}
- component: {fileID: 952406696262539679}
- component: {fileID: 6534898873012636952}
- component: {fileID: 1394085300960264805}
m_Layer: 5
m_Name: subTitle
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &8986746042327041630
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5468696000904882177}
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: 6095356919362338847}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 1, y: 0.5}
m_AnchorMax: {x: 1, y: 0.5}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 580, y: 33}
m_Pivot: {x: 1, y: 0.5}
--- !u!222 &952406696262539679
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5468696000904882177}
m_CullTransparentMesh: 1
--- !u!114 &6534898873012636952
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5468696000904882177}
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: 25
m_FontStyle: 0
m_BestFit: 0
m_MinSize: 2
m_MaxSize: 300
m_Alignment: 5
m_AlignByGeometry: 0
m_RichText: 1
m_HorizontalOverflow: 1
m_VerticalOverflow: 1
m_LineSpacing: 1
m_Text: 4324234
--- !u!114 &1394085300960264805
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5468696000904882177}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: cfabb0440166ab443bba8876756fdfa9, type: 3}
m_Name:
m_EditorClassIdentifier:
m_EffectColor: {r: 0, g: 0, b: 0, a: 0.3137255}
m_EffectDistance: {x: 3, y: -3}
m_UseGraphicAlpha: 1
--- !u!1 &6688216270065609628
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 6797116381500671839}
- component: {fileID: 5682159953164052307}
- component: {fileID: 4812759387377418448}
m_Layer: 5
m_Name: spline
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &6797116381500671839
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6688216270065609628}
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: 8789823129857705082}
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: 4}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &5682159953164052307
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6688216270065609628}
m_CullTransparentMesh: 1
--- !u!114 &4812759387377418448
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6688216270065609628}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_Sprite: {fileID: 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 &8290338740711049006
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 8754483333502849411}
m_Layer: 5
m_Name: Root
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &8754483333502849411
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8290338740711049006}
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: 1323634865265500141}
- {fileID: 6087025893861054323}
- {fileID: 8789823129857705082}
m_Father: {fileID: 1998281097548910301}
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!1 &9036340599819825964
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 6673031368290035463}
m_Layer: 5
m_Name: space
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &6673031368290035463
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 9036340599819825964}
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: 8789823129857705082}
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: 10}
m_Pivot: {x: 0.5, y: 0.5}

View File

@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 0145ebc4525da574c906e2a40ad8ab61
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,4 +1,4 @@
using AxibugEmuOnline.Client.Manager;
using AxibugEmuOnline.Client.Manager;
using AxibugEmuOnline.Client.Network;
using System.Collections;
using System.IO;
@ -27,7 +27,6 @@ namespace AxibugEmuOnline.Client.ClientCore
public static CacheManager CacheMgr;
public static AppRoom roomMgr;
public static AppSettings settings;
public static FilterManager filter;
public static AppShare share;
static bool bTest;
static string mTestSrvIP;
@ -46,7 +45,7 @@ namespace AxibugEmuOnline.Client.ClientCore
#else
public static string PersistentDataPath => Application.persistentDataPath;
#endif
public static void Init(Initer initer, bool isTest = false, string testSrvIP = "")
public static void Init( bool isTest = false, string testSrvIP = "")
{
//其他平台必要的初始化
if (UnityEngine.Application.platform == RuntimePlatform.PSP2)
@ -65,11 +64,10 @@ namespace AxibugEmuOnline.Client.ClientCore
emu = new AppEmu();
//netgame = new AppNetGame();
httpAPI = new HttpAPI();
nesRomLib = new RomLib(EnumPlatform.NES);
nesRomLib = new RomLib(EnumSupportEmuPlatform.NES);
CacheMgr = new CacheManager();
roomMgr = new AppRoom();
share = new AppShare();
filter = new FilterManager(initer.m_filterPreview, initer.m_xmbBg);
bTest = isTest;
mTestSrvIP = testSrvIP;
var go = new GameObject("[AppAxibugEmuOnline]");

View File

@ -0,0 +1,7 @@
using UnityEngine;
public class GlobalRef : MonoBehaviour
{
public CanvasGroup FilterPreview;
public CanvasGroup XMBBg;
}

View File

@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 0e727704ce154534caf90c91ed3085ef

View File

@ -17,7 +17,7 @@ namespace AxibugEmuOnline.Client
void DoReset();
IControllerSetuper GetControllerSetuper();
EnumPlatform Platform { get; }
EnumSupportEmuPlatform Platform { get; }
uint Frame { get; }
}

View File

@ -1,27 +1,41 @@
using AxibugEmuOnline.Client.ClientCore;
using AxibugEmuOnline.Client.ClientCore;
using UnityEngine;
namespace AxibugEmuOnline.Client
{
public class Initer : MonoBehaviour
{
public CanvasGroup m_filterPreview;
public CanvasGroup m_xmbBg;
static GlobalRef m_refs;
public static CanvasGroup FilterPreview => m_refs.FilterPreview;
public static CanvasGroup XMBBg => m_refs.XMBBg;
public static string dev_UUID;
[SerializeField]
GameObject IMPORTENT;
#if UNITY_EDITOR
public bool bTest = false;
public string mTestSrvIP = "192.168.0.47";
#endif
private void Awake()
{
{
#if UNITY_EDITOR
App.Init(this, bTest, mTestSrvIP);
App.Init(bTest, mTestSrvIP);
#else
App.Init(this);
#endif
dev_UUID = SystemInfo.deviceUniqueIdentifier;
m_refs = Instantiate(IMPORTENT, transform).GetComponent<GlobalRef>();
}
private void Start()
{
App.settings.Filter.ShutDownFilterPreview();
App.settings.Filter.ShutDownFilter();
}
}
}

View File

@ -1,7 +1,6 @@
using AxibugEmuOnline.Client.ClientCore;
using AxibugEmuOnline.Client.Event;
using UnityEngine;
using VirtualNes.Core;
namespace AxibugEmuOnline.Client.Manager
{
@ -32,7 +31,7 @@ namespace AxibugEmuOnline.Client.Manager
if (!m_emuCore.IsNull()) StopGame();
var roomInfo = App.roomMgr.mineRoomMiniInfo;
roomInfo.FetchRomFileInRoomInfo(EnumPlatform.NES, (_, romFile) =>
roomInfo.FetchRomFileInRoomInfo(EnumSupportEmuPlatform.NES, (_, romFile) =>
{
if (!romFile.RomReady) //这个rom并没有下载,所以取消进入房间
{
@ -52,7 +51,7 @@ namespace AxibugEmuOnline.Client.Manager
switch (romFile.Platform)
{
case EnumPlatform.NES:
case EnumSupportEmuPlatform.NES:
m_emuCore = GameObject.Instantiate(Resources.Load<GameObject>("NES/NesEmulator")).GetComponent<IEmuCore>();
break;
}

View File

@ -3,6 +3,17 @@
public class AppSettings
{
/// <summary> 背景颜色设定 </summary>
public BgColorSettings BgColor { get; set; } = new BgColorSettings();
public BgColorSettings BgColor { get; private set; }
/// <summary> 滤镜设置 </summary>
public FilterManager Filter { get; private set; }
/// <summary> 画面比例设置 </summary>
public ScreenScaler ScreenScaler { get; private set; }
public AppSettings()
{
BgColor = new BgColorSettings();
Filter = new FilterManager();
ScreenScaler = new ScreenScaler();
}
}
}

View File

@ -1,4 +1,5 @@
using AxibugEmuOnline.Client.ClientCore;
using Sony.Vita.Dialog;
using System;
using System.Collections.Generic;
using System.Linq;
@ -6,14 +7,14 @@ using System.Reflection;
using UnityEngine;
using UnityEngine.UI;
using static AxibugEmuOnline.Client.FilterEffect;
using static AxibugEmuOnline.Client.FilterManager;
namespace AxibugEmuOnline.Client
{
public class FilterManager
{
private List<Filter> m_filters;
private Dictionary<EnumPlatform, Filter> m_filterPlatforms = new Dictionary<EnumPlatform, Filter>();
private Dictionary<EnumSupportEmuPlatform, Filter> m_filterPlatforms = new Dictionary<EnumSupportEmuPlatform, Filter>();
private AlphaWraper m_previewFilterWraper;
FilterRomSetting m_filterRomSetting;
/// <summary>
@ -21,15 +22,11 @@ namespace AxibugEmuOnline.Client
/// </summary>
public IReadOnlyList<Filter> Filters => m_filters;
public FilterManager(CanvasGroup filterPreview, CanvasGroup mainBg)
public FilterManager()
{
loadFilters();
var json = PlayerPrefs.GetString(nameof(FilterRomSetting));
m_filterRomSetting = JsonUtility.FromJson<FilterRomSetting>(json) ?? new FilterRomSetting();
m_previewFilterWraper = new AlphaWraper(mainBg, filterPreview, false);
ShutDownFilterPreview();
ShutDownFilter();
}
private void loadFilters()
@ -100,8 +97,8 @@ namespace AxibugEmuOnline.Client
Vector2 topRight = RectTransformUtility.WorldToScreenPoint(rawImage.canvas.worldCamera, corners[2]);
// 计算宽度和高度
float width = topRight.x - bottomLeft.x;
float height = topRight.y - bottomLeft.y;
float width = Mathf.Abs(topRight.x - bottomLeft.x);
float height = Mathf.Abs(topRight.y - bottomLeft.y);
return new Vector2(width, height);
}
@ -110,12 +107,14 @@ namespace AxibugEmuOnline.Client
/// <summary> 关闭滤镜预览 </summary>
public void ShutDownFilterPreview()
{
if (m_previewFilterWraper == null) m_previewFilterWraper = new AlphaWraper(Initer.XMBBg, Initer.FilterPreview, false);
m_previewFilterWraper.On = false;
}
/// <summary> 开启滤镜预览 </summary>
public void EnableFilterPreview()
{
if (m_previewFilterWraper == null) m_previewFilterWraper = new AlphaWraper(Initer.XMBBg, Initer.FilterPreview, false);
m_previewFilterWraper.On = true;
}

View File

@ -16,6 +16,7 @@ public class UIFilterPreviewer : MonoBehaviour
private void Update()
{
App.filter.ExecuteFilterRender(m_src, m_rawImg);
App.settings.ScreenScaler.CalcScale(m_rawImg);
App.settings.Filter.ExecuteFilterRender(m_src, m_rawImg);
}
}

View File

@ -0,0 +1,112 @@
using System;
using UnityEngine;
using UnityEngine.UI;
namespace AxibugEmuOnline.Client
{
/// <summary>
/// 实现模拟器输出画面的比例调整类
/// </summary>
public class ScreenScaler
{
/// <summary>
/// 全局设置的缩放模式
/// </summary>
public EnumScalerMode GlobalMode
{
get => (EnumScalerMode)PlayerPrefs.GetInt($"{nameof(ScreenScaler)}.GlobalMode", 0);
set => PlayerPrefs.SetInt($"{nameof(ScreenScaler)}.GlobalMode", (int)value);
}
/// <summary>
/// 获得指定平台设置的缩放模式
/// </summary>
/// <param name="platform"></param>
/// <returns></returns>
public EnumScalerMode GetMode(EnumSupportEmuPlatform platform)
{
int setVal = PlayerPrefs.GetInt($"{nameof(ScreenScaler)}.PlatMode.{platform}", -1);
if (setVal == -1)
return GlobalMode;
else
return (EnumScalerMode)setVal;
}
/// <summary>
/// 根据缩放模式设置UI的缩放
/// </summary>
/// <param name="m_rawImg"></param>
/// <param name="platform">不指定模拟器平台时,使用全局设置的缩放模式</param>
public void CalcScale(RawImage rawImg, EnumSupportEmuPlatform? platform = null)
{
var targetMode = platform == null ? GlobalMode : GetMode(platform.Value);
var resolution = GetRawResolution(platform == null ? EnumSupportEmuPlatform.NES : platform.Value);
var canvasRect = (rawImg.canvas.transform as RectTransform).rect;
switch (targetMode)
{
case EnumScalerMode.Raw:
{
float width = resolution.x / rawImg.canvas.pixelRect.width * canvasRect.width;
float height = resolution.y / rawImg.canvas.pixelRect.height * canvasRect.height;
rawImg.rectTransform.SetSizeWithCurrentAnchors(RectTransform.Axis.Horizontal, width);
rawImg.rectTransform.SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical, height);
}
break;
case EnumScalerMode.Fix:
{
bool stretchWidth = rawImg.canvas.pixelRect.width <= rawImg.canvas.pixelRect.height;
//bool stretchWidth = Mathf.Abs(resolution.x - rawImg.canvas.pixelRect.width) <= Mathf.Abs(resolution.y - rawImg.canvas.pixelRect.height);
if (stretchWidth)
{
var needWidth = rawImg.canvas.pixelRect.width;
var factor = needWidth / resolution.x;
resolution.x = (int)needWidth;
resolution.y = (int)(resolution.y * factor);
}
else
{
var needHeight = rawImg.canvas.pixelRect.height;
var factor = needHeight / resolution.y;
resolution.y = (int)needHeight;
resolution.x = (int)(resolution.x * factor);
}
float width = resolution.x / rawImg.canvas.pixelRect.width * canvasRect.width;
float height = resolution.y / rawImg.canvas.pixelRect.height * canvasRect.height;
rawImg.rectTransform.SetSizeWithCurrentAnchors(RectTransform.Axis.Horizontal, width);
rawImg.rectTransform.SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical, height);
}
break;
case EnumScalerMode.FullScreen:
{
rawImg.rectTransform.pivot = new Vector2(0.5f, 0.5f);
rawImg.rectTransform.anchorMin = new Vector2(0, 0);
rawImg.rectTransform.anchorMax = new Vector2(1, 1);
rawImg.rectTransform.sizeDelta = new Vector2(0, 0);
rawImg.rectTransform.anchoredPosition = new Vector2(0, 0);
}
break;
}
}
public Vector2Int GetRawResolution(EnumSupportEmuPlatform platform)
{
switch (platform)
{
case EnumSupportEmuPlatform.NES: return new Vector2Int(256, 240);
default: return new Vector2Int(256, 240);
}
}
/// <summary> 缩放模式 </summary>
public enum EnumScalerMode
{
/// <summary> 全屏 </summary>
FullScreen,
/// <summary> 适应 </summary>
Fix,
/// <summary> 原始 </summary>
Raw
};
}
}

View File

@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 8341bf735cdfe6e49b3fa43b9a42d711

View File

@ -1,6 +1,6 @@
namespace AxibugEmuOnline.Client
{
public enum EnumPlatform
public enum EnumSupportEmuPlatform
{
NES
}

View File

@ -1,4 +1,4 @@
using AxibugEmuOnline.Client.ClientCore;
using AxibugEmuOnline.Client.ClientCore;
using ICSharpCode.SharpZipLib.Zip;
using System;
using System.Collections;
@ -13,7 +13,7 @@ namespace AxibugEmuOnline.Client
{
private HttpAPI.Resp_RomInfo webData;
private bool hasLocalFile;
private EnumPlatform platform;
private EnumSupportEmuPlatform platform;
//private UnityWebRequest downloadRequest;
private AxiHttpProxy.SendDownLoadProxy downloadRequest;
@ -36,7 +36,7 @@ namespace AxibugEmuOnline.Client
public float Progress => IsDownloading ? downloadRequest.downloadHandler.DownLoadPr : 0;
public EnumPlatform Platform => platform;
public EnumSupportEmuPlatform Platform => platform;
/// <summary> 指示该Rom信息是否已填充 </summary>
public bool InfoReady => webData != null;
/// <summary> 唯一标识 </summary>
@ -61,7 +61,7 @@ namespace AxibugEmuOnline.Client
public event Action<RomFile> OnDownloadOver;
public event Action OnInfoFilled;
public RomFile(EnumPlatform platform, int index, int insidePage)
public RomFile(EnumSupportEmuPlatform platform, int index, int insidePage)
{
this.platform = platform;
Index = index;
@ -181,7 +181,7 @@ namespace AxibugEmuOnline.Client
}
private RomFile() { }
public static RomFile CreateExistRom(EnumPlatform platform, string fileName)
public static RomFile CreateExistRom(EnumSupportEmuPlatform platform, string fileName)
{
var res = new RomFile();
res.IsUserRom = true;

View File

@ -19,14 +19,14 @@ namespace AxibugEmuOnline.Client
private Dictionary<string, RomFile> nesRomFileNameMapper = new Dictionary<string, RomFile>();
private HttpAPI.GetRomListAPI m_romGetFunc;
private HttpAPI.SearchRomListAPI m_romSearchFunc;
private EnumPlatform m_platform;
private EnumSupportEmuPlatform m_platform;
public RomLib(EnumPlatform platform)
public RomLib(EnumSupportEmuPlatform platform)
{
m_platform = platform;
switch (platform)
{
case EnumPlatform.NES:
case EnumSupportEmuPlatform.NES:
m_romGetFunc = App.httpAPI.GetNesRomList;
m_romSearchFunc = App.httpAPI.SearchNesRomList;
break;

View File

@ -52,12 +52,13 @@ namespace AxibugEmuOnline.Client
var screenBuffer = NesCore.ppu.GetScreenPtr();
VideoProvider.SetDrawData(screenBuffer);
}
}
VideoProvider.ApplyScreenScaler();
VideoProvider.ApplyFilterEffect();
}
public EnumPlatform Platform => EnumPlatform.NES;
public EnumSupportEmuPlatform Platform => EnumSupportEmuPlatform.NES;
private CoreSupporter m_coreSupporter;
/// <summary>
/// 指定ROM开始游戏
@ -216,6 +217,6 @@ namespace AxibugEmuOnline.Client
public IControllerSetuper GetControllerSetuper()
{
return ControllerMapper;
}
}
}
}

View File

@ -79,7 +79,12 @@ namespace AxibugEmuOnline.Client
public void ApplyFilterEffect()
{
App.filter.ExecuteFilterRender(rt_gpu, Image);
App.settings.Filter.ExecuteFilterRender(rt_gpu, Image);
}
public void ApplyScreenScaler()
{
App.settings.ScreenScaler.CalcScale(Image, EnumSupportEmuPlatform.NES);
}
private unsafe void PrepareUI(uint* screenData)

View File

@ -9,15 +9,15 @@ namespace AxibugEmuOnline.Client
{
public override bool OnEnterItem()
{
App.filter.EnableFilterPreview();
App.settings.Filter.EnableFilterPreview();
return base.OnEnterItem();
}
public override bool OnExitItem()
{
App.filter.ShutDownFilterPreview();
App.filter.ShutDownFilter();
App.settings.Filter.ShutDownFilterPreview();
App.settings.Filter.ShutDownFilter();
return base.OnExitItem();
}
@ -26,7 +26,7 @@ namespace AxibugEmuOnline.Client
{
List<object> list = new List<object>();
list.Add(null);
list.AddRange(App.filter.Filters.Select(f => (object)f));
list.AddRange(App.settings.Filter.Filters.Select(f => (object)f));
datas.Invoke(list);
}
}

View File

@ -0,0 +1,30 @@
using AxibugEmuOnline.Client.ClientCore;
using System;
using System.Collections.Generic;
namespace AxibugEmuOnline.Client
{
public class ScreenScalerListMenuItem : VirtualSubMenuItem
{
public override bool OnEnterItem()
{
App.settings.Filter.EnableFilterPreview();
return base.OnEnterItem();
}
public override bool OnExitItem()
{
App.settings.Filter.ShutDownFilterPreview();
return base.OnExitItem();
}
protected override void GetVirtualListDatas(Action<object> datas)
{
List<object> list = new List<object>();
foreach (var enumValue in Enum.GetValues(typeof(ScreenScaler.EnumScalerMode))) list.Add(enumValue);
datas.Invoke(list);
}
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: a36e6d7441401484ba6f14a9657ad22a
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -9,7 +9,7 @@ using static AxibugEmuOnline.Client.FilterManager;
namespace AxibugEmuOnline.Client
{
/// <summary>
/// 背景颜色设置UI
/// 滤镜预览UI
/// </summary>
public class UI_FilterItem : MenuItem, IVirtualItem
{
@ -37,11 +37,11 @@ namespace AxibugEmuOnline.Client
if (m_select)
{
App.filter.EnableFilterPreview();
if (App.filter != null)
App.filter.EnableFilter(Datacontext);
App.settings.Filter.EnableFilterPreview();
if (App.settings.Filter != null)
App.settings.Filter.EnableFilter(Datacontext);
else
App.filter.ShutDownFilter();
App.settings.Filter.ShutDownFilter();
}
}
@ -57,9 +57,9 @@ namespace AxibugEmuOnline.Client
OverlayManager.PopSideBar(opts, onClose: () =>
{
App.filter.EnableFilterPreview();
App.settings.Filter.EnableFilterPreview();
Datacontext.ResetPreset();
App.filter.EnableFilter(Datacontext);
App.settings.Filter.EnableFilter(Datacontext);
});
}
return false;
@ -78,7 +78,7 @@ namespace AxibugEmuOnline.Client
public override void OnFocus()
{
m_filter.ResetPreset();
App.filter.EnableFilter(m_filter);
App.settings.Filter.EnableFilter(m_filter);
}
public override void OnExcute(OptionUI optionUI, ref bool cancelHide)
@ -135,7 +135,7 @@ namespace AxibugEmuOnline.Client
public override void OnFocus()
{
m_filter.ApplyPreset(m_preset);
App.filter.EnableFilter(m_filter);
App.settings.Filter.EnableFilter(m_filter);
}
protected override List<OptionMenu> GetOptionMenus()

View File

@ -0,0 +1,55 @@
using AxibugEmuOnline.Client.ClientCore;
using AxibugEmuOnline.Client.UI;
namespace AxibugEmuOnline.Client
{
/// <summary>
/// 画面比例模式选项UI
/// </summary>
public class UI_ScalerModeItem : MenuItem, IVirtualItem
{
public int Index { get; set; }
public ScreenScaler.EnumScalerMode Datacontext { get; private set; }
public void SetData(object data)
{
Datacontext = (ScreenScaler.EnumScalerMode)data;
UpdateView();
}
private void UpdateView()
{
switch (Datacontext)
{
case ScreenScaler.EnumScalerMode.FullScreen:
SetBaseInfo("全屏", "模拟器输出画面将拉伸到全屏", null);
break;
case ScreenScaler.EnumScalerMode.Raw:
SetBaseInfo("原始尺寸", "将保持模拟器输出画面的原始分辨率", null);
break;
case ScreenScaler.EnumScalerMode.Fix:
SetBaseInfo("适应", "在保持原始画面比例的情况下适配到全屏", null);
break;
}
}
public void SetDependencyProperty(object data)
{
SetSelectState(data is ThirdMenuRoot && ((ThirdMenuRoot)data).SelectIndex == Index);
if (m_select)
{
App.settings.Filter.EnableFilterPreview();
App.settings.ScreenScaler.GlobalMode = Datacontext;
}
}
public void Release() { }
public override bool OnEnterItem()
{
return false;
}
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 54c899f8fe0572f43ae3305039ea5e5c
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -8,7 +8,7 @@ namespace AxibugEmuOnline.Client
public class RomListMenuItem : VirtualSubMenuItem
{
[SerializeField]
protected EnumPlatform Platform;
protected EnumSupportEmuPlatform Platform;
private RomLib RomLib
{
@ -16,7 +16,7 @@ namespace AxibugEmuOnline.Client
{
switch (Platform)
{
case EnumPlatform.NES:
case EnumSupportEmuPlatform.NES:
return App.nesRomLib;
default:
throw new System.NotImplementedException($"未实现的平台 {Platform}");

View File

@ -1,8 +1,7 @@
using System.Collections.Generic;
using AxibugEmuOnline.Client.ClientCore;
using AxibugEmuOnline.Client.ClientCore;
using AxibugEmuOnline.Client.Event;
using AxibugProtobuf;
using VirtualNes.Core;
using System.Collections.Generic;
namespace AxibugEmuOnline.Client
{
@ -99,14 +98,14 @@ namespace AxibugEmuOnline.Client
gameObject.SetActiveEx(true);
var filterSetting = App.filter.GetFilterSetting(currentRom);
var filterSetting = App.settings.Filter.GetFilterSetting(currentRom);
if (filterSetting.filter != null)
{
var filter = filterSetting.filter;
var preset = filterSetting.preset ?? filter.DefaultPreset;
filter.ApplyPreset(preset);
App.filter.EnableFilter(filter);
App.settings.Filter.EnableFilter(filter);
}
}
@ -142,7 +141,7 @@ namespace AxibugEmuOnline.Client
CommandDispatcher.Instance.UnRegistController(this);
gameObject.SetActiveEx(false);
App.filter.ShutDownFilter();
App.settings.Filter.ShutDownFilter();
}
protected override void OnCmdOptionMenu()

View File

@ -18,7 +18,7 @@ namespace AxibugEmuOnline.Client
{
List<OptionMenu> menus = new List<OptionMenu>();
menus.Add(new FilterNone(m_gameUI.RomFile));
menus.AddRange(App.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 OptionMenu));
return menus;
}
@ -33,9 +33,9 @@ namespace AxibugEmuOnline.Client
public override void OnExcute(OptionUI optionUI, ref bool cancelHide)
{
App.filter.ShutDownFilter();
App.settings.Filter.ShutDownFilter();
App.filter.SetupFilter(m_rom, null, null);
App.settings.Filter.SetupFilter(m_rom, null, null);
}
}
@ -73,9 +73,9 @@ namespace AxibugEmuOnline.Client
public override void OnExcute(OptionUI optionUI, ref bool cancelHide)
{
m_filter.ApplyPreset(m_preset);
App.filter.EnableFilter(m_filter);
App.settings.Filter.EnableFilter(m_filter);
App.filter.SetupFilter(m_rom, m_filter, m_preset);
App.settings.Filter.SetupFilter(m_rom, m_filter, m_preset);
}
}
}

View File

@ -1,4 +1,4 @@
using DG.Tweening;
using DG.Tweening;
using DG.Tweening.Core;
using DG.Tweening.Plugins.Options;
using UnityEngine;

View File

@ -86,7 +86,7 @@ namespace AxibugEmuOnline.Client
SetBaseInfo("--", $"<b>{hostNick}</b>的房间", $"{cur}/{max}");
SetIcon(null);
roomInfo.FetchRomFileInRoomInfo(EnumPlatform.NES, (room, romFile) =>
roomInfo.FetchRomFileInRoomInfo(EnumSupportEmuPlatform.NES, (room, romFile) =>
{
if (room.RoomID != RoomID) return;

View File

@ -1,4 +1,4 @@
using AxibugEmuOnline.Client.ClientCore;
using AxibugEmuOnline.Client.ClientCore;
using AxibugProtobuf;
using System;
using System.Collections.Generic;
@ -34,7 +34,7 @@ namespace AxibugEmuOnline.Client
}
private static Dictionary<int, RomFile> s_RomFileCahcesInRoomInfo = new Dictionary<int, RomFile>();
public static void FetchRomFileInRoomInfo(this Protobuf_Room_MiniInfo roomInfo, EnumPlatform platform, Action<Protobuf_Room_MiniInfo, RomFile> callback)
public static void FetchRomFileInRoomInfo(this Protobuf_Room_MiniInfo roomInfo, EnumSupportEmuPlatform platform, Action<Protobuf_Room_MiniInfo, RomFile> callback)
{
RomFile romFile;
@ -45,10 +45,10 @@ namespace AxibugEmuOnline.Client
}
switch (platform)
{
case EnumPlatform.NES:
case EnumSupportEmuPlatform.NES:
App.StartCoroutine(App.httpAPI.GetNesRomInfo(roomInfo.GameRomID, (romWebData) =>
{
RomFile _romFile = new RomFile(EnumPlatform.NES, 0, 0);
RomFile _romFile = new RomFile(EnumSupportEmuPlatform.NES, 0, 0);
_romFile.SetWebData(romWebData);
s_RomFileCahcesInRoomInfo[roomInfo.GameRomID] = _romFile;

View File

@ -51,25 +51,15 @@ namespace VirtualNes.Core
public override int GetHashCode()
{
//return CombineHashCode(raw0, raw1, raw2, raw3, valid);
return HashCode.Combine(raw0, raw1, raw2, raw3, valid);
int hash = 17;
hash = hash * 31 + raw0.GetHashCode();
hash = hash * 31 + raw1.GetHashCode();
hash = hash * 31 + raw2.GetHashCode();
hash = hash * 31 + raw3.GetHashCode();
hash = hash * 31 + valid.GetHashCode();
return hash;
}
/// <summary>
/// .NetStandard2.0编译备用函数
/// </summary>
/// <param name="raw0"></param>
/// <param name="raw1"></param>
/// <param name="raw2"></param>
/// <param name="raw3"></param>
/// <param name="valid"></param>
/// <returns></returns>
static int CombineHashCode(uint raw0, uint raw1, uint raw2, uint raw3, bool valid)
{
uint validUInt = valid ? 1u : 0u;
uint combinedHash = (raw0 * 31 + raw1) * 31 + raw2 * 31 + raw3 * 31 + validUInt;
return (int)combinedHash;
}
public static bool operator ==(ControllerState left, ControllerState right)
{
return