WIP: add logic and UI
This commit is contained in:
@@ -0,0 +1,918 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!1 &1590197940424963217
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 6666702292353843246}
|
||||
- component: {fileID: 4026888369354985289}
|
||||
m_Layer: 0
|
||||
m_Name: DlgExit
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!224 &6666702292353843246
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1590197940424963217}
|
||||
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: 4878816101074468399}
|
||||
m_Father: {fileID: 0}
|
||||
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!114 &4026888369354985289
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1590197940424963217}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 8ca9d1418c284fd395248056f086c7d4, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
ConfirmBtn: {fileID: 3576373828330281173}
|
||||
CancelBtn: {fileID: 5816777684468032703}
|
||||
--- !u!1 &1725743065086802770
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 4878816101074468399}
|
||||
- component: {fileID: 1101450299599105715}
|
||||
- component: {fileID: 5337953600179164026}
|
||||
m_Layer: 0
|
||||
m_Name: Popup
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!224 &4878816101074468399
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1725743065086802770}
|
||||
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: 7913819123905793175}
|
||||
- {fileID: 7527520206793245717}
|
||||
- {fileID: 4965393937731457567}
|
||||
- {fileID: 4000902174573487903}
|
||||
m_Father: {fileID: 6666702292353843246}
|
||||
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: 933.3333, y: 533.3333}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!222 &1101450299599105715
|
||||
CanvasRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1725743065086802770}
|
||||
m_CullTransparentMesh: 1
|
||||
--- !u!114 &5337953600179164026
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1725743065086802770}
|
||||
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: 4744752b0496d42d0b1c52fcb705e044, type: 3}
|
||||
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 &4518958362188575915
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 4965393937731457567}
|
||||
- component: {fileID: 1891070853961845177}
|
||||
- component: {fileID: 807580002560918717}
|
||||
- component: {fileID: 3576373828330281173}
|
||||
m_Layer: 0
|
||||
m_Name: Button_Confirm
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!224 &4965393937731457567
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 4518958362188575915}
|
||||
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: 4642911678502374063}
|
||||
m_Father: {fileID: 4878816101074468399}
|
||||
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: -210, y: -150}
|
||||
m_SizeDelta: {x: 313, y: 91}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!222 &1891070853961845177
|
||||
CanvasRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 4518958362188575915}
|
||||
m_CullTransparentMesh: 1
|
||||
--- !u!114 &807580002560918717
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 4518958362188575915}
|
||||
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: b545f49a479374ffaaec0c8f123b0c5f, type: 3}
|
||||
m_Type: 0
|
||||
m_PreserveAspect: 0
|
||||
m_FillCenter: 1
|
||||
m_FillMethod: 4
|
||||
m_FillAmount: 1
|
||||
m_FillClockwise: 1
|
||||
m_FillOrigin: 0
|
||||
m_UseSpriteMesh: 0
|
||||
m_PixelsPerUnitMultiplier: 1
|
||||
--- !u!114 &3576373828330281173
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 4518958362188575915}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_Navigation:
|
||||
m_Mode: 3
|
||||
m_WrapAround: 0
|
||||
m_SelectOnUp: {fileID: 0}
|
||||
m_SelectOnDown: {fileID: 0}
|
||||
m_SelectOnLeft: {fileID: 0}
|
||||
m_SelectOnRight: {fileID: 0}
|
||||
m_Transition: 1
|
||||
m_Colors:
|
||||
m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
|
||||
m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
|
||||
m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
|
||||
m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
|
||||
m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
|
||||
m_ColorMultiplier: 1
|
||||
m_FadeDuration: 0.1
|
||||
m_SpriteState:
|
||||
m_HighlightedSprite: {fileID: 0}
|
||||
m_PressedSprite: {fileID: 0}
|
||||
m_SelectedSprite: {fileID: 0}
|
||||
m_DisabledSprite: {fileID: 0}
|
||||
m_AnimationTriggers:
|
||||
m_NormalTrigger: Normal
|
||||
m_HighlightedTrigger: Highlighted
|
||||
m_PressedTrigger: Pressed
|
||||
m_SelectedTrigger: Selected
|
||||
m_DisabledTrigger: Disabled
|
||||
m_Interactable: 1
|
||||
m_TargetGraphic: {fileID: 807580002560918717}
|
||||
m_OnClick:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
--- !u!1 &4670976812881016521
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 7913819123905793175}
|
||||
- component: {fileID: 2369126678925736279}
|
||||
- component: {fileID: 7564280183498118806}
|
||||
m_Layer: 0
|
||||
m_Name: Text (TMP)_Title
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!224 &7913819123905793175
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 4670976812881016521}
|
||||
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: 4878816101074468399}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0.5, y: 1}
|
||||
m_AnchorMax: {x: 0.5, y: 1}
|
||||
m_AnchoredPosition: {x: -3.7721, y: -17.4557}
|
||||
m_SizeDelta: {x: 298.0753, y: 34.9115}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!222 &2369126678925736279
|
||||
CanvasRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 4670976812881016521}
|
||||
m_CullTransparentMesh: 1
|
||||
--- !u!114 &7564280183498118806
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 4670976812881016521}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, 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_text: "Th\xF4ng b\xE1o"
|
||||
m_isRightToLeft: 0
|
||||
m_fontAsset: {fileID: 11400000, guid: 369c2e14814cc9a4b8e3ad4e37769134, type: 2}
|
||||
m_sharedMaterial: {fileID: 9092487103257209053, guid: 369c2e14814cc9a4b8e3ad4e37769134, type: 2}
|
||||
m_fontSharedMaterials: []
|
||||
m_fontMaterial: {fileID: 0}
|
||||
m_fontMaterials: []
|
||||
m_fontColor32:
|
||||
serializedVersion: 2
|
||||
rgba: 4294967295
|
||||
m_fontColor: {r: 1, g: 1, b: 1, a: 1}
|
||||
m_enableVertexGradient: 0
|
||||
m_colorMode: 3
|
||||
m_fontColorGradient:
|
||||
topLeft: {r: 1, g: 1, b: 1, a: 1}
|
||||
topRight: {r: 1, g: 1, b: 1, a: 1}
|
||||
bottomLeft: {r: 1, g: 1, b: 1, a: 1}
|
||||
bottomRight: {r: 1, g: 1, b: 1, a: 1}
|
||||
m_fontColorGradientPreset: {fileID: 0}
|
||||
m_spriteAsset: {fileID: 0}
|
||||
m_tintAllSprites: 0
|
||||
m_StyleSheet: {fileID: 0}
|
||||
m_TextStyleHashCode: -1183493901
|
||||
m_overrideHtmlColors: 0
|
||||
m_faceColor:
|
||||
serializedVersion: 2
|
||||
rgba: 4294967295
|
||||
m_fontSize: 30
|
||||
m_fontSizeBase: 30
|
||||
m_fontWeight: 400
|
||||
m_enableAutoSizing: 0
|
||||
m_fontSizeMin: 18
|
||||
m_fontSizeMax: 72
|
||||
m_fontStyle: 0
|
||||
m_HorizontalAlignment: 2
|
||||
m_VerticalAlignment: 512
|
||||
m_textAlignment: 65535
|
||||
m_characterSpacing: 0
|
||||
m_wordSpacing: 0
|
||||
m_lineSpacing: 0
|
||||
m_lineSpacingMax: 0
|
||||
m_paragraphSpacing: 0
|
||||
m_charWidthMaxAdj: 0
|
||||
m_TextWrappingMode: 1
|
||||
m_wordWrappingRatios: 0.4
|
||||
m_overflowMode: 0
|
||||
m_linkedTextComponent: {fileID: 0}
|
||||
parentLinkedComponent: {fileID: 0}
|
||||
m_enableKerning: 0
|
||||
m_ActiveFontFeatures: 6e72656b
|
||||
m_enableExtraPadding: 0
|
||||
checkPaddingRequired: 0
|
||||
m_isRichText: 1
|
||||
m_EmojiFallbackSupport: 1
|
||||
m_parseCtrlCharacters: 1
|
||||
m_isOrthographic: 1
|
||||
m_isCullingEnabled: 0
|
||||
m_horizontalMapping: 0
|
||||
m_verticalMapping: 0
|
||||
m_uvLineOffset: 0
|
||||
m_geometrySortingOrder: 0
|
||||
m_IsTextObjectScaleStatic: 0
|
||||
m_VertexBufferAutoSizeReduction: 0
|
||||
m_useMaxVisibleDescender: 1
|
||||
m_pageToDisplay: 1
|
||||
m_margin: {x: 0, y: 0, z: 0, w: 0}
|
||||
m_isUsingLegacyAnimationComponent: 0
|
||||
m_isVolumetricText: 0
|
||||
m_hasFontAssetChanged: 0
|
||||
m_baseMaterial: {fileID: 0}
|
||||
m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
|
||||
--- !u!1 &5918190347695128963
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 4642911678502374063}
|
||||
- component: {fileID: 4834289956051303799}
|
||||
- component: {fileID: 3482299799452283765}
|
||||
m_Layer: 0
|
||||
m_Name: Text (TMP)
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!224 &4642911678502374063
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 5918190347695128963}
|
||||
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: 4965393937731457567}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 0}
|
||||
m_AnchorMax: {x: 1, y: 1}
|
||||
m_AnchoredPosition: {x: 0, y: 0}
|
||||
m_SizeDelta: {x: 0, y: 0}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!222 &4834289956051303799
|
||||
CanvasRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 5918190347695128963}
|
||||
m_CullTransparentMesh: 1
|
||||
--- !u!114 &3482299799452283765
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 5918190347695128963}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, 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_text: "X\xE1c nh\u1EADn"
|
||||
m_isRightToLeft: 0
|
||||
m_fontAsset: {fileID: 11400000, guid: 369c2e14814cc9a4b8e3ad4e37769134, type: 2}
|
||||
m_sharedMaterial: {fileID: 9092487103257209053, guid: 369c2e14814cc9a4b8e3ad4e37769134, type: 2}
|
||||
m_fontSharedMaterials: []
|
||||
m_fontMaterial: {fileID: 0}
|
||||
m_fontMaterials: []
|
||||
m_fontColor32:
|
||||
serializedVersion: 2
|
||||
rgba: 4294967295
|
||||
m_fontColor: {r: 1, g: 1, b: 1, a: 1}
|
||||
m_enableVertexGradient: 0
|
||||
m_colorMode: 3
|
||||
m_fontColorGradient:
|
||||
topLeft: {r: 1, g: 1, b: 1, a: 1}
|
||||
topRight: {r: 1, g: 1, b: 1, a: 1}
|
||||
bottomLeft: {r: 1, g: 1, b: 1, a: 1}
|
||||
bottomRight: {r: 1, g: 1, b: 1, a: 1}
|
||||
m_fontColorGradientPreset: {fileID: 0}
|
||||
m_spriteAsset: {fileID: 0}
|
||||
m_tintAllSprites: 0
|
||||
m_StyleSheet: {fileID: 0}
|
||||
m_TextStyleHashCode: -1183493901
|
||||
m_overrideHtmlColors: 0
|
||||
m_faceColor:
|
||||
serializedVersion: 2
|
||||
rgba: 4294967295
|
||||
m_fontSize: 50
|
||||
m_fontSizeBase: 50
|
||||
m_fontWeight: 400
|
||||
m_enableAutoSizing: 0
|
||||
m_fontSizeMin: 18
|
||||
m_fontSizeMax: 72
|
||||
m_fontStyle: 0
|
||||
m_HorizontalAlignment: 2
|
||||
m_VerticalAlignment: 512
|
||||
m_textAlignment: 65535
|
||||
m_characterSpacing: 0
|
||||
m_wordSpacing: 0
|
||||
m_lineSpacing: 0
|
||||
m_lineSpacingMax: 0
|
||||
m_paragraphSpacing: 0
|
||||
m_charWidthMaxAdj: 0
|
||||
m_TextWrappingMode: 1
|
||||
m_wordWrappingRatios: 0.4
|
||||
m_overflowMode: 0
|
||||
m_linkedTextComponent: {fileID: 0}
|
||||
parentLinkedComponent: {fileID: 0}
|
||||
m_enableKerning: 0
|
||||
m_ActiveFontFeatures: 6e72656b
|
||||
m_enableExtraPadding: 0
|
||||
checkPaddingRequired: 0
|
||||
m_isRichText: 1
|
||||
m_EmojiFallbackSupport: 1
|
||||
m_parseCtrlCharacters: 1
|
||||
m_isOrthographic: 1
|
||||
m_isCullingEnabled: 0
|
||||
m_horizontalMapping: 0
|
||||
m_verticalMapping: 0
|
||||
m_uvLineOffset: 0
|
||||
m_geometrySortingOrder: 0
|
||||
m_IsTextObjectScaleStatic: 0
|
||||
m_VertexBufferAutoSizeReduction: 0
|
||||
m_useMaxVisibleDescender: 1
|
||||
m_pageToDisplay: 1
|
||||
m_margin: {x: 0, y: 0, z: 0, w: 0}
|
||||
m_isUsingLegacyAnimationComponent: 0
|
||||
m_isVolumetricText: 0
|
||||
m_hasFontAssetChanged: 0
|
||||
m_baseMaterial: {fileID: 0}
|
||||
m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
|
||||
--- !u!1 &5923497699521027687
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 4000902174573487903}
|
||||
- component: {fileID: 7348237821025748982}
|
||||
- component: {fileID: 356920440688922164}
|
||||
- component: {fileID: 5816777684468032703}
|
||||
m_Layer: 0
|
||||
m_Name: Button_Cancel
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!224 &4000902174573487903
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 5923497699521027687}
|
||||
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: 1979839230795202451}
|
||||
m_Father: {fileID: 4878816101074468399}
|
||||
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: 210, y: -150}
|
||||
m_SizeDelta: {x: 313, y: 91}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!222 &7348237821025748982
|
||||
CanvasRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 5923497699521027687}
|
||||
m_CullTransparentMesh: 1
|
||||
--- !u!114 &356920440688922164
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 5923497699521027687}
|
||||
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: b545f49a479374ffaaec0c8f123b0c5f, type: 3}
|
||||
m_Type: 0
|
||||
m_PreserveAspect: 0
|
||||
m_FillCenter: 1
|
||||
m_FillMethod: 4
|
||||
m_FillAmount: 1
|
||||
m_FillClockwise: 1
|
||||
m_FillOrigin: 0
|
||||
m_UseSpriteMesh: 0
|
||||
m_PixelsPerUnitMultiplier: 1
|
||||
--- !u!114 &5816777684468032703
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 5923497699521027687}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_Navigation:
|
||||
m_Mode: 3
|
||||
m_WrapAround: 0
|
||||
m_SelectOnUp: {fileID: 0}
|
||||
m_SelectOnDown: {fileID: 0}
|
||||
m_SelectOnLeft: {fileID: 0}
|
||||
m_SelectOnRight: {fileID: 0}
|
||||
m_Transition: 1
|
||||
m_Colors:
|
||||
m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
|
||||
m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
|
||||
m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
|
||||
m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
|
||||
m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
|
||||
m_ColorMultiplier: 1
|
||||
m_FadeDuration: 0.1
|
||||
m_SpriteState:
|
||||
m_HighlightedSprite: {fileID: 0}
|
||||
m_PressedSprite: {fileID: 0}
|
||||
m_SelectedSprite: {fileID: 0}
|
||||
m_DisabledSprite: {fileID: 0}
|
||||
m_AnimationTriggers:
|
||||
m_NormalTrigger: Normal
|
||||
m_HighlightedTrigger: Highlighted
|
||||
m_PressedTrigger: Pressed
|
||||
m_SelectedTrigger: Selected
|
||||
m_DisabledTrigger: Disabled
|
||||
m_Interactable: 1
|
||||
m_TargetGraphic: {fileID: 356920440688922164}
|
||||
m_OnClick:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
--- !u!1 &6076086137757476783
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 7527520206793245717}
|
||||
- component: {fileID: 717316905677608887}
|
||||
- component: {fileID: 2182669632864579474}
|
||||
m_Layer: 0
|
||||
m_Name: Text (TMP)_Content
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!224 &7527520206793245717
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 6076086137757476783}
|
||||
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: 4878816101074468399}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0.5, y: 1}
|
||||
m_AnchorMax: {x: 0.5, y: 1}
|
||||
m_AnchoredPosition: {x: -2, y: -201.94122}
|
||||
m_SizeDelta: {x: 862.825, y: 279.6172}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!222 &717316905677608887
|
||||
CanvasRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 6076086137757476783}
|
||||
m_CullTransparentMesh: 1
|
||||
--- !u!114 &2182669632864579474
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 6076086137757476783}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, 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_text: "R\u1EDDi kh\u1ECFi ho\xE0n m\u1EF9 ?"
|
||||
m_isRightToLeft: 0
|
||||
m_fontAsset: {fileID: 11400000, guid: 369c2e14814cc9a4b8e3ad4e37769134, type: 2}
|
||||
m_sharedMaterial: {fileID: 9092487103257209053, guid: 369c2e14814cc9a4b8e3ad4e37769134, type: 2}
|
||||
m_fontSharedMaterials: []
|
||||
m_fontMaterial: {fileID: 0}
|
||||
m_fontMaterials: []
|
||||
m_fontColor32:
|
||||
serializedVersion: 2
|
||||
rgba: 4294967295
|
||||
m_fontColor: {r: 1, g: 1, b: 1, a: 1}
|
||||
m_enableVertexGradient: 0
|
||||
m_colorMode: 3
|
||||
m_fontColorGradient:
|
||||
topLeft: {r: 1, g: 1, b: 1, a: 1}
|
||||
topRight: {r: 1, g: 1, b: 1, a: 1}
|
||||
bottomLeft: {r: 1, g: 1, b: 1, a: 1}
|
||||
bottomRight: {r: 1, g: 1, b: 1, a: 1}
|
||||
m_fontColorGradientPreset: {fileID: 0}
|
||||
m_spriteAsset: {fileID: 0}
|
||||
m_tintAllSprites: 0
|
||||
m_StyleSheet: {fileID: 0}
|
||||
m_TextStyleHashCode: -1183493901
|
||||
m_overrideHtmlColors: 0
|
||||
m_faceColor:
|
||||
serializedVersion: 2
|
||||
rgba: 4294967295
|
||||
m_fontSize: 93.94
|
||||
m_fontSizeBase: 93.94
|
||||
m_fontWeight: 400
|
||||
m_enableAutoSizing: 0
|
||||
m_fontSizeMin: 18
|
||||
m_fontSizeMax: 72
|
||||
m_fontStyle: 0
|
||||
m_HorizontalAlignment: 2
|
||||
m_VerticalAlignment: 512
|
||||
m_textAlignment: 65535
|
||||
m_characterSpacing: 0
|
||||
m_wordSpacing: 0
|
||||
m_lineSpacing: 0
|
||||
m_lineSpacingMax: 0
|
||||
m_paragraphSpacing: 0
|
||||
m_charWidthMaxAdj: 0
|
||||
m_TextWrappingMode: 1
|
||||
m_wordWrappingRatios: 0.4
|
||||
m_overflowMode: 0
|
||||
m_linkedTextComponent: {fileID: 0}
|
||||
parentLinkedComponent: {fileID: 0}
|
||||
m_enableKerning: 0
|
||||
m_ActiveFontFeatures: 6e72656b
|
||||
m_enableExtraPadding: 0
|
||||
checkPaddingRequired: 0
|
||||
m_isRichText: 1
|
||||
m_EmojiFallbackSupport: 1
|
||||
m_parseCtrlCharacters: 1
|
||||
m_isOrthographic: 1
|
||||
m_isCullingEnabled: 0
|
||||
m_horizontalMapping: 0
|
||||
m_verticalMapping: 0
|
||||
m_uvLineOffset: 0
|
||||
m_geometrySortingOrder: 0
|
||||
m_IsTextObjectScaleStatic: 0
|
||||
m_VertexBufferAutoSizeReduction: 0
|
||||
m_useMaxVisibleDescender: 1
|
||||
m_pageToDisplay: 1
|
||||
m_margin: {x: 0, y: 0, z: 0, w: 0}
|
||||
m_isUsingLegacyAnimationComponent: 0
|
||||
m_isVolumetricText: 0
|
||||
m_hasFontAssetChanged: 0
|
||||
m_baseMaterial: {fileID: 0}
|
||||
m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
|
||||
--- !u!1 &8385824745593160430
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 1979839230795202451}
|
||||
- component: {fileID: 926584410341277518}
|
||||
- component: {fileID: 7589457457506445651}
|
||||
m_Layer: 0
|
||||
m_Name: Text (TMP)
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!224 &1979839230795202451
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 8385824745593160430}
|
||||
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: 4000902174573487903}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 0}
|
||||
m_AnchorMax: {x: 1, y: 1}
|
||||
m_AnchoredPosition: {x: 0, y: 0}
|
||||
m_SizeDelta: {x: 0, y: 0}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!222 &926584410341277518
|
||||
CanvasRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 8385824745593160430}
|
||||
m_CullTransparentMesh: 1
|
||||
--- !u!114 &7589457457506445651
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 8385824745593160430}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, 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_text: "H\u1EE7y"
|
||||
m_isRightToLeft: 0
|
||||
m_fontAsset: {fileID: 11400000, guid: 369c2e14814cc9a4b8e3ad4e37769134, type: 2}
|
||||
m_sharedMaterial: {fileID: 9092487103257209053, guid: 369c2e14814cc9a4b8e3ad4e37769134, type: 2}
|
||||
m_fontSharedMaterials: []
|
||||
m_fontMaterial: {fileID: 0}
|
||||
m_fontMaterials: []
|
||||
m_fontColor32:
|
||||
serializedVersion: 2
|
||||
rgba: 4294967295
|
||||
m_fontColor: {r: 1, g: 1, b: 1, a: 1}
|
||||
m_enableVertexGradient: 0
|
||||
m_colorMode: 3
|
||||
m_fontColorGradient:
|
||||
topLeft: {r: 1, g: 1, b: 1, a: 1}
|
||||
topRight: {r: 1, g: 1, b: 1, a: 1}
|
||||
bottomLeft: {r: 1, g: 1, b: 1, a: 1}
|
||||
bottomRight: {r: 1, g: 1, b: 1, a: 1}
|
||||
m_fontColorGradientPreset: {fileID: 0}
|
||||
m_spriteAsset: {fileID: 0}
|
||||
m_tintAllSprites: 0
|
||||
m_StyleSheet: {fileID: 0}
|
||||
m_TextStyleHashCode: -1183493901
|
||||
m_overrideHtmlColors: 0
|
||||
m_faceColor:
|
||||
serializedVersion: 2
|
||||
rgba: 4294967295
|
||||
m_fontSize: 50
|
||||
m_fontSizeBase: 50
|
||||
m_fontWeight: 400
|
||||
m_enableAutoSizing: 0
|
||||
m_fontSizeMin: 18
|
||||
m_fontSizeMax: 72
|
||||
m_fontStyle: 0
|
||||
m_HorizontalAlignment: 2
|
||||
m_VerticalAlignment: 512
|
||||
m_textAlignment: 65535
|
||||
m_characterSpacing: 0
|
||||
m_wordSpacing: 0
|
||||
m_lineSpacing: 0
|
||||
m_lineSpacingMax: 0
|
||||
m_paragraphSpacing: 0
|
||||
m_charWidthMaxAdj: 0
|
||||
m_TextWrappingMode: 1
|
||||
m_wordWrappingRatios: 0.4
|
||||
m_overflowMode: 0
|
||||
m_linkedTextComponent: {fileID: 0}
|
||||
parentLinkedComponent: {fileID: 0}
|
||||
m_enableKerning: 0
|
||||
m_ActiveFontFeatures: 6e72656b
|
||||
m_enableExtraPadding: 0
|
||||
checkPaddingRequired: 0
|
||||
m_isRichText: 1
|
||||
m_EmojiFallbackSupport: 1
|
||||
m_parseCtrlCharacters: 1
|
||||
m_isOrthographic: 1
|
||||
m_isCullingEnabled: 0
|
||||
m_horizontalMapping: 0
|
||||
m_verticalMapping: 0
|
||||
m_uvLineOffset: 0
|
||||
m_geometrySortingOrder: 0
|
||||
m_IsTextObjectScaleStatic: 0
|
||||
m_VertexBufferAutoSizeReduction: 0
|
||||
m_useMaxVisibleDescender: 1
|
||||
m_pageToDisplay: 1
|
||||
m_margin: {x: 0, y: 0, z: 0, w: 0}
|
||||
m_isUsingLegacyAnimationComponent: 0
|
||||
m_isVolumetricText: 0
|
||||
m_hasFontAssetChanged: 0
|
||||
m_baseMaterial: {fileID: 0}
|
||||
m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
|
||||
@@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 0c248d0510a114829b58d62d2ecc3b5e
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -457,6 +457,142 @@ MonoBehaviour:
|
||||
m_PointerBehavior: 0
|
||||
m_CursorLockBehavior: 0
|
||||
m_ScrollDeltaPerTick: 6
|
||||
--- !u!1 &1180649769221527971
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 1908310604726647551}
|
||||
- component: {fileID: 7432323784403002332}
|
||||
- component: {fileID: 6253396656395833156}
|
||||
m_Layer: 5
|
||||
m_Name: Text (TMP)
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!224 &1908310604726647551
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1180649769221527971}
|
||||
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: 8680646788002276863}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 0}
|
||||
m_AnchorMax: {x: 1, y: 1}
|
||||
m_AnchoredPosition: {x: 0, y: 0}
|
||||
m_SizeDelta: {x: 0, y: 0}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!222 &7432323784403002332
|
||||
CanvasRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1180649769221527971}
|
||||
m_CullTransparentMesh: 1
|
||||
--- !u!114 &6253396656395833156
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1180649769221527971}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, 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_text:
|
||||
m_isRightToLeft: 0
|
||||
m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
|
||||
m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
|
||||
m_fontSharedMaterials: []
|
||||
m_fontMaterial: {fileID: 0}
|
||||
m_fontMaterials: []
|
||||
m_fontColor32:
|
||||
serializedVersion: 2
|
||||
rgba: 4281479730
|
||||
m_fontColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1}
|
||||
m_enableVertexGradient: 0
|
||||
m_colorMode: 3
|
||||
m_fontColorGradient:
|
||||
topLeft: {r: 1, g: 1, b: 1, a: 1}
|
||||
topRight: {r: 1, g: 1, b: 1, a: 1}
|
||||
bottomLeft: {r: 1, g: 1, b: 1, a: 1}
|
||||
bottomRight: {r: 1, g: 1, b: 1, a: 1}
|
||||
m_fontColorGradientPreset: {fileID: 0}
|
||||
m_spriteAsset: {fileID: 0}
|
||||
m_tintAllSprites: 0
|
||||
m_StyleSheet: {fileID: 0}
|
||||
m_TextStyleHashCode: -1183493901
|
||||
m_overrideHtmlColors: 0
|
||||
m_faceColor:
|
||||
serializedVersion: 2
|
||||
rgba: 4294967295
|
||||
m_fontSize: 24
|
||||
m_fontSizeBase: 24
|
||||
m_fontWeight: 400
|
||||
m_enableAutoSizing: 0
|
||||
m_fontSizeMin: 18
|
||||
m_fontSizeMax: 72
|
||||
m_fontStyle: 0
|
||||
m_HorizontalAlignment: 2
|
||||
m_VerticalAlignment: 512
|
||||
m_textAlignment: 65535
|
||||
m_characterSpacing: 0
|
||||
m_wordSpacing: 0
|
||||
m_lineSpacing: 0
|
||||
m_lineSpacingMax: 0
|
||||
m_paragraphSpacing: 0
|
||||
m_charWidthMaxAdj: 0
|
||||
m_TextWrappingMode: 1
|
||||
m_wordWrappingRatios: 0.4
|
||||
m_overflowMode: 0
|
||||
m_linkedTextComponent: {fileID: 0}
|
||||
parentLinkedComponent: {fileID: 0}
|
||||
m_enableKerning: 0
|
||||
m_ActiveFontFeatures: 6e72656b
|
||||
m_enableExtraPadding: 0
|
||||
checkPaddingRequired: 0
|
||||
m_isRichText: 1
|
||||
m_EmojiFallbackSupport: 1
|
||||
m_parseCtrlCharacters: 1
|
||||
m_isOrthographic: 1
|
||||
m_isCullingEnabled: 0
|
||||
m_horizontalMapping: 0
|
||||
m_verticalMapping: 0
|
||||
m_uvLineOffset: 0
|
||||
m_geometrySortingOrder: 0
|
||||
m_IsTextObjectScaleStatic: 0
|
||||
m_VertexBufferAutoSizeReduction: 0
|
||||
m_useMaxVisibleDescender: 1
|
||||
m_pageToDisplay: 1
|
||||
m_margin: {x: 0, y: 0, z: 0, w: 0}
|
||||
m_isUsingLegacyAnimationComponent: 0
|
||||
m_isVolumetricText: 0
|
||||
m_hasFontAssetChanged: 0
|
||||
m_baseMaterial: {fileID: 0}
|
||||
m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
|
||||
--- !u!1 &1182266301883914285
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -2564,6 +2700,152 @@ MonoBehaviour:
|
||||
m_hasFontAssetChanged: 0
|
||||
m_baseMaterial: {fileID: 0}
|
||||
m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
|
||||
--- !u!1 &5721980010412121515
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 8680646788002276863}
|
||||
- component: {fileID: 8076476413184855661}
|
||||
- component: {fileID: 8851603462695586251}
|
||||
- component: {fileID: 5556504023802397200}
|
||||
- component: {fileID: 1370263596141727443}
|
||||
m_Layer: 5
|
||||
m_Name: ExitBtn
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!224 &8680646788002276863
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 5721980010412121515}
|
||||
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: 1908310604726647551}
|
||||
m_Father: {fileID: 3483809415181351540}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 1, y: 1}
|
||||
m_AnchorMax: {x: 1, y: 1}
|
||||
m_AnchoredPosition: {x: -880, y: -66.70001}
|
||||
m_SizeDelta: {x: 85, y: 99}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!222 &8076476413184855661
|
||||
CanvasRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 5721980010412121515}
|
||||
m_CullTransparentMesh: 1
|
||||
--- !u!114 &8851603462695586251
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 5721980010412121515}
|
||||
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: 052d4b5b3b147d04cbd00f737f5c7c53, type: 3}
|
||||
m_Type: 0
|
||||
m_PreserveAspect: 0
|
||||
m_FillCenter: 1
|
||||
m_FillMethod: 4
|
||||
m_FillAmount: 1
|
||||
m_FillClockwise: 1
|
||||
m_FillOrigin: 0
|
||||
m_UseSpriteMesh: 0
|
||||
m_PixelsPerUnitMultiplier: 1
|
||||
--- !u!114 &5556504023802397200
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 5721980010412121515}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_Navigation:
|
||||
m_Mode: 3
|
||||
m_WrapAround: 0
|
||||
m_SelectOnUp: {fileID: 0}
|
||||
m_SelectOnDown: {fileID: 0}
|
||||
m_SelectOnLeft: {fileID: 0}
|
||||
m_SelectOnRight: {fileID: 0}
|
||||
m_Transition: 1
|
||||
m_Colors:
|
||||
m_NormalColor: {r: 1, g: 1, b: 1, a: 1}
|
||||
m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
|
||||
m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1}
|
||||
m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1}
|
||||
m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608}
|
||||
m_ColorMultiplier: 1
|
||||
m_FadeDuration: 0.1
|
||||
m_SpriteState:
|
||||
m_HighlightedSprite: {fileID: 0}
|
||||
m_PressedSprite: {fileID: 0}
|
||||
m_SelectedSprite: {fileID: 0}
|
||||
m_DisabledSprite: {fileID: 0}
|
||||
m_AnimationTriggers:
|
||||
m_NormalTrigger: Normal
|
||||
m_HighlightedTrigger: Highlighted
|
||||
m_PressedTrigger: Pressed
|
||||
m_SelectedTrigger: Selected
|
||||
m_DisabledTrigger: Disabled
|
||||
m_Interactable: 1
|
||||
m_TargetGraphic: {fileID: 8851603462695586251}
|
||||
m_OnClick:
|
||||
m_PersistentCalls:
|
||||
m_Calls:
|
||||
- m_Target: {fileID: 1890210201668811196}
|
||||
m_TargetAssemblyTypeName: CECUIManager, Assembly-CSharp
|
||||
m_MethodName: ShowUI
|
||||
m_Mode: 5
|
||||
m_Arguments:
|
||||
m_ObjectArgument: {fileID: 0}
|
||||
m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine
|
||||
m_IntArgument: 0
|
||||
m_FloatArgument: 0
|
||||
m_StringArgument: Win_Quest
|
||||
m_BoolArgument: 0
|
||||
m_CallState: 2
|
||||
--- !u!114 &1370263596141727443
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 5721980010412121515}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 96de7d56a4514c979bdd93568dba2031, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
--- !u!1 &5885931642767984348
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -3249,6 +3531,7 @@ RectTransform:
|
||||
- {fileID: 984617901920738932}
|
||||
- {fileID: 2783469216819378410}
|
||||
- {fileID: 8913509984865075419}
|
||||
- {fileID: 8680646788002276863}
|
||||
- {fileID: 5823843793071880086}
|
||||
- {fileID: 1462603449517194619}
|
||||
- {fileID: 7020286574697807252}
|
||||
|
||||
@@ -43,3 +43,5 @@ MonoBehaviour:
|
||||
prefab: {fileID: 5492547392745930423, guid: 54cccb2c6a758a24183474cd385ccb2c, type: 3}
|
||||
- id: CDlgInfoTooltip
|
||||
prefab: {fileID: 6830833846243993097, guid: 97dd1de3aba08a04980849e40d5c1ea4, type: 3}
|
||||
- id: CDlgInfoTooltip
|
||||
prefab: {fileID: 6830833846243993097, guid: 97dd1de3aba08a04980849e40d5c1ea4, type: 3}
|
||||
|
||||
@@ -1063,6 +1063,32 @@ namespace BrewMonster
|
||||
return true;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Write user config data into buffer at given offset. 在指定偏移处写入用户配置数据。
|
||||
/// </summary>
|
||||
public bool SaveUserConfigData(byte[] pDataBuf, int startIndex, out int piSize)
|
||||
{
|
||||
if (startIndex < 0) { piSize = 0; return false; }
|
||||
piSize = 0;
|
||||
int iTotalSize = 0;
|
||||
iTotalSize += sizeof(uint);
|
||||
iTotalSize += Marshal.SizeOf(typeof(EC_VIDEO_SETTING));
|
||||
iTotalSize += Marshal.SizeOf(typeof(EC_GAME_SETTING));
|
||||
iTotalSize += Marshal.SizeOf(typeof(EC_BLACKLIST_SETTING));
|
||||
iTotalSize += Marshal.SizeOf(typeof(EC_COMPUTER_AIDED_SETTING));
|
||||
|
||||
if (pDataBuf != null && startIndex + iTotalSize <= pDataBuf.Length)
|
||||
{
|
||||
using (MemoryStream ms = new MemoryStream(pDataBuf, startIndex, pDataBuf.Length - startIndex))
|
||||
using (BinaryWriter writer = new BinaryWriter(ms))
|
||||
{
|
||||
writer.Write((uint)EC_ConfigConstants.EC_CONFIG_VERSION);
|
||||
}
|
||||
}
|
||||
piSize = iTotalSize;
|
||||
return true;
|
||||
}
|
||||
|
||||
public void DefaultUserConfigData()
|
||||
{
|
||||
DefaultUserSettings(ref m_ss, ref m_vs, ref m_gs, ref m_bs, ref m_cas);
|
||||
|
||||
@@ -0,0 +1,314 @@
|
||||
// Filename : EC_PendingAction.cs
|
||||
// Creator : Xu Wenbin
|
||||
// Date : 2011/11/09
|
||||
// Converted from C++: EC_PendingAction.cpp / EC_PendingAction.h
|
||||
|
||||
using System.Collections.Generic;
|
||||
using BrewMonster;
|
||||
using BrewMonster.Network;
|
||||
using BrewMonster.UI;
|
||||
using CSNetwork;
|
||||
using UnityEngine;
|
||||
|
||||
// Logout type constants (C++: gnetdef.h)
|
||||
// _PLAYER_LOGOUT_FULL 0, _PLAYER_LOGOUT_HALF 1
|
||||
public static class PendingActionConstants
|
||||
{
|
||||
public const int _PLAYER_LOGOUT_FULL = 0;
|
||||
public const int _PLAYER_LOGOUT_HALF = 1;
|
||||
}
|
||||
|
||||
// CECPendingAction — base class for delayed/pending actions
|
||||
public abstract class CECPendingAction
|
||||
{
|
||||
// 执行的时限 / Execution time limit
|
||||
private readonly CECCounter m_Counter;
|
||||
// 是否还需要执行 / Whether still needs to execute
|
||||
private bool m_bNeedExecute;
|
||||
// 是否收到外界执行指示 / Whether received external execute trigger
|
||||
private bool m_bTriggered;
|
||||
// 执行结果:是否成功执行 / Execute result: whether executed successfully
|
||||
private bool m_bExecuteResult;
|
||||
|
||||
public CECPendingAction(uint dwTimerPeriod)
|
||||
{
|
||||
m_Counter = new CECCounter();
|
||||
m_Counter.SetPeriod((float)dwTimerPeriod);
|
||||
m_bNeedExecute = true;
|
||||
m_bTriggered = false;
|
||||
m_bExecuteResult = false;
|
||||
}
|
||||
|
||||
public void Update(uint dwElapsedTime)
|
||||
{
|
||||
if (GetNeedExecute())
|
||||
{
|
||||
// 每次都尝试执行 / Try execute every time
|
||||
if (m_Counter.IncCounter((float)dwElapsedTime))
|
||||
{
|
||||
// 计时器到 / Timer reached
|
||||
// 强制执行 / Force execute
|
||||
m_bExecuteResult = Execute();
|
||||
// 不需要再进行尝试 / No need to try again
|
||||
m_bNeedExecute = false;
|
||||
}
|
||||
// else 计时中 / else counting
|
||||
}
|
||||
}
|
||||
|
||||
public void Trigger()
|
||||
{
|
||||
if (!GetNeedExecute())
|
||||
{
|
||||
// 计时器已经强制执行,不需要再触发执行 / Timer already forced execute, no need to trigger again
|
||||
return;
|
||||
}
|
||||
if (GetTriggered())
|
||||
{
|
||||
// 不允许多次触发 / Multiple trigger not allowed
|
||||
return;
|
||||
}
|
||||
m_bTriggered = true;
|
||||
m_bExecuteResult = Execute();
|
||||
m_bNeedExecute = false;
|
||||
}
|
||||
|
||||
public bool GetNeedExecute() => m_bNeedExecute;
|
||||
public bool GetTriggered() => m_bTriggered;
|
||||
|
||||
public abstract string GetName();
|
||||
|
||||
protected abstract bool Execute();
|
||||
|
||||
// Whether currently in game (session connected, game state in-game, host ready)
|
||||
protected bool IsInGame()
|
||||
{
|
||||
var pSession = GetGameSession();
|
||||
var pGameRun = GetGameRun();
|
||||
var pHost = pGameRun?.GetHostPlayer();
|
||||
return pSession != null
|
||||
&& pSession.IsConnected
|
||||
&& pGameRun != null
|
||||
&& pGameRun.GetGameState() == (int)GameState.GS_GAME
|
||||
&& pHost != null
|
||||
&& pHost.HostIsReady();
|
||||
}
|
||||
|
||||
protected static CECGameRun GetGameRun() => EC_Game.GetGameRun();
|
||||
protected static GameSession GetGameSession() => UnityGameSession.Instance?.GameSession;
|
||||
protected static CECHostPlayer GetHostPlayer() => GetGameRun()?.GetHostPlayer();
|
||||
}
|
||||
|
||||
// 游戏小退 / Game logout (half — back to select role)
|
||||
public class CECPendingLogoutHalf : CECPendingAction
|
||||
{
|
||||
public CECPendingLogoutHalf(uint dwTimerPeriod = 5000) : base(dwTimerPeriod) { }
|
||||
|
||||
protected override bool Execute()
|
||||
{
|
||||
bool bSuccess = false;
|
||||
if (IsInGame())
|
||||
{
|
||||
GetGameSession().SendPlayerLogout(PendingActionConstants._PLAYER_LOGOUT_HALF);
|
||||
bSuccess = true;
|
||||
}
|
||||
return bSuccess;
|
||||
}
|
||||
|
||||
public override string GetName() => "CECPendingLogoutHalf";
|
||||
}
|
||||
|
||||
// 游戏大退 / Game logout (full — account logout)
|
||||
public class CECPendingLogoutFull : CECPendingAction
|
||||
{
|
||||
public CECPendingLogoutFull(uint dwTimerPeriod = 5000) : base(dwTimerPeriod) { }
|
||||
|
||||
protected override bool Execute()
|
||||
{
|
||||
bool bSuccess = false;
|
||||
if (IsInGame())
|
||||
{
|
||||
GetGameSession().SendPlayerLogout(PendingActionConstants._PLAYER_LOGOUT_FULL);
|
||||
bSuccess = true;
|
||||
}
|
||||
return bSuccess;
|
||||
}
|
||||
|
||||
public override string GetName() => "CECPendingLogoutFull";
|
||||
}
|
||||
|
||||
// 寄售角色 / Selling role
|
||||
public class CECPendingSellingRole : CECPendingAction
|
||||
{
|
||||
public CECPendingSellingRole(uint dwTimerPeriod = 5000) : base(dwTimerPeriod) { }
|
||||
|
||||
protected override bool Execute()
|
||||
{
|
||||
bool bSuccess = false;
|
||||
if (IsInGame())
|
||||
{
|
||||
GetGameSession().SendPlayerLogout(PendingActionConstants._PLAYER_LOGOUT_HALF);
|
||||
GetGameRun().SetSellingRoleID(GetHostPlayer().GetCharacterID());
|
||||
bSuccess = true;
|
||||
}
|
||||
return bSuccess;
|
||||
}
|
||||
|
||||
public override string GetName() => "CECPendingSellingRole";
|
||||
}
|
||||
|
||||
// 跨服小退 / Cross-server logout (half)
|
||||
public class CECPendingLogoutCrossServer : CECPendingAction
|
||||
{
|
||||
public CECPendingLogoutCrossServer(uint dwTimerPeriod = 5000) : base(dwTimerPeriod) { }
|
||||
|
||||
protected override bool Execute()
|
||||
{
|
||||
GetGameRun().SetLogoutFlag(2);
|
||||
return true;
|
||||
}
|
||||
|
||||
public override string GetName() => "CECPendingLogoutCrossServer";
|
||||
}
|
||||
|
||||
// 进出跨服 / Cross-server get in or out
|
||||
// m_bGetIn: 进入跨服时为 true;否则为 false / true when entering cross-server; otherwise false
|
||||
public class CECPendingCrossServerGetInOut : CECPendingAction
|
||||
{
|
||||
private readonly bool m_bGetIn;
|
||||
|
||||
public CECPendingCrossServerGetInOut(bool bGetIn, uint dwTimerPeriod = 5000)
|
||||
: base(dwTimerPeriod)
|
||||
{
|
||||
m_bGetIn = bGetIn;
|
||||
}
|
||||
|
||||
protected override bool Execute()
|
||||
{
|
||||
bool bSuccess = false;
|
||||
if (IsInGame())
|
||||
{
|
||||
var session = GetGameSession();
|
||||
if (session != null)
|
||||
{
|
||||
if (m_bGetIn)
|
||||
session.c2s_CmdNPCSevCrossServerGetIn();
|
||||
else
|
||||
session.c2s_CmdNPCSevCrossServerGetOut();
|
||||
}
|
||||
}
|
||||
var pGameUIMan = GetGameRun()?.GetUIManager()?.GetInGameUIMan();
|
||||
if (pGameUIMan is CECGameUIMan inGameUIMan)
|
||||
inGameUIMan.EndNPCService();
|
||||
return bSuccess;
|
||||
}
|
||||
|
||||
public override string GetName() => "CECPendingCrossServerGetInOut";
|
||||
}
|
||||
|
||||
// CECPendingActionArray — container for multiple pending actions
|
||||
public class CECPendingActionArray
|
||||
{
|
||||
private readonly List<CECPendingAction> m_actions = new List<CECPendingAction>();
|
||||
private bool m_bAllowMultiActions;
|
||||
|
||||
public CECPendingActionArray(bool bAllowMultiActions)
|
||||
{
|
||||
m_bAllowMultiActions = bAllowMultiActions;
|
||||
}
|
||||
|
||||
~CECPendingActionArray()
|
||||
{
|
||||
Clear();
|
||||
}
|
||||
|
||||
public void Append(CECPendingAction pAction)
|
||||
{
|
||||
// 添加新事件 / Add new event
|
||||
if (pAction == null)
|
||||
{
|
||||
Debug.Assert(false);
|
||||
return;
|
||||
}
|
||||
if (!pAction.GetNeedExecute())
|
||||
{
|
||||
Debug.Assert(false);
|
||||
return;
|
||||
}
|
||||
if (!GetAllowMultiAction())
|
||||
Clear();
|
||||
m_actions.Add(pAction);
|
||||
}
|
||||
|
||||
public void AppendForSaveConfig(CECPendingAction pAction)
|
||||
{
|
||||
if (pAction == null)
|
||||
{
|
||||
Debug.Assert(false);
|
||||
return;
|
||||
}
|
||||
if (!pAction.GetNeedExecute())
|
||||
{
|
||||
Debug.Assert(false);
|
||||
return;
|
||||
}
|
||||
uint saveResult = EC_Game.GetGameRun().SaveConfigsToServer();
|
||||
if (saveResult != 2)
|
||||
{
|
||||
pAction.Trigger();
|
||||
return;
|
||||
}
|
||||
Append(pAction);
|
||||
}
|
||||
|
||||
public void Update(uint dwElapsedTime)
|
||||
{
|
||||
if (m_actions.Count == 0) return;
|
||||
|
||||
for (int i = m_actions.Count - 1; i >= 0; i--)
|
||||
{
|
||||
CECPendingAction pAction = m_actions[i];
|
||||
pAction.Update(dwElapsedTime);
|
||||
if (!pAction.GetNeedExecute())
|
||||
{
|
||||
m_actions.RemoveAt(i);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void TriggerAll()
|
||||
{
|
||||
if (m_actions.Count == 0) return;
|
||||
|
||||
foreach (var pAction in m_actions)
|
||||
{
|
||||
if (pAction.GetNeedExecute())
|
||||
pAction.Trigger();
|
||||
}
|
||||
}
|
||||
|
||||
public void Clear()
|
||||
{
|
||||
// 清除当前所有事件 / Clear all current events
|
||||
if (m_actions.Count == 0) return;
|
||||
|
||||
m_actions.Clear();
|
||||
}
|
||||
|
||||
public void SetAllowMultiAction(bool bAllow)
|
||||
{
|
||||
if (GetAllowMultiAction() == bAllow) return;
|
||||
|
||||
m_bAllowMultiActions = bAllow;
|
||||
|
||||
// 按时间先后顺序,只保留队列最后一个 / By time order, keep only the last one in queue
|
||||
if (!bAllow && m_actions.Count > 1)
|
||||
{
|
||||
var last = m_actions[m_actions.Count - 1];
|
||||
m_actions.Clear();
|
||||
m_actions.Add(last);
|
||||
}
|
||||
}
|
||||
|
||||
public bool GetAllowMultiAction() => m_bAllowMultiActions;
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: a8fc69213d734cb49b1b381a760ae418
|
||||
timeCreated: 1770180043
|
||||
@@ -1458,6 +1458,23 @@ namespace CSNetwork
|
||||
p.Roleid = m_iCharID;
|
||||
SendProtocol(p);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Save config data to server (sends setuiconfig with compressed config blob).
|
||||
/// 保存配置数据到服务器(发送 setuiconfig 及压缩后的配置数据)。
|
||||
/// </summary>
|
||||
public void SaveConfigData(byte[] pBuf, int len)
|
||||
{
|
||||
if (pBuf == null || len <= 0) return;
|
||||
var p = new setuiconfig();
|
||||
p.Roleid = m_iCharID;
|
||||
p.Localsid = (int)_localsid;
|
||||
byte[] slice = new byte[len];
|
||||
Buffer.BlockCopy(pBuf, 0, slice, 0, len);
|
||||
p.Ui_config = new Octets(slice);
|
||||
SendProtocol(p);
|
||||
}
|
||||
|
||||
private void SetCharacterID(int iCharID)
|
||||
{
|
||||
m_iCharID = iCharID;
|
||||
@@ -1894,5 +1911,17 @@ namespace CSNetwork
|
||||
gamedatasend.Data = C2SCommandFactory.CreateNPCSevClearEmbeddedChipCmd(iEquipIdx, tidEquip);
|
||||
SendProtocol(gamedatasend);
|
||||
}
|
||||
|
||||
// Cross-server get in (C++: c2s_CmdNPCSevCrossServerGetIn) — TODO: implement C2S packet when needed
|
||||
public void c2s_CmdNPCSevCrossServerGetIn()
|
||||
{
|
||||
// TODO: C2SCommandFactory.CreateNPCSevCrossServerGetInCmd() and SendProtocol
|
||||
}
|
||||
|
||||
// Cross-server get out (C++: c2s_CmdNPCSevCrossServerGetOut) — TODO: implement C2S packet when needed
|
||||
public void c2s_CmdNPCSevCrossServerGetOut()
|
||||
{
|
||||
// TODO: C2SCommandFactory.CreateNPCSevCrossServerGetOutCmd() and SendProtocol
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -211,7 +211,7 @@ namespace BrewMonster.Scripts.Task.UI
|
||||
if (m_pTxt_QuestItem == null) return;
|
||||
|
||||
const string LINK_CLICK_VER = "DlgTaskLinkClickCamFix_v2";
|
||||
UnityEngine.Debug.Log($"[DlgTask] OnEventLButtonDown_Txt_QuestItem: {LINK_CLICK_VER} pressEventCamera={(eventData.pressEventCamera != null ? eventData.pressEventCamera.name : "null")}");
|
||||
// UnityEngine.Debug.Log($"[DlgTask] OnEventLButtonDown_Txt_QuestItem: {LINK_CLICK_VER} pressEventCamera={(eventData.pressEventCamera != null ? eventData.pressEventCamera.name : "null")}");
|
||||
|
||||
// C++: int x = GET_X_LPARAM(lParam); int y = GET_Y_LPARAM(lParam); // C++: int x = GET_X_LPARAM(lParam); int y = GET_Y_LPARAM(lParam);
|
||||
Vector2 localPoint;
|
||||
@@ -221,7 +221,7 @@ namespace BrewMonster.Scripts.Task.UI
|
||||
eventData.pressEventCamera,
|
||||
out localPoint);
|
||||
|
||||
UnityEngine.Debug.Log($"[DlgTask] OnEventLButtonDown_Txt_QuestItem: Click at localPoint={localPoint}, screenPos={eventData.position}");
|
||||
// UnityEngine.Debug.Log($"[DlgTask] OnEventLButtonDown_Txt_QuestItem: Click at localPoint={localPoint}, screenPos={eventData.position}");
|
||||
|
||||
// C++: GetItemLinkItemOn(x, y, pObj, &Item); // C++: GetItemLinkItemOn(x, y, pObj, &Item);
|
||||
// Find which link was clicked (like C++ GetItemLinkItemOn checks vecItemLink[i].rc.PtInRect) // 查找点击了哪个链接(如C++ GetItemLinkItemOn检查vecItemLink[i].rc.PtInRect)
|
||||
@@ -229,12 +229,12 @@ namespace BrewMonster.Scripts.Task.UI
|
||||
|
||||
// Debug: verify TMP parsed <link> tags and we have linkInfo
|
||||
int linkCount = m_pTxt_QuestItem.textInfo?.linkCount ?? -1;
|
||||
UnityEngine.Debug.Log($"[DlgTask] OnEventLButtonDown_Txt_QuestItem: TMP linkCount={linkCount}, raycastTarget={m_pTxt_QuestItem.raycastTarget}, richText={m_pTxt_QuestItem.richText}");
|
||||
// UnityEngine.Debug.Log($"[DlgTask] OnEventLButtonDown_Txt_QuestItem: TMP linkCount={linkCount}, raycastTarget={m_pTxt_QuestItem.raycastTarget}, richText={m_pTxt_QuestItem.richText}");
|
||||
if (linkCount <= 0)
|
||||
{
|
||||
string text = m_pTxt_QuestItem.text ?? string.Empty;
|
||||
string preview = text.Substring(0, Mathf.Min(300, text.Length));
|
||||
UnityEngine.Debug.LogWarning($"[DlgTask] OnEventLButtonDown_Txt_QuestItem: No links parsed. Text preview: {preview}");
|
||||
// UnityEngine.Debug.LogWarning($"[DlgTask] OnEventLButtonDown_Txt_QuestItem: No links parsed. Text preview: {preview}");
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -245,7 +245,7 @@ namespace BrewMonster.Scripts.Task.UI
|
||||
{
|
||||
// IMPORTANT: TMP_TextUtilities.FindIntersectingLink expects camera=null for ScreenSpaceOverlay.
|
||||
// 重要:ScreenSpaceOverlay 必须传 camera=null,否则会算错导致 linkIndex = -1。
|
||||
UnityEngine.Debug.Log($"[DlgTask] OnEventLButtonDown_Txt_QuestItem: Canvas renderMode={canvas.renderMode}, worldCamera={(canvas.worldCamera != null ? canvas.worldCamera.name : "null")}, pressEventCamera={(eventData.pressEventCamera != null ? eventData.pressEventCamera.name : "null")}");
|
||||
// UnityEngine.Debug.Log($"[DlgTask] OnEventLButtonDown_Txt_QuestItem: Canvas renderMode={canvas.renderMode}, worldCamera={(canvas.worldCamera != null ? canvas.worldCamera.name : "null")}, pressEventCamera={(eventData.pressEventCamera != null ? eventData.pressEventCamera.name : "null")}");
|
||||
if (canvas.renderMode == RenderMode.ScreenSpaceOverlay)
|
||||
{
|
||||
camera = null;
|
||||
@@ -258,7 +258,7 @@ namespace BrewMonster.Scripts.Task.UI
|
||||
}
|
||||
else
|
||||
{
|
||||
UnityEngine.Debug.LogWarning($"[DlgTask] OnEventLButtonDown_Txt_QuestItem: {LINK_CLICK_VER} Canvas not found in parents of m_pTxt_QuestItem!");
|
||||
// UnityEngine.Debug.LogWarning($"[DlgTask] OnEventLButtonDown_Txt_QuestItem: {LINK_CLICK_VER} Canvas not found in parents of m_pTxt_QuestItem!");
|
||||
// No canvas found; fall back to pressEventCamera (may be null) then main
|
||||
camera = eventData.pressEventCamera != null ? eventData.pressEventCamera : Camera.main;
|
||||
}
|
||||
@@ -266,16 +266,16 @@ namespace BrewMonster.Scripts.Task.UI
|
||||
// Find intersecting link (like C++ checks vecItemLink[i].rc.PtInRect(x, y)) // 查找相交的链接(如C++检查vecItemLink[i].rc.PtInRect(x, y))
|
||||
int linkIndexCam = TMP_TextUtilities.FindIntersectingLink(m_pTxt_QuestItem, eventData.position, camera);
|
||||
int linkIndexNull = TMP_TextUtilities.FindIntersectingLink(m_pTxt_QuestItem, eventData.position, null);
|
||||
UnityEngine.Debug.Log($"[DlgTask] OnEventLButtonDown_Txt_QuestItem: {LINK_CLICK_VER} FindIntersectingLink(cam={(camera != null ? camera.name : "null")})={linkIndexCam}, FindIntersectingLink(null)={linkIndexNull}, screenPos={eventData.position}");
|
||||
// UnityEngine.Debug.Log($"[DlgTask] OnEventLButtonDown_Txt_QuestItem: {LINK_CLICK_VER} FindIntersectingLink(cam={(camera != null ? camera.name : "null")})={linkIndexCam}, FindIntersectingLink(null)={linkIndexNull}, screenPos={eventData.position}");
|
||||
|
||||
int linkIndex = linkIndexCam != -1 ? linkIndexCam : linkIndexNull;
|
||||
UnityEngine.Debug.Log($"[DlgTask] OnEventLButtonDown_Txt_QuestItem: FindIntersectingLink => linkIndex={linkIndex}, camera={(camera != null ? camera.name : "null")}, screenPos={eventData.position}");
|
||||
// UnityEngine.Debug.Log($"[DlgTask] OnEventLButtonDown_Txt_QuestItem: FindIntersectingLink => linkIndex={linkIndex}, camera={(camera != null ? camera.name : "null")}, screenPos={eventData.position}");
|
||||
|
||||
// Dump all links for debugging
|
||||
for (int i = 0; i < m_pTxt_QuestItem.textInfo.linkCount; i++)
|
||||
{
|
||||
TMP_LinkInfo li = m_pTxt_QuestItem.textInfo.linkInfo[i];
|
||||
UnityEngine.Debug.Log($"[DlgTask] OnEventLButtonDown_Txt_QuestItem: Link[{i}] id={li.GetLinkID()} text={li.GetLinkText()}");
|
||||
// UnityEngine.Debug.Log($"[DlgTask] OnEventLButtonDown_Txt_QuestItem: Link[{i}] id={li.GetLinkID()} text={li.GetLinkText()}");
|
||||
}
|
||||
|
||||
// C++: if( Item.m_pItem != NULL ) // C++: if( Item.m_pItem != NULL )
|
||||
@@ -284,7 +284,7 @@ namespace BrewMonster.Scripts.Task.UI
|
||||
TMP_LinkInfo linkInfo = m_pTxt_QuestItem.textInfo.linkInfo[linkIndex];
|
||||
string linkID = linkInfo.GetLinkID();
|
||||
|
||||
UnityEngine.Debug.Log($"[DlgTask] OnEventLButtonDown_Txt_QuestItem: Found link - linkID={linkID}");
|
||||
// UnityEngine.Debug.Log($"[DlgTask] OnEventLButtonDown_Txt_QuestItem: Found link - linkID={linkID}");
|
||||
|
||||
// C++: if( Item.m_pItem->GetType() == enumEICoord ) // C++: if( Item.m_pItem->GetType() == enumEICoord )
|
||||
// Check if this is a coordinate link (NPC, monster, item, target - all use enumEICoord in C++) // 检查这是否是坐标链接(NPC、怪物、物品、目标 - 在C++中都使用enumEICoord)
|
||||
@@ -301,7 +301,7 @@ namespace BrewMonster.Scripts.Task.UI
|
||||
// Use currently selected task ID (like m_idSelTask in C++ FollowCoord call) // 使用当前选中的任务ID(如C++ FollowCoord调用中的m_idSelTask)
|
||||
int currentTaskID = m_idSelTask;
|
||||
|
||||
UnityEngine.Debug.Log($"[DlgTask] OnEventLButtonDown_Txt_QuestItem: Coordinate link clicked, EntityID={entityID} (NPC/Monster/Item/Target), task={currentTaskID}");
|
||||
// UnityEngine.Debug.Log($"[DlgTask] OnEventLButtonDown_Txt_QuestItem: Coordinate link clicked, EntityID={entityID} (NPC/Monster/Item/Target), task={currentTaskID}");
|
||||
|
||||
// C++: CECUIHelper::FollowCoord(Item.m_pItem, m_idSelTask); // C++: CECUIHelper::FollowCoord(Item.m_pItem, m_idSelTask);
|
||||
// FollowCoord triggers auto-move to the coordinates (for NPC, monster, item, target) // FollowCoord触发自动移动到坐标(适用于NPC、怪物、物品、目标)
|
||||
@@ -317,7 +317,7 @@ namespace BrewMonster.Scripts.Task.UI
|
||||
// This matches C++: CECUIHelper::FollowCoord(Item.m_pItem, m_idSelTask)
|
||||
// 这匹配C++:CECUIHelper::FollowCoord(Item.m_pItem, m_idSelTask)
|
||||
bool ok = CECUIHelper.FollowCoord(entityID, currentTaskID);
|
||||
UnityEngine.Debug.Log($"[DlgTask] OnEventLButtonDown_Txt_QuestItem: FollowCoord(entity={entityID}, task={currentTaskID}) => {ok}");
|
||||
// UnityEngine.Debug.Log($"[DlgTask] OnEventLButtonDown_Txt_QuestItem: FollowCoord(entity={entityID}, task={currentTaskID}) => {ok}");
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -326,7 +326,7 @@ namespace BrewMonster.Scripts.Task.UI
|
||||
// Even without a task, still follow coord
|
||||
// 即使没有任务,也照样跟随坐标
|
||||
bool ok = CECUIHelper.FollowCoord(entityID, 0);
|
||||
UnityEngine.Debug.Log($"[DlgTask] OnEventLButtonDown_Txt_QuestItem: FollowCoord(entity={entityID}, task=0) => {ok}");
|
||||
// UnityEngine.Debug.Log($"[DlgTask] OnEventLButtonDown_Txt_QuestItem: FollowCoord(entity={entityID}, task=0) => {ok}");
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -605,7 +605,7 @@ namespace BrewMonster.Scripts.Task.UI
|
||||
// }
|
||||
|
||||
m_idSelTask = idTask;
|
||||
Debug.Log($"[DlgTask] OnEventLButtonDown_Tv_Quest: {idTask}");
|
||||
// Debug.Log($"[DlgTask] OnEventLButtonDown_Tv_Quest: {idTask}");
|
||||
}
|
||||
// void OnEventMouseMove_Txt_QuestItem(WPARAM wParam, LPARAM lParam, AUIObject *pObj);
|
||||
// void OnEventLButtonDown_Txt_QuestItem(WPARAM wParam, LPARAM lParam, AUIObject *pObj);
|
||||
@@ -706,7 +706,7 @@ namespace BrewMonster.Scripts.Task.UI
|
||||
//
|
||||
private bool Tick()
|
||||
{
|
||||
Debug.Log("[DlgTask] Tick");
|
||||
// Debug.Log("[DlgTask] Tick");
|
||||
RefreshTaskTrace();
|
||||
// Time-window task refresh: while in Search view, refresh the list when server time crosses a minute boundary.
|
||||
// This is throttled to avoid rebuilding large task lists every frame.
|
||||
@@ -817,7 +817,7 @@ namespace BrewMonster.Scripts.Task.UI
|
||||
}
|
||||
public void RefreshTaskTrace()
|
||||
{
|
||||
Debug.Log("[DlgTask] RefreshTaskTrace");
|
||||
// Debug.Log("[DlgTask] RefreshTaskTrace");
|
||||
// Get AUIManager, fallback to GetGameUIMan() if m_pAUIManager is not set yet
|
||||
// 获取AUIManager,如果m_pAUIManager尚未设置则回退到GetGameUIMan()
|
||||
AUIManager auiManager = GetAUIManager();
|
||||
@@ -1050,7 +1050,7 @@ namespace BrewMonster.Scripts.Task.UI
|
||||
}
|
||||
else
|
||||
{
|
||||
Debug.LogError($"Task {idTask} not found ATaskTempl !!!");
|
||||
// Debug.LogError($"Task {idTask} not found ATaskTempl !!!");
|
||||
}
|
||||
}
|
||||
else
|
||||
@@ -1112,7 +1112,7 @@ namespace BrewMonster.Scripts.Task.UI
|
||||
if (idTask != m_idLastTask)
|
||||
{
|
||||
_nameTaskText.SetText(EC_Utility.FormatForTextMeshPro(GetTaskNameWithColor(pTemp)));
|
||||
Debug.Log("[DlgTask] SearchForTask name task: " + _nameTaskText.text);
|
||||
// Debug.Log("[DlgTask] SearchForTask name task: " + _nameTaskText.text);
|
||||
if (pTextDesc != null) pTextDesc.SetText(EC_Utility.FormatForTextMeshPro(pTemp.GetDescription()));
|
||||
m_idLastTask = idTask;
|
||||
bLastTaskChanged = true;
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 2832b8373ed049a89499155c2a507557
|
||||
timeCreated: 1770188709
|
||||
@@ -0,0 +1,39 @@
|
||||
using BrewMonster.UI;
|
||||
using UnityEngine;
|
||||
using UnityEngine.UI;
|
||||
|
||||
namespace BrewMonster.Scripts
|
||||
{
|
||||
public class CDlgExit : AUIDialog
|
||||
{
|
||||
[SerializeField] private Button ConfirmBtn;
|
||||
[SerializeField] private Button CancelBtn;
|
||||
// [SerializeField] private Toggle CheckBox;
|
||||
|
||||
private void Awake()
|
||||
{
|
||||
ConfirmBtn.onClick.AddListener(OnCommand_confirm);
|
||||
CancelBtn.onClick.AddListener(OnCancelClicked);
|
||||
}
|
||||
|
||||
private void OnCancelClicked()
|
||||
{
|
||||
Show(false);
|
||||
}
|
||||
|
||||
void OnCommand_confirm()
|
||||
{
|
||||
|
||||
// TODO: Implement logout and exit logic
|
||||
// if( m_pChk_Forcequit.isOn || !GetGameSession()->IsConnected())
|
||||
// GetGameRun()->PostMessage(MSG_EXITGAME, -1, 0);
|
||||
// else
|
||||
// GetGameRun()->GetPendingLogOut().AppendForSaveConfig(new CECPendingLogoutFull());
|
||||
|
||||
CECGameRun.Instance.GetPendingLogOut().AppendForSaveConfig(new CECPendingLogoutFull());
|
||||
|
||||
Show(false);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 8ca9d1418c284fd395248056f086c7d4
|
||||
timeCreated: 1770188720
|
||||
@@ -0,0 +1,27 @@
|
||||
using System;
|
||||
using BrewMonster.UI;
|
||||
using UnityEngine;
|
||||
using UnityEngine.UI;
|
||||
|
||||
namespace BrewMonster.Scripts
|
||||
{
|
||||
public class ExitTest : MonoBehaviour
|
||||
{
|
||||
private bool isExitDlgOpen = false;
|
||||
private Button btn;
|
||||
|
||||
private void Start()
|
||||
{
|
||||
btn = GetComponent<Button>();
|
||||
btn.onClick.AddListener(ToggleDlgExit);
|
||||
}
|
||||
|
||||
|
||||
|
||||
void ToggleDlgExit()
|
||||
{
|
||||
isExitDlgOpen = !isExitDlgOpen;
|
||||
CECUIManager.Instance.GetInGameUIMan().GetDialog( "Win_Message2" ).Show( isExitDlgOpen );
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 96de7d56a4514c979bdd93568dba2031
|
||||
timeCreated: 1770190994
|
||||
@@ -159,6 +159,17 @@ namespace BrewMonster.UI
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Get user layout data for saving to server. Stub: returns size 0 (UI layout save not implemented).
|
||||
/// 获取用户布局数据用于保存到服务器。桩:返回长度 0(UI 布局保存未实现)。
|
||||
/// </summary>
|
||||
public void GetUserLayout(byte[] pData, ref uint dwUISize)
|
||||
{
|
||||
dwUISize = 0;
|
||||
// When pData != null and dwUISize > 0, would write layout bytes
|
||||
}
|
||||
|
||||
public override void Init()
|
||||
{
|
||||
base.Init();
|
||||
|
||||
@@ -3,6 +3,7 @@ using System.IO;
|
||||
using System.IO.Compression;
|
||||
using Unity.SharpZipLib.Zip.Compression.Streams;
|
||||
using UnityEngine;
|
||||
using CompressionLevel = System.IO.Compression.CompressionLevel;
|
||||
|
||||
namespace BrewMonster
|
||||
{
|
||||
@@ -33,6 +34,38 @@ namespace BrewMonster
|
||||
return result;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Compress data (raw deflate). Caller should allocate dst with size >= dstOffset + srcLen * 2 for safety.
|
||||
/// 压缩数据(原始 deflate)。调用方应分配 dst 大小 >= dstOffset + srcLen * 2。
|
||||
/// </summary>
|
||||
/// <param name="dstOffset">Start index in dst where compressed bytes are written. 压缩数据写入 dst 的起始下标。</param>
|
||||
/// <param name="dstLen">On input max length; on output actual compressed length. 输入为最大长度,输出为实际压缩长度。</param>
|
||||
/// <returns>0 ok, non-zero error</returns>
|
||||
public static int Compress(byte[] src, int srcLen, byte[] dst, int dstOffset, ref int dstLen)
|
||||
{
|
||||
try
|
||||
{
|
||||
using (var output = new MemoryStream())
|
||||
{
|
||||
using (var deflate = new DeflateStream(output, CompressionLevel.Fastest))
|
||||
{
|
||||
deflate.Write(src, 0, srcLen);
|
||||
}
|
||||
byte[] compressed = output.ToArray();
|
||||
if (dstOffset + compressed.Length > dst.Length)
|
||||
return Z_BUF_ERROR;
|
||||
Buffer.BlockCopy(compressed, 0, dst, dstOffset, compressed.Length);
|
||||
dstLen = compressed.Length;
|
||||
return Z_OK;
|
||||
}
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
Console.WriteLine($"ERROR::AFilePackage::Compress: {e.Message}");
|
||||
return Z_ERROR;
|
||||
}
|
||||
}
|
||||
|
||||
private static int ZlibUnCompress(byte[] dest, ref int destLen, byte[] source, int sourceLen)
|
||||
{
|
||||
try
|
||||
|
||||
@@ -19,6 +19,8 @@ public partial class CECGameRun
|
||||
{
|
||||
private static CECGameRun instance;
|
||||
|
||||
#region PROPERTIES AND FIELDS
|
||||
|
||||
private GameObject _playerPrefab;
|
||||
private GameObject _monsterPrefab;//CECMonster
|
||||
private GameObject _npcServerPrefab;//CECNPCServer
|
||||
@@ -38,6 +40,10 @@ public partial class CECGameRun
|
||||
|
||||
|
||||
protected CECUIManager m_pUIManager; // UI manager
|
||||
|
||||
CECPendingActionArray m_pendingLogout;
|
||||
|
||||
#endregion
|
||||
|
||||
public CECWorld GetWorld() { return m_pWorld; }
|
||||
public CECTeamMan GetTeamMan() { return m_pTeamMan; }
|
||||
@@ -54,6 +60,14 @@ public partial class CECGameRun
|
||||
|
||||
private int m_iDExpEndTime = 0;
|
||||
|
||||
// Cache for SaveConfigsToServer: last sent config data to skip duplicate sends
|
||||
private byte[] m_pCfgDataBuf;
|
||||
private int m_iCfgDataSize;
|
||||
|
||||
// Logout flag (C++: m_iLogoutFlag)
|
||||
private int m_iLogoutFlag = -1;
|
||||
// Selling role ID for role trade (C++: SetSellingRoleID/GetSellingRoleID)
|
||||
private int m_iSellingRoleID;
|
||||
|
||||
[RuntimeInitializeOnLoadMethod(RuntimeInitializeLoadType.BeforeSceneLoad)]
|
||||
private static void AfterSceneLoad()
|
||||
@@ -85,6 +99,8 @@ public partial class CECGameRun
|
||||
m_InstTab.Add(161, new CECInstance());
|
||||
AddressableManager.Instance.OnDispose += Dispose;
|
||||
StartGame(0, Vector3.zero);
|
||||
|
||||
m_pendingLogout = new CECPendingActionArray( false);
|
||||
}
|
||||
|
||||
private static void Dispose()
|
||||
@@ -707,10 +723,177 @@ public partial class CECGameRun
|
||||
m_iDExpEndTime = endTime;
|
||||
}
|
||||
public int GetGameState() { return m_iGameState; }
|
||||
public void SaveConfigsToServer()
|
||||
|
||||
// Logout flag: -1 none, 0 exit app, 1 re-select role, 2 goto login (C++: SetLogoutFlag/GetLogoutFlag)
|
||||
public void SetLogoutFlag(int iFlag) { m_iLogoutFlag = iFlag; }
|
||||
public int GetLogoutFlag() { return m_iLogoutFlag; }
|
||||
|
||||
// Selling role ID for role trade (C++: SetSellingRoleID)
|
||||
public void SetSellingRoleID(int roleid) { m_iSellingRoleID = roleid; }
|
||||
public int GetSellingRoleID() { return m_iSellingRoleID; }
|
||||
|
||||
/* --- Original C++ SaveConfigsToServer (for comparison) ---
|
||||
DWORD CECGameRun::SaveConfigsToServer()
|
||||
{
|
||||
if (!m_pWorld || !m_pWorld->GetHostPlayer() || !m_pWorld->GetHostPlayer()->HostIsReady() || !m_pUIManager->GetInGameUIMan())
|
||||
return 0;
|
||||
g_pGame->GetConfigs()->SaveBlockedID();
|
||||
int iTotalSize = 0;
|
||||
iTotalSize += sizeof (DWORD);
|
||||
iTotalSize += sizeof (int);
|
||||
int iHostSize = 0;
|
||||
CECHostPlayer* pHost = m_pWorld->GetHostPlayer();
|
||||
pHost->SaveConfigData(NULL, &iHostSize);
|
||||
iTotalSize += iHostSize;
|
||||
iTotalSize += sizeof (int);
|
||||
DWORD dwUISize = 0;
|
||||
CECGameUIMan* pGameUI = (CECGameUIMan*)m_pUIManager->GetInGameUIMan();
|
||||
pGameUI->GetUserLayout(NULL, dwUISize);
|
||||
iTotalSize += (int)dwUISize;
|
||||
iTotalSize += sizeof (int);
|
||||
int iSettingSize = 0;
|
||||
g_pGame->GetConfigs()->SaveUserConfigData(NULL, &iSettingSize);
|
||||
iTotalSize += iSettingSize;
|
||||
void* pDataBuf = a_malloctemp(iTotalSize);
|
||||
if (!pDataBuf) { glb_ErrorOutput(ECERR_NOTENOUGHMEMORY, "CECGameRun::SaveConfigsToServer", __LINE__); return 0; }
|
||||
BYTE* pData = (BYTE*)pDataBuf;
|
||||
*((DWORD*)pData) = USERCFG_VERSION;
|
||||
pData += sizeof (DWORD);
|
||||
*((int*)pData) = iHostSize;
|
||||
pData += sizeof (int);
|
||||
pHost->SaveConfigData(pData, &iHostSize);
|
||||
pData += iHostSize;
|
||||
*((int*)pData) = (int)dwUISize;
|
||||
pData += sizeof (int);
|
||||
pGameUI->GetUserLayout(pData, dwUISize);
|
||||
pData += dwUISize;
|
||||
*((int*)pData) = iSettingSize;
|
||||
pData += sizeof (int);
|
||||
g_pGame->GetConfigs()->SaveUserConfigData(pData, &iSettingSize);
|
||||
pData += iSettingSize;
|
||||
if (m_pCfgDataBuf) {
|
||||
if (m_iCfgDataSize == iTotalSize && !memcmp(m_pCfgDataBuf, pDataBuf, iTotalSize)) { a_freetemp(pDataBuf); return 1; }
|
||||
a_free(m_pCfgDataBuf); m_pCfgDataBuf = NULL; m_iCfgDataSize = 0;
|
||||
}
|
||||
if ((m_pCfgDataBuf = (BYTE*)a_malloc(iTotalSize))) { memcpy(m_pCfgDataBuf, pDataBuf, iTotalSize); m_iCfgDataSize = iTotalSize; }
|
||||
DWORD dwCompLen = iTotalSize * 2;
|
||||
void* pCompBuf = a_malloctemp(dwCompLen);
|
||||
if (!pCompBuf) { a_freetemp(pDataBuf); glb_ErrorOutput(ECERR_NOTENOUGHMEMORY, "CECGameRun::SaveConfigsToServer", __LINE__); return 0; }
|
||||
int iVerLen = sizeof (DWORD);
|
||||
memcpy(pCompBuf, pDataBuf, iVerLen);
|
||||
BYTE* pSrc = (BYTE*)pDataBuf + iVerLen;
|
||||
BYTE* pDst = (BYTE*)pCompBuf + iVerLen;
|
||||
dwCompLen -= iVerLen;
|
||||
int iRes = AFilePackage::Compress(pSrc, iTotalSize - iVerLen, pDst, &dwCompLen);
|
||||
if (0 == iRes) { g_pGame->GetGameSession()->SaveConfigData(pCompBuf, dwCompLen+iVerLen); iRes = 2; }
|
||||
else { a_LogOutput(1, "CECGameRun::SaveConfigsToServer, Failed to compress config data (%d:%d)", iRes, iTotalSize); iRes = 0; }
|
||||
a_freetemp(pDataBuf);
|
||||
a_freetemp(pCompBuf);
|
||||
return iRes;
|
||||
}
|
||||
--- End original C++ --- */
|
||||
// Save necessary user configs (UI, shortcut, accelerate keys, etc.) to server
|
||||
// ����ֵ: 0(����ʧ��), 1(���������ظ�����), 2(�������������Э��)
|
||||
public uint SaveConfigsToServer()
|
||||
{
|
||||
const uint USERCFG_VERSION = 3;
|
||||
|
||||
CECHostPlayer pHost = GetHostPlayer();
|
||||
CECGameUIMan pGameUI = m_pUIManager?.GetInGameUIMan() as CECGameUIMan;
|
||||
if (m_pWorld == null || pHost == null || !pHost.HostIsReady() || pGameUI == null)
|
||||
return 0;
|
||||
|
||||
EC_Game.GetConfigs().SaveBlockedID();
|
||||
|
||||
// Calculate total size: version + host + UI + settings
|
||||
int iTotalSize = sizeof(uint);
|
||||
|
||||
int iHostSize = 0;
|
||||
pHost.SaveConfigData(null, ref iHostSize);
|
||||
iTotalSize += sizeof(int) + iHostSize;
|
||||
|
||||
uint dwUISize = 0;
|
||||
pGameUI.GetUserLayout(null, ref dwUISize);
|
||||
iTotalSize += sizeof(int) + (int)dwUISize;
|
||||
|
||||
int iSettingSize = 0;
|
||||
EC_Game.GetConfigs().SaveUserConfigData(null, out iSettingSize);
|
||||
iTotalSize += sizeof(int) + iSettingSize;
|
||||
|
||||
byte[] pDataBuf = new byte[iTotalSize];
|
||||
int offset = 0;
|
||||
|
||||
// Write version
|
||||
Buffer.BlockCopy(BitConverter.GetBytes(USERCFG_VERSION), 0, pDataBuf, offset, sizeof(uint));
|
||||
offset += sizeof(uint);
|
||||
|
||||
// Write host block (length + data)
|
||||
Buffer.BlockCopy(BitConverter.GetBytes(iHostSize), 0, pDataBuf, offset, sizeof(int));
|
||||
offset += sizeof(int);
|
||||
pHost.SaveConfigData(pDataBuf, ref iHostSize, offset);
|
||||
offset += iHostSize;
|
||||
|
||||
// Write UI block (length + data)
|
||||
Buffer.BlockCopy(BitConverter.GetBytes((int)dwUISize), 0, pDataBuf, offset, sizeof(int));
|
||||
offset += sizeof(int);
|
||||
pGameUI.GetUserLayout(pDataBuf, ref dwUISize);
|
||||
offset += (int)dwUISize;
|
||||
|
||||
// Write user setting block (length + data)
|
||||
Buffer.BlockCopy(BitConverter.GetBytes(iSettingSize), 0, pDataBuf, offset, sizeof(int));
|
||||
offset += sizeof(int);
|
||||
EC_Game.GetConfigs().SaveUserConfigData(pDataBuf, offset, out iSettingSize);
|
||||
offset += iSettingSize;
|
||||
|
||||
// Here we make a cache. If the data will be sent is same as last
|
||||
// time, we can ignore it.
|
||||
// Skip send if data is identical to last time
|
||||
if (m_pCfgDataBuf != null && m_iCfgDataSize == iTotalSize)
|
||||
{
|
||||
bool same = true;
|
||||
for (int i = 0; i < iTotalSize && same; i++)
|
||||
same = (m_pCfgDataBuf[i] == pDataBuf[i]);
|
||||
if (same)
|
||||
return 1;
|
||||
}
|
||||
|
||||
m_pCfgDataBuf = null;
|
||||
m_iCfgDataSize = 0;
|
||||
|
||||
m_pCfgDataBuf = new byte[iTotalSize];
|
||||
Buffer.BlockCopy(pDataBuf, 0, m_pCfgDataBuf, 0, iTotalSize);
|
||||
m_iCfgDataSize = iTotalSize;
|
||||
|
||||
// Compress payload (version kept uncompressed)
|
||||
int iVerLen = sizeof(uint);
|
||||
int compLen = (iTotalSize - iVerLen) * 2;
|
||||
byte[] pCompBuf = new byte[iVerLen + compLen];
|
||||
Buffer.BlockCopy(pDataBuf, 0, pCompBuf, 0, iVerLen);
|
||||
|
||||
int iRes = AFilePackage.Compress(pDataBuf, iTotalSize - iVerLen, pCompBuf, iVerLen, ref compLen);
|
||||
if (iRes == 0)
|
||||
{
|
||||
var session = UnityGameSession.Instance?.GameSession;
|
||||
if (session != null)
|
||||
{
|
||||
session.SaveConfigData(pCompBuf, iVerLen + compLen);
|
||||
return 2;
|
||||
}
|
||||
}
|
||||
else
|
||||
BMLogger.LogWarning($"CECGameRun::SaveConfigsToServer, Failed to compress config data ({iRes}:{iTotalSize})");
|
||||
|
||||
return 0;
|
||||
|
||||
}
|
||||
|
||||
public void ReleasePendingActions()
|
||||
{
|
||||
m_pendingLogout.Clear();
|
||||
}
|
||||
|
||||
public CECPendingActionArray GetPendingLogOut(){ return m_pendingLogout; }
|
||||
|
||||
}
|
||||
public enum GameState
|
||||
|
||||
|
||||
@@ -3525,6 +3525,33 @@ namespace BrewMonster
|
||||
return true;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Save host config (shortcut sets, etc.) to buffer. When pData is null, only outputs size in iHostSize.
|
||||
/// 保存主机配置(快捷键组等)到缓冲区。pData 为 null 时仅输出 iHostSize。
|
||||
/// </summary>
|
||||
/// <param name="writeOffset">When pData is not null, write at this index. 写入时的起始下标。</param>
|
||||
public bool SaveConfigData(byte[] pData, ref int iHostSize, int writeOffset = 0)
|
||||
{
|
||||
var list = new List<byte>();
|
||||
list.AddRange(BitConverter.GetBytes(HostCfgConstants.HOSTCFG_VERSION));
|
||||
for (int i = 0; i < m_aSCSets1.Length; i++)
|
||||
{
|
||||
if (m_aSCSets1[i] == null || !m_aSCSets1[i].SaveConfigData(out byte[] buf))
|
||||
continue;
|
||||
list.AddRange(buf);
|
||||
}
|
||||
for (int i = 0; i < m_aSCSets2.Length; i++)
|
||||
{
|
||||
if (m_aSCSets2[i] == null || !m_aSCSets2[i].SaveConfigData(out byte[] buf))
|
||||
continue;
|
||||
list.AddRange(buf);
|
||||
}
|
||||
iHostSize = list.Count;
|
||||
if (pData != null && writeOffset >= 0 && writeOffset + iHostSize <= pData.Length)
|
||||
Buffer.BlockCopy(list.ToArray(), 0, pData, writeOffset, iHostSize);
|
||||
return true;
|
||||
}
|
||||
|
||||
public int GetCharacterID()
|
||||
{
|
||||
return m_PlayerInfo.cid;
|
||||
|
||||
Reference in New Issue
Block a user