diff --git a/Assets/BGDataBase/bansheegz_database.bytes b/Assets/BGDataBase/bansheegz_database.bytes index 256daa4..7743b65 100644 Binary files a/Assets/BGDataBase/bansheegz_database.bytes and b/Assets/BGDataBase/bansheegz_database.bytes differ diff --git a/Assets/Scenes/Main.unity b/Assets/Scenes/Main.unity index 3006acc..8d8a6bf 100644 --- a/Assets/Scenes/Main.unity +++ b/Assets/Scenes/Main.unity @@ -5332,8 +5332,8 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 1, y: 1} - m_AnchoredPosition: {x: 0, y: -11.69} - m_SizeDelta: {x: 0, y: -479.75} + m_AnchoredPosition: {x: 0, y: -50.76} + m_SizeDelta: {x: 0, y: -557.9} m_Pivot: {x: 0.5, y: 0.5} --- !u!114 &37784574 MonoBehaviour: @@ -13270,6 +13270,44 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 257565703} m_CullTransparentMesh: 1 +--- !u!1 &264014380 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 264014381} + m_Layer: 5 + m_Name: AlbumType + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &264014381 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 264014380} + 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: 2115985145} + - {fileID: 506914502} + - {fileID: 1297051184} + m_Father: {fileID: 726633383} + 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: 3.06, y: -114.33} + m_SizeDelta: {x: 498.96, y: 101.53} + m_Pivot: {x: 0.5, y: 0.5} --- !u!1 &265543179 GameObject: m_ObjectHideFlags: 0 @@ -36615,6 +36653,138 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 506455296} m_CullTransparentMesh: 1 +--- !u!1 &506914501 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 506914502} + - component: {fileID: 506914505} + - component: {fileID: 506914504} + - component: {fileID: 506914503} + m_Layer: 5 + m_Name: btn_left + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &506914502 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 506914501} + 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: 264014381} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.5} + m_AnchorMax: {x: 0, y: 0.5} + m_AnchoredPosition: {x: 31.6, y: 0} + m_SizeDelta: {x: 90, y: 90} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &506914503 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 506914501} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 506914504} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1535761048} + m_TargetAssemblyTypeName: + m_MethodName: + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 +--- !u!114 &506914504 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 506914501} + 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: 64cc73f1b28e8884ba355c0cb01034b3, 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!222 &506914505 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 506914501} + m_CullTransparentMesh: 1 --- !u!1 &509214193 GameObject: m_ObjectHideFlags: 0 @@ -44064,6 +44234,7 @@ RectTransform: m_ConstrainProportionsScale: 0 m_Children: - {fileID: 281679011} + - {fileID: 264014381} m_Father: {fileID: 1535761049} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 1} @@ -78397,6 +78568,138 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1294863010} m_CullTransparentMesh: 1 +--- !u!1 &1297051183 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1297051184} + - component: {fileID: 1297051187} + - component: {fileID: 1297051186} + - component: {fileID: 1297051185} + m_Layer: 5 + m_Name: btn_right + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1297051184 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1297051183} + 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: 264014381} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 1, y: 0.5} + m_AnchorMax: {x: 1, y: 0.5} + m_AnchoredPosition: {x: -31.6, y: 0} + m_SizeDelta: {x: 90, y: 90} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1297051185 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1297051183} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 1297051186} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1535761048} + m_TargetAssemblyTypeName: + m_MethodName: + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 +--- !u!114 &1297051186 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1297051183} + 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: 64cc73f1b28e8884ba355c0cb01034b3, 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!222 &1297051187 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1297051183} + m_CullTransparentMesh: 1 --- !u!1 &1299200114 GameObject: m_ObjectHideFlags: 0 @@ -101051,9 +101354,9 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 927f127287890ae46b433715f57e8c3a, type: 3} m_Name: m_EditorClassIdentifier: - SlotPrefab: {fileID: 1075369012538214656, guid: 63a9cbea0069cea4ca146a6deecc4279, type: 3} - EmptySlotPrefab: {fileID: 7410697389645852299, guid: 6f427dbbb09cdcc4c996d920328a4647, type: 3} - Content: {fileID: 612821334} + m_ScrollRect: {fileID: 37784574} + m_Content: {fileID: 0} + go_card: {fileID: 1075369012538214656, guid: 63a9cbea0069cea4ca146a6deecc4279, type: 3} TitleTMP: {fileID: 281679012} Buttons: - {fileID: 2088694187} @@ -170927,6 +171230,142 @@ ParticleSystem: m_PostInfinity: 2 m_RotationOrder: 4 vectorLabel1_3: W +--- !u!1 &2115985144 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2115985145} + - component: {fileID: 2115985147} + - component: {fileID: 2115985146} + m_Layer: 5 + m_Name: t_albumtype + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2115985145 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2115985144} + 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: 264014381} + 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: 200, y: 50} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &2115985146 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2115985144} + 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: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_text: "\uD310\uD0C0\uC9C0" + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: cf1ae75e65a967946b23286a5ffbb812, type: 2} + m_sharedMaterial: {fileID: 2100000, guid: 1cd9f54883d04fa4a8273aaf06ef64e9, 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: 90 + m_fontSizeBase: 90 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 2 + m_VerticalAlignment: 4096 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_TextWrappingMode: 0 + 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!222 &2115985147 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2115985144} + m_CullTransparentMesh: 1 --- !u!1 &2119992376 GameObject: m_ObjectHideFlags: 0 diff --git a/Assets/Scripts/Data/BGCodeGen.cs b/Assets/Scripts/Data/BGCodeGen.cs index 8b609a2..95baf38 100644 --- a/Assets/Scripts/Data/BGCodeGen.cs +++ b/Assets/Scripts/Data/BGCodeGen.cs @@ -28,6 +28,8 @@ public partial class DB_HuntingData : BGEntity public const string ClearConditionMoney = "ClearConditionMoney"; public const string Name = "Name"; public const string Description = "Description"; + public const string BuyPrice = "BuyPrice"; + public const string n_AlbumType = "n_AlbumType"; } private static BansheeGz.BGDatabase.BGMetaRow _metaDefault; public static BansheeGz.BGDatabase.BGMetaRow MetaDefault => _metaDefault ?? (_metaDefault = BGCodeGenUtils.GetMeta(new BGId(5596441023656399567UL,15076767032258538916UL), () => _metaDefault = null)); @@ -61,6 +63,16 @@ public partial class DB_HuntingData : BGEntity get => _DBF_Description[Index]; set => _DBF_Description[Index] = value; } + public System.Int32 DBF_BuyPrice + { + get => _DBF_BuyPrice[Index]; + set => _DBF_BuyPrice[Index] = value; + } + public System.Int32 DBF_n_AlbumType + { + get => _DBF_n_AlbumType[Index]; + set => _DBF_n_AlbumType[Index] = value; + } private static BansheeGz.BGDatabase.BGFieldEntityName _ufle12jhs77_DBF_name; public static BansheeGz.BGDatabase.BGFieldEntityName _DBF_name => _ufle12jhs77_DBF_name ?? (_ufle12jhs77_DBF_name = BGCodeGenUtils.GetField(MetaDefault, new BGId(4847030112262966783UL, 17507168723429622181UL), () => _ufle12jhs77_DBF_name = null)); private static BansheeGz.BGDatabase.BGFieldUnitySprite _ufle12jhs77_DBF_HuntingImage; @@ -77,6 +89,10 @@ public partial class DB_HuntingData : BGEntity public static BansheeGz.BGDatabase.BGFieldString _DBF_Name => _ufle12jhs77_DBF_Name ?? (_ufle12jhs77_DBF_Name = BGCodeGenUtils.GetField(MetaDefault, new BGId(5618959453113093320UL, 13927985292163229361UL), () => _ufle12jhs77_DBF_Name = null)); private static BansheeGz.BGDatabase.BGFieldString _ufle12jhs77_DBF_Description; public static BansheeGz.BGDatabase.BGFieldString _DBF_Description => _ufle12jhs77_DBF_Description ?? (_ufle12jhs77_DBF_Description = BGCodeGenUtils.GetField(MetaDefault, new BGId(4722429003445808783UL, 13878556420686707390UL), () => _ufle12jhs77_DBF_Description = null)); + private static BansheeGz.BGDatabase.BGFieldInt _ufle12jhs77_DBF_BuyPrice; + public static BansheeGz.BGDatabase.BGFieldInt _DBF_BuyPrice => _ufle12jhs77_DBF_BuyPrice ?? (_ufle12jhs77_DBF_BuyPrice = BGCodeGenUtils.GetField(MetaDefault, new BGId(4847726788656022279UL, 11553665224223930517UL), () => _ufle12jhs77_DBF_BuyPrice = null)); + private static BansheeGz.BGDatabase.BGFieldInt _ufle12jhs77_DBF_n_AlbumType; + public static BansheeGz.BGDatabase.BGFieldInt _DBF_n_AlbumType => _ufle12jhs77_DBF_n_AlbumType ?? (_ufle12jhs77_DBF_n_AlbumType = BGCodeGenUtils.GetField(MetaDefault, new BGId(5125684997853971800UL, 2820862331281249426UL), () => _ufle12jhs77_DBF_n_AlbumType = null)); private static readonly DB_HuntingData.Factory _factory0_PFS = new DB_HuntingData.Factory(); private static readonly DB_Script.Factory _factory1_PFS = new DB_Script.Factory(); private static readonly DB_HuntingListData.Factory _factory2_PFS = new DB_HuntingListData.Factory(); diff --git a/Assets/Scripts/My.meta b/Assets/Scripts/My.meta new file mode 100644 index 0000000..cee7e02 --- /dev/null +++ b/Assets/Scripts/My.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: da3459deaeab8a842a6c08bbd406cd75 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/My/CardBase.cs b/Assets/Scripts/My/CardBase.cs new file mode 100644 index 0000000..55a02a5 --- /dev/null +++ b/Assets/Scripts/My/CardBase.cs @@ -0,0 +1,25 @@ +using UnityEngine; + +public enum eUICardType { None, UI, NoTouch, } + +public class CardBase : MonoBehaviour +{ + public virtual void Set() { Set_Active(); } + public virtual void Set(int _val) { Set_Active(); } + public virtual void Set(T _base, int iLoop = -1, int idata = -1) { Set_Active(); } + void Set_Active() + { + if (!gameObject.activeInHierarchy) + gameObject.SetActive(true); + } + public virtual void Set_UI() { } + + public virtual void Set_Selected(bool active) { } + + public virtual int Get_IntData() { return 0; } + + protected eUICardType CardType = eUICardType.None; + public virtual void Set_CardType(eUICardType _type) { CardType = _type; } + public virtual void Set_CardEffectOrder(int _order) { } + public virtual void Do_SomeThing() { } +} \ No newline at end of file diff --git a/Assets/Scripts/My/CardBase.cs.meta b/Assets/Scripts/My/CardBase.cs.meta new file mode 100644 index 0000000..1afd8db --- /dev/null +++ b/Assets/Scripts/My/CardBase.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: e91267fe89fec60419860c3f85338c01 \ No newline at end of file diff --git a/Assets/Scripts/My/DSUtil.cs b/Assets/Scripts/My/DSUtil.cs new file mode 100644 index 0000000..cc1de71 --- /dev/null +++ b/Assets/Scripts/My/DSUtil.cs @@ -0,0 +1,991 @@ +using UnityEngine; +using System; +using System.Text; +using System.Collections.Generic; +using System.Linq; +using System.Diagnostics; +using System.Security.Cryptography; +using System.Runtime.Serialization.Formatters.Binary; +using System.IO; +using System.Text.RegularExpressions; +using System.Reflection; +using Random = UnityEngine.Random; +using UnityEngine.AI; + + + + +#if UNITY_EDITOR +using UnityEditor; +#endif + +public delegate void VoidDelegate(); + +public static partial class DSUtil +{ + // -------------------------------------------------------------------- + // 로그 관련 함수 + // String객체 + private static StringBuilder m_strBuilder = new StringBuilder(1024); + public static StringBuilder DSString + { + get + { + m_strBuilder.Remove(0, m_strBuilder.Length); + return m_strBuilder; + } + } + + // String조립 + public static string Format(string strMessage, params object[] args) + { + StringBuilder strBuilder = DSString; + strBuilder.AppendFormat(strMessage, args); + return strBuilder.ToString(); + } + // 로그 : 에러 + public static void LogError(string strMessage, params object[] args) + { + Verify(false, Format(strMessage, args)); + } + + // 로그 : 워닝 + public static void LogWarning(string strMessage, params object[] args) + { +#if UNITY_EDITOR + UnityEngine.Debug.LogWarning(Format(strMessage, args)); +#endif + } + + // 로그 : 일반 + public static void Log(string strMessage, params object[] args) + { +#if UNITY_EDITOR + UnityEngine.Debug.Log(Format(strMessage, args)); +#endif + } + + // 서버로그 : 에러값 + public static void LogErrorToServer(int iErrorCode, string strMessage = "") + { + string strErrorMessage = string.Empty; + switch (iErrorCode) + { + // MAP_CONST[5] = "Http 프로토콜 에러"; + // TimeOut 도 포함. + case 5: + //strErrorMessage = "Timed Out.. Please Retry.."; + strErrorMessage = "시간이 초과되었습니다. 다시 시도해주세요."; + break; + + default: + break; + } + + // 메시지가 있으면 덮어 씀. + if (false == string.IsNullOrEmpty(strMessage)) + { + strErrorMessage = strMessage; + } + + DSUtil.LogError(strErrorMessage); + } + + // 예외 : try-Catch문에서 예외전달메시지 + public static System.ArgumentException GetExceptionMsg(string strMessage, params object[] args) + { + return new System.ArgumentException(Format(strMessage, args)); + } + + // 예외 : 에러로그와 리턴값을 하나로 묶음( EX : return ErrorReturn(false, "{0} 예외야!!", "나쁜"); ) + public static T ErrorReturn(T tReturnValue, string strMessage, params object[] args) + { + LogError(strMessage, args); + return tReturnValue; + } + + // 정보 : 콜스택을 얻습니다. + public static StackFrame[] GetCallStack() + { + StackTrace stackTrace = new StackTrace(); + return stackTrace.GetFrames(); + } + + + // -------------------------------------------------------------------- + // 형 변환 관련 + // 형변환 : String을 Enum으로 + // Enum.Parse 엄청느립니다. 가급적 사용금지!!! + public static T FormatStringToEnum(string _strTypeName, params object[] args) + { + return StringToEnum(Format(_strTypeName, args)); + } + public static T StringToEnum(string _strTypeName) + { + _strTypeName = _strTypeName.Replace(" ", ""); + if (true == string.IsNullOrEmpty(_strTypeName) || false == Enum.IsDefined(typeof(T), _strTypeName)) + { + LogWarning("[Not Defined " + typeof(T) + " ] " + _strTypeName); + return default(T); + } + + return (T)Enum.Parse(typeof(T), _strTypeName); + } + + public static T CheerSoundStringToEnum(string _strTypeName) + { + _strTypeName = _strTypeName.Replace(" ", ""); + if (true == string.IsNullOrEmpty(_strTypeName) || false == Enum.IsDefined(typeof(T), _strTypeName)) + return default(T); + + return (T)Enum.Parse(typeof(T), _strTypeName); + } + + // 형변환 : String을 Enum으로 + // Enum.Parse 엄청느립니다. 가급적 사용금지!!! + public static T StringToEnum(string strEnum, string strErrorLog) + { + strEnum = strEnum.Replace(" ", ""); + if (true == string.IsNullOrEmpty(strEnum) || false == Enum.IsDefined(typeof(T), strEnum)) + { + LogError("{0}(Enum:{1})", strErrorLog, strEnum); + } + + // 없는 Enum이면 크래시되도록 놔두자!! + return (T)Enum.Parse(typeof(T), strEnum); + } + + // 형변환 : Object을 String으로 + public static string ObjectToString(System.Object _cObject) + { + if (_cObject == null) + return null; + + var binaryFormatter = new BinaryFormatter(); + var memoryStream = new MemoryStream(); + binaryFormatter.Serialize(memoryStream, _cObject); + + return Convert.ToBase64String(memoryStream.GetBuffer()); + } + + // 형변환 : String을 Object로 + public static System.Object StringToObject(string _strValue) + { + if (true == string.IsNullOrEmpty(_strValue)) + return null; + + var binaryFormatter = new BinaryFormatter(); + var memoryStream = new MemoryStream(Convert.FromBase64String(_strValue)); + System.Object obj = binaryFormatter.Deserialize(memoryStream); + + return obj; + } + + + // -------------------------------------------------------------------- + // 컨테이너 관련 + // Foreach : Enum + public static void ForeachToEnum(Action pLambda) + { + foreach (T eEnum in Enum.GetValues(typeof(T))) + pLambda(eEnum); + } + + // Foreach : List + public static void ForeachToList(List list, Action pLambda) + { + if (null == list) + return; + + foreach (T tList in list) + pLambda(tList); + } + + // Foreach : List + public static void ForeachToListOfBreak(List list, bool bBreakCondition, Func pLambda) + { + if (null == list) + return; + + foreach (T tList in list) + { + if (bBreakCondition == pLambda(tList)) + break; + } + } + + // Foreach Dictionary + public static void ForeachToDic(Dictionary dic, Action pLambda) + { + if (null == dic) + return; + + foreach (KeyValuePair kvp in dic) + pLambda(kvp.Key, kvp.Value); + } + + + + //------------------------------------------------------------------------- + // FirstKey + // if (.NET 3.5) return dic.Keys.First(); + public static Key FirstKey(Dictionary dic, Key defaultVal) + { + foreach (var pair in dic) + return pair.Key; + return defaultVal; + } + + // dictionary 램덤키 뽑는다. + public static Key RandomKey(Dictionary dic, Key defaultVal) + { + if (null == dic) + return defaultVal; + + if (0 == dic.Count) + return defaultVal; + + System.Random rand = new System.Random(); + var listKey = dic.ToList()[rand.Next(0, dic.Count)]; + return listKey.Key; + } + + //------------------------------------------------------------------------- + // test_code + public static void TestRandomTrue() + { + List list = new List(); + var p = 0.3f; + for (int i = 0; i < 1000; i++) + list.Add(DSUtil.RandomTrue(p)); + + var countTrue = list.Count(e => e == true); + var countTotal = list.Count(); + var ratio = (float)countTrue / (float)countTotal; + Log(" RandomTrue(" + p + "); " + + "result ratio [" + ratio + "], " + + "true count [" + countTrue + "], " + + "total count [" + countTotal + "]"); + } + + + //------------------------------------------------------------------------- + // RandomTrue + // 확률 P% 이하로 true 리턴. (단, 100% == 1.0f) + public static bool RandomTrue(float p) + { + // 유니티 랜덤함수 직접 사용[blueasa / 2014-10-30] + return p > UnityEngine.Random.Range(0f, 1f); + } + + public static bool RandomFalse(float p) + { + // 유니티 랜덤함수 직접 사용[blueasa / 2014-10-30] + return RandomTrue(1.0f - p); + } + + public static bool RandomTrue(double p) + { + // 유니티 랜덤함수 직접 사용[blueasa / 2014-10-30] + return p > UnityEngine.Random.Range(0f, 1f); + } + + + //------------------------------------------------------------------------- + // RandomW + // 가중치에 따라 랜덤하게 원소 선택 + public static T RandomW(List values, List weights) + { + if ((null == values) || (0 == values.Count)) + return default(T); + + if ((null == weights) || (0 == weights.Count)) + return RandomN(values); + + // ex: weights = { 0.1, 0.3, 0.6}; + + // assert(weight.Sum > 0); + var subsums = new List(weights.Count); + + var sum = weights.Aggregate(0.0f, (acc, f) => + { acc += f; subsums.Add(acc); return acc; }); + // ex : subsums = {0.1, 0.4, 1.0}, sum = 1.0 + + var r = UnityEngine.Random.Range(0.0f, sum); + // ex : r = 0.35 + + var index = subsums.FindIndex(f => (r < f)); + // ex : index = 1 + + // 2017. 08. 29. 정인호. 크래쉬 리포트(ArgumentOutOfRangeException: Argument is out of range.)에 의해 로그 추가 + if (values.Count <= index || index < 0) + { + string valuesvalue = ""; + for (int iLoop = 0; iLoop < values.Count; ++iLoop) + valuesvalue += values[iLoop] + ", "; + string weightsvalue = ""; + for (int iLoop = 0; iLoop < weights.Count; ++iLoop) + weightsvalue += weights[iLoop] + ", "; + Assert(false, Format("DSUtil RandomW Error : values : {0}, weights : {1}, index : {2}, ", valuesvalue, weightsvalue, index)); + } + + return values[index]; + } + + + //------------------------------------------------------------------------- + // RandomOneW + // 가중치에 따라 랜덤하게 원소 선택 ( 무조건 하나는 선택되도록 ) + // 가중치를 정규화해서 합이 1인 값으로 만들고, 의미없는 원소는 제거하여 RandomW처리 + public static T RandomOneW(List values, List weights) + { + if ((null == values) || (0 == values.Count)) + return default(T); + + if ((null == weights) || (0 == weights.Count)) + return RandomN(values); + + // 전체 가중치 합 + float fSum = 0.0f; + foreach (float fValue in weights) + fSum += fValue; + + // 예외처리 : 가중치 합이 0이면 선택할 원소가 없다... + if (0.0f == fSum) + return default(T); + + // 데이터 복사용 변수 + List CopyValues = new List(); + List CopyWeights = new List(); + + // 가중치 정규화하면서 필요없는 원소는 제거 + for (int iLoop = 0; iLoop < weights.Count; ++iLoop) + { + if (0.0f == weights[iLoop]) + continue; + + CopyValues.Add(values[iLoop]); + CopyWeights.Add(weights[iLoop] / fSum); + } + + return RandomW(CopyValues, CopyWeights); + } + + + //------------------------------------------------------------------------- + // RandomN + // RandomW 와 스팩은 동일하나, 모든 원소의 가중치가 동일한 경우로 제한함. + public static T RandomN(List values) + { + if ((null == values) || (0 == values.Count)) + return default(T); + + var index = (int)UnityEngine.Random.Range(0.0f, values.Count); + if (index == values.Count) + index = values.Count - 1; + return values[index]; + } + + //------------------------------------------------------------------------- + // RandomRange + // int일 경우, Max값도 나오도록 하기 위해 Max + 1을 함. + public static int RandomRange(int _iMin, int _iMax) + { + if (_iMin == _iMax) return _iMin; + return UnityEngine.Random.Range(_iMin, _iMax + 1); + } + public static float RandomRange(float _fMin, float _fMax) + { + if (_fMin == _fMax) return _fMin; + return UnityEngine.Random.Range(_fMin, _fMax); + } + public static Vector3 RandomVector(float fMin, float fMax) + { + return RandomVector(fMin, fMax, fMin, fMax, fMin, fMax); + } + public static Vector3 RandomVector(float fMinX, float fMaxX, float fMinY, float fMaxY, float fMinZ, float fMaxZ) + { + return new Vector3(RandomRange(fMinX, fMaxX), RandomRange(fMinY, fMaxY), RandomRange(fMinZ, fMaxZ)); + } + public static Vector3 RandomVector_Exception_y(float minX, float maxX, float y, float minZ, float maxZ) + { + return new Vector3(RandomRange(minX, maxX), y, RandomRange(minZ, maxZ)); + } + + //------------------------------------------------------------------------- + // + public static List RandomIndex(int _iCount) + { + List listResult = new List(); + List listCount = new List(); + + for (int i = 0; i < _iCount; i++) + listCount.Add(i); + + while (0 < listCount.Count) + { + int iRand = UnityEngine.Random.Range(0, listCount.Count); + listResult.Add(listCount[iRand]); + listCount.RemoveAt(iRand); + } + + return listResult; + } + + //======================================================================== + // 폴링 함수 getter 를 이용해 이벤트 드리븐 함수 onChange 를 호출 + // prev - 이전값 + // getter - 폴링함수. + // onChange := Action - 이벤트 함수. + public static void PollingToEvent(float prev, Func getter, Action onChange) + { + // 값이 변했는지 검사. 다를 때만 호출 + var current = getter(); + if (prev != current) + onChange(prev, current); + } + + + /// + /// GUID + /// + /// + public static string GetGUID() + { + System.Guid uid = System.Guid.NewGuid(); + return uid.ToString(); + } + + /// + /// UUID(이걸 사용) + /// + /// + public static string GetUUID() + { + return SystemInfo.deviceUniqueIdentifier; + } + + // 프리팹에 Component가 Missing된 것이 있는지 체크 + public static void CheckMissingComponent() + { + UnityEngine.Object[] pObjects = Resources.FindObjectsOfTypeAll(typeof(GameObject)); + foreach (UnityEngine.Object pObject in pObjects) + { + GameObject pGameObject = pObject as GameObject; + if (null == pGameObject) + continue; + + Component[] pComponents = pGameObject.GetComponents(); + foreach (Component pComponent in pComponents) + { + if (null == pComponent) + DSUtil.LogError("MissingComponent!!(GameObject{0})", pObject.name); + } + } + } + + // 유니티 에디터의 Pause를 Toggle합니다. + public static void EditorPauseOfToggle(bool bToggle) + { +#if UNITY_EDITOR + EditorApplication.isPaused = bToggle; +#endif + } + + public static void ContainsDictionary(Dictionary dicContainer, TKey tKey) + { + if (false == dicContainer.ContainsKey(tKey)) + dicContainer[tKey] = default(TValue); + } + + // 클래스 Null체크 + /* + * null for classes + * null (empty) for Nullable + * zero/false/etc for other structs + */ + public static bool IsNull(T value) + { + if (EqualityComparer.Default.Equals(value, default(T))) + return true; + + return false; + } + + /* + *Assert 관련 + */ + public static void Assert(bool condition) + { + // if (Debug.isDebugBuild && !condition) throw new Exception(); + if (!condition) throw new Exception(); + } + + public static void Assert(bool condition, string log) + { + // if (Debug.isDebugBuild && !condition) { + // Debug.Log (log); + // throw new Exception (); + // } + if (!condition) + { + UnityEngine.Debug.LogError(log); + throw new Exception(); + } + } + + public static void Assert(bool condition, string strMessage, params object[] args) + { + // if (Debug.isDebugBuild && !condition) { + // Debug.Log (Format (strMessage, args)); + // throw new Exception (); + // } + if (!condition) + { + UnityEngine.Debug.Log(Format(strMessage, args)); + throw new Exception(); + } + } + + public static void Verify(bool condition) + { + if (!condition) + { + //EditorPauseOfToggle (true); + } + } + + public static void Verify(bool condition, string log) + { + if (!condition) + { + UnityEngine.Debug.LogError(log); + //EditorPauseOfToggle (true); + } + } + + public static void Verify(bool condition, string strMessage, params object[] args) + { + if (!condition) + { + UnityEngine.Debug.LogError(Format(strMessage, args)); + //EditorPauseOfToggle (true); + } + } + + public static void Search(string strPath, Action pCallBack) + { + DirectoryInfo pDirInfo = new DirectoryInfo(strPath); + SearchFiles(pDirInfo, pCallBack); + SearchDirs(pDirInfo, pCallBack); + } + + static void SearchDirs(DirectoryInfo pDirInfo, Action pCallBack) + { + DirectoryInfo[] pDirs = pDirInfo.GetDirectories(); + foreach (DirectoryInfo pDir in pDirs) + { + SearchFiles(pDir, pCallBack); + SearchDirs(pDir, pCallBack); + } + } + + static void SearchFiles(DirectoryInfo pDirInfo, Action pCallBack) + { + FileInfo[] pFiles = pDirInfo.GetFiles(); + foreach (FileInfo pFile in pFiles) + { + pCallBack(pFile); + } + } + + public static string Encrypt(string toEncrypt, string key = "12345678901234567890123456789012") /*key limit 32byte 12345678901234567890123456789012*/ + { + byte[] keyArray = UTF8Encoding.UTF8.GetBytes(key); + byte[] toEncryptArray = UTF8Encoding.UTF8.GetBytes(toEncrypt); + RijndaelManaged rDel = new RijndaelManaged(); + rDel.Key = keyArray; + rDel.Mode = CipherMode.ECB; + rDel.Padding = PaddingMode.PKCS7; + ICryptoTransform cTransform = rDel.CreateEncryptor(); + byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length); + return Convert.ToBase64String(resultArray, 0, resultArray.Length); + } + public static string Decrypt(string toDecrypt, string key = "12345678901234567890123456789012") /*key limit 32byte 12345678901234567890123456789012*/ + { + byte[] keyArray = UTF8Encoding.UTF8.GetBytes(key); + byte[] toEncryptArray = Convert.FromBase64String(toDecrypt); + RijndaelManaged rDel = new RijndaelManaged(); + rDel.Key = keyArray; + rDel.Mode = CipherMode.ECB; + rDel.Padding = PaddingMode.PKCS7; + ICryptoTransform cTransform = rDel.CreateDecryptor(); + byte[] resultArray = cTransform.TransformFinalBlock(toEncryptArray, 0, toEncryptArray.Length); + return UTF8Encoding.UTF8.GetString(resultArray); + } + + public static void Activate(GameObject _goTarget, bool _bActive) + { + if (null != _goTarget) + { + _goTarget.SetActive(_bActive); + } + } + + public static void ActivateGameObjects(GameObject[] _gos, int _inactiveIndex = -1) + { + for (int iLoop = 0; iLoop < _gos.Length; ++iLoop) + { + if (_gos[iLoop] != null) + _gos[iLoop].SetActive(true); + } + if (_inactiveIndex > -1 && _gos[_inactiveIndex] != null) + _gos[_inactiveIndex].SetActive(false); + } + + public static void InActivateGameObjects(GameObject[] _gos, int _activeIndex = -1) + { + for (int iLoop = 0; iLoop < _gos.Length; ++iLoop) + { + if (_gos[iLoop] != null) + _gos[iLoop].SetActive(false); + } + if (_activeIndex > -1 && _gos[_activeIndex] != null) + _gos[_activeIndex].SetActive(true); + } + + public static void ActivateCollider(BoxCollider _collider, bool _bActive) + { + if (null != _collider) + { + _collider.enabled = _bActive; + } + } + + private static Stopwatch m_cStopwatch = new Stopwatch(); + public static void StartStopWatch() + { + m_cStopwatch.Reset(); + m_cStopwatch.Start(); + } + + public static TimeSpan StopStopWatch(bool debugtime) + { + m_cStopwatch.Stop(); + if (debugtime) Log("{0}", m_cStopwatch.Elapsed); + return m_cStopwatch.Elapsed; + } + + public static int GetNumberLen(int iNum) + { + return iNum.ToString().Length; + } + + public static void Quit() + { +#if UNITY_EDITOR + EditorApplication.isPlaying = false; +#else + Application.Quit(); +#endif + } + + /// + /// 문자열에서 한글만 얻기 + /// + /// + /// + public static string GetStringOnlyKorean(string _strText) + { + return Regex.Replace(_strText, @"[^가-힣]", ""); + } + + /// + /// 문자열에서 영어만 얻기 + /// + /// + /// + public static string GetStringOnlyEnglish(string _strText) + { + return Regex.Replace(_strText, @"[^a-zA-Z]", ""); + } + + /// + /// 텍스트의 문자열이 영어 대소문자/숫자/한글인지 체크하는 정규식 + /// + /// 체크할 텍스트 + /// 유효 여부 + public static bool IsValidString(string _strText) + { + string strPattern = @"^[a-zA-Z0-9가-힣]*$"; + return Regex.IsMatch(_strText, strPattern); + } + + /// + /// int -> 세자리마다 콤마가 있는 숫자 + /// + public static string GetThousandCommaText(double data, bool _incluePercent = false) + { + if (_incluePercent) return Format("{0:#,##0}%", data); + else return Format("{0:#,##0}", data); + } + public static string GetCommaText_N2(double data) + { + return Format("{0:#,##0.##}", data); + } + public static string GetCommaText_N4(double data) + { + return Format("{0:#,##0.####}", data); + } + + /// + /// 00:00:00 형식 + /// + public static string Get_TimeText_HMS(DateTime _dt) { return Format("{0:00}:{1:00}:{2:00}", _dt.Hour, _dt.Minute, _dt.Second); } + public static string Get_TimeText_HMS(TimeSpan _ts) { return Format("{0:00}:{1:00}:{2:00}", _ts.Hours, _ts.Minutes, _ts.Seconds); } + public static string Get_TimeText_MS(TimeSpan _ts) { return Format("{0:00}:{1:00}", _ts.Minutes, _ts.Seconds); } + public static string Get_TimeText_HMS(bool _text, double _totalseconds) + { + if (_text) + return Format("{0:00}시간 {1:00}분 {2:00}초", _totalseconds / 60 / 60, _totalseconds / 60 % 60, _totalseconds % 60); + return Format("{0:00}:{1:00}:{2:00}", _totalseconds / 60 / 60, _totalseconds / 60 % 60, _totalseconds % 60); + } + public static string Get_TimeText_HM(double _totalminutes) { return Format("{0:00}:{1:00}", (int)(_totalminutes / 60), (int)(_totalminutes % 60)); } + public static string Get_TimeText_MS(double _totalseconds) { return Format("{0:00}:{1:00}", (int)(_totalseconds / 60), (int)(_totalseconds % 60)); } + public static string Get_TimeText_MSms(double _tick) + { + var min = (int)(_tick / 60); + var sec = (int)(_tick % 60); + float ms = ((float)_tick - (int)_tick) * 100f; + return Format("{0:00}분 {1:00}초 {2:00}", min, sec, Mathf.Approximately(ms, 100f) ? 0 : ms); + } + + public static bool IsUnityObjectDestroyed(object target) + { + if ((target is UnityEngine.Object) == false) + return false; + + if ((target is UnityEngine.Object) && (target.Equals(null)) == true) + return true; + + return false; + } + public static bool IsActionUnityObjectDestroyed(object target, MethodInfo method) + { + if (target == null && method == null) + return true; + + if (IsUnityObjectDestroyed(target)) + return true; + + return false; + } + public static bool IsActionUnityObjectDestroyed(Action action) + { + if (action == null) + return true; + return IsActionUnityObjectDestroyed(action.Target, action.Method); + } + + public static bool IsActionUnityObjectDestroyed(Action action) + { + if (action == null) + return true; + return IsActionUnityObjectDestroyed(action.Target, action.Method); + } + + public static bool IsActionUnityObjectDestroyed(Action action) + { + if (action == null) + return true; + return IsActionUnityObjectDestroyed(action.Target, action.Method); + } + + public static void Set_Transform_withParent(Transform _tf, Transform _parent, Vector3? _pos = null, Vector3? _scale = null) + { + _tf.SetParent(_parent); + _tf.localPosition = _pos == null ? Vector3.zero : (Vector3)_pos; + _tf.localScale = _scale == null ? Vector3.one : (Vector3)_scale; + _tf.localRotation = Quaternion.identity; + } + + public static GameObject Get_Clone(string _path, Transform _parent = null, Vector3? _pos = null, Vector3? _scale = null) + { + var temp = GameObject.Instantiate(Resources.Load(_path)) as GameObject; + Set_Transform_withParent(temp.transform, _parent, _pos, _scale); + return temp; + } + public static GameObject Get_Clone(GameObject _obj, Transform _parent = null, Vector3? _pos = null, Vector3? _scale = null) + { + var temp = GameObject.Instantiate(_obj); + Set_Transform_withParent(temp.transform, _parent, _pos, _scale); + return temp; + } + public static T Get_Clone(GameObject _obj, Transform _parent = null, Vector3? _pos = null, Vector3? _scale = null) + { + var temp = GameObject.Instantiate(_obj); + Set_Transform_withParent(temp.transform, _parent, _pos, _scale); + return temp.GetComponent(); + } + public static T Get_Clone(string _path, Transform _parent = null, Vector3? _pos = null, Vector3? _scale = null) + { + var res = Resources.Load(_path); + if (res == null) UnityEngine.Debug.Log(Format("no exist res : {0}", _path)); + return Get_Clone(res as GameObject, _parent, _pos, _scale); + } + + public static bool Check_ObjectInMainCamera(Transform _target) + { + var screenP = Camera.main.WorldToViewportPoint(_target.position); + return screenP.z > 0 && screenP.x > 0 && screenP.x < 1 && screenP.y > 0 && screenP.y < 1; + } + + //public static DateTime Get_NextWeekMonday() + //{ + // DateTime NextWeek; + // switch (ServerInfo.ServerTime.DayOfWeek) + // { + // case DayOfWeek.Monday: NextWeek = ServerInfo.ServerTime.AddDays(7); break; + // case DayOfWeek.Tuesday: NextWeek = ServerInfo.ServerTime.AddDays(6); break; + // case DayOfWeek.Wednesday: NextWeek = ServerInfo.ServerTime.AddDays(5); break; + // case DayOfWeek.Thursday: NextWeek = ServerInfo.ServerTime.AddDays(4); break; + // case DayOfWeek.Friday: NextWeek = ServerInfo.ServerTime.AddDays(3); break; + // case DayOfWeek.Saturday: NextWeek = ServerInfo.ServerTime.AddDays(2); break; + // default: NextWeek = ServerInfo.ServerTime.AddDays(1); break; + // } + // return new DateTime(NextWeek.Year, NextWeek.Month, NextWeek.Day); + //} + + public static void ChangeLayersRecursively(Transform trans, string name) + { + trans.gameObject.layer = LayerMask.NameToLayer(name); + foreach (Transform child in trans) + { + ChangeLayersRecursively(child, name); + } + } + + public static Vector3 StringToVector3(string str) + { + string[] s = str.Split(','); + return new Vector3(float.Parse(s[0]), float.Parse(s[1]), float.Parse(s[2])); + } + + public static int Get_RandomIndex(List probs) where T : struct, IConvertible + { + float total = 0f; + foreach (var p in probs) + total += Convert.ToSingle(p); + + float randomPoint = Random.value * total; + + for (int i = 0; i < probs.Count; i++) + { + float val = Convert.ToSingle(probs[i]); + if (randomPoint < val) + return i; + randomPoint -= val; + } + return probs.Count - 1; + } + + public static Vector3 Get_RandomPos_onNavMesh(Vector3 origin, float minradius = 0f, float maxradius = 3f, int _trycount = 50) + { + // Set the parameters for the NavMesh.SamplePosition method + NavMeshHit hit; + Vector3 randomPoint = origin; + int maxTries = _trycount; + int currentTry = 0; + minradius = Math.Max(0f, minradius); + + // Try to find a random location on the NavMesh + while (currentTry < maxTries) + { + Vector3 randomDirection = Random.insideUnitSphere * maxradius; + randomDirection += origin; + NavMesh.SamplePosition(randomDirection, out hit, maxradius, NavMesh.AllAreas); + + // If a valid location is found, check if it is reachable and far enough + if (hit.hit && Vector3.Distance(origin, hit.position) >= minradius) + { + NavMeshPath path = new NavMeshPath(); + if (NavMesh.CalculatePath(origin, hit.position, NavMesh.AllAreas, path)) + { + // If a path can be found, return the random location + randomPoint = hit.position; + break; + } + } + currentTry++; + } + + // Return the random reachable location on the NavMesh + return randomPoint; + } + public static bool IsValidPos_onNaveMesh(Vector3 pos, float maxDistance = 0f) + { + NavMeshHit hit; + // maxDistance 안에서 pos에 가장 가까운 NavMesh 위치 찾기 + if (NavMesh.SamplePosition(pos, out hit, maxDistance, NavMesh.AllAreas)) + { + // 유효한 위치가 있고 너무 멀리 떨어지지 않았으면 true + return true; + } + return false; + } + + public static bool CheckNull(UnityEngine.Object obj) + { + return ReferenceEquals(obj, null) || obj.Equals(null); + } + public static bool CheckNull(object obj) + { + return ReferenceEquals(obj, null); + } + + public static float Get_SliderValue(float f) { return float.IsNaN(f) ? 0f : f; } + + public static bool WithInDistance(Vector3 a, Vector3 b, float dist) { return Get_Distance(a, b) <= dist * dist; } + public static float Get_Distance(Vector3 a, Vector3 b) { return (a - b).sqrMagnitude; } +} + +public class NumberFormatter +{ + // 알파벳 시작값 (a = 97 in ASCII) + private const char startChar = 'a'; + + public static string FormatNumber(double number) + { + if (number < 1000) + return number.ToString("0.##"); // 1,000 미만은 그냥 숫자로 반환 + + int suffixIndex = 0; + while (number >= 1000) + { + number /= 1000; + suffixIndex++; + } + + // 소수점 두 자리까지 표시하고, 알파벳 단위 추가 (suffixIndex에 따라 동적 알파벳 생성) + char suffix = (char)(startChar + (suffixIndex - 1)); + return $"{number:F2}{suffix}"; + } +} + +public struct ErrorString +{ + public string error; + public ErrorString(string str){error=str;} +}; + +public class DSTime_HMS +{ + public int m_Hour, m_Min, m_Sec; + + public DSTime_HMS(int _second) + { + m_Hour = _second / 3600; + m_Min = _second % 3600 / 60; + m_Sec = _second % 3600 % 60; + } +} \ No newline at end of file diff --git a/Assets/Scripts/My/DSUtil.cs.meta b/Assets/Scripts/My/DSUtil.cs.meta new file mode 100644 index 0000000..9c7a835 --- /dev/null +++ b/Assets/Scripts/My/DSUtil.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 35140a898f557944ba21099fda14b30f \ No newline at end of file diff --git a/Assets/Scripts/My/uScrollViewMgr.cs b/Assets/Scripts/My/uScrollViewMgr.cs new file mode 100644 index 0000000..a05cd75 --- /dev/null +++ b/Assets/Scripts/My/uScrollViewMgr.cs @@ -0,0 +1,83 @@ +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.UI; + +public class uScrollViewMgr : MonoBehaviour +{ + public ScrollRect m_ScrollRect; + public GameObject m_Content; + public GameObject go_card; + + protected List list_CardBase = new List(); + protected RectTransform contentRt; + + protected CardBase m_SelectCard; + + void Awake() + { + Init(); + } + + protected virtual void Init() + { + if (DSUtil.CheckNull(contentRt)) + { + if (m_ScrollRect) + contentRt = m_ScrollRect.content; + else if (m_Content) + contentRt = m_Content.GetComponent(); + } + } + + protected void CardBase_AllOff() + { + for (int i = 0; i < list_CardBase.Count; i++) + list_CardBase[i].gameObject.SetActive(false); + } + + CardBase MakeCard(int i) + { + CardBase temp; + if (list_CardBase.Count > i) temp = list_CardBase[i]; + else + { + temp = DSUtil.Get_Clone(go_card, contentRt); + list_CardBase.Add(temp); + } + return temp; + } + + protected virtual void Set_ScrollView(List _lst, int idata = -1) + { + Init(); + CardBase_AllOff(); + + for (int i = 0; i < _lst.Count; i++) + MakeCard(i).Set(_lst[i], i, idata); + } + protected virtual void Set_ScrollView_NotSet(int _makecount) + { + Init(); + for (int i = 0; i < _makecount; i++) + { + if (list_CardBase.Count > i) { } + else list_CardBase.Add(DSUtil.Get_Clone(go_card, contentRt)); + } + CardBase_AllOff(); + } + + protected void ScrollTo_XY(Transform target) + { + Canvas.ForceUpdateCanvases(); + contentRt.anchoredPosition = (Vector2)m_ScrollRect.transform.InverseTransformPoint(contentRt.position) - (Vector2)m_ScrollRect.transform.InverseTransformPoint(target.position); + } + protected void ScrollTo(Transform target, bool vertical) + { + Canvas.ForceUpdateCanvases(); + Vector2 offset = (Vector2)m_ScrollRect.transform.InverseTransformPoint(contentRt.position) - (Vector2)m_ScrollRect.transform.InverseTransformPoint(target.position); + Vector2 anchor = contentRt.anchoredPosition; + if (vertical) anchor.y = offset.y - target.GetComponent().sizeDelta.y; + else anchor.x = offset.x - target.GetComponent().sizeDelta.x; + contentRt.anchoredPosition = anchor; + } +} \ No newline at end of file diff --git a/Assets/Scripts/My/uScrollViewMgr.cs.meta b/Assets/Scripts/My/uScrollViewMgr.cs.meta new file mode 100644 index 0000000..6b9b973 --- /dev/null +++ b/Assets/Scripts/My/uScrollViewMgr.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: c7423543f271c8648a9e60f0c5151d1e \ No newline at end of file diff --git a/Assets/Scripts/SingletonManagers/Managers/DBManager.cs b/Assets/Scripts/SingletonManagers/Managers/DBManager.cs index a1d1d7c..903089f 100644 --- a/Assets/Scripts/SingletonManagers/Managers/DBManager.cs +++ b/Assets/Scripts/SingletonManagers/Managers/DBManager.cs @@ -5,7 +5,6 @@ using System; using System.Collections; using System.Collections.Generic; using UnityEngine; -using UnityEngine.Android; using UnityEngine.Events; namespace CodeJay @@ -133,6 +132,8 @@ namespace CodeJay public int TextureIndex; public long ClearConditionMoney; + public int BuyPrice, n_AlbumType; + public string Name; public string Description; public string Script; @@ -150,14 +151,26 @@ namespace CodeJay this.Script = script; }*/ - public HuntingData(int index, int stake, long clearMoney, string name, string desc, string huntingDataID) + //public HuntingData(int index, int stake, long clearMoney, string name, string desc, string huntingDataID) + //{ + // this.Index = index; + // this.Stake = stake; + // this.ClearConditionMoney = clearMoney; + // this.Name = name; + // this.Description = desc; + // this.HuntingDataID = huntingDataID; + //} + + public HuntingData(int index, DB_HuntingData data) { - this.Index = index; - this.Stake = stake; - this.ClearConditionMoney = clearMoney; - this.Name = name; - this.Description = desc; - this.HuntingDataID = huntingDataID; + Index = index; + Stake = data.DBF_Stake; + ClearConditionMoney = data.DBF_ClearConditionMoney; + Name = data.DBF_name; + Description = data.DBF_Description; + HuntingDataID = data.Id.ToString(); + BuyPrice = data.DBF_BuyPrice; + n_AlbumType = data.DBF_n_AlbumType; } } } @@ -301,8 +314,8 @@ public partial class DBManager : MonoBehaviour data = DB_HuntingData.GetEntity(i); if (data != null) { - _lstHuntindData.Add(new HuntingData(i, data.DBF_Stake, data.DBF_ClearConditionMoney, data.DBF_Name, data.DBF_Description, data.Id.ToString())); - + //_lstHuntindData.Add(new HuntingData(i, data.DBF_Stake, data.DBF_ClearConditionMoney, data.DBF_Name, data.DBF_Description, data.Id.ToString())); + _lstHuntindData.Add(new HuntingData(i, data)); } } } @@ -498,6 +511,10 @@ public partial class DBManager : MonoBehaviour return _lstHuntindData[index]; } } + public List Get_AlbumDatas(int type) + { + return _lstHuntindData.FindAll(f => f.n_AlbumType == type); + } public bool AddCurrentChallengeCondition(long amount) { diff --git a/Assets/Scripts/UI/HuntingPanel.cs b/Assets/Scripts/UI/HuntingPanel.cs index 491f6d3..516a677 100644 --- a/Assets/Scripts/UI/HuntingPanel.cs +++ b/Assets/Scripts/UI/HuntingPanel.cs @@ -3,65 +3,50 @@ using CodeJay.Classes; using System.Collections.Generic; using UnityEngine; -public class HuntingPanel : MonoBehaviour +public class HuntingPanel : uScrollViewMgr { - [SerializeField] private GameObject SlotPrefab; - [SerializeField] private GameObject EmptySlotPrefab; - [SerializeField] private Transform Content; [SerializeField] private TMPro.TextMeshProUGUI TitleTMP; [SerializeField] private GameObject[] Buttons; public GameObject go_mainpaenl, go_botpanel, go_x; private List _lstSlots; + private int CurAlbumType = 1; private void Awake() { - // HuntingData하나에 2개의 데이터 필요함. - // 100개라면 50개만 생성해야함 (왼쪽 오른쪽 있기때문) - _lstSlots = new List(DB_HuntingListData.CountEntities); + //// HuntingData하나에 2개의 데이터 필요함. + //// 100개라면 50개만 생성해야함 (왼쪽 오른쪽 있기때문) + //_lstSlots = new List(DB_HuntingListData.CountEntities); - // 소수점이 나오면 데이터가 홀수로 끝난다는것이기 때문에 - // 오른쪽에 슬롯이 생성되지 않는것을 방지하기위해 올림을 한다. - //int length = Mathf.CeilToInt(GameManager.DB.GetHuntingDataLength() / 2f); + //// 소수점이 나오면 데이터가 홀수로 끝난다는것이기 때문에 + //// 오른쪽에 슬롯이 생성되지 않는것을 방지하기위해 올림을 한다. + ////int length = Mathf.CeilToInt(GameManager.DB.GetHuntingDataLength() / 2f); - // 헌팅 도전 슬롯 생성 - HuntingSlot slot = null; - for (int i = 0; i < DB_HuntingListData.CountEntities; i++) - { - slot = Instantiate(SlotPrefab, Content).GetComponent(); - _lstSlots.Add(slot); - - } + //// 헌팅 도전 슬롯 생성 + //HuntingSlot slot = null; + //for (int i = 0; i < DB_HuntingListData.CountEntities; i++) + //{ + // slot = Instantiate(SlotPrefab, Content).GetComponent(); + // _lstSlots.Add(slot); + //} - // 하단 UI에 가려지는것을 방지하기 위한 프리팹. - // 2개 생성하면 데이터의 길이가 4의 배수가 되지 않아도 홀수로 끝나도 위에까지 올라온다. - //Instantiate(EmptySlotPrefab, Content); - //Instantiate(EmptySlotPrefab, Content); - if (GameManager.Instance != null) { // 이벤트 매니저에 구독 - GameManager.Event.RegistEvent(EEventType.OnSynchronizeAIChllengeModeAIData, this.UpdateData); + GameManager.Event.RegistEvent(EEventType.OnSynchronizeAIChllengeModeAIData, this.Set_UI); GameManager.Event.RegistEvent(EEventType.OnClickFullView, this.OnClickFullView); GameManager.Event.RegistEvent(EEventType.OnReturnFullView, this.OnReturnFullView); } } - private void Start() - { - // 다른 스크립트들도 구독을 완료하고 난 뒤에 호출하도록 - // Start에서 슬롯을 업데이트한다. - this.UpdateData(); - } - private void OnDestroy() { if (GameManager.Instance != null) { // 구독한 이벤트 해제 - GameManager.Event.RemoveEvent(EEventType.OnSynchronizeAIChllengeModeAIData, this.UpdateData); + GameManager.Event.RemoveEvent(EEventType.OnSynchronizeAIChllengeModeAIData, this.Set_UI); GameManager.Event.RemoveEvent(EEventType.OnClickFullView, this.OnClickFullView); GameManager.Event.RemoveEvent(EEventType.OnReturnFullView, this.OnReturnFullView); @@ -73,45 +58,13 @@ public class HuntingPanel : MonoBehaviour GameManager.DB.CheckDayReset(); go_botpanel.SetActive(false); go_x.SetActive(true); + + Set_UI(); } - // 슬롯들 업데이트 하는 함수 - private void UpdateData() + public void Set_UI() { - // 해금해야하는 인덱스를 가져온다. - // 3번째까지(0 ~ 2) 클리어했으면 index 3을 가져온다. - int unlockTargetIndex = GameManager.DB.GetUnlockTargetIndex(); - - // 헌팅 도전에 들어갈 데이터를 DB매니저에서 가져온다. - HuntingData data = GameManager.DB.GetHuntingData(unlockTargetIndex); - DB_HuntingListData huntingListData = DB_HuntingListData.GetEntity(GameManager.BGDatabase.GetNextLockHuntingListDataID()); - - // 모두 해금을 했는지 체크하기 위한 - if (GameManager.DB.IsAllUnlocked()) - { - TitleTMP.text = "모두 해금 완료"; - } - else - { - string temp = huntingListData.DBF_Title; - //if (huntingListData != null) - //{ - // temp = $"Ep {unlockTargetIndex + 1}. {huntingListData.DBF_Title} (#{((unlockTargetIndex) % 2 + 1)} / #2)"; - //} - //else - //{ - // temp = $"Ep {unlockTargetIndex + 1}. {data.Description} {data.Name} (#{((unlockTargetIndex) % 2 + 1)} / #2)"; - //} - //temp += "\n점 " + CodeJay.CodeJayUtility.Converter.MoneyToString(data.Stake); - //temp += "\n그녀의 남은 판돈 " + GameManager.DB.GetReaminingTargetConditionString(data.Index) + ""; - TitleTMP.text = temp; - } - - // Data Length 100 == Slot Length 50 - for (int i = 0; i < _lstSlots.Count; i++) - { - _lstSlots[i].SetData(i * 2, unlockTargetIndex); - } + Set_ScrollView(GameManager.DB.Get_AlbumDatas(CurAlbumType), GameManager.DB.GetUnlockTargetIndex()); } private void OnClickFullView(object huntingDataID, object huntingListDataID) diff --git a/Assets/Scripts/UI/HuntingSlot.cs b/Assets/Scripts/UI/HuntingSlot.cs index 32fd1f0..1e7f69d 100644 --- a/Assets/Scripts/UI/HuntingSlot.cs +++ b/Assets/Scripts/UI/HuntingSlot.cs @@ -6,7 +6,7 @@ using BansheeGz.BGDatabase; using UnityEngine.EventSystems; using TMPro; -public class HuntingSlot : MonoBehaviour +public class HuntingSlot : CardBase { [SerializeField] private TMPro.TextMeshProUGUI NameTMP; @@ -32,6 +32,12 @@ public class HuntingSlot : MonoBehaviour private BGId _huntingListID; + public override void Set(T _base, int iLoop = -1, int idata = -1) + { + base.Set(_base, iLoop, idata); + SetData(iLoop, idata); + } + public void SetData(int index, int unlockTargetIndex) { DB_HuntingListData huntingListData = DB_HuntingListData.GetEntity(Mathf.FloorToInt((float)((float)index / 2.0f))); @@ -46,8 +52,8 @@ public class HuntingSlot : MonoBehaviour gos_openbutton[0].SetActive(true); if (_data_right != null && _data_right.Index == unlockTargetIndex) gos_openbutton[1].SetActive(true); - texts_price[0].text = _data_left.Stake.ToString(); - texts_price[1].text = _data_right.Stake.ToString(); + texts_price[0].text = _data_left.BuyPrice.ToString(); + texts_price[1].text = _data_right.BuyPrice.ToString(); _huntigdata_left = DB_HuntingData.GetEntity(new BansheeGz.BGDatabase.BGId(_data_left.HuntingDataID)); @@ -190,7 +196,7 @@ public class HuntingSlot : MonoBehaviour if (GameManager.DB.IsAllUnlocked() == false) { - var needKey = left ? _data_left.Stake : _data_right.Stake; + var needKey = left ? _data_left.BuyPrice : _data_right.BuyPrice; if (GameManager.DB.Key >= needKey) { GameManager.DB.SubKey(needKey, this.name); diff --git a/Assets/Scripts/Utilities/Enumerations.cs b/Assets/Scripts/Utilities/Enumerations.cs index 2f2611d..35244e4 100644 --- a/Assets/Scripts/Utilities/Enumerations.cs +++ b/Assets/Scripts/Utilities/Enumerations.cs @@ -1,4 +1,4 @@ -namespace CodeJay +namespace CodeJay { namespace Enum { diff --git a/Assets/UI/고스톱 결과 화면 승리 스샷.png.meta b/Assets/UI/고스톱 결과 화면 승리 스샷.png.meta index 0c267c3..7c0f402 100644 --- a/Assets/UI/고스톱 결과 화면 승리 스샷.png.meta +++ b/Assets/UI/고스톱 결과 화면 승리 스샷.png.meta @@ -46,7 +46,7 @@ TextureImporter: nPOTScale: 0 lightmap: 0 compressionQuality: 50 - spriteMode: 2 + spriteMode: 1 spriteExtrude: 1 spriteMeshType: 1 alignment: 0 @@ -138,7 +138,7 @@ TextureImporter: customData: physicsShape: [] bones: [] - spriteID: + spriteID: 5e97eb03825dee720800000000000000 internalID: 0 vertices: [] indices: diff --git a/Assets/UI/고스톱 결과 화면 패배 png.png.meta b/Assets/UI/고스톱 결과 화면 패배 png.png.meta index 9e6dae9..c32de42 100644 --- a/Assets/UI/고스톱 결과 화면 패배 png.png.meta +++ b/Assets/UI/고스톱 결과 화면 패배 png.png.meta @@ -46,7 +46,7 @@ TextureImporter: nPOTScale: 0 lightmap: 0 compressionQuality: 50 - spriteMode: 2 + spriteMode: 1 spriteExtrude: 1 spriteMeshType: 1 alignment: 0 @@ -138,7 +138,7 @@ TextureImporter: customData: physicsShape: [] bones: [] - spriteID: + spriteID: 5e97eb03825dee720800000000000000 internalID: 0 vertices: [] indices: diff --git a/Assets/UI/고스톱 고스톱 선택 팝업 스샷.png.meta b/Assets/UI/고스톱 고스톱 선택 팝업 스샷.png.meta index a6f85e2..546dd73 100644 --- a/Assets/UI/고스톱 고스톱 선택 팝업 스샷.png.meta +++ b/Assets/UI/고스톱 고스톱 선택 팝업 스샷.png.meta @@ -46,7 +46,7 @@ TextureImporter: nPOTScale: 0 lightmap: 0 compressionQuality: 50 - spriteMode: 2 + spriteMode: 1 spriteExtrude: 1 spriteMeshType: 1 alignment: 0 @@ -138,7 +138,7 @@ TextureImporter: customData: physicsShape: [] bones: [] - spriteID: + spriteID: 5e97eb03825dee720800000000000000 internalID: 0 vertices: [] indices: diff --git a/Assets/UI/고스톱 나가리 팝업 스샷.png.meta b/Assets/UI/고스톱 나가리 팝업 스샷.png.meta index 536cbcf..18e30c4 100644 --- a/Assets/UI/고스톱 나가리 팝업 스샷.png.meta +++ b/Assets/UI/고스톱 나가리 팝업 스샷.png.meta @@ -46,7 +46,7 @@ TextureImporter: nPOTScale: 0 lightmap: 0 compressionQuality: 50 - spriteMode: 2 + spriteMode: 1 spriteExtrude: 1 spriteMeshType: 1 alignment: 0 @@ -138,7 +138,7 @@ TextureImporter: customData: physicsShape: [] bones: [] - spriteID: + spriteID: 5e97eb03825dee720800000000000000 internalID: 0 vertices: [] indices: diff --git a/Assets/UI/고스톱 미션 팝업 스샷.png.meta b/Assets/UI/고스톱 미션 팝업 스샷.png.meta index 55142e9..1e660c6 100644 --- a/Assets/UI/고스톱 미션 팝업 스샷.png.meta +++ b/Assets/UI/고스톱 미션 팝업 스샷.png.meta @@ -46,7 +46,7 @@ TextureImporter: nPOTScale: 0 lightmap: 0 compressionQuality: 50 - spriteMode: 2 + spriteMode: 1 spriteExtrude: 1 spriteMeshType: 1 alignment: 0 @@ -138,7 +138,7 @@ TextureImporter: customData: physicsShape: [] bones: [] - spriteID: + spriteID: 5e97eb03825dee720800000000000000 internalID: 0 vertices: [] indices: diff --git a/Assets/UI/고스톱 밀기 팝업 스샷.png.meta b/Assets/UI/고스톱 밀기 팝업 스샷.png.meta index 88b17b4..f1a7dde 100644 --- a/Assets/UI/고스톱 밀기 팝업 스샷.png.meta +++ b/Assets/UI/고스톱 밀기 팝업 스샷.png.meta @@ -46,7 +46,7 @@ TextureImporter: nPOTScale: 0 lightmap: 0 compressionQuality: 50 - spriteMode: 2 + spriteMode: 1 spriteExtrude: 1 spriteMeshType: 1 alignment: 0 @@ -138,7 +138,7 @@ TextureImporter: customData: physicsShape: [] bones: [] - spriteID: + spriteID: 5e97eb03825dee720800000000000000 internalID: 0 vertices: [] indices: diff --git a/Assets/UI/고스톱 뻑 팝업 스샷.png.meta b/Assets/UI/고스톱 뻑 팝업 스샷.png.meta index 3cc65e6..79dae37 100644 --- a/Assets/UI/고스톱 뻑 팝업 스샷.png.meta +++ b/Assets/UI/고스톱 뻑 팝업 스샷.png.meta @@ -46,7 +46,7 @@ TextureImporter: nPOTScale: 0 lightmap: 0 compressionQuality: 50 - spriteMode: 2 + spriteMode: 1 spriteExtrude: 1 spriteMeshType: 1 alignment: 0 @@ -138,7 +138,7 @@ TextureImporter: customData: physicsShape: [] bones: [] - spriteID: + spriteID: 5e97eb03825dee720800000000000000 internalID: 0 vertices: [] indices: diff --git a/Assets/UI/고스톱 상점 스샷 2.png.meta b/Assets/UI/고스톱 상점 스샷 2.png.meta index 5216b61..047af7e 100644 --- a/Assets/UI/고스톱 상점 스샷 2.png.meta +++ b/Assets/UI/고스톱 상점 스샷 2.png.meta @@ -46,7 +46,7 @@ TextureImporter: nPOTScale: 0 lightmap: 0 compressionQuality: 50 - spriteMode: 2 + spriteMode: 1 spriteExtrude: 1 spriteMeshType: 1 alignment: 0 @@ -138,7 +138,7 @@ TextureImporter: customData: physicsShape: [] bones: [] - spriteID: + spriteID: 5e97eb03825dee720800000000000000 internalID: 0 vertices: [] indices: diff --git a/Assets/UI/고스톱 상점 스샷.png.meta b/Assets/UI/고스톱 상점 스샷.png.meta index 39c74cd..69fe737 100644 --- a/Assets/UI/고스톱 상점 스샷.png.meta +++ b/Assets/UI/고스톱 상점 스샷.png.meta @@ -46,7 +46,7 @@ TextureImporter: nPOTScale: 0 lightmap: 0 compressionQuality: 50 - spriteMode: 2 + spriteMode: 1 spriteExtrude: 1 spriteMeshType: 1 alignment: 0 @@ -138,7 +138,7 @@ TextureImporter: customData: physicsShape: [] bones: [] - spriteID: + spriteID: 5e97eb03825dee720800000000000000 internalID: 0 vertices: [] indices: diff --git a/Assets/UI/고스톱 수집 목록 스샷.png.meta b/Assets/UI/고스톱 수집 목록 스샷.png.meta index 98dedb2..c9749be 100644 --- a/Assets/UI/고스톱 수집 목록 스샷.png.meta +++ b/Assets/UI/고스톱 수집 목록 스샷.png.meta @@ -46,7 +46,7 @@ TextureImporter: nPOTScale: 0 lightmap: 0 compressionQuality: 50 - spriteMode: 2 + spriteMode: 1 spriteExtrude: 1 spriteMeshType: 1 alignment: 0 @@ -138,7 +138,7 @@ TextureImporter: customData: physicsShape: [] bones: [] - spriteID: + spriteID: 5e97eb03825dee720800000000000000 internalID: 0 vertices: [] indices: diff --git a/Assets/UI/고스톱 쌍피 전환 확인 팝업 스샷.png.meta b/Assets/UI/고스톱 쌍피 전환 확인 팝업 스샷.png.meta index 3b24e97..5c8e777 100644 --- a/Assets/UI/고스톱 쌍피 전환 확인 팝업 스샷.png.meta +++ b/Assets/UI/고스톱 쌍피 전환 확인 팝업 스샷.png.meta @@ -47,7 +47,7 @@ TextureImporter: nPOTScale: 0 lightmap: 0 compressionQuality: 50 - spriteMode: 2 + spriteMode: 1 spriteExtrude: 1 spriteMeshType: 1 alignment: 0 @@ -140,7 +140,7 @@ TextureImporter: customData: physicsShape: [] bones: [] - spriteID: + spriteID: 5e97eb03825dee720800000000000000 internalID: 0 vertices: [] indices: diff --git a/Assets/UI/고스톱 앨범 메뉴.png b/Assets/UI/고스톱 앨범 메뉴.png deleted file mode 100644 index 56c8539..0000000 Binary files a/Assets/UI/고스톱 앨범 메뉴.png and /dev/null differ diff --git a/Assets/UI/고스톱 앨범 메뉴.png.meta b/Assets/UI/고스톱 앨범 메뉴.png.meta deleted file mode 100644 index a451c55..0000000 --- a/Assets/UI/고스톱 앨범 메뉴.png.meta +++ /dev/null @@ -1,156 +0,0 @@ -fileFormatVersion: 2 -guid: e4d6af7001b22644d8b59bf781139cf1 -TextureImporter: - internalIDToNameTable: - - first: - 213: 6003738084820011512 - second: "\uACE0\uC2A4\uD1B1 \uC568\uBC94 \uBA54\uB274_0" - 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: 2 - 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: "\uACE0\uC2A4\uD1B1 \uC568\uBC94 \uBA54\uB274_0" - rect: - serializedVersion: 2 - x: 0 - y: 0 - width: 1096 - height: 1920 - alignment: 0 - pivot: {x: 0, y: 0} - border: {x: 0, y: 0, z: 0, w: 0} - customData: - outline: [] - physicsShape: [] - tessellationDetail: -1 - bones: [] - spriteID: 8f94e2e9aff815350800000000000000 - internalID: 6003738084820011512 - vertices: [] - indices: - edges: [] - weights: [] - outline: [] - customData: - physicsShape: [] - bones: [] - spriteID: - internalID: 0 - vertices: [] - indices: - edges: [] - weights: [] - secondaryTextures: [] - spriteCustomMetadata: - entries: [] - nameFileIdTable: - "\uACE0\uC2A4\uD1B1 \uC568\uBC94 \uBA54\uB274_0": 6003738084820011512 - mipmapLimitGroupName: - pSDRemoveMatte: 0 - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/UI/고스톱 총통 팝업 스샷.png.meta b/Assets/UI/고스톱 총통 팝업 스샷.png.meta index 572e3e3..e00f242 100644 --- a/Assets/UI/고스톱 총통 팝업 스샷.png.meta +++ b/Assets/UI/고스톱 총통 팝업 스샷.png.meta @@ -46,7 +46,7 @@ TextureImporter: nPOTScale: 0 lightmap: 0 compressionQuality: 50 - spriteMode: 2 + spriteMode: 1 spriteExtrude: 1 spriteMeshType: 1 alignment: 0 @@ -138,7 +138,7 @@ TextureImporter: customData: physicsShape: [] bones: [] - spriteID: + spriteID: 5e97eb03825dee720800000000000000 internalID: 0 vertices: [] indices: diff --git a/Assets/UI/고스톱 흔들기 팝업 스샷.png.meta b/Assets/UI/고스톱 흔들기 팝업 스샷.png.meta index af15676..28407cd 100644 --- a/Assets/UI/고스톱 흔들기 팝업 스샷.png.meta +++ b/Assets/UI/고스톱 흔들기 팝업 스샷.png.meta @@ -46,7 +46,7 @@ TextureImporter: nPOTScale: 0 lightmap: 0 compressionQuality: 50 - spriteMode: 2 + spriteMode: 1 spriteExtrude: 1 spriteMeshType: 1 alignment: 0 @@ -138,7 +138,7 @@ TextureImporter: customData: physicsShape: [] bones: [] - spriteID: + spriteID: 5e97eb03825dee720800000000000000 internalID: 0 vertices: [] indices: diff --git a/Assets/UI/엿보기 팝업 스샷.png.meta b/Assets/UI/엿보기 팝업 스샷.png.meta index 8acfcfe..ceba7ff 100644 --- a/Assets/UI/엿보기 팝업 스샷.png.meta +++ b/Assets/UI/엿보기 팝업 스샷.png.meta @@ -46,7 +46,7 @@ TextureImporter: nPOTScale: 0 lightmap: 0 compressionQuality: 50 - spriteMode: 2 + spriteMode: 1 spriteExtrude: 1 spriteMeshType: 1 alignment: 0 @@ -138,7 +138,7 @@ TextureImporter: customData: physicsShape: [] bones: [] - spriteID: + spriteID: 5e97eb03825dee720800000000000000 internalID: 0 vertices: [] indices: