customer support WiP
This commit is contained in:
@@ -15,7 +15,7 @@ MonoBehaviour:
|
||||
m_DefaultGroup: af10c9716f97a20469b8fc257eec4a13
|
||||
m_currentHash:
|
||||
serializedVersion: 2
|
||||
Hash: 00000000000000000000000000000000
|
||||
Hash: ea94b3f7985f7214a5719239922767ff
|
||||
m_OptimizeCatalogSize: 0
|
||||
m_BuildRemoteCatalog: 1
|
||||
m_CatalogRequestsTimeout: 0
|
||||
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1,260 +1,268 @@
|
||||
{
|
||||
"packages": {
|
||||
"com.IvanMurzak.McpPlugin": {
|
||||
"version": "8.6.0",
|
||||
"dlls": [
|
||||
"McpPlugin.dll"
|
||||
]
|
||||
},
|
||||
"com.IvanMurzak.McpPlugin.Common": {
|
||||
"version": "8.6.0",
|
||||
"dlls": [
|
||||
"McpPlugin.Common.dll"
|
||||
]
|
||||
},
|
||||
"com.IvanMurzak.ReflectorNet": {
|
||||
"version": "5.4.1",
|
||||
"dlls": [
|
||||
"ReflectorNet.dll"
|
||||
]
|
||||
},
|
||||
"Microsoft.AspNetCore.Connections.Abstractions": {
|
||||
"version": "8.0.15",
|
||||
"dlls": [
|
||||
"Microsoft.AspNetCore.Connections.Abstractions.dll"
|
||||
]
|
||||
},
|
||||
"Microsoft.AspNetCore.Http.Connections.Client": {
|
||||
"version": "8.0.15",
|
||||
"dlls": [
|
||||
"Microsoft.AspNetCore.Http.Connections.Client.dll"
|
||||
]
|
||||
},
|
||||
"Microsoft.AspNetCore.Http.Connections.Common": {
|
||||
"version": "8.0.15",
|
||||
"dlls": [
|
||||
"Microsoft.AspNetCore.Http.Connections.Common.dll"
|
||||
]
|
||||
},
|
||||
"Microsoft.AspNetCore.SignalR.Client": {
|
||||
"version": "8.0.15",
|
||||
"dlls": [
|
||||
"Microsoft.AspNetCore.SignalR.Client.dll"
|
||||
]
|
||||
},
|
||||
"Microsoft.AspNetCore.SignalR.Client.Core": {
|
||||
"version": "8.0.15",
|
||||
"dlls": [
|
||||
"Microsoft.AspNetCore.SignalR.Client.Core.dll"
|
||||
]
|
||||
},
|
||||
"Microsoft.AspNetCore.SignalR.Common": {
|
||||
"version": "8.0.15",
|
||||
"dlls": [
|
||||
"Microsoft.AspNetCore.SignalR.Common.dll"
|
||||
]
|
||||
},
|
||||
"Microsoft.AspNetCore.SignalR.Protocols.Json": {
|
||||
"version": "8.0.15",
|
||||
"dlls": [
|
||||
"Microsoft.AspNetCore.SignalR.Protocols.Json.dll"
|
||||
]
|
||||
},
|
||||
"Microsoft.Bcl.AsyncInterfaces": {
|
||||
"version": "8.0.0",
|
||||
"dlls": [
|
||||
"Microsoft.Bcl.AsyncInterfaces.dll"
|
||||
]
|
||||
},
|
||||
"Microsoft.Bcl.Memory": {
|
||||
"version": "10.0.3",
|
||||
"dlls": [
|
||||
"Microsoft.Bcl.Memory.dll"
|
||||
]
|
||||
},
|
||||
"Microsoft.Bcl.TimeProvider": {
|
||||
"version": "8.0.1",
|
||||
"dlls": [
|
||||
"Microsoft.Bcl.TimeProvider.dll"
|
||||
]
|
||||
},
|
||||
"Microsoft.CodeAnalysis.Analyzers": {
|
||||
"version": "3.3.4",
|
||||
"dlls": []
|
||||
},
|
||||
"Microsoft.CodeAnalysis.Common": {
|
||||
"version": "4.8.0",
|
||||
"dlls": [
|
||||
"Microsoft.CodeAnalysis.dll"
|
||||
]
|
||||
},
|
||||
"Microsoft.CodeAnalysis.CSharp": {
|
||||
"version": "4.8.0",
|
||||
"dlls": [
|
||||
"Microsoft.CodeAnalysis.CSharp.dll"
|
||||
]
|
||||
},
|
||||
"Microsoft.Extensions.Caching.Abstractions": {
|
||||
"version": "8.0.0",
|
||||
"dlls": [
|
||||
"Microsoft.Extensions.Caching.Abstractions.dll"
|
||||
]
|
||||
},
|
||||
"Microsoft.Extensions.Configuration.Abstractions": {
|
||||
"version": "8.0.0",
|
||||
"dlls": [
|
||||
"Microsoft.Extensions.Configuration.Abstractions.dll"
|
||||
]
|
||||
},
|
||||
"Microsoft.Extensions.DependencyInjection": {
|
||||
"version": "8.0.1",
|
||||
"dlls": [
|
||||
"Microsoft.Extensions.DependencyInjection.dll"
|
||||
]
|
||||
},
|
||||
"Microsoft.Extensions.DependencyInjection.Abstractions": {
|
||||
"version": "8.0.2",
|
||||
"dlls": [
|
||||
"Microsoft.Extensions.DependencyInjection.Abstractions.dll"
|
||||
]
|
||||
},
|
||||
"Microsoft.Extensions.Diagnostics.Abstractions": {
|
||||
"version": "8.0.1",
|
||||
"dlls": [
|
||||
"Microsoft.Extensions.Diagnostics.Abstractions.dll"
|
||||
]
|
||||
},
|
||||
"Microsoft.Extensions.Features": {
|
||||
"version": "8.0.15",
|
||||
"dlls": [
|
||||
"Microsoft.Extensions.Features.dll"
|
||||
]
|
||||
},
|
||||
"Microsoft.Extensions.FileProviders.Abstractions": {
|
||||
"version": "8.0.0",
|
||||
"dlls": [
|
||||
"Microsoft.Extensions.FileProviders.Abstractions.dll"
|
||||
]
|
||||
},
|
||||
"Microsoft.Extensions.Hosting.Abstractions": {
|
||||
"version": "8.0.1",
|
||||
"dlls": [
|
||||
"Microsoft.Extensions.Hosting.Abstractions.dll"
|
||||
]
|
||||
},
|
||||
"Microsoft.Extensions.Logging": {
|
||||
"version": "8.0.1",
|
||||
"dlls": [
|
||||
"Microsoft.Extensions.Logging.dll"
|
||||
]
|
||||
},
|
||||
"Microsoft.Extensions.Logging.Abstractions": {
|
||||
"version": "8.0.3",
|
||||
"dlls": [
|
||||
"Microsoft.Extensions.Logging.Abstractions.dll"
|
||||
]
|
||||
},
|
||||
"Microsoft.Extensions.Options": {
|
||||
"version": "8.0.2",
|
||||
"dlls": [
|
||||
"Microsoft.Extensions.Options.dll"
|
||||
]
|
||||
},
|
||||
"Microsoft.Extensions.Primitives": {
|
||||
"version": "8.0.0",
|
||||
"dlls": [
|
||||
"Microsoft.Extensions.Primitives.dll"
|
||||
]
|
||||
},
|
||||
"R3": {
|
||||
"version": "1.3.0",
|
||||
"dlls": [
|
||||
"R3.dll"
|
||||
]
|
||||
},
|
||||
"System.Buffers": {
|
||||
"version": "4.5.1",
|
||||
"dlls": [
|
||||
"System.Buffers.dll"
|
||||
]
|
||||
},
|
||||
"System.Collections.Immutable": {
|
||||
"version": "7.0.0",
|
||||
"dlls": [
|
||||
"System.Collections.Immutable.dll"
|
||||
]
|
||||
},
|
||||
"System.ComponentModel.Annotations": {
|
||||
"version": "5.0.0",
|
||||
"dlls": [
|
||||
"System.ComponentModel.Annotations.dll"
|
||||
]
|
||||
},
|
||||
"System.Diagnostics.DiagnosticSource": {
|
||||
"version": "8.0.1",
|
||||
"dlls": [
|
||||
"System.Diagnostics.DiagnosticSource.dll"
|
||||
]
|
||||
},
|
||||
"System.IO.Pipelines": {
|
||||
"version": "8.0.0",
|
||||
"dlls": [
|
||||
"System.IO.Pipelines.dll"
|
||||
]
|
||||
},
|
||||
"System.Memory": {
|
||||
"version": "4.5.5",
|
||||
"dlls": [
|
||||
"System.Memory.dll"
|
||||
]
|
||||
},
|
||||
"System.Numerics.Vectors": {
|
||||
"version": "4.4.0",
|
||||
"dlls": [
|
||||
"System.Numerics.Vectors.dll"
|
||||
]
|
||||
},
|
||||
"System.Reflection.Metadata": {
|
||||
"version": "7.0.0",
|
||||
"dlls": [
|
||||
"System.Reflection.Metadata.dll"
|
||||
]
|
||||
},
|
||||
"System.Runtime.CompilerServices.Unsafe": {
|
||||
"version": "6.1.2",
|
||||
"dlls": [
|
||||
"System.Runtime.CompilerServices.Unsafe.dll"
|
||||
]
|
||||
},
|
||||
"System.Text.Encoding.CodePages": {
|
||||
"version": "7.0.0",
|
||||
"dlls": [
|
||||
"System.Text.Encoding.CodePages.dll"
|
||||
]
|
||||
},
|
||||
"System.Text.Encodings.Web": {
|
||||
"version": "8.0.0",
|
||||
"dlls": [
|
||||
"System.Text.Encodings.Web.dll"
|
||||
]
|
||||
},
|
||||
"System.Text.Json": {
|
||||
"version": "8.0.5",
|
||||
"dlls": [
|
||||
"System.Text.Json.dll"
|
||||
]
|
||||
},
|
||||
"System.Threading.Channels": {
|
||||
"version": "8.0.0",
|
||||
"dlls": [
|
||||
"System.Threading.Channels.dll"
|
||||
]
|
||||
},
|
||||
"System.Threading.Tasks.Extensions": {
|
||||
"version": "4.5.4",
|
||||
"dlls": [
|
||||
"System.Threading.Tasks.Extensions.dll"
|
||||
]
|
||||
}
|
||||
}
|
||||
{
|
||||
"packages": {
|
||||
"com.IvanMurzak.McpPlugin": {
|
||||
"version": "8.8.0",
|
||||
"dlls": [
|
||||
"McpPlugin.dll"
|
||||
]
|
||||
},
|
||||
"com.IvanMurzak.McpPlugin.Common": {
|
||||
"version": "8.8.0",
|
||||
"dlls": [
|
||||
"McpPlugin.Common.dll"
|
||||
]
|
||||
},
|
||||
"com.IvanMurzak.ReflectorNet": {
|
||||
"version": "5.4.2",
|
||||
"dlls": [
|
||||
"ReflectorNet.dll"
|
||||
]
|
||||
},
|
||||
"com.IvanMurzak.Rql": {
|
||||
"version": "0.1.0",
|
||||
"dlls": [
|
||||
"Rql.Contracts.dll",
|
||||
"Rql.Execution.dll",
|
||||
"Rql.Parser.dll"
|
||||
]
|
||||
},
|
||||
"Microsoft.AspNetCore.Connections.Abstractions": {
|
||||
"version": "8.0.15",
|
||||
"dlls": [
|
||||
"Microsoft.AspNetCore.Connections.Abstractions.dll"
|
||||
]
|
||||
},
|
||||
"Microsoft.AspNetCore.Http.Connections.Client": {
|
||||
"version": "8.0.15",
|
||||
"dlls": [
|
||||
"Microsoft.AspNetCore.Http.Connections.Client.dll"
|
||||
]
|
||||
},
|
||||
"Microsoft.AspNetCore.Http.Connections.Common": {
|
||||
"version": "8.0.15",
|
||||
"dlls": [
|
||||
"Microsoft.AspNetCore.Http.Connections.Common.dll"
|
||||
]
|
||||
},
|
||||
"Microsoft.AspNetCore.SignalR.Client": {
|
||||
"version": "8.0.15",
|
||||
"dlls": [
|
||||
"Microsoft.AspNetCore.SignalR.Client.dll"
|
||||
]
|
||||
},
|
||||
"Microsoft.AspNetCore.SignalR.Client.Core": {
|
||||
"version": "8.0.15",
|
||||
"dlls": [
|
||||
"Microsoft.AspNetCore.SignalR.Client.Core.dll"
|
||||
]
|
||||
},
|
||||
"Microsoft.AspNetCore.SignalR.Common": {
|
||||
"version": "8.0.15",
|
||||
"dlls": [
|
||||
"Microsoft.AspNetCore.SignalR.Common.dll"
|
||||
]
|
||||
},
|
||||
"Microsoft.AspNetCore.SignalR.Protocols.Json": {
|
||||
"version": "8.0.15",
|
||||
"dlls": [
|
||||
"Microsoft.AspNetCore.SignalR.Protocols.Json.dll"
|
||||
]
|
||||
},
|
||||
"Microsoft.Bcl.AsyncInterfaces": {
|
||||
"version": "8.0.0",
|
||||
"dlls": [
|
||||
"Microsoft.Bcl.AsyncInterfaces.dll"
|
||||
]
|
||||
},
|
||||
"Microsoft.Bcl.Memory": {
|
||||
"version": "10.0.3",
|
||||
"dlls": [
|
||||
"Microsoft.Bcl.Memory.dll"
|
||||
]
|
||||
},
|
||||
"Microsoft.Bcl.TimeProvider": {
|
||||
"version": "8.0.1",
|
||||
"dlls": [
|
||||
"Microsoft.Bcl.TimeProvider.dll"
|
||||
]
|
||||
},
|
||||
"Microsoft.CodeAnalysis.Analyzers": {
|
||||
"version": "3.3.4",
|
||||
"dlls": []
|
||||
},
|
||||
"Microsoft.CodeAnalysis.Common": {
|
||||
"version": "4.8.0",
|
||||
"dlls": [
|
||||
"Microsoft.CodeAnalysis.dll"
|
||||
]
|
||||
},
|
||||
"Microsoft.CodeAnalysis.CSharp": {
|
||||
"version": "4.8.0",
|
||||
"dlls": [
|
||||
"Microsoft.CodeAnalysis.CSharp.dll"
|
||||
]
|
||||
},
|
||||
"Microsoft.Extensions.Caching.Abstractions": {
|
||||
"version": "8.0.0",
|
||||
"dlls": [
|
||||
"Microsoft.Extensions.Caching.Abstractions.dll"
|
||||
]
|
||||
},
|
||||
"Microsoft.Extensions.Configuration.Abstractions": {
|
||||
"version": "8.0.0",
|
||||
"dlls": [
|
||||
"Microsoft.Extensions.Configuration.Abstractions.dll"
|
||||
]
|
||||
},
|
||||
"Microsoft.Extensions.DependencyInjection": {
|
||||
"version": "8.0.1",
|
||||
"dlls": [
|
||||
"Microsoft.Extensions.DependencyInjection.dll"
|
||||
]
|
||||
},
|
||||
"Microsoft.Extensions.DependencyInjection.Abstractions": {
|
||||
"version": "8.0.2",
|
||||
"dlls": [
|
||||
"Microsoft.Extensions.DependencyInjection.Abstractions.dll"
|
||||
]
|
||||
},
|
||||
"Microsoft.Extensions.Diagnostics.Abstractions": {
|
||||
"version": "8.0.1",
|
||||
"dlls": [
|
||||
"Microsoft.Extensions.Diagnostics.Abstractions.dll"
|
||||
]
|
||||
},
|
||||
"Microsoft.Extensions.Features": {
|
||||
"version": "8.0.15",
|
||||
"dlls": [
|
||||
"Microsoft.Extensions.Features.dll"
|
||||
]
|
||||
},
|
||||
"Microsoft.Extensions.FileProviders.Abstractions": {
|
||||
"version": "8.0.0",
|
||||
"dlls": [
|
||||
"Microsoft.Extensions.FileProviders.Abstractions.dll"
|
||||
]
|
||||
},
|
||||
"Microsoft.Extensions.Hosting.Abstractions": {
|
||||
"version": "8.0.1",
|
||||
"dlls": [
|
||||
"Microsoft.Extensions.Hosting.Abstractions.dll"
|
||||
]
|
||||
},
|
||||
"Microsoft.Extensions.Logging": {
|
||||
"version": "8.0.1",
|
||||
"dlls": [
|
||||
"Microsoft.Extensions.Logging.dll"
|
||||
]
|
||||
},
|
||||
"Microsoft.Extensions.Logging.Abstractions": {
|
||||
"version": "8.0.3",
|
||||
"dlls": [
|
||||
"Microsoft.Extensions.Logging.Abstractions.dll"
|
||||
]
|
||||
},
|
||||
"Microsoft.Extensions.Options": {
|
||||
"version": "8.0.2",
|
||||
"dlls": [
|
||||
"Microsoft.Extensions.Options.dll"
|
||||
]
|
||||
},
|
||||
"Microsoft.Extensions.Primitives": {
|
||||
"version": "8.0.0",
|
||||
"dlls": [
|
||||
"Microsoft.Extensions.Primitives.dll"
|
||||
]
|
||||
},
|
||||
"R3": {
|
||||
"version": "1.3.0",
|
||||
"dlls": [
|
||||
"R3.dll"
|
||||
]
|
||||
},
|
||||
"System.Buffers": {
|
||||
"version": "4.5.1",
|
||||
"dlls": [
|
||||
"System.Buffers.dll"
|
||||
]
|
||||
},
|
||||
"System.Collections.Immutable": {
|
||||
"version": "7.0.0",
|
||||
"dlls": [
|
||||
"System.Collections.Immutable.dll"
|
||||
]
|
||||
},
|
||||
"System.ComponentModel.Annotations": {
|
||||
"version": "5.0.0",
|
||||
"dlls": [
|
||||
"System.ComponentModel.Annotations.dll"
|
||||
]
|
||||
},
|
||||
"System.Diagnostics.DiagnosticSource": {
|
||||
"version": "8.0.1",
|
||||
"dlls": [
|
||||
"System.Diagnostics.DiagnosticSource.dll"
|
||||
]
|
||||
},
|
||||
"System.IO.Pipelines": {
|
||||
"version": "8.0.0",
|
||||
"dlls": [
|
||||
"System.IO.Pipelines.dll"
|
||||
]
|
||||
},
|
||||
"System.Memory": {
|
||||
"version": "4.5.5",
|
||||
"dlls": [
|
||||
"System.Memory.dll"
|
||||
]
|
||||
},
|
||||
"System.Numerics.Vectors": {
|
||||
"version": "4.4.0",
|
||||
"dlls": [
|
||||
"System.Numerics.Vectors.dll"
|
||||
]
|
||||
},
|
||||
"System.Reflection.Metadata": {
|
||||
"version": "7.0.0",
|
||||
"dlls": [
|
||||
"System.Reflection.Metadata.dll"
|
||||
]
|
||||
},
|
||||
"System.Runtime.CompilerServices.Unsafe": {
|
||||
"version": "6.1.2",
|
||||
"dlls": [
|
||||
"System.Runtime.CompilerServices.Unsafe.dll"
|
||||
]
|
||||
},
|
||||
"System.Text.Encoding.CodePages": {
|
||||
"version": "7.0.0",
|
||||
"dlls": [
|
||||
"System.Text.Encoding.CodePages.dll"
|
||||
]
|
||||
},
|
||||
"System.Text.Encodings.Web": {
|
||||
"version": "8.0.0",
|
||||
"dlls": [
|
||||
"System.Text.Encodings.Web.dll"
|
||||
]
|
||||
},
|
||||
"System.Text.Json": {
|
||||
"version": "8.0.5",
|
||||
"dlls": [
|
||||
"System.Text.Json.dll"
|
||||
]
|
||||
},
|
||||
"System.Threading.Channels": {
|
||||
"version": "8.0.0",
|
||||
"dlls": [
|
||||
"System.Threading.Channels.dll"
|
||||
]
|
||||
},
|
||||
"System.Threading.Tasks.Extensions": {
|
||||
"version": "4.5.4",
|
||||
"dlls": [
|
||||
"System.Threading.Tasks.Extensions.dll"
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,27 @@
|
||||
fileFormatVersion: 2
|
||||
guid: db548aeaf1152963881b554eba410161
|
||||
PluginImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 3
|
||||
iconMap: {}
|
||||
executionOrder: {}
|
||||
defineConstraints: []
|
||||
isPreloaded: 0
|
||||
isOverridable: 0
|
||||
isExplicitlyReferenced: 0
|
||||
validateReferences: 1
|
||||
platformData:
|
||||
Any:
|
||||
enabled: 0
|
||||
settings: {}
|
||||
Editor:
|
||||
enabled: 1
|
||||
settings:
|
||||
DefaultValueInitialized: true
|
||||
WindowsStoreApps:
|
||||
enabled: 0
|
||||
settings:
|
||||
CPU: AnyCPU
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
Binary file not shown.
@@ -0,0 +1,27 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 97e397af08297ce51a3b5571c6846718
|
||||
PluginImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 3
|
||||
iconMap: {}
|
||||
executionOrder: {}
|
||||
defineConstraints: []
|
||||
isPreloaded: 0
|
||||
isOverridable: 0
|
||||
isExplicitlyReferenced: 0
|
||||
validateReferences: 1
|
||||
platformData:
|
||||
Any:
|
||||
enabled: 0
|
||||
settings: {}
|
||||
Editor:
|
||||
enabled: 1
|
||||
settings:
|
||||
DefaultValueInitialized: true
|
||||
WindowsStoreApps:
|
||||
enabled: 0
|
||||
settings:
|
||||
CPU: AnyCPU
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
Binary file not shown.
@@ -0,0 +1,27 @@
|
||||
fileFormatVersion: 2
|
||||
guid: dc42fc2b683fef0d38c9a8a665c8c895
|
||||
PluginImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 3
|
||||
iconMap: {}
|
||||
executionOrder: {}
|
||||
defineConstraints: []
|
||||
isPreloaded: 0
|
||||
isOverridable: 0
|
||||
isExplicitlyReferenced: 0
|
||||
validateReferences: 1
|
||||
platformData:
|
||||
Any:
|
||||
enabled: 0
|
||||
settings: {}
|
||||
Editor:
|
||||
enabled: 1
|
||||
settings:
|
||||
DefaultValueInitialized: true
|
||||
WindowsStoreApps:
|
||||
enabled: 0
|
||||
settings:
|
||||
CPU: AnyCPU
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: eba0163e0bd8ecb51a5771802f3ba7c1
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,214 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!1 &1462090972661197787
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 1341831250786711559}
|
||||
- component: {fileID: 917088490488454432}
|
||||
- component: {fileID: 7853747512264009880}
|
||||
m_Layer: 5
|
||||
m_Name: ticketButton
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!224 &1341831250786711559
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1462090972661197787}
|
||||
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: 7548297246373829554}
|
||||
m_Father: {fileID: 0}
|
||||
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: 264.971, y: 100}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!222 &917088490488454432
|
||||
CanvasRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1462090972661197787}
|
||||
m_CullTransparentMesh: 1
|
||||
--- !u!114 &7853747512264009880
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1462090972661197787}
|
||||
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: 0d64f6174c0ee48ac82b9113016322ad, type: 3}
|
||||
m_Type: 1
|
||||
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 &4451237980070011678
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 7548297246373829554}
|
||||
- component: {fileID: 5708029325541978246}
|
||||
- component: {fileID: 3736942545593823984}
|
||||
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 &7548297246373829554
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 4451237980070011678}
|
||||
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: 1341831250786711559}
|
||||
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: -1.0713, y: 7.4987}
|
||||
m_SizeDelta: {x: 238.5647, y: 64.9974}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!222 &5708029325541978246
|
||||
CanvasRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 4451237980070011678}
|
||||
m_CullTransparentMesh: 1
|
||||
--- !u!114 &3736942545593823984
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 4451237980070011678}
|
||||
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: Ticket #001
|
||||
m_isRightToLeft: 0
|
||||
m_fontAsset: {fileID: 11400000, guid: 893d86ab7286e5d4383d1c3f2ecdb510, type: 2}
|
||||
m_sharedMaterial: {fileID: -5214663084478877120, guid: 893d86ab7286e5d4383d1c3f2ecdb510, 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: 43.85
|
||||
m_fontSizeBase: 36
|
||||
m_fontWeight: 400
|
||||
m_enableAutoSizing: 1
|
||||
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: 0a51b9d7b411ceb929e32a35f5e66e30
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,375 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!1 &707051342981123557
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 7224778997419466767}
|
||||
- component: {fileID: 5711083483119391043}
|
||||
- component: {fileID: 3297791151943284155}
|
||||
m_Layer: 5
|
||||
m_Name: Checkmark
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!224 &7224778997419466767
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 707051342981123557}
|
||||
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: 7977828951142855133}
|
||||
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: 40, y: 40}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!222 &5711083483119391043
|
||||
CanvasRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 707051342981123557}
|
||||
m_CullTransparentMesh: 1
|
||||
--- !u!114 &3297791151943284155
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 707051342981123557}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_Material: {fileID: 0}
|
||||
m_Color: {r: 0, g: 0.5, b: 0.153054, 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: 15e725f67e31b4b14b47715b50244dc0, 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 &1024608873468362559
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 7977828951142855133}
|
||||
- component: {fileID: 7523232256770333524}
|
||||
- component: {fileID: 7703631144606004140}
|
||||
m_Layer: 5
|
||||
m_Name: Background
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!224 &7977828951142855133
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1024608873468362559}
|
||||
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: 7224778997419466767}
|
||||
m_Father: {fileID: 2189137325404022664}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 1}
|
||||
m_AnchorMax: {x: 0, y: 1}
|
||||
m_AnchoredPosition: {x: 31.392, y: -31.092}
|
||||
m_SizeDelta: {x: 40, y: 40}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!222 &7523232256770333524
|
||||
CanvasRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1024608873468362559}
|
||||
m_CullTransparentMesh: 1
|
||||
--- !u!114 &7703631144606004140
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1024608873468362559}
|
||||
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: 10905, guid: 0000000000000000f000000000000000, type: 0}
|
||||
m_Type: 1
|
||||
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 &2735457255991415772
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 2189137325404022664}
|
||||
- component: {fileID: 1368985993873080562}
|
||||
m_Layer: 5
|
||||
m_Name: ticketReasonToggle
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!224 &2189137325404022664
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 2735457255991415772}
|
||||
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: 7977828951142855133}
|
||||
- {fileID: 7390458379522290553}
|
||||
m_Father: {fileID: 0}
|
||||
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: 567.0859, y: 63.2413}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!114 &1368985993873080562
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 2735457255991415772}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 9085046f02f69544eb97fd06b6048fe2, 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: 7703631144606004140}
|
||||
toggleTransition: 1
|
||||
graphic: {fileID: 3297791151943284155}
|
||||
m_Group: {fileID: 0}
|
||||
onValueChanged:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
m_IsOn: 1
|
||||
--- !u!1 &5350386791310786802
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 7390458379522290553}
|
||||
- component: {fileID: 3429130727295528746}
|
||||
- component: {fileID: 1103805545102531619}
|
||||
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 &7390458379522290553
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 5350386791310786802}
|
||||
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: 2189137325404022664}
|
||||
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: 19.9, y: 2.3}
|
||||
m_SizeDelta: {x: 453.3022, y: 50}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!222 &3429130727295528746
|
||||
CanvasRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 5350386791310786802}
|
||||
m_CullTransparentMesh: 1
|
||||
--- !u!114 &1103805545102531619
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 5350386791310786802}
|
||||
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: Withdraw
|
||||
m_isRightToLeft: 0
|
||||
m_fontAsset: {fileID: 11400000, guid: 893d86ab7286e5d4383d1c3f2ecdb510, type: 2}
|
||||
m_sharedMaterial: {fileID: -5214663084478877120, guid: 893d86ab7286e5d4383d1c3f2ecdb510, 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: 36
|
||||
m_fontSizeBase: 36
|
||||
m_fontWeight: 400
|
||||
m_enableAutoSizing: 0
|
||||
m_fontSizeMin: 18
|
||||
m_fontSizeMax: 72
|
||||
m_fontStyle: 0
|
||||
m_HorizontalAlignment: 1
|
||||
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: 6372e540e43168cf0ab947b5ea4a95d5
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,796 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!1 &1318490843304738885
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 4872065421449220216}
|
||||
- component: {fileID: 868351031018468229}
|
||||
- component: {fileID: 6046286292233998668}
|
||||
- component: {fileID: 5046166766175730094}
|
||||
- component: {fileID: 3566127904265910461}
|
||||
m_Layer: 5
|
||||
m_Name: Image (1)
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!224 &4872065421449220216
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1318490843304738885}
|
||||
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: 219784365551460667}
|
||||
m_Father: {fileID: 2636528318417055051}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 1}
|
||||
m_AnchorMax: {x: 0, y: 1}
|
||||
m_AnchoredPosition: {x: 458.40002, y: -92.6}
|
||||
m_SizeDelta: {x: 547.48, y: 158}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!222 &868351031018468229
|
||||
CanvasRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1318490843304738885}
|
||||
m_CullTransparentMesh: 1
|
||||
--- !u!114 &6046286292233998668
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1318490843304738885}
|
||||
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: 74114cc50585c4f6785798e3d7f07fc8, type: 3}
|
||||
m_Type: 1
|
||||
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 &5046166766175730094
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1318490843304738885}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 3245ec927659c4140ac4f8d17403cc18, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_HorizontalFit: 2
|
||||
m_VerticalFit: 2
|
||||
--- !u!114 &3566127904265910461
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1318490843304738885}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_Padding:
|
||||
m_Left: 28
|
||||
m_Right: 55
|
||||
m_Top: 0
|
||||
m_Bottom: 0
|
||||
m_ChildAlignment: 5
|
||||
m_Spacing: 0
|
||||
m_ChildForceExpandWidth: 1
|
||||
m_ChildForceExpandHeight: 0
|
||||
m_ChildControlWidth: 1
|
||||
m_ChildControlHeight: 1
|
||||
m_ChildScaleWidth: 0
|
||||
m_ChildScaleHeight: 0
|
||||
m_ReverseArrangement: 1
|
||||
--- !u!1 &1405380894901176747
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 7850979786460832269}
|
||||
- component: {fileID: 7674930453967139263}
|
||||
- component: {fileID: 6266541463831949275}
|
||||
- component: {fileID: 9056709216080557839}
|
||||
- component: {fileID: 5023480786529098034}
|
||||
m_Layer: 5
|
||||
m_Name: Image
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!224 &7850979786460832269
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1405380894901176747}
|
||||
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: 6066549005503560976}
|
||||
m_Father: {fileID: 9176780049885004140}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 1}
|
||||
m_AnchorMax: {x: 0, y: 1}
|
||||
m_AnchoredPosition: {x: 355.085, y: -92.6}
|
||||
m_SizeDelta: {x: 710.17, y: 154}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!222 &7674930453967139263
|
||||
CanvasRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1405380894901176747}
|
||||
m_CullTransparentMesh: 1
|
||||
--- !u!114 &6266541463831949275
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1405380894901176747}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_Material: {fileID: 0}
|
||||
m_Color: {r: 1, g: 1, b: 1, a: 0.7372549}
|
||||
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: 6a84fe7d00c0247719b41d0998c03ab0, type: 3}
|
||||
m_Type: 1
|
||||
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 &9056709216080557839
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1405380894901176747}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 3245ec927659c4140ac4f8d17403cc18, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_HorizontalFit: 2
|
||||
m_VerticalFit: 2
|
||||
--- !u!114 &5023480786529098034
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1405380894901176747}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_Padding:
|
||||
m_Left: 45
|
||||
m_Right: 30
|
||||
m_Top: 0
|
||||
m_Bottom: 0
|
||||
m_ChildAlignment: 3
|
||||
m_Spacing: 0
|
||||
m_ChildForceExpandWidth: 1
|
||||
m_ChildForceExpandHeight: 0
|
||||
m_ChildControlWidth: 1
|
||||
m_ChildControlHeight: 1
|
||||
m_ChildScaleWidth: 0
|
||||
m_ChildScaleHeight: 0
|
||||
m_ReverseArrangement: 0
|
||||
--- !u!1 &3977255666687989749
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 219784365551460667}
|
||||
- component: {fileID: 7823826910691705863}
|
||||
- component: {fileID: 1596261778508815527}
|
||||
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 &219784365551460667
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 3977255666687989749}
|
||||
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: 4872065421449220216}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 1}
|
||||
m_AnchorMax: {x: 0, y: 1}
|
||||
m_AnchoredPosition: {x: 28, y: -79}
|
||||
m_SizeDelta: {x: 464.48, y: 45.15}
|
||||
m_Pivot: {x: 0, y: 0.5}
|
||||
--- !u!222 &7823826910691705863
|
||||
CanvasRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 3977255666687989749}
|
||||
m_CullTransparentMesh: 1
|
||||
--- !u!114 &1596261778508815527
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 3977255666687989749}
|
||||
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: Hi, sssssssssssssssssssssss
|
||||
m_isRightToLeft: 0
|
||||
m_fontAsset: {fileID: 11400000, guid: c1482dbce654844b9ba1c753cbea5d80, type: 2}
|
||||
m_sharedMaterial: {fileID: 7374927986402738804, guid: c1482dbce654844b9ba1c753cbea5d80, type: 2}
|
||||
m_fontSharedMaterials: []
|
||||
m_fontMaterial: {fileID: 0}
|
||||
m_fontMaterials: []
|
||||
m_fontColor32:
|
||||
serializedVersion: 2
|
||||
rgba: 4282097920
|
||||
m_fontColor: {r: 0, g: 0.6320754, b: 0.230302, 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: 39.5
|
||||
m_fontSizeBase: 39.5
|
||||
m_fontWeight: 400
|
||||
m_enableAutoSizing: 0
|
||||
m_fontSizeMin: 18
|
||||
m_fontSizeMax: 72
|
||||
m_fontStyle: 0
|
||||
m_HorizontalAlignment: 1
|
||||
m_VerticalAlignment: 256
|
||||
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 &5544518929901409163
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 6805552789421676139}
|
||||
- component: {fileID: 4413301573786862017}
|
||||
- component: {fileID: 6913463568644443495}
|
||||
m_Layer: 5
|
||||
m_Name: tkt_messageRow
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!224 &6805552789421676139
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 5544518929901409163}
|
||||
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: 9176780049885004140}
|
||||
- {fileID: 2636528318417055051}
|
||||
m_Father: {fileID: 0}
|
||||
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: 185.2}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!222 &4413301573786862017
|
||||
CanvasRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 5544518929901409163}
|
||||
m_CullTransparentMesh: 1
|
||||
--- !u!114 &6913463568644443495
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 5544518929901409163}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_Material: {fileID: 0}
|
||||
m_Color: {r: 1, g: 1, b: 1, a: 0}
|
||||
m_RaycastTarget: 1
|
||||
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
|
||||
m_Maskable: 1
|
||||
m_OnCullStateChanged:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
m_Sprite: {fileID: 0}
|
||||
m_Type: 0
|
||||
m_PreserveAspect: 0
|
||||
m_FillCenter: 1
|
||||
m_FillMethod: 4
|
||||
m_FillAmount: 1
|
||||
m_FillClockwise: 1
|
||||
m_FillOrigin: 0
|
||||
m_UseSpriteMesh: 0
|
||||
m_PixelsPerUnitMultiplier: 1
|
||||
--- !u!1 &6071047006490169686
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 9176780049885004140}
|
||||
- component: {fileID: 9101877728799453743}
|
||||
- component: {fileID: 2454813564430485537}
|
||||
- component: {fileID: 4463332525355654355}
|
||||
m_Layer: 5
|
||||
m_Name: left
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!224 &9176780049885004140
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 6071047006490169686}
|
||||
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: 7850979786460832269}
|
||||
m_Father: {fileID: 6805552789421676139}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 1}
|
||||
m_AnchorMax: {x: 0, y: 1}
|
||||
m_AnchoredPosition: {x: 369.7437, y: -92.6}
|
||||
m_SizeDelta: {x: 725.4874, y: 185.2}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!222 &9101877728799453743
|
||||
CanvasRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 6071047006490169686}
|
||||
m_CullTransparentMesh: 1
|
||||
--- !u!114 &2454813564430485537
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 6071047006490169686}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_Material: {fileID: 0}
|
||||
m_Color: {r: 1, g: 1, b: 1, a: 0}
|
||||
m_RaycastTarget: 1
|
||||
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
|
||||
m_Maskable: 1
|
||||
m_OnCullStateChanged:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
m_Sprite: {fileID: 0}
|
||||
m_Type: 0
|
||||
m_PreserveAspect: 0
|
||||
m_FillCenter: 1
|
||||
m_FillMethod: 4
|
||||
m_FillAmount: 1
|
||||
m_FillClockwise: 1
|
||||
m_FillOrigin: 0
|
||||
m_UseSpriteMesh: 0
|
||||
m_PixelsPerUnitMultiplier: 1
|
||||
--- !u!114 &4463332525355654355
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 6071047006490169686}
|
||||
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: 1
|
||||
m_ChildForceExpandHeight: 1
|
||||
m_ChildControlWidth: 0
|
||||
m_ChildControlHeight: 0
|
||||
m_ChildScaleWidth: 0
|
||||
m_ChildScaleHeight: 0
|
||||
m_ReverseArrangement: 0
|
||||
--- !u!1 &7715799318579200123
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 6066549005503560976}
|
||||
- component: {fileID: 9106847951458700505}
|
||||
- component: {fileID: 7196986866946262397}
|
||||
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 &6066549005503560976
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 7715799318579200123}
|
||||
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: 7850979786460832269}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 1}
|
||||
m_AnchorMax: {x: 0, y: 1}
|
||||
m_AnchoredPosition: {x: 45, y: -77}
|
||||
m_SizeDelta: {x: 635.17, y: 135.45}
|
||||
m_Pivot: {x: 0, y: 0.5}
|
||||
--- !u!222 &9106847951458700505
|
||||
CanvasRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 7715799318579200123}
|
||||
m_CullTransparentMesh: 1
|
||||
--- !u!114 &7196986866946262397
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 7715799318579200123}
|
||||
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: 'Hello, Im Sew from customer support,
|
||||
|
||||
|
||||
How may i assit you today?'
|
||||
m_isRightToLeft: 0
|
||||
m_fontAsset: {fileID: 11400000, guid: c1482dbce654844b9ba1c753cbea5d80, type: 2}
|
||||
m_sharedMaterial: {fileID: 7374927986402738804, guid: c1482dbce654844b9ba1c753cbea5d80, 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: 39.5
|
||||
m_fontSizeBase: 39.5
|
||||
m_fontWeight: 400
|
||||
m_enableAutoSizing: 0
|
||||
m_fontSizeMin: 18
|
||||
m_fontSizeMax: 72
|
||||
m_fontStyle: 0
|
||||
m_HorizontalAlignment: 1
|
||||
m_VerticalAlignment: 256
|
||||
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 &8599674140115870311
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 2636528318417055051}
|
||||
- component: {fileID: 6169702296448177218}
|
||||
- component: {fileID: 5121754827664209597}
|
||||
- component: {fileID: 422950567891508529}
|
||||
m_Layer: 5
|
||||
m_Name: right
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 0
|
||||
--- !u!224 &2636528318417055051
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 8599674140115870311}
|
||||
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: 4872065421449220216}
|
||||
m_Father: {fileID: 6805552789421676139}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 1}
|
||||
m_AnchorMax: {x: 0, y: 1}
|
||||
m_AnchoredPosition: {x: 366.07, y: -92.6}
|
||||
m_SizeDelta: {x: 732.14, y: 185.2}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!222 &6169702296448177218
|
||||
CanvasRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 8599674140115870311}
|
||||
m_CullTransparentMesh: 1
|
||||
--- !u!114 &5121754827664209597
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 8599674140115870311}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_Material: {fileID: 0}
|
||||
m_Color: {r: 1, g: 1, b: 1, a: 0}
|
||||
m_RaycastTarget: 1
|
||||
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
|
||||
m_Maskable: 1
|
||||
m_OnCullStateChanged:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
m_Sprite: {fileID: 0}
|
||||
m_Type: 0
|
||||
m_PreserveAspect: 0
|
||||
m_FillCenter: 1
|
||||
m_FillMethod: 4
|
||||
m_FillAmount: 1
|
||||
m_FillClockwise: 1
|
||||
m_FillOrigin: 0
|
||||
m_UseSpriteMesh: 0
|
||||
m_PixelsPerUnitMultiplier: 1
|
||||
--- !u!114 &422950567891508529
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 8599674140115870311}
|
||||
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: 5
|
||||
m_Spacing: 0
|
||||
m_ChildForceExpandWidth: 1
|
||||
m_ChildForceExpandHeight: 1
|
||||
m_ChildControlWidth: 0
|
||||
m_ChildControlHeight: 0
|
||||
m_ChildScaleWidth: 0
|
||||
m_ChildScaleHeight: 0
|
||||
m_ReverseArrangement: 1
|
||||
@@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: bc147480c77b541cb8b6d87f47604deb
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -39,7 +39,7 @@ RectTransform:
|
||||
m_AnchorMin: {x: 0, y: 1}
|
||||
m_AnchorMax: {x: 0, y: 1}
|
||||
m_AnchoredPosition: {x: 98.775, y: -50}
|
||||
m_SizeDelta: {x: 157.55, y: 0}
|
||||
m_SizeDelta: {x: 0, y: 0}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!222 &1951170700571642783
|
||||
CanvasRenderer:
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,655 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using DG.Tweening;
|
||||
using TMPro;
|
||||
using UnityEngine;
|
||||
using UnityEngine.UI;
|
||||
|
||||
public class CustomerSupportCanvas : MonoBehaviour
|
||||
{
|
||||
const float ScreenFadeSeconds = 0.5f;
|
||||
const float PollIntervalSeconds = 5f;
|
||||
|
||||
static readonly (string slug, string label)[] Categories =
|
||||
{
|
||||
(SupportClient.Category.Bug, "Report Bug"),
|
||||
(SupportClient.Category.Cheating, "Report cheating"),
|
||||
(SupportClient.Category.Withdrawal, "Request withdrawal"),
|
||||
(SupportClient.Category.Crypto, "Pay with crypto"),
|
||||
(SupportClient.Category.Other, "Other"),
|
||||
};
|
||||
|
||||
public CanvasGroup helpScreen;
|
||||
public Button btnCloseHelp;
|
||||
public Button btnFaq, btnTickets;
|
||||
public string faqUrl = "https://kickkings.app/faq";
|
||||
public CanvasGroup ticketScreen;
|
||||
public Button btnCloseTicket;
|
||||
/// <summary>
|
||||
/// If 0 open tickets, "No open tickets", otherwise "X Open Tickets"
|
||||
/// </summary>
|
||||
public TMP_Text txtTicketTitle;
|
||||
public RectTransform ticketListParent;
|
||||
/// <summary>
|
||||
/// Item for the ticket list, single TMP_Text inside. Which should be like "Ticket #001", Once clicked, Show the necessary chat.
|
||||
/// </summary>
|
||||
public GameObject ticketListItemPrefab;
|
||||
public Sprite spriteTicketOpen, spriteTicketClosed;
|
||||
/// <summary>
|
||||
/// If no chat is selected, show this text, Also dont show the input field if this is shown.
|
||||
/// </summary>
|
||||
public GameObject noChatSelectedTxt;
|
||||
public RectTransform ticketChatParent;
|
||||
/// <summary>
|
||||
/// Two children, first is left, second is right, only 1 TMP_Text inside each, which should be the message. enable left for customer support agent, enable right for player.
|
||||
/// </summary>
|
||||
public GameObject ticketChatItemPrefab;
|
||||
|
||||
public TMP_InputField inputField;
|
||||
public Button btnSend;
|
||||
|
||||
public Button newTicketBtn;
|
||||
public GameObject newTicketPanel;
|
||||
public RectTransform ticketReasonListParent;
|
||||
/// <summary>
|
||||
/// Item for the ticket reason list, a Toggle with a TMP_Text inside, which should be like "Reason 1", "Reason 2", "Reason 3", etc. Only 1 can be on. By default it will be all off, If all off, create Button should be interactable=false;
|
||||
/// </summary>
|
||||
public GameObject ticketReasonItemPrefab;
|
||||
public Button btnCreateTicket;
|
||||
public Button btnCancelTicket;
|
||||
|
||||
readonly List<SupportTicket> _tickets = new List<SupportTicket>();
|
||||
readonly List<Toggle> _reasonToggles = new List<Toggle>();
|
||||
readonly List<string> _reasonSlugs = new List<string>();
|
||||
|
||||
string _selectedTicketId;
|
||||
string _selectedCategorySlug;
|
||||
string _selectedCategoryLabel;
|
||||
Coroutine _pollRoutine;
|
||||
Coroutine _busyRoutine;
|
||||
bool _requestInFlight;
|
||||
bool _reasonsBuilt;
|
||||
ToggleGroup _reasonToggleGroup;
|
||||
|
||||
void Start()
|
||||
{
|
||||
if (btnFaq != null)
|
||||
btnFaq.onClick.AddListener(LaunchFAQ);
|
||||
if (btnTickets != null)
|
||||
btnTickets.onClick.AddListener(ShowTicketScreen);
|
||||
if (btnCloseHelp != null)
|
||||
btnCloseHelp.onClick.AddListener(CloseHelp);
|
||||
if (btnCloseTicket != null)
|
||||
btnCloseTicket.onClick.AddListener(ShowHelpScreen);
|
||||
if (btnSend != null)
|
||||
btnSend.onClick.AddListener(OnSendClicked);
|
||||
if (newTicketBtn != null)
|
||||
newTicketBtn.onClick.AddListener(OpenNewTicketPanel);
|
||||
if (btnCreateTicket != null)
|
||||
btnCreateTicket.onClick.AddListener(OnCreateTicketClicked);
|
||||
if (btnCancelTicket != null)
|
||||
btnCancelTicket.onClick.AddListener(CloseNewTicketPanel);
|
||||
|
||||
SetCanvasGroupVisible(helpScreen, true, false);
|
||||
SetCanvasGroupVisible(ticketScreen, false, false);
|
||||
ClearChatSelection();
|
||||
HideNewTicketPanel();
|
||||
EnsureReasonToggles();
|
||||
}
|
||||
|
||||
void OnDisable()
|
||||
{
|
||||
StopPoll();
|
||||
if (_busyRoutine != null)
|
||||
{
|
||||
StopCoroutine(_busyRoutine);
|
||||
_busyRoutine = null;
|
||||
}
|
||||
_requestInFlight = false;
|
||||
}
|
||||
|
||||
public void ShowHelpScreen()
|
||||
{
|
||||
StopPoll();
|
||||
ClearChatSelection();
|
||||
HideNewTicketPanel();
|
||||
SetCanvasGroupVisible(helpScreen, true, true);
|
||||
SetCanvasGroupVisible(ticketScreen, false, true);
|
||||
}
|
||||
|
||||
public void ShowTicketScreen()
|
||||
{
|
||||
HideNewTicketPanel();
|
||||
ClearChatSelection();
|
||||
SetCanvasGroupVisible(helpScreen, false, true);
|
||||
SetCanvasGroupVisible(ticketScreen, true, true);
|
||||
RunExclusive(RefreshTicketsFlow());
|
||||
}
|
||||
|
||||
void CloseHelp()
|
||||
{
|
||||
StopPoll();
|
||||
ClearChatSelection();
|
||||
HideNewTicketPanel();
|
||||
SetCanvasGroupVisible(helpScreen, false, true);
|
||||
SetCanvasGroupVisible(ticketScreen, false, true);
|
||||
gameObject.SetActive(false);
|
||||
}
|
||||
|
||||
void LaunchFAQ()
|
||||
{
|
||||
Application.OpenURL(faqUrl);
|
||||
}
|
||||
|
||||
void OpenNewTicketPanel()
|
||||
{
|
||||
EnsureReasonToggles();
|
||||
ResetReasonToggles();
|
||||
if (newTicketPanel != null)
|
||||
newTicketPanel.SetActive(true);
|
||||
UpdateCreateButtonInteractable();
|
||||
}
|
||||
|
||||
void CloseNewTicketPanel()
|
||||
{
|
||||
HideNewTicketPanel();
|
||||
}
|
||||
|
||||
void HideNewTicketPanel()
|
||||
{
|
||||
if (newTicketPanel != null)
|
||||
newTicketPanel.SetActive(false);
|
||||
ResetReasonToggles();
|
||||
}
|
||||
|
||||
void OnSendClicked()
|
||||
{
|
||||
if (_requestInFlight || string.IsNullOrEmpty(_selectedTicketId))
|
||||
return;
|
||||
|
||||
string body = inputField != null ? inputField.text.Trim() : "";
|
||||
if (string.IsNullOrEmpty(body))
|
||||
return;
|
||||
|
||||
RunExclusive(SendMessageFlow(body));
|
||||
}
|
||||
|
||||
void OnCreateTicketClicked()
|
||||
{
|
||||
if (_requestInFlight || string.IsNullOrEmpty(_selectedCategorySlug))
|
||||
return;
|
||||
|
||||
string body = _selectedCategorySlug == SupportClient.Category.Other
|
||||
? "Hi I need assistance"
|
||||
: "Hi, I need assistance with " + _selectedCategoryLabel;
|
||||
|
||||
RunExclusive(CreateTicketFlow(_selectedCategorySlug, body));
|
||||
}
|
||||
|
||||
IEnumerator RefreshTicketsFlow()
|
||||
{
|
||||
bool ok = false;
|
||||
yield return EnsureSupportAuth(r => ok = r);
|
||||
if (!ok)
|
||||
yield break;
|
||||
|
||||
SupportCallResult<SupportTicketListResponse> result = null;
|
||||
yield return SupportClient.ListTickets(r => result = r);
|
||||
if (result == null || !result.ok)
|
||||
{
|
||||
ShowError(result != null ? result.error : "Could not load tickets.");
|
||||
yield break;
|
||||
}
|
||||
|
||||
RebuildTicketList(result.data != null ? result.data.tickets : null);
|
||||
}
|
||||
|
||||
IEnumerator SendMessageFlow(string body)
|
||||
{
|
||||
bool ok = false;
|
||||
yield return EnsureSupportAuth(r => ok = r);
|
||||
if (!ok)
|
||||
yield break;
|
||||
|
||||
string ticketId = _selectedTicketId;
|
||||
SupportCallResult<SupportThread> result = null;
|
||||
yield return SupportClient.SendMessage(ticketId, body, r => result = r);
|
||||
if (result == null || !result.ok)
|
||||
{
|
||||
ShowError(result != null ? result.error : "Could not send message.");
|
||||
yield break;
|
||||
}
|
||||
|
||||
if (inputField != null)
|
||||
inputField.text = "";
|
||||
|
||||
ApplyThread(result.data);
|
||||
RefreshTicketPreviewFromThread(result.data);
|
||||
RebuildTicketListFromCache();
|
||||
}
|
||||
|
||||
IEnumerator CreateTicketFlow(string category, string body)
|
||||
{
|
||||
bool ok = false;
|
||||
yield return EnsureSupportAuth(r => ok = r);
|
||||
if (!ok)
|
||||
yield break;
|
||||
|
||||
SupportCallResult<SupportThread> result = null;
|
||||
yield return SupportClient.CreateTicket(category, body, r => result = r);
|
||||
if (result == null || !result.ok)
|
||||
{
|
||||
ShowError(result != null ? result.error : "Could not create ticket.");
|
||||
yield break;
|
||||
}
|
||||
|
||||
HideNewTicketPanel();
|
||||
|
||||
SupportCallResult<SupportTicketListResponse> list = null;
|
||||
yield return SupportClient.ListTickets(r => list = r);
|
||||
if (list != null && list.ok)
|
||||
RebuildTicketList(list.data != null ? list.data.tickets : null);
|
||||
else if (result.data != null && result.data.ticket != null)
|
||||
{
|
||||
_tickets.Clear();
|
||||
_tickets.Add(result.data.ticket);
|
||||
RebuildTicketListFromCache();
|
||||
}
|
||||
|
||||
if (result.data != null && result.data.ticket != null)
|
||||
SelectTicket(result.data.ticket.id, result.data);
|
||||
}
|
||||
|
||||
IEnumerator EnsureSupportAuth(Action<bool> done)
|
||||
{
|
||||
if (SupportClient.IsSignedIn)
|
||||
{
|
||||
done?.Invoke(true);
|
||||
yield break;
|
||||
}
|
||||
|
||||
string username = !string.IsNullOrEmpty(LoginManager.SessionUsername)
|
||||
? LoginManager.SessionUsername
|
||||
: (LoginManager.CurrentUser != null ? LoginManager.CurrentUser.username : null);
|
||||
string password = LoginManager.SessionPassword;
|
||||
Debug.Log("[CustomerSupport] support login as user='" + (username ?? "") +
|
||||
"' passwordLength=" + (password != null ? password.Length : 0));
|
||||
if (string.IsNullOrEmpty(username) || string.IsNullOrEmpty(password))
|
||||
{
|
||||
ShowError("Please sign in again to use customer support.");
|
||||
done?.Invoke(false);
|
||||
yield break;
|
||||
}
|
||||
|
||||
SupportCallResult<SupportLoginResponse> result = null;
|
||||
yield return SupportClient.Login(username, password, r => result = r);
|
||||
if (result == null || !result.ok)
|
||||
{
|
||||
ShowError(result != null ? result.error : "Support login failed.");
|
||||
done?.Invoke(false);
|
||||
yield break;
|
||||
}
|
||||
|
||||
done?.Invoke(true);
|
||||
}
|
||||
|
||||
IEnumerator PollSelectedTicket()
|
||||
{
|
||||
string ticketId = _selectedTicketId;
|
||||
if (string.IsNullOrEmpty(ticketId))
|
||||
yield break;
|
||||
|
||||
yield return SupportClient.PollThread(ticketId, PollIntervalSeconds, result =>
|
||||
{
|
||||
if (result == null || !result.ok)
|
||||
return;
|
||||
if (_selectedTicketId != ticketId)
|
||||
return;
|
||||
ApplyThread(result.data);
|
||||
RefreshTicketPreviewFromThread(result.data);
|
||||
});
|
||||
}
|
||||
|
||||
void SelectTicket(string ticketId, SupportThread initialThread = null)
|
||||
{
|
||||
if (string.IsNullOrEmpty(ticketId))
|
||||
return;
|
||||
|
||||
_selectedTicketId = ticketId;
|
||||
if (noChatSelectedTxt != null)
|
||||
noChatSelectedTxt.SetActive(false);
|
||||
SetChatInputVisible(true);
|
||||
|
||||
if (initialThread != null)
|
||||
ApplyThread(initialThread);
|
||||
else
|
||||
ClearChatMessages();
|
||||
|
||||
StopPoll();
|
||||
_pollRoutine = StartCoroutine(PollSelectedTicket());
|
||||
}
|
||||
|
||||
void ClearChatSelection()
|
||||
{
|
||||
StopPoll();
|
||||
_selectedTicketId = null;
|
||||
ClearChatMessages();
|
||||
if (noChatSelectedTxt != null)
|
||||
noChatSelectedTxt.SetActive(true);
|
||||
SetChatInputVisible(false);
|
||||
if (inputField != null)
|
||||
inputField.text = "";
|
||||
}
|
||||
|
||||
void SetChatInputVisible(bool visible)
|
||||
{
|
||||
if (inputField != null)
|
||||
inputField.gameObject.SetActive(visible);
|
||||
if (btnSend != null)
|
||||
btnSend.gameObject.SetActive(visible);
|
||||
}
|
||||
|
||||
void RebuildTicketList(SupportTicket[] tickets)
|
||||
{
|
||||
_tickets.Clear();
|
||||
if (tickets != null)
|
||||
{
|
||||
for (int i = 0; i < tickets.Length; i++)
|
||||
{
|
||||
if (tickets[i] != null)
|
||||
_tickets.Add(tickets[i]);
|
||||
}
|
||||
}
|
||||
|
||||
RebuildTicketListFromCache();
|
||||
}
|
||||
|
||||
void RebuildTicketListFromCache()
|
||||
{
|
||||
ClearChildren(ticketListParent);
|
||||
|
||||
UpdateOpenTicketTitle();
|
||||
|
||||
if (ticketListItemPrefab == null || ticketListParent == null)
|
||||
return;
|
||||
|
||||
for (int i = 0; i < _tickets.Count; i++)
|
||||
{
|
||||
SupportTicket ticket = _tickets[i];
|
||||
if (ticket == null)
|
||||
continue;
|
||||
|
||||
GameObject item = Instantiate(ticketListItemPrefab, ticketListParent);
|
||||
item.SetActive(true);
|
||||
|
||||
TMP_Text label = item.GetComponentInChildren<TMP_Text>(true);
|
||||
if (label != null)
|
||||
label.text = "Ticket #" + (i + 1).ToString("000");
|
||||
|
||||
Image image = item.GetComponent<Image>();
|
||||
if (image == null)
|
||||
image = item.GetComponentInChildren<Image>(true);
|
||||
if (image != null)
|
||||
{
|
||||
bool isOpen = ticket.status == SupportClient.Status.Open;
|
||||
Sprite sprite = isOpen ? spriteTicketOpen : spriteTicketClosed;
|
||||
if (sprite != null)
|
||||
image.sprite = sprite;
|
||||
}
|
||||
|
||||
Button button = item.GetComponent<Button>();
|
||||
if (button == null)
|
||||
button = item.GetComponentInChildren<Button>(true);
|
||||
if (button == null)
|
||||
{
|
||||
button = item.AddComponent<Button>();
|
||||
if (image != null)
|
||||
button.targetGraphic = image;
|
||||
}
|
||||
|
||||
string ticketId = ticket.id;
|
||||
button.onClick.RemoveAllListeners();
|
||||
button.onClick.AddListener(() => SelectTicket(ticketId));
|
||||
}
|
||||
}
|
||||
|
||||
void ApplyThread(SupportThread thread)
|
||||
{
|
||||
if (thread == null)
|
||||
return;
|
||||
|
||||
ClearChatMessages();
|
||||
if (ticketChatItemPrefab == null || ticketChatParent == null || thread.messages == null)
|
||||
return;
|
||||
|
||||
for (int i = 0; i < thread.messages.Length; i++)
|
||||
{
|
||||
SupportMessage message = thread.messages[i];
|
||||
if (message == null)
|
||||
continue;
|
||||
|
||||
GameObject item = Instantiate(ticketChatItemPrefab, ticketChatParent);
|
||||
item.SetActive(true);
|
||||
|
||||
bool isStaff = string.Equals(message.authorKind, SupportClient.AuthorKind.Staff, StringComparison.OrdinalIgnoreCase);
|
||||
Transform left = item.transform.childCount > 0 ? item.transform.GetChild(0) : null;
|
||||
Transform right = item.transform.childCount > 1 ? item.transform.GetChild(1) : null;
|
||||
|
||||
if (left != null)
|
||||
left.gameObject.SetActive(isStaff);
|
||||
if (right != null)
|
||||
right.gameObject.SetActive(!isStaff);
|
||||
|
||||
Transform activeSide = isStaff ? left : right;
|
||||
if (activeSide != null)
|
||||
{
|
||||
TMP_Text text = activeSide.GetComponentInChildren<TMP_Text>(true);
|
||||
if (text != null)
|
||||
text.text = message.body ?? "";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void ClearChatMessages()
|
||||
{
|
||||
ClearChildren(ticketChatParent);
|
||||
}
|
||||
|
||||
void RefreshTicketPreviewFromThread(SupportThread thread)
|
||||
{
|
||||
if (thread == null || thread.ticket == null || string.IsNullOrEmpty(thread.ticket.id))
|
||||
return;
|
||||
|
||||
bool found = false;
|
||||
for (int i = 0; i < _tickets.Count; i++)
|
||||
{
|
||||
if (_tickets[i] != null && _tickets[i].id == thread.ticket.id)
|
||||
{
|
||||
_tickets[i] = thread.ticket;
|
||||
found = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (!found)
|
||||
_tickets.Insert(0, thread.ticket);
|
||||
|
||||
UpdateOpenTicketTitle();
|
||||
}
|
||||
|
||||
void UpdateOpenTicketTitle()
|
||||
{
|
||||
if (txtTicketTitle == null)
|
||||
return;
|
||||
|
||||
int openCount = 0;
|
||||
for (int i = 0; i < _tickets.Count; i++)
|
||||
{
|
||||
if (_tickets[i] != null && _tickets[i].status == SupportClient.Status.Open)
|
||||
openCount++;
|
||||
}
|
||||
|
||||
txtTicketTitle.text = openCount == 0
|
||||
? "No open tickets"
|
||||
: openCount + (openCount == 1 ? " Open Ticket" : " Open Tickets");
|
||||
}
|
||||
|
||||
void EnsureReasonToggles()
|
||||
{
|
||||
if (_reasonsBuilt || ticketReasonListParent == null || ticketReasonItemPrefab == null)
|
||||
return;
|
||||
|
||||
_reasonsBuilt = true;
|
||||
ClearChildren(ticketReasonListParent);
|
||||
_reasonToggles.Clear();
|
||||
_reasonSlugs.Clear();
|
||||
|
||||
_reasonToggleGroup = ticketReasonListParent.GetComponent<ToggleGroup>();
|
||||
if (_reasonToggleGroup == null)
|
||||
_reasonToggleGroup = ticketReasonListParent.gameObject.AddComponent<ToggleGroup>();
|
||||
_reasonToggleGroup.allowSwitchOff = true;
|
||||
|
||||
for (int i = 0; i < Categories.Length; i++)
|
||||
{
|
||||
string slug = Categories[i].slug;
|
||||
string label = Categories[i].label;
|
||||
|
||||
GameObject item = Instantiate(ticketReasonItemPrefab, ticketReasonListParent);
|
||||
item.SetActive(true);
|
||||
|
||||
Toggle toggle = item.GetComponent<Toggle>();
|
||||
if (toggle == null)
|
||||
toggle = item.GetComponentInChildren<Toggle>(true);
|
||||
if (toggle == null)
|
||||
continue;
|
||||
|
||||
toggle.group = _reasonToggleGroup;
|
||||
toggle.isOn = false;
|
||||
toggle.onValueChanged.RemoveAllListeners();
|
||||
|
||||
TMP_Text text = item.GetComponentInChildren<TMP_Text>(true);
|
||||
if (text != null)
|
||||
text.text = label;
|
||||
|
||||
string capturedSlug = slug;
|
||||
string capturedLabel = label;
|
||||
toggle.onValueChanged.AddListener(isOn =>
|
||||
{
|
||||
if (isOn)
|
||||
{
|
||||
_selectedCategorySlug = capturedSlug;
|
||||
_selectedCategoryLabel = capturedLabel;
|
||||
}
|
||||
else if (_selectedCategorySlug == capturedSlug)
|
||||
{
|
||||
_selectedCategorySlug = null;
|
||||
_selectedCategoryLabel = null;
|
||||
}
|
||||
UpdateCreateButtonInteractable();
|
||||
});
|
||||
|
||||
_reasonToggles.Add(toggle);
|
||||
_reasonSlugs.Add(slug);
|
||||
}
|
||||
|
||||
UpdateCreateButtonInteractable();
|
||||
}
|
||||
|
||||
void ResetReasonToggles()
|
||||
{
|
||||
_selectedCategorySlug = null;
|
||||
_selectedCategoryLabel = null;
|
||||
for (int i = 0; i < _reasonToggles.Count; i++)
|
||||
{
|
||||
if (_reasonToggles[i] != null)
|
||||
_reasonToggles[i].SetIsOnWithoutNotify(false);
|
||||
}
|
||||
UpdateCreateButtonInteractable();
|
||||
}
|
||||
|
||||
void UpdateCreateButtonInteractable()
|
||||
{
|
||||
if (btnCreateTicket != null)
|
||||
btnCreateTicket.interactable = !_requestInFlight && !string.IsNullOrEmpty(_selectedCategorySlug);
|
||||
}
|
||||
|
||||
void RunExclusive(IEnumerator routine)
|
||||
{
|
||||
if (_requestInFlight)
|
||||
return;
|
||||
if (_busyRoutine != null)
|
||||
StopCoroutine(_busyRoutine);
|
||||
_busyRoutine = StartCoroutine(RunExclusiveCoroutine(routine));
|
||||
}
|
||||
|
||||
IEnumerator RunExclusiveCoroutine(IEnumerator routine)
|
||||
{
|
||||
_requestInFlight = true;
|
||||
SetBusyUi(true);
|
||||
try
|
||||
{
|
||||
yield return routine;
|
||||
}
|
||||
finally
|
||||
{
|
||||
_requestInFlight = false;
|
||||
_busyRoutine = null;
|
||||
SetBusyUi(false);
|
||||
}
|
||||
}
|
||||
|
||||
void SetBusyUi(bool busy)
|
||||
{
|
||||
if (btnSend != null)
|
||||
btnSend.interactable = !busy && !string.IsNullOrEmpty(_selectedTicketId);
|
||||
if (newTicketBtn != null)
|
||||
newTicketBtn.interactable = !busy;
|
||||
if (btnTickets != null)
|
||||
btnTickets.interactable = !busy;
|
||||
UpdateCreateButtonInteractable();
|
||||
if (busy && btnCreateTicket != null)
|
||||
btnCreateTicket.interactable = false;
|
||||
}
|
||||
|
||||
void StopPoll()
|
||||
{
|
||||
if (_pollRoutine != null)
|
||||
{
|
||||
StopCoroutine(_pollRoutine);
|
||||
_pollRoutine = null;
|
||||
}
|
||||
}
|
||||
|
||||
static void SetCanvasGroupVisible(CanvasGroup group, bool visible, bool animate)
|
||||
{
|
||||
if (group == null)
|
||||
return;
|
||||
|
||||
group.DOKill();
|
||||
group.blocksRaycasts = visible;
|
||||
group.interactable = visible;
|
||||
if (animate)
|
||||
group.DOFade(visible ? 1f : 0f, ScreenFadeSeconds);
|
||||
else
|
||||
group.alpha = visible ? 1f : 0f;
|
||||
}
|
||||
|
||||
static void ClearChildren(Transform parent)
|
||||
{
|
||||
if (parent == null)
|
||||
return;
|
||||
for (int i = parent.childCount - 1; i >= 0; i--)
|
||||
Destroy(parent.GetChild(i).gameObject);
|
||||
}
|
||||
|
||||
static void ShowError(string message)
|
||||
{
|
||||
if (string.IsNullOrEmpty(message))
|
||||
message = "Something went wrong. Please try again.";
|
||||
if (MessageBoxDialog.IsAvailable)
|
||||
MessageBoxDialog.ShowBasic(message);
|
||||
else
|
||||
Debug.LogWarning(message);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 3eb20b333998c3513aee8b47c7ebc472
|
||||
@@ -64,9 +64,16 @@ public class LoginManager : MonoBehaviour
|
||||
bool _appFocused = true;
|
||||
bool _handlingKeepaliveUnauthorized;
|
||||
string _pendingAuthMessage;
|
||||
string _pendingSessionPassword;
|
||||
|
||||
public static string AuthToken { get; private set; }
|
||||
|
||||
/// <summary>Username from the last successful login/register (memory only).</summary>
|
||||
public static string SessionUsername { get; private set; }
|
||||
|
||||
/// <summary>Game password kept in memory only after a successful login/register. Cleared on logout.</summary>
|
||||
public static string SessionPassword { get; private set; }
|
||||
|
||||
/// <summary>Assigned side from the matchmaker <c>your_team</c> field. <c>null</c> until a room is found or after clear.</summary>
|
||||
public static Team? MatchYourTeam { get; private set; }
|
||||
|
||||
@@ -175,6 +182,8 @@ public class LoginManager : MonoBehaviour
|
||||
// Dev: log in with clone-aware credentials instead of resuming a saved session.
|
||||
StopKeepalive();
|
||||
AuthToken = "";
|
||||
SessionUsername = "";
|
||||
SessionPassword = "";
|
||||
PlayerPrefs.DeleteKey(PlayerPrefsAuthKey);
|
||||
PlayerPrefs.Save();
|
||||
|
||||
@@ -185,6 +194,7 @@ public class LoginManager : MonoBehaviour
|
||||
if (passwordInputLogin != null) passwordInputLogin.text = devPass;
|
||||
|
||||
string loginJson = BuildLoginBody(devUser, devPass);
|
||||
// _pendingSessionPassword = devPass;
|
||||
// StartCoroutine(AuthPostCoroutine(AuthBaseUrl + "/auth/login", loginJson, "Signed in."));
|
||||
SetBusy(false);
|
||||
#else
|
||||
@@ -250,6 +260,8 @@ public class LoginManager : MonoBehaviour
|
||||
if (instance != null)
|
||||
instance.StopKeepalive();
|
||||
AuthToken = "";
|
||||
SessionUsername = "";
|
||||
SessionPassword = "";
|
||||
ClearLocalUserProfile();
|
||||
ClearMatchYourTeam();
|
||||
PlayerPrefs.DeleteKey(PlayerPrefsAuthKey);
|
||||
@@ -274,10 +286,13 @@ public class LoginManager : MonoBehaviour
|
||||
}
|
||||
|
||||
AuthToken = "";
|
||||
SessionUsername = "";
|
||||
SessionPassword = "";
|
||||
ClearLocalUserProfile();
|
||||
MainMenuManager.ClearCachedSettingsProfile();
|
||||
ClearMatchYourTeam();
|
||||
OnUserDataUpdated = null;
|
||||
SupportClient.ClearSession();
|
||||
Cupid.ClearSession();
|
||||
CupidLobby.ClearUsername();
|
||||
GameManager.ClearMatchSession();
|
||||
@@ -390,6 +405,7 @@ public class LoginManager : MonoBehaviour
|
||||
return;
|
||||
}
|
||||
|
||||
_pendingSessionPassword = password;
|
||||
StartCoroutine(AuthPostCoroutine(AuthBaseUrl + "/auth/login", BuildLoginBody(username, password), "Signed in."));
|
||||
}
|
||||
|
||||
@@ -427,6 +443,7 @@ public class LoginManager : MonoBehaviour
|
||||
return;
|
||||
}
|
||||
|
||||
_pendingSessionPassword = password;
|
||||
StartCoroutine(AuthPostCoroutine(AuthBaseUrl + "/auth/register", BuildRegisterBody(username, email, password), "Account created."));
|
||||
}
|
||||
|
||||
@@ -713,12 +730,16 @@ public class LoginManager : MonoBehaviour
|
||||
|
||||
if (profileOk)
|
||||
{
|
||||
SessionUsername = _currentUser != null ? _currentUser.username : "";
|
||||
SessionPassword = _pendingSessionPassword ?? "";
|
||||
_pendingSessionPassword = null;
|
||||
enteredMenu = true;
|
||||
StartKeepalive();
|
||||
ProceedToMainMenu();
|
||||
}
|
||||
else
|
||||
{
|
||||
_pendingSessionPassword = null;
|
||||
InvalidateStoredSession();
|
||||
ShowAuthMessage(string.IsNullOrEmpty(profileErr)
|
||||
? PlayerConnectionError
|
||||
@@ -727,6 +748,7 @@ public class LoginManager : MonoBehaviour
|
||||
}
|
||||
else
|
||||
{
|
||||
_pendingSessionPassword = null;
|
||||
string serverError = resp != null ? resp.error : null;
|
||||
if (string.IsNullOrEmpty(serverError) && resp != null && resp.code == AlreadyLoggedInCode)
|
||||
serverError = "Already logged in on another device";
|
||||
@@ -739,7 +761,10 @@ public class LoginManager : MonoBehaviour
|
||||
finally
|
||||
{
|
||||
if (!enteredMenu)
|
||||
{
|
||||
_pendingSessionPassword = null;
|
||||
SetBusy(false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -905,6 +930,8 @@ public class LoginManager : MonoBehaviour
|
||||
static void ApplyUserData(UserData u)
|
||||
{
|
||||
_currentUser = u;
|
||||
if (u != null)
|
||||
SupportClient.ClearSessionIfDifferentUser(u.username);
|
||||
OnUserDataUpdated?.Invoke(u);
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,546 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Text;
|
||||
using UnityEngine;
|
||||
using UnityEngine.Networking;
|
||||
|
||||
/// <summary>
|
||||
/// Player customer-support client for the admin server.
|
||||
/// Staff routes are not included.
|
||||
/// Call from any behaviour with <c>StartCoroutine</c>. Staff replies arrive when the game polls an open thread.
|
||||
/// </summary>
|
||||
public static class SupportClient
|
||||
{
|
||||
public const string DefaultBaseUrl = "https://kkadmin.playpoolstudios.com";
|
||||
public const int MaxMessageLength = 4000;
|
||||
|
||||
const string TokenPrefsKey = "WalkInvest.SupportPlayerToken";
|
||||
const string UserIdPrefsKey = "WalkInvest.SupportPlayerUserId";
|
||||
const string UsernamePrefsKey = "WalkInvest.SupportPlayerUsername";
|
||||
const string MessageLengthError = "Message must be between 1 and 4000 characters";
|
||||
const string PlayerConnectionError = "Please check your internet connection and try again.";
|
||||
const int RequestTimeoutSeconds = 20;
|
||||
|
||||
static readonly string[] CategorySlugs =
|
||||
{
|
||||
Category.Bug,
|
||||
Category.Cheating,
|
||||
Category.Withdrawal,
|
||||
Category.Crypto,
|
||||
Category.Other
|
||||
};
|
||||
|
||||
/// <summary>Admin server origin, with no trailing slash.</summary>
|
||||
public static string BaseUrl = DefaultBaseUrl;
|
||||
|
||||
static string _token;
|
||||
static int _userId;
|
||||
static string _username;
|
||||
static bool _loaded;
|
||||
|
||||
public static bool IsSignedIn
|
||||
{
|
||||
get
|
||||
{
|
||||
EnsureLoaded();
|
||||
return !string.IsNullOrEmpty(_token);
|
||||
}
|
||||
}
|
||||
|
||||
public static string Token
|
||||
{
|
||||
get
|
||||
{
|
||||
EnsureLoaded();
|
||||
return _token;
|
||||
}
|
||||
}
|
||||
|
||||
public static int UserId
|
||||
{
|
||||
get
|
||||
{
|
||||
EnsureLoaded();
|
||||
return _userId;
|
||||
}
|
||||
}
|
||||
|
||||
public static string Username
|
||||
{
|
||||
get
|
||||
{
|
||||
EnsureLoaded();
|
||||
return _username;
|
||||
}
|
||||
}
|
||||
|
||||
public static class Category
|
||||
{
|
||||
public const string Bug = "bug";
|
||||
public const string Cheating = "cheating";
|
||||
public const string Withdrawal = "withdrawal";
|
||||
public const string Crypto = "crypto";
|
||||
public const string Other = "other";
|
||||
}
|
||||
|
||||
public static class Status
|
||||
{
|
||||
public const string Open = "open";
|
||||
public const string Closed = "closed";
|
||||
}
|
||||
|
||||
public static class AuthorKind
|
||||
{
|
||||
public const string Player = "player";
|
||||
public const string Staff = "staff";
|
||||
}
|
||||
|
||||
public static bool IsCategory(string slug)
|
||||
{
|
||||
if (string.IsNullOrEmpty(slug))
|
||||
return false;
|
||||
for (int i = 0; i < CategorySlugs.Length; i++)
|
||||
{
|
||||
if (CategorySlugs[i] == slug)
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public static void ClearSession()
|
||||
{
|
||||
_loaded = true;
|
||||
_token = "";
|
||||
_userId = 0;
|
||||
_username = "";
|
||||
PlayerPrefs.DeleteKey(TokenPrefsKey);
|
||||
PlayerPrefs.DeleteKey(UserIdPrefsKey);
|
||||
PlayerPrefs.DeleteKey(UsernamePrefsKey);
|
||||
PlayerPrefs.Save();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Drops a stored support session that belongs to a different game username.
|
||||
/// </summary>
|
||||
public static void ClearSessionIfDifferentUser(string gameUsername)
|
||||
{
|
||||
EnsureLoaded();
|
||||
if (string.IsNullOrEmpty(_token) || string.IsNullOrEmpty(gameUsername))
|
||||
return;
|
||||
if (string.Equals(_username, gameUsername.Trim(), StringComparison.Ordinal))
|
||||
return;
|
||||
ClearSession();
|
||||
}
|
||||
|
||||
/// <summary>POST /api/support/player/login. Stores the bearer token for later calls.</summary>
|
||||
public static IEnumerator Login(string username, string password, Action<SupportCallResult<SupportLoginResponse>> onComplete)
|
||||
{
|
||||
var body = new LoginRequest
|
||||
{
|
||||
username = username != null ? username.Trim() : "",
|
||||
password = password ?? ""
|
||||
};
|
||||
string json = JsonUtility.ToJson(body);
|
||||
Debug.Log("[SupportClient] login user='" + body.username +
|
||||
"' passwordLength=" + body.password.Length);
|
||||
HttpOutcome http = null;
|
||||
yield return Request("POST", "/api/support/player/login", json, false, r => http = r);
|
||||
|
||||
SupportCallResult<SupportLoginResponse> result = ParseOk<SupportLoginResponse>(http);
|
||||
if (result.ok && (result.data == null || string.IsNullOrEmpty(result.data.token)))
|
||||
result = Fail<SupportLoginResponse>(http.statusCode, "Invalid response from server");
|
||||
|
||||
if (result.ok)
|
||||
StoreSession(result.data);
|
||||
|
||||
LogFailure("/api/support/player/login", result);
|
||||
onComplete?.Invoke(result);
|
||||
}
|
||||
|
||||
/// <summary>GET /api/support/player/tickets. Open tickets first, then newest message.</summary>
|
||||
public static IEnumerator ListTickets(Action<SupportCallResult<SupportTicketListResponse>> onComplete)
|
||||
{
|
||||
yield return SendAuthorized("/api/support/player/tickets", "GET", null, onComplete, NormalizeTickets);
|
||||
}
|
||||
|
||||
/// <summary>POST /api/support/player/tickets. Each call creates a new open ticket.</summary>
|
||||
public static IEnumerator CreateTicket(string category, string body, Action<SupportCallResult<SupportThread>> onComplete)
|
||||
{
|
||||
category = category != null ? category.Trim() : "";
|
||||
if (!IsCategory(category))
|
||||
{
|
||||
var invalid = Fail<SupportThread>(400, "Invalid category");
|
||||
LogFailure("/api/support/player/tickets", invalid);
|
||||
onComplete?.Invoke(invalid);
|
||||
yield break;
|
||||
}
|
||||
|
||||
body = body != null ? body.Trim() : "";
|
||||
if (!IsMessageLengthValid(body))
|
||||
{
|
||||
var invalid = Fail<SupportThread>(400, MessageLengthError);
|
||||
LogFailure("/api/support/player/tickets", invalid);
|
||||
onComplete?.Invoke(invalid);
|
||||
yield break;
|
||||
}
|
||||
|
||||
string json = JsonUtility.ToJson(new CreateTicketRequest { category = category, body = body });
|
||||
yield return SendAuthorized("/api/support/player/tickets", "POST", json, onComplete, NormalizeThread);
|
||||
}
|
||||
|
||||
/// <summary>GET /api/support/player/tickets/{ticketId}. Messages are oldest first.</summary>
|
||||
public static IEnumerator GetThread(string ticketId, Action<SupportCallResult<SupportThread>> onComplete)
|
||||
{
|
||||
if (!TryTicketPath(ticketId, "", out string path, out SupportCallResult<SupportThread> invalid))
|
||||
{
|
||||
LogFailure("/api/support/player/tickets/{ticketId}", invalid);
|
||||
onComplete?.Invoke(invalid);
|
||||
yield break;
|
||||
}
|
||||
|
||||
yield return SendAuthorized(path, "GET", null, onComplete, NormalizeThread);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// POST /api/support/player/tickets/{ticketId}/messages.
|
||||
/// A player message on a closed ticket reopens it.
|
||||
/// </summary>
|
||||
public static IEnumerator SendMessage(string ticketId, string body, Action<SupportCallResult<SupportThread>> onComplete)
|
||||
{
|
||||
if (!TryTicketPath(ticketId, "/messages", out string path, out SupportCallResult<SupportThread> invalid))
|
||||
{
|
||||
LogFailure("/api/support/player/tickets/{ticketId}/messages", invalid);
|
||||
onComplete?.Invoke(invalid);
|
||||
yield break;
|
||||
}
|
||||
|
||||
body = body != null ? body.Trim() : "";
|
||||
if (!IsMessageLengthValid(body))
|
||||
{
|
||||
invalid = Fail<SupportThread>(400, MessageLengthError);
|
||||
LogFailure(path, invalid);
|
||||
onComplete?.Invoke(invalid);
|
||||
yield break;
|
||||
}
|
||||
|
||||
string json = JsonUtility.ToJson(new MessageRequest { body = body });
|
||||
yield return SendAuthorized(path, "POST", json, onComplete, NormalizeThread);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Reads a thread immediately, then again after each interval, until the coroutine is stopped or the token is rejected.
|
||||
/// </summary>
|
||||
public static IEnumerator PollThread(string ticketId, float intervalSeconds, Action<SupportCallResult<SupportThread>> onResult)
|
||||
{
|
||||
if (intervalSeconds <= 0f)
|
||||
intervalSeconds = 5f;
|
||||
|
||||
while (true)
|
||||
{
|
||||
SupportCallResult<SupportThread> result = null;
|
||||
yield return GetThread(ticketId, r => result = r);
|
||||
onResult?.Invoke(result);
|
||||
if (result != null && (result.statusCode == 400 || result.statusCode == 401 || result.statusCode == 404))
|
||||
yield break;
|
||||
yield return new WaitForSecondsRealtime(intervalSeconds);
|
||||
}
|
||||
}
|
||||
|
||||
static IEnumerator SendAuthorized<T>(
|
||||
string path,
|
||||
string method,
|
||||
string json,
|
||||
Action<SupportCallResult<T>> onComplete,
|
||||
Action<T> normalize) where T : class
|
||||
{
|
||||
HttpOutcome http = null;
|
||||
yield return Request(method, path, json, true, r => http = r);
|
||||
if (http != null && http.statusCode == 401 && IsSignedIn)
|
||||
ClearSession();
|
||||
|
||||
SupportCallResult<T> result = ParseOk<T>(http);
|
||||
if (result.ok && result.data != null)
|
||||
normalize?.Invoke(result.data);
|
||||
|
||||
LogFailure(path, result);
|
||||
onComplete?.Invoke(result);
|
||||
}
|
||||
|
||||
static IEnumerator Request(string method, string path, string json, bool authorize, Action<HttpOutcome> done)
|
||||
{
|
||||
if (authorize && string.IsNullOrEmpty(Token))
|
||||
{
|
||||
done?.Invoke(new HttpOutcome
|
||||
{
|
||||
statusCode = 401,
|
||||
body = "{\"error\":\"Unauthorized\"}"
|
||||
});
|
||||
yield break;
|
||||
}
|
||||
|
||||
string url = RootUrl() + path;
|
||||
Debug.Log("[SupportClient] " + method + " " + url);
|
||||
using (var request = new UnityWebRequest(url, method))
|
||||
{
|
||||
request.downloadHandler = new DownloadHandlerBuffer();
|
||||
request.timeout = RequestTimeoutSeconds;
|
||||
if (method == UnityWebRequest.kHttpVerbPOST)
|
||||
{
|
||||
byte[] raw = Encoding.UTF8.GetBytes(json ?? "{}");
|
||||
request.uploadHandler = new UploadHandlerRaw(raw);
|
||||
request.SetRequestHeader("Content-Type", "application/json");
|
||||
}
|
||||
|
||||
if (authorize)
|
||||
request.SetRequestHeader("Authorization", "Bearer " + Token);
|
||||
|
||||
yield return request.SendWebRequest();
|
||||
|
||||
string text = "";
|
||||
try
|
||||
{
|
||||
text = request.downloadHandler != null ? request.downloadHandler.text ?? "" : "";
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
Logger.Log("Support response unreadable: " + e.Message);
|
||||
}
|
||||
|
||||
if (request.responseCode == 0)
|
||||
{
|
||||
Debug.LogWarning("[SupportClient] failed " + method + " " + url + " — " +
|
||||
(string.IsNullOrEmpty(request.error) ? "network error" : request.error));
|
||||
done?.Invoke(new HttpOutcome { statusCode = 0, transportError = PlayerConnectionError });
|
||||
yield break;
|
||||
}
|
||||
|
||||
done?.Invoke(new HttpOutcome { statusCode = request.responseCode, body = text });
|
||||
}
|
||||
}
|
||||
|
||||
static SupportCallResult<T> ParseOk<T>(HttpOutcome http) where T : class
|
||||
{
|
||||
if (http == null)
|
||||
return Fail<T>(0, PlayerConnectionError);
|
||||
if (!string.IsNullOrEmpty(http.transportError))
|
||||
return Fail<T>(http.statusCode, http.transportError);
|
||||
|
||||
if (http.statusCode < 200 || http.statusCode >= 300)
|
||||
{
|
||||
SupportErrorBody err = TryParse<SupportErrorBody>(http.body);
|
||||
int retry = http.statusCode == 429 && err != null ? err.retryAfterSeconds : 0;
|
||||
string message = err != null && !string.IsNullOrEmpty(err.error)
|
||||
? err.error
|
||||
: FallbackError(http.statusCode);
|
||||
return Fail<T>(http.statusCode, message, retry);
|
||||
}
|
||||
|
||||
T data = TryParse<T>(http.body);
|
||||
if (data == null)
|
||||
return Fail<T>(http.statusCode, "Invalid response from server");
|
||||
|
||||
return new SupportCallResult<T>
|
||||
{
|
||||
ok = true,
|
||||
statusCode = http.statusCode,
|
||||
data = data
|
||||
};
|
||||
}
|
||||
|
||||
static SupportCallResult<T> Fail<T>(long statusCode, string error, int retryAfterSeconds = 0)
|
||||
{
|
||||
return new SupportCallResult<T>
|
||||
{
|
||||
ok = false,
|
||||
statusCode = statusCode,
|
||||
error = error,
|
||||
retryAfterSeconds = retryAfterSeconds
|
||||
};
|
||||
}
|
||||
|
||||
static T TryParse<T>(string json) where T : class
|
||||
{
|
||||
if (string.IsNullOrEmpty(json))
|
||||
return null;
|
||||
try
|
||||
{
|
||||
return JsonUtility.FromJson<T>(json);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
Logger.Log("Support JSON error: " + e.Message);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
static string FallbackError(long statusCode)
|
||||
{
|
||||
if (statusCode == 401)
|
||||
return "Unauthorized";
|
||||
if (statusCode == 503)
|
||||
return "Support is unavailable. Please try again later.";
|
||||
return "Something went wrong. Please try again.";
|
||||
}
|
||||
|
||||
static bool IsMessageLengthValid(string body)
|
||||
{
|
||||
return body != null && body.Length >= 1 && body.Length <= MaxMessageLength;
|
||||
}
|
||||
|
||||
static bool TryTicketPath(string ticketId, string suffix, out string path, out SupportCallResult<SupportThread> error)
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(ticketId))
|
||||
{
|
||||
path = null;
|
||||
error = Fail<SupportThread>(400, "Invalid ticket id");
|
||||
return false;
|
||||
}
|
||||
|
||||
path = "/api/support/player/tickets/" + UnityWebRequest.EscapeURL(ticketId.Trim()) + suffix;
|
||||
error = null;
|
||||
return true;
|
||||
}
|
||||
|
||||
static void NormalizeTickets(SupportTicketListResponse list)
|
||||
{
|
||||
if (list != null && list.tickets == null)
|
||||
list.tickets = Array.Empty<SupportTicket>();
|
||||
}
|
||||
|
||||
static void NormalizeThread(SupportThread thread)
|
||||
{
|
||||
if (thread != null && thread.messages == null)
|
||||
thread.messages = Array.Empty<SupportMessage>();
|
||||
}
|
||||
|
||||
static void StoreSession(SupportLoginResponse login)
|
||||
{
|
||||
_loaded = true;
|
||||
_token = login.token;
|
||||
_userId = login.user != null ? login.user.id : 0;
|
||||
_username = login.user != null ? login.user.username : "";
|
||||
PlayerPrefs.SetString(TokenPrefsKey, _token);
|
||||
PlayerPrefs.SetInt(UserIdPrefsKey, _userId);
|
||||
PlayerPrefs.SetString(UsernamePrefsKey, _username ?? "");
|
||||
PlayerPrefs.Save();
|
||||
}
|
||||
|
||||
static void EnsureLoaded()
|
||||
{
|
||||
if (_loaded)
|
||||
return;
|
||||
_loaded = true;
|
||||
_token = PlayerPrefs.GetString(TokenPrefsKey, "");
|
||||
_userId = PlayerPrefs.GetInt(UserIdPrefsKey, 0);
|
||||
_username = PlayerPrefs.GetString(UsernamePrefsKey, "");
|
||||
}
|
||||
|
||||
static string RootUrl()
|
||||
{
|
||||
string root = string.IsNullOrWhiteSpace(BaseUrl) ? DefaultBaseUrl : BaseUrl.Trim();
|
||||
return root.TrimEnd('/');
|
||||
}
|
||||
|
||||
static void LogFailure<T>(string path, SupportCallResult<T> result)
|
||||
{
|
||||
if (result == null || result.ok)
|
||||
return;
|
||||
Logger.Log("Support " + path + " failed (" + result.statusCode + "): " + result.error);
|
||||
}
|
||||
|
||||
class HttpOutcome
|
||||
{
|
||||
public long statusCode;
|
||||
public string body;
|
||||
public string transportError;
|
||||
}
|
||||
|
||||
[Serializable]
|
||||
public class LoginRequest
|
||||
{
|
||||
public string username;
|
||||
public string password;
|
||||
}
|
||||
|
||||
[Serializable]
|
||||
public class CreateTicketRequest
|
||||
{
|
||||
public string category;
|
||||
public string body;
|
||||
}
|
||||
|
||||
[Serializable]
|
||||
public class MessageRequest
|
||||
{
|
||||
public string body;
|
||||
}
|
||||
|
||||
[Serializable]
|
||||
public class SupportErrorBody
|
||||
{
|
||||
public string error;
|
||||
public int retryAfterSeconds;
|
||||
}
|
||||
}
|
||||
|
||||
public class SupportCallResult<T>
|
||||
{
|
||||
public bool ok;
|
||||
public long statusCode;
|
||||
public string error;
|
||||
public int retryAfterSeconds;
|
||||
public T data;
|
||||
}
|
||||
|
||||
[Serializable]
|
||||
public class SupportLoginResponse
|
||||
{
|
||||
public string token;
|
||||
public SupportPlayer user;
|
||||
}
|
||||
|
||||
[Serializable]
|
||||
public class SupportPlayer
|
||||
{
|
||||
public int id;
|
||||
public string username;
|
||||
}
|
||||
|
||||
[Serializable]
|
||||
public class SupportTicket
|
||||
{
|
||||
public string id;
|
||||
public int userId;
|
||||
public string username;
|
||||
public string category;
|
||||
public string categoryLabel;
|
||||
public string status;
|
||||
public string createdAt;
|
||||
public string updatedAt;
|
||||
public string lastMessageAt;
|
||||
public string lastMessagePreview;
|
||||
}
|
||||
|
||||
[Serializable]
|
||||
public class SupportMessage
|
||||
{
|
||||
public string id;
|
||||
public string ticketId;
|
||||
public string authorKind;
|
||||
public string authorName;
|
||||
public string body;
|
||||
public string createdAt;
|
||||
}
|
||||
|
||||
[Serializable]
|
||||
public class SupportThread
|
||||
{
|
||||
public SupportTicket ticket;
|
||||
public SupportMessage[] messages;
|
||||
}
|
||||
|
||||
[Serializable]
|
||||
public class SupportTicketListResponse
|
||||
{
|
||||
public SupportTicket[] tickets;
|
||||
}
|
||||
@@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: dbf9a007712b0ed92bb464442dd7f8b3
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 12 KiB |
@@ -0,0 +1,182 @@
|
||||
fileFormatVersion: 2
|
||||
guid: f6a23a8d0f872b9bfbf4c720cc5ab6f1
|
||||
TextureImporter:
|
||||
internalIDToNameTable:
|
||||
- first:
|
||||
213: 1249877939505449902
|
||||
second: cust_sup_0
|
||||
- first:
|
||||
213: -155184681247666284
|
||||
second: cust_sup_1
|
||||
externalObjects: {}
|
||||
serializedVersion: 13
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 0
|
||||
sRGBTexture: 1
|
||||
linearTexture: 0
|
||||
fadeOut: 0
|
||||
borderMipMap: 0
|
||||
mipMapsPreserveCoverage: 0
|
||||
alphaTestReferenceValue: 0.5
|
||||
mipMapFadeDistanceStart: 1
|
||||
mipMapFadeDistanceEnd: 3
|
||||
bumpmap:
|
||||
convertToNormalMap: 0
|
||||
externalNormalMap: 0
|
||||
heightScale: 0.25
|
||||
normalMapFilter: 0
|
||||
flipGreenChannel: 0
|
||||
isReadable: 0
|
||||
streamingMipmaps: 0
|
||||
streamingMipmapsPriority: 0
|
||||
vTOnly: 0
|
||||
ignoreMipmapLimit: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 6
|
||||
cubemapConvolution: 0
|
||||
seamlessCubemap: 0
|
||||
textureFormat: 1
|
||||
maxTextureSize: 2048
|
||||
textureSettings:
|
||||
serializedVersion: 2
|
||||
filterMode: 1
|
||||
aniso: 1
|
||||
mipBias: 0
|
||||
wrapU: 1
|
||||
wrapV: 1
|
||||
wrapW: 1
|
||||
nPOTScale: 0
|
||||
lightmap: 0
|
||||
compressionQuality: 50
|
||||
spriteMode: 1
|
||||
spriteExtrude: 1
|
||||
spriteMeshType: 1
|
||||
alignment: 0
|
||||
spritePivot: {x: 0.5, y: 0.5}
|
||||
spritePixelsToUnits: 100
|
||||
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
||||
spriteGenerateFallbackPhysicsShape: 1
|
||||
alphaUsage: 1
|
||||
alphaIsTransparency: 1
|
||||
spriteTessellationDetail: -1
|
||||
textureType: 8
|
||||
textureShape: 1
|
||||
singleChannelComponent: 0
|
||||
flipbookRows: 1
|
||||
flipbookColumns: 1
|
||||
maxTextureSizeSet: 0
|
||||
compressionQualitySet: 0
|
||||
textureFormatSet: 0
|
||||
ignorePngGamma: 0
|
||||
applyGammaDecoding: 0
|
||||
swizzle: 50462976
|
||||
cookieLightType: 0
|
||||
platformSettings:
|
||||
- serializedVersion: 4
|
||||
buildTarget: DefaultTexturePlatform
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
ignorePlatformSupport: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 4
|
||||
buildTarget: Standalone
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
ignorePlatformSupport: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 4
|
||||
buildTarget: Android
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
ignorePlatformSupport: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites:
|
||||
- serializedVersion: 2
|
||||
name: cust_sup_0
|
||||
rect:
|
||||
serializedVersion: 2
|
||||
x: 76
|
||||
y: 24
|
||||
width: 360
|
||||
height: 418
|
||||
alignment: 0
|
||||
pivot: {x: 0, y: 0}
|
||||
border: {x: 0, y: 0, z: 0, w: 0}
|
||||
customData:
|
||||
outline: []
|
||||
physicsShape: []
|
||||
tessellationDetail: -1
|
||||
bones: []
|
||||
spriteID: eabc1d42d55785110800000000000000
|
||||
internalID: 1249877939505449902
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
weights: []
|
||||
- serializedVersion: 2
|
||||
name: cust_sup_1
|
||||
rect:
|
||||
serializedVersion: 2
|
||||
x: 96
|
||||
y: 226
|
||||
width: 320
|
||||
height: 262
|
||||
alignment: 0
|
||||
pivot: {x: 0, y: 0}
|
||||
border: {x: 0, y: 0, z: 0, w: 0}
|
||||
customData:
|
||||
outline: []
|
||||
physicsShape: []
|
||||
tessellationDetail: -1
|
||||
bones: []
|
||||
spriteID: 49f86a7ca5ca8ddf0800000000000000
|
||||
internalID: -155184681247666284
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
weights: []
|
||||
outline: []
|
||||
customData:
|
||||
physicsShape: []
|
||||
bones: []
|
||||
spriteID: 5e97eb03825dee720800000000000000
|
||||
internalID: 0
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
weights: []
|
||||
secondaryTextures: []
|
||||
spriteCustomMetadata:
|
||||
entries: []
|
||||
nameFileIdTable:
|
||||
cust_sup_0: 1249877939505449902
|
||||
cust_sup_1: -155184681247666284
|
||||
mipmapLimitGroupName:
|
||||
pSDRemoveMatte: 0
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
Reference in New Issue
Block a user