diff --git a/AxibugEmuOnline.Client/Assets/Resources/UIPrefabs/RoomPlayerSlot/RoomPlayerSlotUnit.prefab b/AxibugEmuOnline.Client/Assets/Resources/UIPrefabs/RoomPlayerSlot/RoomPlayerSlotUnit.prefab
index 5615d88..fb3a327 100644
--- a/AxibugEmuOnline.Client/Assets/Resources/UIPrefabs/RoomPlayerSlot/RoomPlayerSlotUnit.prefab
+++ b/AxibugEmuOnline.Client/Assets/Resources/UIPrefabs/RoomPlayerSlot/RoomPlayerSlotUnit.prefab
@@ -25,17 +25,18 @@ RectTransform:
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2371389415552619370}
- m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ 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: 1727149598719982521}
+ m_Children:
+ - {fileID: 1771748875814093347}
+ m_Father: {fileID: 8950855035476021338}
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: 84, y: 0}
- m_SizeDelta: {x: 502, y: 160}
+ m_AnchoredPosition: {x: 49, y: 0}
+ m_SizeDelta: {x: 251, y: 80}
m_Pivot: {x: 0, y: 0.5}
--- !u!222 &6564505248202665844
CanvasRenderer:
@@ -100,17 +101,17 @@ RectTransform:
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2721335758118728454}
- m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ 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: 1727149598719982521}
+ m_Father: {fileID: 8950855035476021338}
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: 142, y: 160}
+ m_SizeDelta: {x: 71, y: 80}
m_Pivot: {x: 0, y: 0.5}
--- !u!222 &9075115120373129637
CanvasRenderer:
@@ -159,7 +160,7 @@ GameObject:
serializedVersion: 6
m_Component:
- component: {fileID: 1727149598719982521}
- - component: {fileID: 7654163251363580929}
+ - component: {fileID: 8370099016684185830}
m_Layer: 5
m_Name: RoomPlayerSlotUnit
m_TagString: Untagged
@@ -179,20 +180,143 @@ RectTransform:
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- - {fileID: 846681823671095772}
- - {fileID: 6665974318866355999}
+ - {fileID: 8950855035476021338}
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 0, y: 0}
- m_SizeDelta: {x: 100, y: 100}
+ m_SizeDelta: {x: 300, y: 100}
m_Pivot: {x: 0, y: 1}
---- !u!222 &7654163251363580929
-CanvasRenderer:
+--- !u!114 &8370099016684185830
+MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5376230278482525414}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 1bfe4359a48b5c349b439e88eb53b8b1, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_controllerIndex: 0
+ m_connectInfoNode: {fileID: 2371389415552619370}
+ m_indexIcon: {fileID: 4536003039670490184}
+ m_playerName: {fileID: 6617607173830585898}
+--- !u!1 &5662729590297657737
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 8950855035476021338}
+ m_Layer: 5
+ m_Name: Root
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &8950855035476021338
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 5662729590297657737}
+ 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: 846681823671095772}
+ - {fileID: 6665974318866355999}
+ m_Father: {fileID: 1727149598719982521}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+ m_AnchorMin: {x: 0, y: 0}
+ m_AnchorMax: {x: 1, y: 1}
+ m_AnchoredPosition: {x: -0.000030517578, y: 0}
+ m_SizeDelta: {x: 0, y: 0}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!1 &7128973212336692590
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1771748875814093347}
+ - component: {fileID: 4464870872037843803}
+ - component: {fileID: 6617607173830585898}
+ m_Layer: 5
+ m_Name: playerName
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &1771748875814093347
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 7128973212336692590}
+ 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: 6665974318866355999}
+ 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: 30.93, y: -1.59}
+ m_SizeDelta: {x: 146.1, y: 30.63}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!222 &4464870872037843803
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 7128973212336692590}
m_CullTransparentMesh: 1
+--- !u!114 &6617607173830585898
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 7128973212336692590}
+ 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: 1
+ m_MinSize: 4
+ m_MaxSize: 20
+ m_Alignment: 4
+ m_AlignByGeometry: 0
+ m_RichText: 1
+ m_HorizontalOverflow: 0
+ m_VerticalOverflow: 0
+ m_LineSpacing: 1
+ m_Text: PLAYER_NAME
diff --git a/AxibugEmuOnline.Client/Assets/Resources/UIPrefabs/XMBInfoBar.prefab b/AxibugEmuOnline.Client/Assets/Resources/UIPrefabs/XMBInfoBar.prefab
index 72e61f3..50cb8d7 100644
--- a/AxibugEmuOnline.Client/Assets/Resources/UIPrefabs/XMBInfoBar.prefab
+++ b/AxibugEmuOnline.Client/Assets/Resources/UIPrefabs/XMBInfoBar.prefab
@@ -64,6 +64,85 @@ MonoBehaviour:
m_ChildScaleWidth: 0
m_ChildScaleHeight: 0
m_ReverseArrangement: 0
+--- !u!1 &1793510994393845066
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 2940710093054777883}
+ - component: {fileID: 6850622733671985395}
+ - component: {fileID: 2118483068810584522}
+ m_Layer: 5
+ m_Name: ControlSlotInfo
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &2940710093054777883
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1793510994393845066}
+ 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: 2921874279820016524}
+ - {fileID: 3201409976408832832}
+ - {fileID: 2711516940043786061}
+ - {fileID: 3283429487447647189}
+ m_Father: {fileID: 6362836288749559125}
+ 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: 100}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &6850622733671985395
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1793510994393845066}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Padding:
+ m_Left: 0
+ m_Right: 0
+ m_Top: 0
+ m_Bottom: 0
+ m_ChildAlignment: 3
+ m_Spacing: 0
+ m_ChildForceExpandWidth: 0
+ m_ChildForceExpandHeight: 0
+ m_ChildControlWidth: 0
+ m_ChildControlHeight: 0
+ m_ChildScaleWidth: 0
+ m_ChildScaleHeight: 0
+ m_ReverseArrangement: 0
+--- !u!114 &2118483068810584522
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1793510994393845066}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 909a5b71ba48a9c46a57d43017072837, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
--- !u!1 &2196797712553207707
GameObject:
m_ObjectHideFlags: 0
@@ -93,7 +172,8 @@ RectTransform:
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
- m_Children: []
+ m_Children:
+ - {fileID: 2940710093054777883}
m_Father: {fileID: 5353336693430589123}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
@@ -626,6 +706,7 @@ MonoBehaviour:
DelayValue: {fileID: 6486398873987280650}
OnlinePlayerCount: {fileID: 9033504323044377285}
FPS: {fileID: 2545793518460288919}
+ ControlSlotInfoNode: {fileID: 1793510994393845066}
--- !u!1 &5629957813601835122
GameObject:
m_ObjectHideFlags: 0
@@ -1304,3 +1385,423 @@ MonoBehaviour:
m_FillOrigin: 0
m_UseSpriteMesh: 0
m_PixelsPerUnitMultiplier: 1
+--- !u!1001 &3627982800791678196
+PrefabInstance:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_Modification:
+ serializedVersion: 3
+ m_TransformParent: {fileID: 2940710093054777883}
+ m_Modifications:
+ - target: {fileID: 1727149598719982521, guid: cf7167f02ca8e8a4eb176121ffa58f50, type: 3}
+ propertyPath: m_Pivot.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 1727149598719982521, guid: cf7167f02ca8e8a4eb176121ffa58f50, type: 3}
+ propertyPath: m_Pivot.y
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 1727149598719982521, guid: cf7167f02ca8e8a4eb176121ffa58f50, type: 3}
+ propertyPath: m_AnchorMax.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 1727149598719982521, guid: cf7167f02ca8e8a4eb176121ffa58f50, type: 3}
+ propertyPath: m_AnchorMax.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 1727149598719982521, guid: cf7167f02ca8e8a4eb176121ffa58f50, type: 3}
+ propertyPath: m_AnchorMin.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 1727149598719982521, guid: cf7167f02ca8e8a4eb176121ffa58f50, type: 3}
+ propertyPath: m_AnchorMin.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 1727149598719982521, guid: cf7167f02ca8e8a4eb176121ffa58f50, type: 3}
+ propertyPath: m_SizeDelta.x
+ value: 300
+ objectReference: {fileID: 0}
+ - target: {fileID: 1727149598719982521, guid: cf7167f02ca8e8a4eb176121ffa58f50, type: 3}
+ propertyPath: m_SizeDelta.y
+ value: 100
+ objectReference: {fileID: 0}
+ - target: {fileID: 1727149598719982521, guid: cf7167f02ca8e8a4eb176121ffa58f50, type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 1727149598719982521, guid: cf7167f02ca8e8a4eb176121ffa58f50, type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 1727149598719982521, guid: cf7167f02ca8e8a4eb176121ffa58f50, type: 3}
+ propertyPath: m_LocalPosition.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 1727149598719982521, guid: cf7167f02ca8e8a4eb176121ffa58f50, type: 3}
+ propertyPath: m_LocalRotation.w
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 1727149598719982521, guid: cf7167f02ca8e8a4eb176121ffa58f50, type: 3}
+ propertyPath: m_LocalRotation.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 1727149598719982521, guid: cf7167f02ca8e8a4eb176121ffa58f50, type: 3}
+ propertyPath: m_LocalRotation.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 1727149598719982521, guid: cf7167f02ca8e8a4eb176121ffa58f50, type: 3}
+ propertyPath: m_LocalRotation.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 1727149598719982521, guid: cf7167f02ca8e8a4eb176121ffa58f50, type: 3}
+ propertyPath: m_AnchoredPosition.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 1727149598719982521, guid: cf7167f02ca8e8a4eb176121ffa58f50, type: 3}
+ propertyPath: m_AnchoredPosition.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 1727149598719982521, guid: cf7167f02ca8e8a4eb176121ffa58f50, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 1727149598719982521, guid: cf7167f02ca8e8a4eb176121ffa58f50, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 1727149598719982521, guid: cf7167f02ca8e8a4eb176121ffa58f50, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 5376230278482525414, guid: cf7167f02ca8e8a4eb176121ffa58f50, type: 3}
+ propertyPath: m_Name
+ value: P3
+ objectReference: {fileID: 0}
+ - target: {fileID: 8370099016684185830, guid: cf7167f02ca8e8a4eb176121ffa58f50, type: 3}
+ propertyPath: m_slotIndex
+ value: 2
+ objectReference: {fileID: 0}
+ m_RemovedComponents: []
+ m_RemovedGameObjects: []
+ m_AddedGameObjects: []
+ m_AddedComponents: []
+ m_SourcePrefab: {fileID: 100100000, guid: cf7167f02ca8e8a4eb176121ffa58f50, type: 3}
+--- !u!224 &2711516940043786061 stripped
+RectTransform:
+ m_CorrespondingSourceObject: {fileID: 1727149598719982521, guid: cf7167f02ca8e8a4eb176121ffa58f50, type: 3}
+ m_PrefabInstance: {fileID: 3627982800791678196}
+ m_PrefabAsset: {fileID: 0}
+--- !u!1001 &4208900619059435628
+PrefabInstance:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_Modification:
+ serializedVersion: 3
+ m_TransformParent: {fileID: 2940710093054777883}
+ m_Modifications:
+ - target: {fileID: 1727149598719982521, guid: cf7167f02ca8e8a4eb176121ffa58f50, type: 3}
+ propertyPath: m_Pivot.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 1727149598719982521, guid: cf7167f02ca8e8a4eb176121ffa58f50, type: 3}
+ propertyPath: m_Pivot.y
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 1727149598719982521, guid: cf7167f02ca8e8a4eb176121ffa58f50, type: 3}
+ propertyPath: m_AnchorMax.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 1727149598719982521, guid: cf7167f02ca8e8a4eb176121ffa58f50, type: 3}
+ propertyPath: m_AnchorMax.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 1727149598719982521, guid: cf7167f02ca8e8a4eb176121ffa58f50, type: 3}
+ propertyPath: m_AnchorMin.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 1727149598719982521, guid: cf7167f02ca8e8a4eb176121ffa58f50, type: 3}
+ propertyPath: m_AnchorMin.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 1727149598719982521, guid: cf7167f02ca8e8a4eb176121ffa58f50, type: 3}
+ propertyPath: m_SizeDelta.x
+ value: 300
+ objectReference: {fileID: 0}
+ - target: {fileID: 1727149598719982521, guid: cf7167f02ca8e8a4eb176121ffa58f50, type: 3}
+ propertyPath: m_SizeDelta.y
+ value: 100
+ objectReference: {fileID: 0}
+ - target: {fileID: 1727149598719982521, guid: cf7167f02ca8e8a4eb176121ffa58f50, type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 1727149598719982521, guid: cf7167f02ca8e8a4eb176121ffa58f50, type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 1727149598719982521, guid: cf7167f02ca8e8a4eb176121ffa58f50, type: 3}
+ propertyPath: m_LocalPosition.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 1727149598719982521, guid: cf7167f02ca8e8a4eb176121ffa58f50, type: 3}
+ propertyPath: m_LocalRotation.w
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 1727149598719982521, guid: cf7167f02ca8e8a4eb176121ffa58f50, type: 3}
+ propertyPath: m_LocalRotation.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 1727149598719982521, guid: cf7167f02ca8e8a4eb176121ffa58f50, type: 3}
+ propertyPath: m_LocalRotation.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 1727149598719982521, guid: cf7167f02ca8e8a4eb176121ffa58f50, type: 3}
+ propertyPath: m_LocalRotation.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 1727149598719982521, guid: cf7167f02ca8e8a4eb176121ffa58f50, type: 3}
+ propertyPath: m_AnchoredPosition.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 1727149598719982521, guid: cf7167f02ca8e8a4eb176121ffa58f50, type: 3}
+ propertyPath: m_AnchoredPosition.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 1727149598719982521, guid: cf7167f02ca8e8a4eb176121ffa58f50, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 1727149598719982521, guid: cf7167f02ca8e8a4eb176121ffa58f50, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 1727149598719982521, guid: cf7167f02ca8e8a4eb176121ffa58f50, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 5376230278482525414, guid: cf7167f02ca8e8a4eb176121ffa58f50, type: 3}
+ propertyPath: m_Name
+ value: P4
+ objectReference: {fileID: 0}
+ - target: {fileID: 8370099016684185830, guid: cf7167f02ca8e8a4eb176121ffa58f50, type: 3}
+ propertyPath: m_slotIndex
+ value: 3
+ objectReference: {fileID: 0}
+ m_RemovedComponents: []
+ m_RemovedGameObjects: []
+ m_AddedGameObjects: []
+ m_AddedComponents: []
+ m_SourcePrefab: {fileID: 100100000, guid: cf7167f02ca8e8a4eb176121ffa58f50, type: 3}
+--- !u!224 &3283429487447647189 stripped
+RectTransform:
+ m_CorrespondingSourceObject: {fileID: 1727149598719982521, guid: cf7167f02ca8e8a4eb176121ffa58f50, type: 3}
+ m_PrefabInstance: {fileID: 4208900619059435628}
+ m_PrefabAsset: {fileID: 0}
+--- !u!1001 &4293513748768145657
+PrefabInstance:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_Modification:
+ serializedVersion: 3
+ m_TransformParent: {fileID: 2940710093054777883}
+ m_Modifications:
+ - target: {fileID: 1727149598719982521, guid: cf7167f02ca8e8a4eb176121ffa58f50, type: 3}
+ propertyPath: m_Pivot.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 1727149598719982521, guid: cf7167f02ca8e8a4eb176121ffa58f50, type: 3}
+ propertyPath: m_Pivot.y
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 1727149598719982521, guid: cf7167f02ca8e8a4eb176121ffa58f50, type: 3}
+ propertyPath: m_AnchorMax.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 1727149598719982521, guid: cf7167f02ca8e8a4eb176121ffa58f50, type: 3}
+ propertyPath: m_AnchorMax.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 1727149598719982521, guid: cf7167f02ca8e8a4eb176121ffa58f50, type: 3}
+ propertyPath: m_AnchorMin.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 1727149598719982521, guid: cf7167f02ca8e8a4eb176121ffa58f50, type: 3}
+ propertyPath: m_AnchorMin.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 1727149598719982521, guid: cf7167f02ca8e8a4eb176121ffa58f50, type: 3}
+ propertyPath: m_SizeDelta.x
+ value: 300
+ objectReference: {fileID: 0}
+ - target: {fileID: 1727149598719982521, guid: cf7167f02ca8e8a4eb176121ffa58f50, type: 3}
+ propertyPath: m_SizeDelta.y
+ value: 100
+ objectReference: {fileID: 0}
+ - target: {fileID: 1727149598719982521, guid: cf7167f02ca8e8a4eb176121ffa58f50, type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 1727149598719982521, guid: cf7167f02ca8e8a4eb176121ffa58f50, type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 1727149598719982521, guid: cf7167f02ca8e8a4eb176121ffa58f50, type: 3}
+ propertyPath: m_LocalPosition.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 1727149598719982521, guid: cf7167f02ca8e8a4eb176121ffa58f50, type: 3}
+ propertyPath: m_LocalRotation.w
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 1727149598719982521, guid: cf7167f02ca8e8a4eb176121ffa58f50, type: 3}
+ propertyPath: m_LocalRotation.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 1727149598719982521, guid: cf7167f02ca8e8a4eb176121ffa58f50, type: 3}
+ propertyPath: m_LocalRotation.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 1727149598719982521, guid: cf7167f02ca8e8a4eb176121ffa58f50, type: 3}
+ propertyPath: m_LocalRotation.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 1727149598719982521, guid: cf7167f02ca8e8a4eb176121ffa58f50, type: 3}
+ propertyPath: m_AnchoredPosition.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 1727149598719982521, guid: cf7167f02ca8e8a4eb176121ffa58f50, type: 3}
+ propertyPath: m_AnchoredPosition.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 1727149598719982521, guid: cf7167f02ca8e8a4eb176121ffa58f50, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 1727149598719982521, guid: cf7167f02ca8e8a4eb176121ffa58f50, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 1727149598719982521, guid: cf7167f02ca8e8a4eb176121ffa58f50, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 5376230278482525414, guid: cf7167f02ca8e8a4eb176121ffa58f50, type: 3}
+ propertyPath: m_Name
+ value: P2
+ objectReference: {fileID: 0}
+ - target: {fileID: 8370099016684185830, guid: cf7167f02ca8e8a4eb176121ffa58f50, type: 3}
+ propertyPath: m_slotIndex
+ value: 1
+ objectReference: {fileID: 0}
+ m_RemovedComponents: []
+ m_RemovedGameObjects: []
+ m_AddedGameObjects: []
+ m_AddedComponents: []
+ m_SourcePrefab: {fileID: 100100000, guid: cf7167f02ca8e8a4eb176121ffa58f50, type: 3}
+--- !u!224 &3201409976408832832 stripped
+RectTransform:
+ m_CorrespondingSourceObject: {fileID: 1727149598719982521, guid: cf7167f02ca8e8a4eb176121ffa58f50, type: 3}
+ m_PrefabInstance: {fileID: 4293513748768145657}
+ m_PrefabAsset: {fileID: 0}
+--- !u!1001 &4572424957848191029
+PrefabInstance:
+ m_ObjectHideFlags: 0
+ serializedVersion: 2
+ m_Modification:
+ serializedVersion: 3
+ m_TransformParent: {fileID: 2940710093054777883}
+ m_Modifications:
+ - target: {fileID: 1727149598719982521, guid: cf7167f02ca8e8a4eb176121ffa58f50, type: 3}
+ propertyPath: m_Pivot.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 1727149598719982521, guid: cf7167f02ca8e8a4eb176121ffa58f50, type: 3}
+ propertyPath: m_Pivot.y
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 1727149598719982521, guid: cf7167f02ca8e8a4eb176121ffa58f50, type: 3}
+ propertyPath: m_AnchorMax.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 1727149598719982521, guid: cf7167f02ca8e8a4eb176121ffa58f50, type: 3}
+ propertyPath: m_AnchorMax.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 1727149598719982521, guid: cf7167f02ca8e8a4eb176121ffa58f50, type: 3}
+ propertyPath: m_AnchorMin.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 1727149598719982521, guid: cf7167f02ca8e8a4eb176121ffa58f50, type: 3}
+ propertyPath: m_AnchorMin.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 1727149598719982521, guid: cf7167f02ca8e8a4eb176121ffa58f50, type: 3}
+ propertyPath: m_SizeDelta.x
+ value: 300
+ objectReference: {fileID: 0}
+ - target: {fileID: 1727149598719982521, guid: cf7167f02ca8e8a4eb176121ffa58f50, type: 3}
+ propertyPath: m_SizeDelta.y
+ value: 100
+ objectReference: {fileID: 0}
+ - target: {fileID: 1727149598719982521, guid: cf7167f02ca8e8a4eb176121ffa58f50, type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 1727149598719982521, guid: cf7167f02ca8e8a4eb176121ffa58f50, type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 1727149598719982521, guid: cf7167f02ca8e8a4eb176121ffa58f50, type: 3}
+ propertyPath: m_LocalPosition.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 1727149598719982521, guid: cf7167f02ca8e8a4eb176121ffa58f50, type: 3}
+ propertyPath: m_LocalRotation.w
+ value: 1
+ objectReference: {fileID: 0}
+ - target: {fileID: 1727149598719982521, guid: cf7167f02ca8e8a4eb176121ffa58f50, type: 3}
+ propertyPath: m_LocalRotation.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 1727149598719982521, guid: cf7167f02ca8e8a4eb176121ffa58f50, type: 3}
+ propertyPath: m_LocalRotation.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 1727149598719982521, guid: cf7167f02ca8e8a4eb176121ffa58f50, type: 3}
+ propertyPath: m_LocalRotation.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 1727149598719982521, guid: cf7167f02ca8e8a4eb176121ffa58f50, type: 3}
+ propertyPath: m_AnchoredPosition.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 1727149598719982521, guid: cf7167f02ca8e8a4eb176121ffa58f50, type: 3}
+ propertyPath: m_AnchoredPosition.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 1727149598719982521, guid: cf7167f02ca8e8a4eb176121ffa58f50, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 1727149598719982521, guid: cf7167f02ca8e8a4eb176121ffa58f50, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 1727149598719982521, guid: cf7167f02ca8e8a4eb176121ffa58f50, type: 3}
+ propertyPath: m_LocalEulerAnglesHint.z
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 5376230278482525414, guid: cf7167f02ca8e8a4eb176121ffa58f50, type: 3}
+ propertyPath: m_Name
+ value: P1
+ objectReference: {fileID: 0}
+ m_RemovedComponents: []
+ m_RemovedGameObjects: []
+ m_AddedGameObjects: []
+ m_AddedComponents: []
+ m_SourcePrefab: {fileID: 100100000, guid: cf7167f02ca8e8a4eb176121ffa58f50, type: 3}
+--- !u!224 &2921874279820016524 stripped
+RectTransform:
+ m_CorrespondingSourceObject: {fileID: 1727149598719982521, guid: cf7167f02ca8e8a4eb176121ffa58f50, type: 3}
+ m_PrefabInstance: {fileID: 4572424957848191029}
+ m_PrefabAsset: {fileID: 0}
diff --git a/AxibugEmuOnline.Client/Assets/Scene/AxibugEmuOnline.Client.unity b/AxibugEmuOnline.Client/Assets/Scene/AxibugEmuOnline.Client.unity
index ae4dfb2..f1ceb1f 100644
--- a/AxibugEmuOnline.Client/Assets/Scene/AxibugEmuOnline.Client.unity
+++ b/AxibugEmuOnline.Client/Assets/Scene/AxibugEmuOnline.Client.unity
@@ -1170,6 +1170,18 @@ PrefabInstance:
serializedVersion: 3
m_TransformParent: {fileID: 1599240741}
m_Modifications:
+ - target: {fileID: 245821230929098307, guid: 3b211f31b55a35e44a8fa38666f63383, type: 3}
+ propertyPath: m_AnchorMax.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 245821230929098307, guid: 3b211f31b55a35e44a8fa38666f63383, type: 3}
+ propertyPath: m_AnchorMin.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 245821230929098307, guid: 3b211f31b55a35e44a8fa38666f63383, type: 3}
+ propertyPath: m_AnchoredPosition.y
+ value: 0
+ objectReference: {fileID: 0}
- target: {fileID: 1108503213262670097, guid: 3b211f31b55a35e44a8fa38666f63383, type: 3}
propertyPath: m_AnchorMax.y
value: 0
@@ -1194,6 +1206,22 @@ PrefabInstance:
propertyPath: m_AnchoredPosition.y
value: 0
objectReference: {fileID: 0}
+ - target: {fileID: 1700008050955832379, guid: 3b211f31b55a35e44a8fa38666f63383, type: 3}
+ propertyPath: m_AnchorMax.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 1700008050955832379, guid: 3b211f31b55a35e44a8fa38666f63383, type: 3}
+ propertyPath: m_AnchorMin.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 1700008050955832379, guid: 3b211f31b55a35e44a8fa38666f63383, type: 3}
+ propertyPath: m_AnchoredPosition.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 1700008050955832379, guid: 3b211f31b55a35e44a8fa38666f63383, type: 3}
+ propertyPath: m_AnchoredPosition.y
+ value: 0
+ objectReference: {fileID: 0}
- target: {fileID: 1710183501897154830, guid: 3b211f31b55a35e44a8fa38666f63383, type: 3}
propertyPath: m_AnchorMax.y
value: 0
@@ -1282,6 +1310,22 @@ PrefabInstance:
propertyPath: m_AnchoredPosition.y
value: 0
objectReference: {fileID: 0}
+ - target: {fileID: 2256656160383605798, guid: 3b211f31b55a35e44a8fa38666f63383, type: 3}
+ propertyPath: m_AnchorMax.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 2256656160383605798, guid: 3b211f31b55a35e44a8fa38666f63383, type: 3}
+ propertyPath: m_AnchorMin.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 2256656160383605798, guid: 3b211f31b55a35e44a8fa38666f63383, type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 2256656160383605798, guid: 3b211f31b55a35e44a8fa38666f63383, type: 3}
+ propertyPath: m_AnchoredPosition.x
+ value: 0
+ objectReference: {fileID: 0}
- target: {fileID: 2580867844924924490, guid: 3b211f31b55a35e44a8fa38666f63383, type: 3}
propertyPath: m_AnchorMax.y
value: 0
@@ -1310,6 +1354,158 @@ PrefabInstance:
propertyPath: m_AnchoredPosition.y
value: 0
objectReference: {fileID: 0}
+ - target: {fileID: 2711516940043786061, guid: 3b211f31b55a35e44a8fa38666f63383, type: 3}
+ propertyPath: m_AnchorMax.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 2711516940043786061, guid: 3b211f31b55a35e44a8fa38666f63383, type: 3}
+ propertyPath: m_AnchorMin.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 2711516940043786061, guid: 3b211f31b55a35e44a8fa38666f63383, type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 2711516940043786061, guid: 3b211f31b55a35e44a8fa38666f63383, type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 2711516940043786061, guid: 3b211f31b55a35e44a8fa38666f63383, type: 3}
+ propertyPath: m_AnchoredPosition.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 2921874279820016524, guid: 3b211f31b55a35e44a8fa38666f63383, type: 3}
+ propertyPath: m_AnchorMax.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 2921874279820016524, guid: 3b211f31b55a35e44a8fa38666f63383, type: 3}
+ propertyPath: m_AnchorMin.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 2940710093054777883, guid: 3b211f31b55a35e44a8fa38666f63383, type: 3}
+ propertyPath: m_AnchorMax.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 2940710093054777883, guid: 3b211f31b55a35e44a8fa38666f63383, type: 3}
+ propertyPath: m_AnchorMin.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 2940710093054777883, guid: 3b211f31b55a35e44a8fa38666f63383, type: 3}
+ propertyPath: m_SizeDelta.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 2940710093054777883, guid: 3b211f31b55a35e44a8fa38666f63383, type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 2940710093054777883, guid: 3b211f31b55a35e44a8fa38666f63383, type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 2940710093054777883, guid: 3b211f31b55a35e44a8fa38666f63383, type: 3}
+ propertyPath: m_AnchoredPosition.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 2940710093054777883, guid: 3b211f31b55a35e44a8fa38666f63383, type: 3}
+ propertyPath: m_AnchoredPosition.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 3082393374055389930, guid: 3b211f31b55a35e44a8fa38666f63383, type: 3}
+ propertyPath: m_AnchorMax.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 3082393374055389930, guid: 3b211f31b55a35e44a8fa38666f63383, type: 3}
+ propertyPath: m_AnchorMin.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 3082393374055389930, guid: 3b211f31b55a35e44a8fa38666f63383, type: 3}
+ propertyPath: m_AnchoredPosition.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 3082393374055389930, guid: 3b211f31b55a35e44a8fa38666f63383, type: 3}
+ propertyPath: m_AnchoredPosition.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 3201409976408832832, guid: 3b211f31b55a35e44a8fa38666f63383, type: 3}
+ propertyPath: m_AnchorMax.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 3201409976408832832, guid: 3b211f31b55a35e44a8fa38666f63383, type: 3}
+ propertyPath: m_AnchorMin.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 3201409976408832832, guid: 3b211f31b55a35e44a8fa38666f63383, type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 3201409976408832832, guid: 3b211f31b55a35e44a8fa38666f63383, type: 3}
+ propertyPath: m_AnchoredPosition.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 3283429487447647189, guid: 3b211f31b55a35e44a8fa38666f63383, type: 3}
+ propertyPath: m_AnchorMax.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 3283429487447647189, guid: 3b211f31b55a35e44a8fa38666f63383, type: 3}
+ propertyPath: m_AnchorMin.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 3283429487447647189, guid: 3b211f31b55a35e44a8fa38666f63383, type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 3283429487447647189, guid: 3b211f31b55a35e44a8fa38666f63383, type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 3283429487447647189, guid: 3b211f31b55a35e44a8fa38666f63383, type: 3}
+ propertyPath: m_AnchoredPosition.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 3382122818573208955, guid: 3b211f31b55a35e44a8fa38666f63383, type: 3}
+ propertyPath: m_AnchorMax.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 3382122818573208955, guid: 3b211f31b55a35e44a8fa38666f63383, type: 3}
+ propertyPath: m_AnchorMin.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 3515422821744378301, guid: 3b211f31b55a35e44a8fa38666f63383, type: 3}
+ propertyPath: m_AnchorMax.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 3515422821744378301, guid: 3b211f31b55a35e44a8fa38666f63383, type: 3}
+ propertyPath: m_AnchorMin.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 3515422821744378301, guid: 3b211f31b55a35e44a8fa38666f63383, type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 3515422821744378301, guid: 3b211f31b55a35e44a8fa38666f63383, type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 3515422821744378301, guid: 3b211f31b55a35e44a8fa38666f63383, type: 3}
+ propertyPath: m_AnchoredPosition.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 3638410964911123998, guid: 3b211f31b55a35e44a8fa38666f63383, type: 3}
+ propertyPath: m_AnchorMax.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 3638410964911123998, guid: 3b211f31b55a35e44a8fa38666f63383, type: 3}
+ propertyPath: m_AnchorMin.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 3638410964911123998, guid: 3b211f31b55a35e44a8fa38666f63383, type: 3}
+ propertyPath: m_AnchoredPosition.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 3638410964911123998, guid: 3b211f31b55a35e44a8fa38666f63383, type: 3}
+ propertyPath: m_AnchoredPosition.y
+ value: 0
+ objectReference: {fileID: 0}
- target: {fileID: 4195056312044822544, guid: 3b211f31b55a35e44a8fa38666f63383, type: 3}
propertyPath: m_AnchorMax.y
value: 0
@@ -1350,6 +1546,18 @@ PrefabInstance:
propertyPath: m_AnchoredPosition.y
value: 0
objectReference: {fileID: 0}
+ - target: {fileID: 4671900371089820408, guid: 3b211f31b55a35e44a8fa38666f63383, type: 3}
+ propertyPath: m_AnchorMax.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4671900371089820408, guid: 3b211f31b55a35e44a8fa38666f63383, type: 3}
+ propertyPath: m_AnchorMin.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 4671900371089820408, guid: 3b211f31b55a35e44a8fa38666f63383, type: 3}
+ propertyPath: m_AnchoredPosition.y
+ value: 0
+ objectReference: {fileID: 0}
- target: {fileID: 4701095282238438274, guid: 3b211f31b55a35e44a8fa38666f63383, type: 3}
propertyPath: m_AnchorMax.y
value: 0
@@ -1398,6 +1606,22 @@ PrefabInstance:
propertyPath: m_AnchoredPosition.y
value: 0
objectReference: {fileID: 0}
+ - target: {fileID: 5155040771471469003, guid: 3b211f31b55a35e44a8fa38666f63383, type: 3}
+ propertyPath: m_AnchorMax.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 5155040771471469003, guid: 3b211f31b55a35e44a8fa38666f63383, type: 3}
+ propertyPath: m_AnchorMin.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 5155040771471469003, guid: 3b211f31b55a35e44a8fa38666f63383, type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 5155040771471469003, guid: 3b211f31b55a35e44a8fa38666f63383, type: 3}
+ propertyPath: m_AnchoredPosition.x
+ value: 0
+ objectReference: {fileID: 0}
- target: {fileID: 5179542162941529357, guid: 3b211f31b55a35e44a8fa38666f63383, type: 3}
propertyPath: m_AnchorMax.y
value: 0
@@ -1518,6 +1742,22 @@ PrefabInstance:
propertyPath: m_SizeDelta.y
value: 0
objectReference: {fileID: 0}
+ - target: {fileID: 6064974212694732928, guid: 3b211f31b55a35e44a8fa38666f63383, type: 3}
+ propertyPath: m_AnchorMax.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 6064974212694732928, guid: 3b211f31b55a35e44a8fa38666f63383, type: 3}
+ propertyPath: m_AnchorMin.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 6064974212694732928, guid: 3b211f31b55a35e44a8fa38666f63383, type: 3}
+ propertyPath: m_AnchoredPosition.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 6064974212694732928, guid: 3b211f31b55a35e44a8fa38666f63383, type: 3}
+ propertyPath: m_AnchoredPosition.y
+ value: 0
+ objectReference: {fileID: 0}
- target: {fileID: 6228199563403754553, guid: 3b211f31b55a35e44a8fa38666f63383, type: 3}
propertyPath: m_AnchorMax.y
value: 0
@@ -1590,6 +1830,26 @@ PrefabInstance:
propertyPath: m_LocalPosition.y
value: 0
objectReference: {fileID: 0}
+ - target: {fileID: 6384207385666895815, guid: 3b211f31b55a35e44a8fa38666f63383, type: 3}
+ propertyPath: m_AnchorMax.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 6384207385666895815, guid: 3b211f31b55a35e44a8fa38666f63383, type: 3}
+ propertyPath: m_AnchorMin.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 6384207385666895815, guid: 3b211f31b55a35e44a8fa38666f63383, type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 6384207385666895815, guid: 3b211f31b55a35e44a8fa38666f63383, type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 6384207385666895815, guid: 3b211f31b55a35e44a8fa38666f63383, type: 3}
+ propertyPath: m_AnchoredPosition.x
+ value: 0
+ objectReference: {fileID: 0}
- target: {fileID: 6462781698725903427, guid: 3b211f31b55a35e44a8fa38666f63383, type: 3}
propertyPath: m_AnchorMax.y
value: 0
@@ -1646,6 +1906,46 @@ PrefabInstance:
propertyPath: m_AnchoredPosition.y
value: 0
objectReference: {fileID: 0}
+ - target: {fileID: 6696282460080611485, guid: 3b211f31b55a35e44a8fa38666f63383, type: 3}
+ propertyPath: m_AnchorMax.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 6696282460080611485, guid: 3b211f31b55a35e44a8fa38666f63383, type: 3}
+ propertyPath: m_AnchorMin.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 6696282460080611485, guid: 3b211f31b55a35e44a8fa38666f63383, type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 6696282460080611485, guid: 3b211f31b55a35e44a8fa38666f63383, type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 6696282460080611485, guid: 3b211f31b55a35e44a8fa38666f63383, type: 3}
+ propertyPath: m_AnchoredPosition.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 7042646075262940748, guid: 3b211f31b55a35e44a8fa38666f63383, type: 3}
+ propertyPath: m_AnchorMax.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 7042646075262940748, guid: 3b211f31b55a35e44a8fa38666f63383, type: 3}
+ propertyPath: m_AnchorMin.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 7042646075262940748, guid: 3b211f31b55a35e44a8fa38666f63383, type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 7042646075262940748, guid: 3b211f31b55a35e44a8fa38666f63383, type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 7042646075262940748, guid: 3b211f31b55a35e44a8fa38666f63383, type: 3}
+ propertyPath: m_AnchoredPosition.x
+ value: 0
+ objectReference: {fileID: 0}
- target: {fileID: 7158194035478552859, guid: 3b211f31b55a35e44a8fa38666f63383, type: 3}
propertyPath: m_AnchorMax.y
value: 0
@@ -1698,6 +1998,18 @@ PrefabInstance:
propertyPath: m_AnchoredPosition.y
value: 0
objectReference: {fileID: 0}
+ - target: {fileID: 7294832541871909085, guid: 3b211f31b55a35e44a8fa38666f63383, type: 3}
+ propertyPath: m_AnchorMax.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 7294832541871909085, guid: 3b211f31b55a35e44a8fa38666f63383, type: 3}
+ propertyPath: m_AnchorMin.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 7294832541871909085, guid: 3b211f31b55a35e44a8fa38666f63383, type: 3}
+ propertyPath: m_AnchoredPosition.y
+ value: 0
+ objectReference: {fileID: 0}
- target: {fileID: 7535416527851975519, guid: 3b211f31b55a35e44a8fa38666f63383, type: 3}
propertyPath: m_AnchorMax.y
value: 0
@@ -1726,6 +2038,34 @@ PrefabInstance:
propertyPath: m_AnchoredPosition.y
value: 0
objectReference: {fileID: 0}
+ - target: {fileID: 8720207225742131896, guid: 3b211f31b55a35e44a8fa38666f63383, type: 3}
+ propertyPath: m_AnchorMax.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 8720207225742131896, guid: 3b211f31b55a35e44a8fa38666f63383, type: 3}
+ propertyPath: m_AnchorMin.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 8720207225742131896, guid: 3b211f31b55a35e44a8fa38666f63383, type: 3}
+ propertyPath: m_LocalPosition.x
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 8720207225742131896, guid: 3b211f31b55a35e44a8fa38666f63383, type: 3}
+ propertyPath: m_LocalPosition.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 9044517244222250025, guid: 3b211f31b55a35e44a8fa38666f63383, type: 3}
+ propertyPath: m_AnchorMax.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 9044517244222250025, guid: 3b211f31b55a35e44a8fa38666f63383, type: 3}
+ propertyPath: m_AnchorMin.y
+ value: 0
+ objectReference: {fileID: 0}
+ - target: {fileID: 9044517244222250025, guid: 3b211f31b55a35e44a8fa38666f63383, type: 3}
+ propertyPath: m_AnchoredPosition.y
+ value: 0
+ objectReference: {fileID: 0}
m_RemovedComponents: []
m_RemovedGameObjects: []
m_AddedGameObjects: []
@@ -1965,9 +2305,9 @@ RectTransform:
m_Children:
- {fileID: 1124446957}
- {fileID: 1983793178}
+ - {fileID: 1469631713}
- {fileID: 939125854}
- {fileID: 1318590597}
- - {fileID: 1469631713}
m_Father: {fileID: 1335662459}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
@@ -2241,6 +2581,10 @@ PrefabInstance:
propertyPath: m_AnchoredPosition.y
value: 0
objectReference: {fileID: 0}
+ - target: {fileID: 406143166925924216, guid: 1de15a80c8c1aa94486563740a15d91c, type: 3}
+ propertyPath: m_AnchoredPosition.x
+ value: -5
+ objectReference: {fileID: 0}
- target: {fileID: 736530578155193984, guid: 1de15a80c8c1aa94486563740a15d91c, type: 3}
propertyPath: m_AnchorMax.y
value: 0
diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/Event/EEvent.cs b/AxibugEmuOnline.Client/Assets/Script/AppMain/Event/EEvent.cs
index 7517420..2814d83 100644
--- a/AxibugEmuOnline.Client/Assets/Script/AppMain/Event/EEvent.cs
+++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/Event/EEvent.cs
@@ -9,7 +9,10 @@
/// 登录成功
///
OnLoginSucceed,
-
+ ///
+ /// 当登录被置为false时
+ ///
+ OnLossLoginState,
///
/// 登录失败
///
@@ -62,11 +65,20 @@
///
/// 服务器等待Step更新
///
- OnRoomWaitStepChange,
-
+ OnRoomWaitStepChange,
+
///
/// 当房间中手柄位信息发生任何变化时触发,进入房间后也应该触发
///
- OnRoomSlotDataChanged,
+ OnRoomSlotDataChanged,
+ ///
+ /// 当手柄连接设置发生变化时触发
+ ///
+ OnControllerConnectChanged,
+ ///
+ /// 当本机手柄渴望插入时触发
+ /// 参数: 本地手柄序号[0,3]
+ ///
+ OnLocalJoyDesireInvert
}
}
diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/Filter/FilterManager.cs b/AxibugEmuOnline.Client/Assets/Script/AppMain/Filter/FilterManager.cs
index 03a6b8a..054185a 100644
--- a/AxibugEmuOnline.Client/Assets/Script/AppMain/Filter/FilterManager.cs
+++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/Filter/FilterManager.cs
@@ -4,7 +4,6 @@ using System.Collections.Generic;
using System.Linq;
using UnityEngine;
using static AxibugEmuOnline.Client.FilterEffect;
-using static AxibugEmuOnline.Client.FilterManager;
namespace AxibugEmuOnline.Client
{
@@ -33,8 +32,6 @@ namespace AxibugEmuOnline.Client
m_previewFilterWraper = new AlphaWraper(mainBg, filterPreview, false);
ShutDownFilterPreview();
ShutDownFilter();
-
-
}
private RenderTexture result = null;
@@ -42,6 +39,11 @@ namespace AxibugEmuOnline.Client
{
if (result == null)
result = RenderTexture.GetTemporary(Screen.width, Screen.height);
+ else if (result.width != Screen.width || result.height != Screen.height)
+ {
+ RenderTexture.ReleaseTemporary(result);
+ result = RenderTexture.GetTemporary(Screen.width, Screen.height);
+ }
bool anyFilterEnable = false;
foreach (var filter in Filters)
diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/AppEmu.cs b/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/AppEmu.cs
index 8000a1f..02c9302 100644
--- a/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/AppEmu.cs
+++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/AppEmu.cs
@@ -63,39 +63,31 @@ namespace AxibugEmuOnline.Client.Manager
m_emuCore.SetupScheme();
- m_controllerSetuper = Supporter.GetControllerSetuper();
-
- SetupController();
+ m_controllerSetuper = Supporter.GetControllerSetuper();
+
+ //自动分配0号手柄到0号手柄位
+ m_controllerSetuper.SetConnect(con0ToSlot: 0);
+ Eventer.Instance.PostEvent(EEvent.OnControllerConnectChanged);
Eventer.Instance.RegisterEvent(EEvent.OnRoomSlotDataChanged, OnSlotDataChanged);
}
private void OnSlotDataChanged()
{
- SetupController();
- }
+ long selfUID = App.user.userdata.UID;
+ uint? con0Slot;
+ uint? con1Slot;
+ uint? con2Slot;
+ uint? con3Slot;
+
+ App.roomMgr.mineRoomMiniInfo.GetPlayerSlotIdxByUid(selfUID, 0, out con0Slot);
+ App.roomMgr.mineRoomMiniInfo.GetPlayerSlotIdxByUid(selfUID, 1, out con1Slot);
+ App.roomMgr.mineRoomMiniInfo.GetPlayerSlotIdxByUid(selfUID, 2, out con2Slot);
+ App.roomMgr.mineRoomMiniInfo.GetPlayerSlotIdxByUid(selfUID, 3, out con3Slot);
+
+ m_controllerSetuper.SetConnect(con0Slot, con1Slot, con2Slot, con3Slot);
- private void SetupController()
- {
- if (!App.roomMgr.InRoom) //不在房间中,自动分配0号手柄到0号手柄位
- {
- m_controllerSetuper.SetConnect(con0ToSlot: 0);
- }
- else //在房间中则使用服务器下发的手柄槽位信息分配本地手柄
- {
- long selfUID = App.user.userdata.UID;
- uint? con0Slot;
- uint? con1Slot;
- uint? con2Slot;
- uint? con3Slot;
-
- App.roomMgr.mineRoomMiniInfo.GetPlayerSlotIdxByUid(selfUID, 0, out con0Slot);
- App.roomMgr.mineRoomMiniInfo.GetPlayerSlotIdxByUid(selfUID, 1, out con1Slot);
- App.roomMgr.mineRoomMiniInfo.GetPlayerSlotIdxByUid(selfUID, 2, out con2Slot);
- App.roomMgr.mineRoomMiniInfo.GetPlayerSlotIdxByUid(selfUID, 3, out con3Slot);
-
- m_controllerSetuper.SetConnect(con0Slot, con1Slot, con2Slot, con3Slot);
- }
+ Eventer.Instance.PostEvent(EEvent.OnControllerConnectChanged);
}
public void StopGame()
diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/AppRoom.cs b/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/AppRoom.cs
index 844cf9b..b689f73 100644
--- a/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/AppRoom.cs
+++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/Manager/AppRoom.cs
@@ -14,7 +14,7 @@ namespace AxibugEmuOnline.Client.Manager
public class AppRoom
{
public Protobuf_Room_MiniInfo mineRoomMiniInfo { get; private set; } = null;
- public bool InRoom => mineRoomMiniInfo != null;
+ public bool InRoom => App.user.IsLoggedIn && mineRoomMiniInfo != null;
public bool IsHost => mineRoomMiniInfo?.HostPlayerUID == App.user.userdata.UID;
public bool IsScreenProviderUID => mineRoomMiniInfo?.ScreenProviderUID == App.user.userdata.UID;
public RoomGameState RoomState => mineRoomMiniInfo.GameState;
@@ -400,10 +400,31 @@ namespace AxibugEmuOnline.Client.Manager
// OverlayManager.PopTip($"[{PlayerName}]进入房间,手柄位:P{i}");
// }
//}
- }
-
+ }
+
///
- /// 发送修改玩家槽位
+ /// 发送修改玩家槽位,但是增量
+ ///
+ /// 玩家占用房间GamePlaySlot和LocalJoyIdx字典
+ public void SendChangePlaySlotIdxWithJoyIdx(uint localJoyIndex, uint slotIndex)
+ {
+ if (!App.roomMgr.InRoom) return;
+
+ Dictionary temp = new Dictionary();
+ for (int i = 0; i < App.roomMgr.mineRoomMiniInfo.GamePlaySlotList.Count; i++)
+ {
+ var item = App.roomMgr.mineRoomMiniInfo.GamePlaySlotList[i];
+
+ if (item.PlayerUID <= 0) continue;
+ if (item.PlayerUID != App.user.userdata.UID) return;
+ temp[(uint)i] = (uint)item.PlayerLocalJoyIdx;
+ }
+ temp[slotIndex] = localJoyIndex;
+
+ SendChangePlaySlotIdxWithJoyIdx(temp);
+ }
+ ///
+ /// 发送修改玩家槽位,全量
///
/// 玩家占用房间GamePlaySlot和LocalJoyIdx字典
public void SendChangePlaySlotIdxWithJoyIdx(Dictionary dictSlotIdx2LocalJoyIdx)
@@ -536,16 +557,15 @@ namespace AxibugEmuOnline.Client.Manager
///
///
///
- public static bool GetFreeSlot(this Protobuf_Room_MiniInfo roomMiniInfo, out int[] freeSlots)
+ public static bool GetFreeSlot(this Protobuf_Room_MiniInfo roomMiniInfo, ref List freeSlots)
{
- List temp = new List();
+ freeSlots.Clear();
for (int i = 0; i < roomMiniInfo.GamePlaySlotList.Count; i++)
{
if (roomMiniInfo.GamePlaySlotList[i].PlayerUID <= 0)
- temp.Add(i);
+ freeSlots.Add(i);
}
- freeSlots = temp.ToArray();
- return freeSlots.Length > 0;
+ return freeSlots.Count > 0;
}
///
@@ -554,15 +574,10 @@ namespace AxibugEmuOnline.Client.Manager
public static bool GetPlayerSlotIdxByUid(this Protobuf_Room_MiniInfo roomMiniInfo, long uid, int joyIdx, out uint? slotIdx)
{
slotIdx = null;
- //joyIdx取值返回[0,3],这个序号代表玩家本地的手柄编号
- //todo : 根据uid和controllerIndex 返回占用的位置
-
- //目前未实现,所有非0号位置的手柄,都返回false
-
for (int i = 0; i < roomMiniInfo.GamePlaySlotList.Count; i++)
{
- if (roomMiniInfo.GamePlaySlotList[i].PlayerUID == uid)
+ if (roomMiniInfo.GamePlaySlotList[i].PlayerUID == uid && roomMiniInfo.GamePlaySlotList[i].PlayerLocalJoyIdx == joyIdx)
{
slotIdx = (uint)i;
return true;
diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/NesEmulator/NesControllerMapper.cs b/AxibugEmuOnline.Client/Assets/Script/AppMain/NesEmulator/NesControllerMapper.cs
index 3fb6985..6886e47 100644
--- a/AxibugEmuOnline.Client/Assets/Script/AppMain/NesEmulator/NesControllerMapper.cs
+++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/NesEmulator/NesControllerMapper.cs
@@ -1,4 +1,7 @@
-using UnityEngine;
+using AxibugEmuOnline.Client.Event;
+using System.Collections.Generic;
+using System.Linq;
+using UnityEngine;
using VirtualNes.Core;
namespace AxibugEmuOnline.Client
@@ -17,14 +20,77 @@ namespace AxibugEmuOnline.Client
m_states[0] = m_states[1] = m_states[2] = m_states[3] = 0;
if (Controller0.ConnectSlot.HasValue) m_states[Controller0.ConnectSlot.Value] = Controller0.GetButtons();
+ else if (Controller0.AnyButtonDown()) Eventer.Instance.PostEvent(EEvent.OnLocalJoyDesireInvert, 0);
+
if (Controller1.ConnectSlot.HasValue) m_states[Controller1.ConnectSlot.Value] = Controller1.GetButtons();
+ else if (Controller1.AnyButtonDown()) Eventer.Instance.PostEvent(EEvent.OnLocalJoyDesireInvert, 1);
+
if (Controller2.ConnectSlot.HasValue) m_states[Controller2.ConnectSlot.Value] = Controller2.GetButtons();
+ else if (Controller2.AnyButtonDown()) Eventer.Instance.PostEvent(EEvent.OnLocalJoyDesireInvert, 2);
+
if (Controller3.ConnectSlot.HasValue) m_states[Controller3.ConnectSlot.Value] = Controller3.GetButtons();
+ else if (Controller3.AnyButtonDown()) Eventer.Instance.PostEvent(EEvent.OnLocalJoyDesireInvert, 3);
var result = new ControllerState(m_states);
return result;
}
+ public void SetConnect(uint? con0ToSlot = null,
+ uint? con1ToSlot = null,
+ uint? con2ToSlot = null,
+ uint? con3ToSlot = null)
+ {
+ Controller0.ConnectSlot = con0ToSlot;
+ Controller1.ConnectSlot = con1ToSlot;
+ Controller2.ConnectSlot = con2ToSlot;
+ Controller3.ConnectSlot = con3ToSlot;
+ }
+
+ public int? GetSlotConnectingController(int slotIndex)
+ {
+ if (Controller0.ConnectSlot.HasValue && Controller0.ConnectSlot.Value == slotIndex) return 0;
+ else if (Controller1.ConnectSlot.HasValue && Controller1.ConnectSlot.Value == slotIndex) return 1;
+ else if (Controller2.ConnectSlot.HasValue && Controller2.ConnectSlot.Value == slotIndex) return 2;
+ else if (Controller3.ConnectSlot.HasValue && Controller3.ConnectSlot.Value == slotIndex) return 3;
+ else return null;
+ }
+
+ static HashSet s_temp = new HashSet(4);
+ public uint? GetFreeSlotIndex()
+ {
+ s_temp.Clear();
+ s_temp.Add(0);
+ s_temp.Add(1);
+ s_temp.Add(2);
+ s_temp.Add(3);
+
+ if (Controller0.ConnectSlot.HasValue) s_temp.Remove(Controller0.ConnectSlot.Value);
+ if (Controller1.ConnectSlot.HasValue) s_temp.Remove(Controller1.ConnectSlot.Value);
+ if (Controller2.ConnectSlot.HasValue) s_temp.Remove(Controller2.ConnectSlot.Value);
+ if (Controller3.ConnectSlot.HasValue) s_temp.Remove(Controller3.ConnectSlot.Value);
+
+ if (s_temp.Count > 0) return s_temp.First();
+ else return null;
+ }
+
+ public void LetControllerConnect(int conIndex, uint slotIndex)
+ {
+ var targetController = conIndex switch
+ {
+ 0 => Controller0,
+ 1 => Controller1,
+ 2 => Controller2,
+ 3 => Controller3,
+ _ => throw new System.Exception($"Not Allowed conIndex Range: {conIndex}")
+ };
+
+ if (targetController.ConnectSlot.HasValue) return;
+
+ targetController.ConnectSlot = slotIndex;
+
+ Eventer.Instance.PostEvent(EEvent.OnControllerConnectChanged);
+ }
+
///
/// Nes控制器
///
@@ -85,6 +151,20 @@ namespace AxibugEmuOnline.Client
return res;
}
+ public bool AnyButtonDown()
+ {
+ return
+ UP.IsDown ||
+ DOWN.IsDown ||
+ LEFT.IsDown ||
+ RIGHT.IsDown ||
+ A.IsDown ||
+ B.IsDown ||
+ SELECT.IsDown ||
+ START.IsDown ||
+ MIC.IsDown;
+ }
+
public static KeyListener GetKey(int controllerInput, EnumButtonType nesConBtnType)
{
string configKey = $"NES_{controllerInput}_{nesConBtnType}";
@@ -115,6 +195,11 @@ namespace AxibugEmuOnline.Client
/// 按键监听器
KeyListener m_keyListener;
+ /// 指示按钮是否正在按下状态
+ public bool IsPressing => m_keyListener.IsPressing();
+ /// 指示按钮是否被按下
+ public bool IsDown => m_keyListener.IsDown();
+
public Button(Controller controller, EnumButtonType buttonType)
{
m_hostController = controller;
@@ -129,18 +214,18 @@ namespace AxibugEmuOnline.Client
///
public EnumButtonType SampleKey()
{
- return m_keyListener.IsPressing() ? m_buttonType : 0;
+ return IsPressing ? m_buttonType : 0;
}
private void CreateListener()
{
m_keyListener = Controller.GetKey(m_hostController.ControllerIndex, m_buttonType);
}
- }
- //low C# readonly
- //public readonly struct KeyListener
-
- public struct KeyListener
+ }
+ //low C# readonly
+ //public readonly struct KeyListener
+
+ public struct KeyListener
{
private readonly KeyCode m_key;
@@ -154,8 +239,8 @@ namespace AxibugEmuOnline.Client
{
m_key = KeyCode.None;
- int result;
- if (int.TryParse(confStr, out result))
+ int result;
+ if (int.TryParse(confStr, out result))
m_key = (KeyCode)result;
}
@@ -163,6 +248,10 @@ namespace AxibugEmuOnline.Client
{
return Input.GetKey(m_key);
}
+ public bool IsDown()
+ {
+ return Input.GetKeyDown(m_key);
+ }
public override string ToString()
{
@@ -225,17 +314,6 @@ namespace AxibugEmuOnline.Client
return default(KeyListener);
}
- }
-
- public void SetConnect(uint? con0ToSlot = null,
- uint? con1ToSlot = null,
- uint? con2ToSlot = null,
- uint? con3ToSlot = null)
- {
- Controller0.ConnectSlot = con0ToSlot;
- Controller1.ConnectSlot = con1ToSlot;
- Controller2.ConnectSlot = con2ToSlot;
- Controller3.ConnectSlot = con3ToSlot;
- }
+ }
}
}
\ No newline at end of file
diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/Network/NetworkHelper.cs b/AxibugEmuOnline.Client/Assets/Script/AppMain/Network/NetworkHelper.cs
index e6c0c53..4a8babf 100644
--- a/AxibugEmuOnline.Client/Assets/Script/AppMain/Network/NetworkHelper.cs
+++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/Network/NetworkHelper.cs
@@ -1,4 +1,5 @@
using AxibugEmuOnline.Client.ClientCore;
+using AxibugEmuOnline.Client.Event;
using AxibugProtobuf;
using HaoYueNet.ClientNetwork;
using System;
@@ -99,6 +100,7 @@ namespace AxibugEmuOnline.Client.Network
public void OnConnectClose()
{
NetworkDeBugLog("OnConnectClose");
+ Eventer.Instance.PostEvent(EEvent.OnLossLoginState);
App.user.LoginOutData();
diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/PSVita.meta b/AxibugEmuOnline.Client/Assets/Script/AppMain/PSVita.meta
new file mode 100644
index 0000000..ee12a21
--- /dev/null
+++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/PSVita.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 4a4a14412f1bcc844bbd2c9bccf50db2
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/UI/InGameUI/InGameUI.cs b/AxibugEmuOnline.Client/Assets/Script/AppMain/UI/InGameUI/InGameUI.cs
index dc772b0..17eeb8c 100644
--- a/AxibugEmuOnline.Client/Assets/Script/AppMain/UI/InGameUI/InGameUI.cs
+++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/UI/InGameUI/InGameUI.cs
@@ -2,6 +2,7 @@
using AxibugEmuOnline.Client.ClientCore;
using AxibugEmuOnline.Client.Event;
using AxibugProtobuf;
+using VirtualNes.Core;
namespace AxibugEmuOnline.Client
{
@@ -111,7 +112,19 @@ namespace AxibugEmuOnline.Client
private void OnRoomCreated()
{
- m_delayCreateRoom = false;
+ if (m_delayCreateRoom)
+ {
+ m_delayCreateRoom = false;
+ //延迟创建房间成功后,同步本地手柄连接状态
+ Dictionary temp = new Dictionary();
+ var setuper = Supporter.GetControllerSetuper();
+ for (int i = 0; i < 4; i++)
+ {
+ var joyIndex = setuper.GetSlotConnectingController(i);
+ if (joyIndex != null) temp[(uint)i] = (uint)joyIndex.Value;
+ }
+ App.roomMgr.SendChangePlaySlotIdxWithJoyIdx(temp);
+ }
}
private void OnLoggedIn()
diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/UI/RoomUI/RoomItem.cs b/AxibugEmuOnline.Client/Assets/Script/AppMain/UI/RoomUI/RoomItem.cs
index 1a04dbf..541a517 100644
--- a/AxibugEmuOnline.Client/Assets/Script/AppMain/UI/RoomUI/RoomItem.cs
+++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/UI/RoomUI/RoomItem.cs
@@ -3,142 +3,143 @@ using AxibugEmuOnline.Client.Event;
using AxibugEmuOnline.Client.Manager;
using AxibugEmuOnline.Client.UI;
using AxibugProtobuf;
+using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using Debug = System.Diagnostics.Debug;
namespace AxibugEmuOnline.Client
-{
- public class RoomItem : MenuItem, IVirtualItem
- {
- [SerializeField] Image m_roomPreview;
- [SerializeField] Slider m_downloadProgress;
- [SerializeField] GameObject m_downloadingFlag;
- [SerializeField] GameObject m_romReadyFlag;
-
- private RomFile m_romFile;
-
- public int Index { get; set; }
- public int RoomID { get; private set; }
-
- protected override void Awake()
- {
- base.Awake();
-
- Eventer.Instance.RegisterEvent(EEvent.OnRoomListSingleUpdate, OnRoomSignelUpdate);
- }
-
- private void OnRoomSignelUpdate(int roomID)
- {
- if (this.RoomID != roomID) return;
-
- Protobuf_Room_MiniInfo roomInfo;
- if (App.roomMgr.GetRoomListMiniInfo(roomID, out roomInfo))
- UpdateUI(roomInfo);
- }
-
- public void SetData(object data)
- {
- Debug.Assert(data is Protobuf_Room_MiniInfo);
-
- var roomInfo = (Protobuf_Room_MiniInfo)data;
- RoomID = roomInfo.RoomID;
-
- UpdateUI(roomInfo);
- }
-
- public override bool OnEnterItem()
- {
- if (m_romFile == null) return false;
-
- if (!m_romFile.RomReady)
- {
- m_romFile.BeginDownload();
- return false;
- }
- else
- {
- Protobuf_Room_MiniInfo MiniInfo;
- if (!App.roomMgr.GetRoomListMiniInfo(RoomID, out MiniInfo))
- {
- OverlayManager.PopTip("房间不存在");
- return false;
- }
- int[] freeSlots;
- if (!MiniInfo.GetFreeSlot(out freeSlots))
- {
- OverlayManager.PopTip("无空闲位置");
- return false;
- }
-
- App.roomMgr.SendJoinRoom(RoomID);
- return true;
- }
- }
-
- private void UpdateUI(Protobuf_Room_MiniInfo roomInfo)
- {
- var hostNick = roomInfo.GetHostNickName();
- int cur; int max;
-
- roomInfo.GetRoomPlayers(out cur, out max);
- SetBaseInfo("--", $"{hostNick}的房间", $"{cur}/{max}");
- SetIcon(null);
-
- roomInfo.FetchRomFileInRoomInfo(EnumPlatform.NES, (room, romFile) =>
- {
- if (room.RoomID != RoomID) return;
-
- m_romFile = romFile;
- Txt.text = romFile.Alias;
-
- UpdateRomInfoView();
- App.CacheMgr.GetSpriteCache(romFile.ImageURL, OnGetRomImage);
- });
- }
-
- protected override void Update()
- {
- UpdateRomInfoView();
- base.Update();
- }
-
- private void UpdateRomInfoView()
- {
- float? downloadingProgress = null;
- bool romReady = false;
-
- if (m_romFile != null)
- {
- if (m_romFile.IsDownloading)
- downloadingProgress = m_romFile.Progress;
- if (m_romFile.RomReady)
- romReady = true;
- }
-
- m_downloadingFlag.SetActiveEx(downloadingProgress.HasValue);
- if (downloadingProgress.HasValue)
- m_downloadProgress.value = downloadingProgress.Value;
-
- m_romReadyFlag.SetActiveEx(romReady);
- }
-
- private void OnGetRomImage(Sprite sprite, string url)
- {
- if (m_romFile == null) return;
- if (m_romFile.ImageURL != url) return;
-
- SetIcon(sprite);
- }
-
- public void SetDependencyProperty(object data)
- {
- SetSelectState((data is ThirdMenuRoot && ((ThirdMenuRoot)data).SelectIndex == Index));
- }
-
- public void Release()
- {
- Reset();
- }
- }
+{
+ public class RoomItem : MenuItem, IVirtualItem
+ {
+ [SerializeField] Image m_roomPreview;
+ [SerializeField] Slider m_downloadProgress;
+ [SerializeField] GameObject m_downloadingFlag;
+ [SerializeField] GameObject m_romReadyFlag;
+
+ private RomFile m_romFile;
+
+ public int Index { get; set; }
+ public int RoomID { get; private set; }
+
+ protected override void Awake()
+ {
+ base.Awake();
+
+ Eventer.Instance.RegisterEvent(EEvent.OnRoomListSingleUpdate, OnRoomSignelUpdate);
+ }
+
+ private void OnRoomSignelUpdate(int roomID)
+ {
+ if (this.RoomID != roomID) return;
+
+ Protobuf_Room_MiniInfo roomInfo;
+ if (App.roomMgr.GetRoomListMiniInfo(roomID, out roomInfo))
+ UpdateUI(roomInfo);
+ }
+
+ public void SetData(object data)
+ {
+ Debug.Assert(data is Protobuf_Room_MiniInfo);
+
+ var roomInfo = (Protobuf_Room_MiniInfo)data;
+ RoomID = roomInfo.RoomID;
+
+ UpdateUI(roomInfo);
+ }
+
+ public override bool OnEnterItem()
+ {
+ if (m_romFile == null) return false;
+
+ if (!m_romFile.RomReady)
+ {
+ m_romFile.BeginDownload();
+ return false;
+ }
+ else
+ {
+ Protobuf_Room_MiniInfo MiniInfo;
+ if (!App.roomMgr.GetRoomListMiniInfo(RoomID, out MiniInfo))
+ {
+ OverlayManager.PopTip("房间不存在");
+ return false;
+ }
+ List freeSlots = new List();
+ if (!MiniInfo.GetFreeSlot(ref freeSlots))
+ {
+ OverlayManager.PopTip("无空闲位置");
+ return false;
+ }
+
+ App.roomMgr.SendJoinRoom(RoomID);
+ return true;
+ }
+ }
+
+ private void UpdateUI(Protobuf_Room_MiniInfo roomInfo)
+ {
+ var hostNick = roomInfo.GetHostNickName();
+ int cur; int max;
+
+ roomInfo.GetRoomPlayers(out cur, out max);
+ SetBaseInfo("--", $"{hostNick}的房间", $"{cur}/{max}");
+ SetIcon(null);
+
+ roomInfo.FetchRomFileInRoomInfo(EnumPlatform.NES, (room, romFile) =>
+ {
+ if (room.RoomID != RoomID) return;
+
+ m_romFile = romFile;
+ Txt.text = romFile.Alias;
+
+ UpdateRomInfoView();
+ App.CacheMgr.GetSpriteCache(romFile.ImageURL, OnGetRomImage);
+ });
+ }
+
+ protected override void Update()
+ {
+ UpdateRomInfoView();
+ base.Update();
+ }
+
+ private void UpdateRomInfoView()
+ {
+ float? downloadingProgress = null;
+ bool romReady = false;
+
+ if (m_romFile != null)
+ {
+ if (m_romFile.IsDownloading)
+ downloadingProgress = m_romFile.Progress;
+ if (m_romFile.RomReady)
+ romReady = true;
+ }
+
+ m_downloadingFlag.SetActiveEx(downloadingProgress.HasValue);
+ if (downloadingProgress.HasValue)
+ m_downloadProgress.value = downloadingProgress.Value;
+
+ m_romReadyFlag.SetActiveEx(romReady);
+ }
+
+ private void OnGetRomImage(Sprite sprite, string url)
+ {
+ if (m_romFile == null) return;
+ if (m_romFile.ImageURL != url) return;
+
+ SetIcon(sprite);
+ }
+
+ public void SetDependencyProperty(object data)
+ {
+ SetSelectState((data is ThirdMenuRoot && ((ThirdMenuRoot)data).SelectIndex == Index));
+ }
+
+ public void Release()
+ {
+ Reset();
+ }
+ }
}
\ No newline at end of file
diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/UI/XMBTopGroupUI/ControllerInfo.cs b/AxibugEmuOnline.Client/Assets/Script/AppMain/UI/XMBTopGroupUI/ControllerInfo.cs
new file mode 100644
index 0000000..3feabb0
--- /dev/null
+++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/UI/XMBTopGroupUI/ControllerInfo.cs
@@ -0,0 +1,130 @@
+using AxibugEmuOnline.Client;
+using AxibugEmuOnline.Client.ClientCore;
+using AxibugEmuOnline.Client.Event;
+using System;
+using UnityEngine;
+using UnityEngine.UI;
+using VirtualNes.Core;
+
+public class ControllerInfo : MonoBehaviour
+{
+ [Header("手柄槽位序号[0,3]")]
+ [SerializeField]
+ int m_slotIndex;
+
+ [SerializeField]
+ GameObject m_connectInfoNode;
+ [SerializeField]
+ Image m_indexIcon;
+ [SerializeField]
+ Text m_playerName;
+
+ int m_localJoyIndex;
+ bool m_isLocal;
+
+ public int SlotIndex
+ {
+ get => m_slotIndex;
+ set
+ {
+ if (m_slotIndex == value) return;
+ m_slotIndex = value;
+ UpdateIndexIcon();
+ }
+ }
+
+ private void Awake()
+ {
+ UpdateIndexIcon();
+ }
+
+
+ private void OnEnable()
+ {
+ Eventer.Instance.RegisterEvent(EEvent.OnMineJoinRoom, OnJoinRoom);
+ Eventer.Instance.RegisterEvent(EEvent.OnMineRoomCreated, OnMineRoomCreated);
+ Eventer.Instance.RegisterEvent(EEvent.OnMineLeavnRoom, OnLeaveRoom);
+ Eventer.Instance.RegisterEvent(EEvent.OnLoginSucceed, OnLoginSuccess);
+ Eventer.Instance.RegisterEvent(EEvent.OnLossLoginState, OnLossLoginState);
+ Eventer.Instance.RegisterEvent(EEvent.OnControllerConnectChanged, OnControlConnectChanged);
+ UpdateConnectInfo();
+ }
+
+ private void OnDisable()
+ {
+ Eventer.Instance.UnregisterEvent(EEvent.OnMineJoinRoom, OnJoinRoom);
+ Eventer.Instance.UnregisterEvent(EEvent.OnMineRoomCreated, OnMineRoomCreated);
+ Eventer.Instance.UnregisterEvent(EEvent.OnMineLeavnRoom, OnLeaveRoom);
+ Eventer.Instance.UnregisterEvent(EEvent.OnLoginSucceed, OnLoginSuccess);
+ Eventer.Instance.UnregisterEvent(EEvent.OnLossLoginState, OnLossLoginState);
+ Eventer.Instance.UnregisterEvent(EEvent.OnControllerConnectChanged, OnControlConnectChanged);
+ }
+
+ private void OnMineRoomCreated() => UpdateConnectInfo();
+ private void OnJoinRoom() => UpdateConnectInfo();
+ private void OnLeaveRoom() => UpdateConnectInfo();
+ private void OnLoginSuccess() => UpdateConnectInfo();
+ private void OnLossLoginState() => UpdateConnectInfo();
+ private void OnControlConnectChanged() => UpdateConnectInfo();
+
+ private void UpdateConnectInfo()
+ {
+ if (App.roomMgr.InRoom)
+ {
+ var slotInfo = App.roomMgr.mineRoomMiniInfo.GamePlaySlotList[SlotIndex];
+ if (slotInfo.PlayerUID <= 0)
+ SetDisconnect();
+ else
+ UpdateStateView(App.user.userdata.UID == slotInfo.PlayerUID, slotInfo.PlayerNickName, slotInfo.PlayerLocalJoyIdx);
+ }
+ else
+ {
+ var connecter = Supporter.GetControllerSetuper();
+ if (connecter == null)
+ {
+ SetDisconnect();
+ return;
+ }
+
+ var localControlIndex = connecter.GetSlotConnectingController(SlotIndex);
+ if (localControlIndex == null)
+ SetDisconnect();
+ else
+ {
+ if (App.user.IsLoggedIn)
+ UpdateStateView(true, App.user.userdata.NickName, localControlIndex.Value);
+ else
+ UpdateStateView(true, "Player", localControlIndex.Value);
+ }
+ }
+ }
+
+ private void UpdateStateView(bool isLocal, string playerName, int slotIndex)
+ {
+ m_localJoyIndex = slotIndex;
+ m_isLocal = isLocal;
+
+ m_connectInfoNode.SetActiveEx(true);
+ m_playerName.text = playerName;
+ }
+
+ private void SetDisconnect()
+ {
+ m_localJoyIndex = -1;
+ m_isLocal = false;
+
+ m_connectInfoNode.SetActiveEx(false);
+ m_playerName.text = null;
+ }
+
+ private void UpdateIndexIcon()
+ {
+ switch (SlotIndex)
+ {
+ case 0: m_indexIcon.sprite = Resources.Load("UIImage/JoyImg/P1"); break;
+ case 1: m_indexIcon.sprite = Resources.Load("UIImage/JoyImg/P2"); break;
+ case 2: m_indexIcon.sprite = Resources.Load("UIImage/JoyImg/P3"); break;
+ case 3: m_indexIcon.sprite = Resources.Load("UIImage/JoyImg/P4"); break;
+ }
+ }
+}
diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/UI/XMBTopGroupUI/ControllerInfo.cs.meta b/AxibugEmuOnline.Client/Assets/Script/AppMain/UI/XMBTopGroupUI/ControllerInfo.cs.meta
new file mode 100644
index 0000000..2ce16b9
--- /dev/null
+++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/UI/XMBTopGroupUI/ControllerInfo.cs.meta
@@ -0,0 +1,2 @@
+fileFormatVersion: 2
+guid: 1bfe4359a48b5c349b439e88eb53b8b1
\ No newline at end of file
diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/UI/XMBTopGroupUI/ControllerInfoPanel.cs b/AxibugEmuOnline.Client/Assets/Script/AppMain/UI/XMBTopGroupUI/ControllerInfoPanel.cs
new file mode 100644
index 0000000..871541c
--- /dev/null
+++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/UI/XMBTopGroupUI/ControllerInfoPanel.cs
@@ -0,0 +1,43 @@
+using AxibugEmuOnline.Client.ClientCore;
+using AxibugEmuOnline.Client.Event;
+using AxibugEmuOnline.Client.Manager;
+using System;
+using System.Collections.Generic;
+using UnityEngine;
+using VirtualNes.Core;
+
+public class ControllerInfoPanel : MonoBehaviour
+{
+ private void OnEnable()
+ {
+ Eventer.Instance.RegisterEvent(EEvent.OnLocalJoyDesireInvert, OnLocalJoyDesireInvert);
+ }
+
+ private void OnDisable()
+ {
+ Eventer.Instance.UnregisterEvent(EEvent.OnLocalJoyDesireInvert, OnLocalJoyDesireInvert);
+ }
+
+ static List s_freeSlots = new List(4);
+ private void OnLocalJoyDesireInvert(int joyIndex)
+ {
+ if (App.roomMgr.InRoom)
+ {
+ if (!App.roomMgr.mineRoomMiniInfo.GetFreeSlot(ref s_freeSlots)) return;
+
+ //找到第一个空闲手柄插槽
+ var freeSlotIndex = s_freeSlots[0];
+ App.roomMgr.SendChangePlaySlotIdxWithJoyIdx((uint)joyIndex, (uint)freeSlotIndex);
+ }
+ else //不在房间中,直接设置
+ {
+ var setuper = Supporter.GetControllerSetuper();
+ if (setuper == null) return;
+
+ var freeSlotIndex = setuper.GetFreeSlotIndex();
+ if (freeSlotIndex == null) return;
+
+ setuper.LetControllerConnect(joyIndex, freeSlotIndex.Value);
+ }
+ }
+}
diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/UI/XMBTopGroupUI/ControllerInfoPanel.cs.meta b/AxibugEmuOnline.Client/Assets/Script/AppMain/UI/XMBTopGroupUI/ControllerInfoPanel.cs.meta
new file mode 100644
index 0000000..69be886
--- /dev/null
+++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/UI/XMBTopGroupUI/ControllerInfoPanel.cs.meta
@@ -0,0 +1,2 @@
+fileFormatVersion: 2
+guid: 909a5b71ba48a9c46a57d43017072837
\ No newline at end of file
diff --git a/AxibugEmuOnline.Client/Assets/Script/AppMain/UI/XMBTopGroupUI/XMBInfoBar.cs b/AxibugEmuOnline.Client/Assets/Script/AppMain/UI/XMBTopGroupUI/XMBInfoBar.cs
index 264881f..58087c4 100644
--- a/AxibugEmuOnline.Client/Assets/Script/AppMain/UI/XMBTopGroupUI/XMBInfoBar.cs
+++ b/AxibugEmuOnline.Client/Assets/Script/AppMain/UI/XMBTopGroupUI/XMBInfoBar.cs
@@ -1,4 +1,4 @@
-using AxibugEmuOnline.Client;
+using AxibugEmuOnline.Client;
using AxibugEmuOnline.Client.ClientCore;
using System;
using UnityEngine;
@@ -14,6 +14,7 @@ public class XMBInfoBar : MonoBehaviour
public Text DelayValue;
public Text OnlinePlayerCount;
public Text FPS;
+ public GameObject ControlSlotInfoNode;
void OnEnable()
{
@@ -21,6 +22,11 @@ public class XMBInfoBar : MonoBehaviour
RefreshAll();
}
+ private void Update()
+ {
+ ControlSlotInfoNode.SetActiveEx(!App.emu.Core.IsNull());
+ }
+
void OnDisable()
{
TickLoop.LoopAction_1s -= RefreshAll;
@@ -32,31 +38,31 @@ public class XMBInfoBar : MonoBehaviour
RefreshPower();
RefreshDelay();
RefreshFps();
- }
-
- ///
- /// (uint lastFrame, float lastTime)
- ///
- ValueTuple m_lastFrameInfo;
+ }
+
+ ///
+ /// (uint lastFrame, float lastTime)
+ ///
+ ValueTuple m_lastFrameInfo;
private void RefreshFps()
{
if (App.emu.Core.IsNull())
FPS.gameObject.SetActiveEx(false);
else
{
- FPS.gameObject.SetActiveEx(true);
- //var gap = App.emu.Core.Frame - m_lastFrameInfo.lastFrame;
- //var time = Time.realtimeSinceStartup - m_lastFrameInfo.lastTime;
- var gap = App.emu.Core.Frame - m_lastFrameInfo.Item1;
- var time = Time.realtimeSinceStartup - m_lastFrameInfo.Item2;
- var fps = gap / time;
- FPS.text = $"FPS:{fps:.#}";
-
- //m_lastFrameInfo.lastFrame = App.emu.Core.Frame;
- //m_lastFrameInfo.lastTime = Time.realtimeSinceStartup;
- m_lastFrameInfo.Item1 = App.emu.Core.Frame;
- m_lastFrameInfo.Item2 = Time.realtimeSinceStartup;
- }
+ FPS.gameObject.SetActiveEx(true);
+ //var gap = App.emu.Core.Frame - m_lastFrameInfo.lastFrame;
+ //var time = Time.realtimeSinceStartup - m_lastFrameInfo.lastTime;
+ var gap = App.emu.Core.Frame - m_lastFrameInfo.Item1;
+ var time = Time.realtimeSinceStartup - m_lastFrameInfo.Item2;
+ var fps = gap / time;
+ FPS.text = $"FPS:{fps:.#}";
+
+ //m_lastFrameInfo.lastFrame = App.emu.Core.Frame;
+ //m_lastFrameInfo.lastTime = Time.realtimeSinceStartup;
+ m_lastFrameInfo.Item1 = App.emu.Core.Frame;
+ m_lastFrameInfo.Item2 = Time.realtimeSinceStartup;
+ }
}
private void RefreshDelay()
diff --git a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Supporter/Supporter.cs b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Supporter/Supporter.cs
index 3701159..913e2f5 100644
--- a/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Supporter/Supporter.cs
+++ b/AxibugEmuOnline.Client/Assets/VirtualNes.Core/Supporter/Supporter.cs
@@ -1,4 +1,4 @@
-using System.IO;
+using System.IO;
namespace VirtualNes.Core
{
@@ -68,7 +68,7 @@ namespace VirtualNes.Core
public static IControllerSetuper GetControllerSetuper()
{
- return s_support.GetControllerSetuper();
+ return s_support?.GetControllerSetuper();
}
public static EmulatorConfig Config => s_support.Config;
@@ -98,12 +98,32 @@ namespace VirtualNes.Core
public interface IControllerSetuper
{
///
- /// 设置本地手柄与游戏手柄槽位的映射
+ /// 设置本地手柄与游戏手柄槽位的映射,这个方法是一个全量更新手柄插入设置的方法
///
void SetConnect(
uint? con0ToSlot = null,
uint? con1ToSlot = null,
uint? con2ToSlot = null,
uint? con3ToSlot = null);
+
+ ///
+ /// 指定手柄插槽位,获取当前槽位连接的本地手柄序号
+ ///
+ ///
+ ///
+ int? GetSlotConnectingController(int slotIndex);
+
+ ///
+ /// 获得一个空的槽位
+ ///
+ ///
+ uint? GetFreeSlotIndex();
+
+ ///
+ /// 增量式的修改一个手柄和一个槽位的连接关系
+ ///
+ ///
+ ///
+ void LetControllerConnect(int conIndex, uint slotIndex);
}
}
\ No newline at end of file