From b2eb3ca9a58518920d1df2cffe7afc00e5a0e566 Mon Sep 17 00:00:00 2001 From: twig Date: Tue, 16 Feb 2021 21:10:46 -0600 Subject: [PATCH] Iteration 1 have some art, didn't really do much there I did spend a lot more time on the code, it's more iteresting. Player is in it's own file. All Players use the same code. Refactored how turns are processed. Added a defend and counter ability, have code for "Blood Counter" that I might revisit. Want to change defend to a "Holy Shield" and add a magic ability that is countered by it. This is to stop the counter until you win strategy. --- .../.idea/indexLayout.xml | 1 + .../.idea.proto_turn_based_rpg/.idea/vcs.xml | 6 + Assets/Scenes/SampleScene.unity | 658 ++++- Assets/Scripts/BattleMenu.cs | 143 +- Assets/Scripts/EnemyAi.cs | 32 +- Assets/Scripts/Player.cs | 29 + Assets/Scripts/Player.cs.meta | 11 + Assets/Spritesheets.meta | 8 + Assets/Spritesheets/uipack_rpg_sheet.png | Bin 0 -> 32558 bytes Assets/Spritesheets/uipack_rpg_sheet.png.meta | 2196 +++++++++++++++++ Assets/Spritesheets/uipack_rpg_sheet.xml | 89 + Assets/Spritesheets/uipack_rpg_sheet.xml.meta | 7 + Assets/TextureAtlasSlicer.meta | 8 + Assets/TextureAtlasSlicer/Editor.meta | 9 + .../Editor/TextureAtlasSlicer.cs | 281 +++ .../Editor/TextureAtlasSlicer.cs.meta | 12 + Assets/TextureAtlasSlicer/README.md | 17 + Assets/TextureAtlasSlicer/README.md.meta | 8 + ProjectSettings/ProjectSettings.asset | 3 +- ProjectSettings/ProjectVersion.txt | 4 +- ProjectSettings/QualitySettings.asset | 6 +- 21 files changed, 3467 insertions(+), 61 deletions(-) create mode 100644 .idea/.idea.proto_turn_based_rpg/.idea/vcs.xml create mode 100644 Assets/Scripts/Player.cs create mode 100644 Assets/Scripts/Player.cs.meta create mode 100644 Assets/Spritesheets.meta create mode 100644 Assets/Spritesheets/uipack_rpg_sheet.png create mode 100644 Assets/Spritesheets/uipack_rpg_sheet.png.meta create mode 100644 Assets/Spritesheets/uipack_rpg_sheet.xml create mode 100644 Assets/Spritesheets/uipack_rpg_sheet.xml.meta create mode 100644 Assets/TextureAtlasSlicer.meta create mode 100644 Assets/TextureAtlasSlicer/Editor.meta create mode 100644 Assets/TextureAtlasSlicer/Editor/TextureAtlasSlicer.cs create mode 100644 Assets/TextureAtlasSlicer/Editor/TextureAtlasSlicer.cs.meta create mode 100644 Assets/TextureAtlasSlicer/README.md create mode 100644 Assets/TextureAtlasSlicer/README.md.meta diff --git a/.idea/.idea.proto_turn_based_rpg/.idea/indexLayout.xml b/.idea/.idea.proto_turn_based_rpg/.idea/indexLayout.xml index e47d5b0..b22f1e8 100644 --- a/.idea/.idea.proto_turn_based_rpg/.idea/indexLayout.xml +++ b/.idea/.idea.proto_turn_based_rpg/.idea/indexLayout.xml @@ -22,6 +22,7 @@ ProjectSettings + .git .idea Library Logs diff --git a/.idea/.idea.proto_turn_based_rpg/.idea/vcs.xml b/.idea/.idea.proto_turn_based_rpg/.idea/vcs.xml new file mode 100644 index 0000000..94a25f7 --- /dev/null +++ b/.idea/.idea.proto_turn_based_rpg/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/Assets/Scenes/SampleScene.unity b/Assets/Scenes/SampleScene.unity index 0fc62b7..89a60f9 100644 --- a/Assets/Scenes/SampleScene.unity +++ b/Assets/Scenes/SampleScene.unity @@ -218,6 +218,9 @@ RectTransform: - {fileID: 1700659786} - {fileID: 2003127417} - {fileID: 2122497092} + - {fileID: 137837623} + - {fileID: 829062269} + - {fileID: 251530422} m_Father: {fileID: 0} m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} @@ -239,8 +242,435 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: attackButton: {fileID: 1700659787} + bloodCounterButton: {fileID: 829062266} + counterButton: {fileID: 251530419} + defendButton: {fileID: 137837620} userHealth: {fileID: 2003127418} enemyHealth: {fileID: 2122497093} +--- !u!1 &137837619 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 137837623} + - component: {fileID: 137837622} + - component: {fileID: 137837621} + - component: {fileID: 137837620} + m_Layer: 5 + m_Name: Defend + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &137837620 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 137837619} + 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: 2 + 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: 5437299029774813188, guid: 4880d72e2864aa54389378d2e1821522, type: 3} + 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: 137837621} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 24251070} + 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 &137837621 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 137837619} + 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: 8047949451544522013, guid: 4880d72e2864aa54389378d2e1821522, 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 &137837622 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 137837619} + m_CullTransparentMesh: 1 +--- !u!224 &137837623 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 137837619} + 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_Children: + - {fileID: 816304657} + m_Father: {fileID: 24251074} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 125, y: 40} + m_SizeDelta: {x: 80, y: 60} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &228826172 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 228826173} + - component: {fileID: 228826175} + - component: {fileID: 228826174} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &228826173 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 228826172} + 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_Children: [] + m_Father: {fileID: 251530422} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &228826174 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 228826172} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 18 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 1 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Counter +--- !u!222 &228826175 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 228826172} + m_CullTransparentMesh: 1 +--- !u!1 &251530418 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 251530422} + - component: {fileID: 251530421} + - component: {fileID: 251530420} + - component: {fileID: 251530419} + m_Layer: 5 + m_Name: Counter + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &251530419 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 251530418} + 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: 2 + 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: 5437299029774813188, guid: 4880d72e2864aa54389378d2e1821522, type: 3} + 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: 251530420} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 24251070} + 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 &251530420 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 251530418} + 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: 8047949451544522013, guid: 4880d72e2864aa54389378d2e1821522, 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 &251530421 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 251530418} + m_CullTransparentMesh: 1 +--- !u!224 &251530422 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 251530418} + 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_Children: + - {fileID: 228826173} + m_Father: {fileID: 24251074} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 210, y: 40} + m_SizeDelta: {x: 80, y: 60} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!1 &393001464 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 393001465} + - component: {fileID: 393001467} + - component: {fileID: 393001466} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &393001465 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 393001464} + 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_Children: [] + m_Father: {fileID: 829062269} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &393001466 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 393001464} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 18 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 1 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Blood Counter +--- !u!222 &393001467 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 393001464} + m_CullTransparentMesh: 1 --- !u!1 &519420028 GameObject: m_ObjectHideFlags: 0 @@ -324,6 +754,218 @@ Transform: m_Father: {fileID: 0} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &816304656 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 816304657} + - component: {fileID: 816304659} + - component: {fileID: 816304658} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &816304657 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 816304656} + 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_Children: [] + m_Father: {fileID: 137837623} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &816304658 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 816304656} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 18 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 1 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Defend +--- !u!222 &816304659 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 816304656} + m_CullTransparentMesh: 1 +--- !u!1 &829062265 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 829062269} + - component: {fileID: 829062268} + - component: {fileID: 829062267} + - component: {fileID: 829062266} + m_Layer: 5 + m_Name: BloodCounter + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!114 &829062266 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 829062265} + 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: 2 + 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: 5437299029774813188, guid: 4880d72e2864aa54389378d2e1821522, type: 3} + 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: 829062267} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 24251070} + 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 &829062267 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 829062265} + 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: 8047949451544522013, guid: 4880d72e2864aa54389378d2e1821522, 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 &829062268 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 829062265} + m_CullTransparentMesh: 1 +--- !u!224 &829062269 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 829062265} + 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_Children: + - {fileID: 393001465} + m_Father: {fileID: 24251074} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 295, y: 40} + m_SizeDelta: {x: 80, y: 60} + m_Pivot: {x: 0.5, y: 0.5} --- !u!1 &885956096 GameObject: m_ObjectHideFlags: 0 @@ -449,10 +1091,10 @@ MonoBehaviour: m_Calls: [] m_FontData: m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} - m_FontSize: 14 + m_FontSize: 18 m_FontStyle: 0 m_BestFit: 0 - m_MinSize: 10 + m_MinSize: 1 m_MaxSize: 40 m_Alignment: 4 m_AlignByGeometry: 0 @@ -505,8 +1147,8 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 0, y: 0} - m_AnchoredPosition: {x: 80, y: 60} - m_SizeDelta: {x: 160, y: 30} + m_AnchoredPosition: {x: 40, y: 40} + m_SizeDelta: {x: 80, y: 60} m_Pivot: {x: 0.5, y: 0.5} --- !u!114 &1700659787 MonoBehaviour: @@ -527,7 +1169,7 @@ MonoBehaviour: m_SelectOnDown: {fileID: 0} m_SelectOnLeft: {fileID: 0} m_SelectOnRight: {fileID: 0} - m_Transition: 1 + m_Transition: 2 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} @@ -538,7 +1180,7 @@ MonoBehaviour: m_FadeDuration: 0.1 m_SpriteState: m_HighlightedSprite: {fileID: 0} - m_PressedSprite: {fileID: 0} + m_PressedSprite: {fileID: 5437299029774813188, guid: 4880d72e2864aa54389378d2e1821522, type: 3} m_SelectedSprite: {fileID: 0} m_DisabledSprite: {fileID: 0} m_AnimationTriggers: @@ -584,8 +1226,8 @@ MonoBehaviour: m_OnCullStateChanged: m_PersistentCalls: m_Calls: [] - m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} - m_Type: 1 + m_Sprite: {fileID: 8047949451544522013, guid: 4880d72e2864aa54389378d2e1821522, type: 3} + m_Type: 0 m_PreserveAspect: 0 m_FillCenter: 1 m_FillMethod: 4 diff --git a/Assets/Scripts/BattleMenu.cs b/Assets/Scripts/BattleMenu.cs index f789d14..8618766 100644 --- a/Assets/Scripts/BattleMenu.cs +++ b/Assets/Scripts/BattleMenu.cs @@ -1,90 +1,143 @@ -using System; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class BattleMenu : MonoBehaviour -{ - private class Player - { - public int Health; - public int Damage; - - public Action UpdateHealth; - } - - private Player _user; - private Player _enemy; +{ private EnemyAi _enemyLogic; - private readonly List _turnOrder = new List(); - private int _currentTurnIndex = 0; + private readonly List _players = new List(); + private int _currentPlayerIndex; + + private Player CurrentPlayer => _players[_currentPlayerIndex]; public Button attackButton; + public Button bloodCounterButton; + public Button counterButton; + public Button defendButton; public Text userHealth; public Text enemyHealth; private void Awake() { - _user = new Player {Health = 10, Damage = 1, UpdateHealth = UpdateUserHealth}; - _enemy = new Player {Health = 10, Damage = 1, UpdateHealth = UpdateEnemyHealth}; + _players.Add(new Player {health = 100, damage = 5, updateHealth = UpdateUserHealth, isHumanControlled = true}); + _players.Add(new Player {health = 100, damage = 5, updateHealth = UpdateEnemyHealth, isHumanControlled = false}); + _enemyLogic = new EnemyAi(); - _enemyLogic.AttackCallback += EnemyAttack; + _enemyLogic.attackCallback += Attack; + _enemyLogic.defendCallback += Defend; + _enemyLogic.counterCallback += Counter; } private void Start() { - attackButton.onClick.AddListener(PlayerAttack); + attackButton.onClick.AddListener(Attack); + bloodCounterButton.onClick.AddListener(BloodCounter); + defendButton.onClick.AddListener(Defend); + counterButton.onClick.AddListener(Counter); + + foreach (var player in _players) + { + player.updateHealth(player.health); + } - _turnOrder.Add(UserTakeTurn); - _turnOrder.Add(_enemyLogic.TakeTurn); - - _turnOrder[_currentTurnIndex](); - - UpdateUserHealth(); - UpdateEnemyHealth(); + Debug.Log(CurrentPlayer.isHumanControlled ? "Start user turn" : "Start enemy turn"); + StartTurn(); } - private void UpdateUserHealth() + private void UpdateUserHealth(int health) { - userHealth.text = $"Health: {_user.Health}"; + userHealth.text = $"Health: {health}"; } - private void UpdateEnemyHealth() + private void UpdateEnemyHealth(int health) { - enemyHealth.text = $"Health: {_enemy.Health}"; + enemyHealth.text = $"Health: {health}"; } - + private void FinishTurn() { - _currentTurnIndex = ++_currentTurnIndex % _turnOrder.Count; - _turnOrder[_currentTurnIndex](); - } - - private void PlayerAttack() - { - Attack(_user, _enemy); // TODO: disable hud - attackButton.interactable = false; + attackButton.interactable = !CurrentPlayer.isHumanControlled; + bloodCounterButton.interactable = !CurrentPlayer.isHumanControlled; + defendButton.interactable = !CurrentPlayer.isHumanControlled; + counterButton.interactable = !CurrentPlayer.isHumanControlled; + + _currentPlayerIndex = ++_currentPlayerIndex % _players.Count; + StartTurn(); + } + + private void Attack() + { + // TODO: when target selection is a thing this will need to be changed. + var victimIndex = (_currentPlayerIndex + 1) % _players.Count; + Attack(CurrentPlayer, _players[victimIndex]); FinishTurn(); } - private void EnemyAttack() + private void BloodCounter() { - Attack(_enemy, _user); + CurrentPlayer.isBloodCounter = true; FinishTurn(); } - private void UserTakeTurn() + private void Defend() { + CurrentPlayer.damageReduction = 0.4f; + CurrentPlayer.startTurnEffects = ResetDamageReduction; + FinishTurn(); + } + + private void Counter() + { + CurrentPlayer.isCounter = true; + FinishTurn(); + } + + private void StartTurn() + { + CurrentPlayer.isCounter = false; + if (CurrentPlayer.isStunned) + { + Debug.Log("stunned, skipping turn"); + CurrentPlayer.isStunned = false; + FinishTurn(); + return; + } + // TODO: enable hud. - attackButton.interactable = true; + attackButton.interactable = CurrentPlayer.isHumanControlled; + bloodCounterButton.interactable = CurrentPlayer.isHumanControlled; + defendButton.interactable = CurrentPlayer.isHumanControlled; + counterButton.interactable = CurrentPlayer.isHumanControlled; + + CurrentPlayer.startTurnEffects?.Invoke(CurrentPlayer); + CurrentPlayer.startTurnEffects = null; + + // TODO: controller. + if (!CurrentPlayer.isHumanControlled) + { + _enemyLogic.TakeTurn(); + } + } + + private void ResetDamageReduction(Player p) + { + p.damageReduction = 1f; } private void Attack(Player attacker, Player victim) { - victim.Health -= attacker.Damage; - victim.UpdateHealth(); - if (victim.Health <= 0) + if (victim.isCounter) + { + attacker.isStunned = true; + Debug.Log("COUNTER"); + return; + } + victim.TakeDamage((int)(attacker.damage * attacker.damageModification)); + // damage mod is spent whenever they attack. + attacker.damageModification = 1; + attacker.isBloodCounter = false; + if (victim.health <= 0) { Debug.Log("The victim died!"); } diff --git a/Assets/Scripts/EnemyAi.cs b/Assets/Scripts/EnemyAi.cs index 774aca1..2f1d6c9 100644 --- a/Assets/Scripts/EnemyAi.cs +++ b/Assets/Scripts/EnemyAi.cs @@ -1,11 +1,39 @@ using System; +using UnityEngine; +using Random = System.Random; public class EnemyAi { - public Action AttackCallback; + public Action attackCallback; + public Action defendCallback; + public Action counterCallback; + + private Random rng; + + public EnemyAi() + { + rng = new Random(1337); + } + // TODO: will need more information, not sure what info should be exposed. public void TakeTurn() { - AttackCallback(); + var number = rng.Next(1, 4); + Debug.Log($"enemy rolled {number}"); + switch (number) + { + case 1: + attackCallback(); + break; + case 2: + defendCallback(); + break; + case 3: + counterCallback(); + break; + default: + Debug.LogWarning($"Enemy rolled something that it can't do {number}"); + break; + } } } diff --git a/Assets/Scripts/Player.cs b/Assets/Scripts/Player.cs new file mode 100644 index 0000000..03d6994 --- /dev/null +++ b/Assets/Scripts/Player.cs @@ -0,0 +1,29 @@ +using System; + +public class Player +{ + public int health; + public int damage; + public float damageReduction = 1.0f; + public float damageModification = 1.0f; + public bool isBloodCounter; + public bool isCounter; + public bool isStunned; + public bool isHumanControlled; + + public Action updateHealth; + public Action startTurnEffects; + + public void TakeDamage(int incomingDamage) + { + var modifiedDamage = (int) (incomingDamage * damageReduction); + // Not sure if blood counter should negate damage or not... + if (isBloodCounter) + { + damageModification += (modifiedDamage * 0.15F); + } + health -= modifiedDamage; + + updateHealth(health); + } +} \ No newline at end of file diff --git a/Assets/Scripts/Player.cs.meta b/Assets/Scripts/Player.cs.meta new file mode 100644 index 0000000..b3ed734 --- /dev/null +++ b/Assets/Scripts/Player.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 374046a0afc221d459f369d95fc41b42 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Spritesheets.meta b/Assets/Spritesheets.meta new file mode 100644 index 0000000..26d8153 --- /dev/null +++ b/Assets/Spritesheets.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 6102af983b4288d43986464bb29c3e7c +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Spritesheets/uipack_rpg_sheet.png b/Assets/Spritesheets/uipack_rpg_sheet.png new file mode 100644 index 0000000000000000000000000000000000000000..740afe1d74615ccf06ac44fdd5df5a6d1d017f63 GIT binary patch literal 32558 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 literal 0 HcmV?d00001 diff --git a/Assets/Spritesheets/uipack_rpg_sheet.png.meta b/Assets/Spritesheets/uipack_rpg_sheet.png.meta new file mode 100644 index 0000000..cdae0b4 --- /dev/null +++ b/Assets/Spritesheets/uipack_rpg_sheet.png.meta @@ -0,0 +1,2196 @@ +fileFormatVersion: 2 +guid: 4880d72e2864aa54389378d2e1821522 +TextureImporter: + internalIDToNameTable: + - first: + 213: -3065845115110258923 + second: arrowBeige_left.png + - first: + 213: -876916113671692908 + second: arrowBeige_right.png + - first: + 213: -3199050045481761375 + second: arrowBlue_left.png + - first: + 213: 91069135266465237 + second: arrowBlue_right.png + - first: + 213: -243706425301756804 + second: arrowBrown_left.png + - first: + 213: -7707906182408999357 + second: arrowBrown_right.png + - first: + 213: 7640529539919425555 + second: arrowSilver_left.png + - first: + 213: -440148442306511084 + second: arrowSilver_right.png + - first: + 213: 5741791383268150795 + second: barBack_horizontalLeft.png + - first: + 213: 4110012939401715177 + second: barBack_horizontalMid.png + - first: + 213: 936862776637027205 + second: barBack_horizontalRight.png + - first: + 213: -1569847276214523418 + second: barBack_verticalBottom.png + - first: + 213: -7091332126032253562 + second: barBack_verticalMid.png + - first: + 213: 7186829677185908364 + second: barBack_verticalTop.png + - first: + 213: 733584220257985254 + second: barBlue_horizontalBlue.png + - first: + 213: 2879881502684800515 + second: barBlue_horizontalLeft.png + - first: + 213: 5218899492203918591 + second: barBlue_horizontalRight.png + - first: + 213: 7109168866638171205 + second: barBlue_verticalBottom.png + - first: + 213: 8349698072535737256 + second: barBlue_verticalMid.png + - first: + 213: -7780427158427965587 + second: barBlue_verticalTop.png + - first: + 213: -3344875544598875602 + second: barGreen_horizontalLeft.png + - first: + 213: -7904214316921149014 + second: barGreen_horizontalMid.png + - first: + 213: -6034670552469499588 + second: barGreen_horizontalRight.png + - first: + 213: 1834998612420506070 + second: barGreen_verticalBottom.png + - first: + 213: -2755453101209018879 + second: barGreen_verticalMid.png + - first: + 213: -4213352910743148662 + second: barGreen_verticalTop.png + - first: + 213: -5977699597387766232 + second: barRed_horizontalLeft.png + - first: + 213: -3369414919916728018 + second: barRed_horizontalMid.png + - first: + 213: 6188094661579950931 + second: barRed_horizontalRight.png + - first: + 213: 2810553331800553670 + second: barRed_verticalBottom.png + - first: + 213: 8461753039342037233 + second: barRed_verticalMid.png + - first: + 213: -3308328016718208261 + second: barRed_verticalTop.png + - first: + 213: 1917657991484293299 + second: barYellow_horizontalLeft.png + - first: + 213: 645092453454402935 + second: barYellow_horizontalMid.png + - first: + 213: -5766303750328084760 + second: barYellow_horizontalRight.png + - first: + 213: -5605363782295744499 + second: barYellow_verticalBottom.png + - first: + 213: -5355005803999219697 + second: barYellow_verticalMid.png + - first: + 213: 3239843093637664104 + second: barYellow_verticalTop.png + - first: + 213: 7825250829889082930 + second: buttonLong_beige.png + - first: + 213: 8253030867335237739 + second: buttonLong_beige_pressed.png + - first: + 213: -3985811117541366512 + second: buttonLong_blue.png + - first: + 213: 8992257282699874409 + second: buttonLong_blue_pressed.png + - first: + 213: -861143203771653310 + second: buttonLong_brown.png + - first: + 213: -4104176793228889392 + second: buttonLong_brown_pressed.png + - first: + 213: -8169026919483231335 + second: buttonLong_grey.png + - first: + 213: 8512830025971384357 + second: buttonLong_grey_pressed.png + - first: + 213: -2258374320120644838 + second: buttonRound_beige.png + - first: + 213: -6625052740406624021 + second: buttonRound_blue.png + - first: + 213: -8635304914333653394 + second: buttonRound_brown.png + - first: + 213: -2051775029143062000 + second: buttonRound_grey.png + - first: + 213: 7067577018730115286 + second: buttonSquare_beige.png + - first: + 213: 4497485657247042444 + second: buttonSquare_beige_pressed.png + - first: + 213: -2735075395936164667 + second: buttonSquare_blue.png + - first: + 213: 3879586902925579997 + second: buttonSquare_blue_pressed.png + - first: + 213: 8047949451544522013 + second: buttonSquare_brown.png + - first: + 213: 5437299029774813188 + second: buttonSquare_brown_pressed.png + - first: + 213: 2329619694263455062 + second: buttonSquare_grey.png + - first: + 213: 2823825819002273684 + second: buttonSquare_grey_pressed.png + - first: + 213: -5591692054918224611 + second: cursorGauntlet_blue.png + - first: + 213: 1135579071110884410 + second: cursorGauntlet_bronze.png + - first: + 213: 3548154222282398596 + second: cursorGauntlet_grey.png + - first: + 213: 2933387467584884181 + second: cursorHand_beige.png + - first: + 213: 8801855715008105287 + second: cursorHand_blue.png + - first: + 213: 543474438185336381 + second: cursorHand_grey.png + - first: + 213: -1281719886287688372 + second: cursorSword_bronze.png + - first: + 213: -113328550142869694 + second: cursorSword_gold.png + - first: + 213: -5733998262458994484 + second: cursorSword_silver.png + - first: + 213: 7215279896600887633 + second: iconCheck_beige.png + - first: + 213: -8561850954222213945 + second: iconCheck_blue.png + - first: + 213: 3522341663598534631 + second: iconCheck_bronze.png + - first: + 213: -5216927348275734057 + second: iconCheck_grey.png + - first: + 213: 6820754018416556629 + second: iconCircle_beige.png + - first: + 213: 2919071832950625210 + second: iconCircle_blue.png + - first: + 213: 9017043938630672815 + second: iconCircle_brown.png + - first: + 213: 7524690137840758341 + second: iconCircle_grey.png + - first: + 213: -4626611290844866245 + second: iconCross_beige.png + - first: + 213: -1245058833516092737 + second: iconCross_blue.png + - first: + 213: 6831320113791551198 + second: iconCross_brown.png + - first: + 213: 611582470095337371 + second: iconCross_grey.png + - first: + 213: 923997641766589172 + second: panelInset_beige.png + - first: + 213: -5794796869342371381 + second: panelInset_beigeLight.png + - first: + 213: -8297243822185179047 + second: panelInset_blue.png + - first: + 213: -8644997448959572577 + second: panelInset_brown.png + - first: + 213: 1695822802525721143 + second: panel_beige.png + - first: + 213: -1954158942528770799 + second: panel_beigeLight.png + - first: + 213: -6789483784463679010 + second: panel_blue.png + - first: + 213: -1871147257634247708 + second: panel_brown.png + externalObjects: {} + serializedVersion: 11 + 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 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 0 + aniso: -1 + mipBias: -100 + 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: 128 + 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 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: 4 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: 4 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: + - serializedVersion: 2 + name: arrowBeige_left.png + rect: + serializedVersion: 2 + x: 303 + y: 5 + width: 22 + height: 21 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: 5178c718c1ee375d0800000000000000 + internalID: -3065845115110258923 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: arrowBeige_right.png + rect: + serializedVersion: 2 + x: 171 + y: 5 + width: 22 + height: 21 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: 49d58c2d07194d3f0800000000000000 + internalID: -876916113671692908 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: arrowBlue_left.png + rect: + serializedVersion: 2 + x: 193 + y: 5 + width: 22 + height: 21 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: 1a5cc54dee0ba93d0800000000000000 + internalID: -3199050045481761375 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: arrowBlue_right.png + rect: + serializedVersion: 2 + x: 215 + y: 5 + width: 22 + height: 21 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: 5d54f8165ea834100800000000000000 + internalID: 91069135266465237 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: arrowBrown_left.png + rect: + serializedVersion: 2 + x: 237 + y: 5 + width: 22 + height: 21 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: c7498622c4e2e9cf0800000000000000 + internalID: -243706425301756804 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: arrowBrown_right.png + rect: + serializedVersion: 2 + x: 325 + y: 5 + width: 22 + height: 21 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: 34e69735a24080590800000000000000 + internalID: -7707906182408999357 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: arrowSilver_left.png + rect: + serializedVersion: 2 + x: 281 + y: 5 + width: 22 + height: 21 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: 310b6c2a22d980a60800000000000000 + internalID: 7640529539919425555 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: arrowSilver_right.png + rect: + serializedVersion: 2 + x: 259 + y: 5 + width: 22 + height: 21 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: 41ff0efd25744e9f0800000000000000 + internalID: -440148442306511084 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: barBack_horizontalLeft.png + rect: + serializedVersion: 2 + x: 372 + y: 164 + width: 9 + height: 18 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: b0ec81e77d0feaf40800000000000000 + internalID: 5741791383268150795 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: barBack_horizontalMid.png + rect: + serializedVersion: 2 + x: 338 + y: 108 + width: 18 + height: 18 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: 9ed5c4b1ef2b90930800000000000000 + internalID: 4110012939401715177 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: barBack_horizontalRight.png + rect: + serializedVersion: 2 + x: 190 + y: 200 + width: 9 + height: 18 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: 5837cbc4bb7600d00800000000000000 + internalID: 936862776637027205 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: barBack_verticalBottom.png + rect: + serializedVersion: 2 + x: 290 + y: 314 + width: 18 + height: 9 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: 6e96e9d3838c63ae0800000000000000 + internalID: -1569847276214523418 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: barBack_verticalMid.png + rect: + serializedVersion: 2 + x: 338 + y: 90 + width: 18 + height: 18 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: 68d288bb007869d90800000000000000 + internalID: -7091332126032253562 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: barBack_verticalTop.png + rect: + serializedVersion: 2 + x: 338 + y: 63 + width: 18 + height: 9 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: c8eb6e1938fbcb360800000000000000 + internalID: 7186829677185908364 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: barBlue_horizontalBlue.png + rect: + serializedVersion: 2 + x: 356 + y: 63 + width: 18 + height: 18 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: 6e22f4d26f63e2a00800000000000000 + internalID: 733584220257985254 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: barBlue_horizontalLeft.png + rect: + serializedVersion: 2 + x: 372 + y: 200 + width: 9 + height: 18 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: 306eebae7f467f720800000000000000 + internalID: 2879881502684800515 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: barBlue_horizontalRight.png + rect: + serializedVersion: 2 + x: 372 + y: 182 + width: 9 + height: 18 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: ff4f74fef614d6840800000000000000 + internalID: 5218899492203918591 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: barBlue_verticalBottom.png + rect: + serializedVersion: 2 + x: 344 + y: 314 + width: 18 + height: 9 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: 54c0c301b67d8a260800000000000000 + internalID: 7109168866638171205 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: barBlue_verticalMid.png + rect: + serializedVersion: 2 + x: 356 + y: 108 + width: 18 + height: 18 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: 8a3a14b882610e370800000000000000 + internalID: 8349698072535737256 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: barBlue_verticalTop.png + rect: + serializedVersion: 2 + x: 356 + y: 99 + width: 18 + height: 9 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: d67691dc8be560490800000000000000 + internalID: -7780427158427965587 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: barGreen_horizontalLeft.png + rect: + serializedVersion: 2 + x: 370 + y: 386 + width: 9 + height: 18 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: e22fa420a6d9491d0800000000000000 + internalID: -3344875544598875602 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: barGreen_horizontalMid.png + rect: + serializedVersion: 2 + x: 338 + y: 126 + width: 18 + height: 18 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: aa9ab5305f69e4290800000000000000 + internalID: -7904214316921149014 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: barGreen_horizontalRight.png + rect: + serializedVersion: 2 + x: 190 + y: 182 + width: 9 + height: 18 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: c319b870b1b804ca0800000000000000 + internalID: -6034670552469499588 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: barGreen_verticalBottom.png + rect: + serializedVersion: 2 + x: 338 + y: 36 + width: 18 + height: 9 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: 6d1b8a80489377910800000000000000 + internalID: 1834998612420506070 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: barGreen_verticalMid.png + rect: + serializedVersion: 2 + x: 356 + y: 81 + width: 18 + height: 18 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: 10e1033e00aa2c9d0800000000000000 + internalID: -2755453101209018879 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: barGreen_verticalTop.png + rect: + serializedVersion: 2 + x: 171 + y: 27 + width: 18 + height: 9 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: a87ebc9d9d92785c0800000000000000 + internalID: -4213352910743148662 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: barRed_horizontalLeft.png + rect: + serializedVersion: 2 + x: 370 + y: 404 + width: 9 + height: 18 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: 826e4bb23e1fa0da0800000000000000 + internalID: -5977699597387766232 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: barRed_horizontalMid.png + rect: + serializedVersion: 2 + x: 356 + y: 126 + width: 18 + height: 18 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: e2156757bfe6d31d0800000000000000 + internalID: -3369414919916728018 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: barRed_horizontalRight.png + rect: + serializedVersion: 2 + x: 190 + y: 146 + width: 9 + height: 18 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: 35bc6fb0f4780e550800000000000000 + internalID: 6188094661579950931 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: barRed_verticalBottom.png + rect: + serializedVersion: 2 + x: 347 + y: 0 + width: 18 + height: 9 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: 6c833444d57110720800000000000000 + internalID: 2810553331800553670 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: barRed_verticalMid.png + rect: + serializedVersion: 2 + x: 347 + y: 9 + width: 18 + height: 18 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: 1f860179e8f2e6570800000000000000 + internalID: 8461753039342037233 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: barRed_verticalTop.png + rect: + serializedVersion: 2 + x: 338 + y: 27 + width: 18 + height: 9 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: bf2e90372357612d0800000000000000 + internalID: -3308328016718208261 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: barYellow_horizontalLeft.png + rect: + serializedVersion: 2 + x: 370 + y: 368 + width: 9 + height: 18 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: 3b04c1778c3ec9a10800000000000000 + internalID: 1917657991484293299 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: barYellow_horizontalMid.png + rect: + serializedVersion: 2 + x: 338 + y: 45 + width: 18 + height: 18 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: 7755f672b24d3f800800000000000000 + internalID: 645092453454402935 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: barYellow_horizontalRight.png + rect: + serializedVersion: 2 + x: 190 + y: 164 + width: 9 + height: 18 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: 8e611be4a49f9ffa0800000000000000 + internalID: -5766303750328084760 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: barYellow_verticalBottom.png + rect: + serializedVersion: 2 + x: 326 + y: 314 + width: 18 + height: 9 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: d001c67a65fb532b0800000000000000 + internalID: -5605363782295744499 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: barYellow_verticalMid.png + rect: + serializedVersion: 2 + x: 338 + y: 72 + width: 18 + height: 18 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: f00b872e7923fa5b0800000000000000 + internalID: -5355005803999219697 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: barYellow_verticalTop.png + rect: + serializedVersion: 2 + x: 308 + y: 314 + width: 18 + height: 9 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: 86d8644d02c36fc20800000000000000 + internalID: 3239843093637664104 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: buttonLong_beige.png + rect: + serializedVersion: 2 + x: 0 + y: 181 + width: 190 + height: 49 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: 2369ed97b20e89c60800000000000000 + internalID: 7825250829889082930 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: buttonLong_beige_pressed.png + rect: + serializedVersion: 2 + x: 0 + y: 230 + width: 190 + height: 45 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: b60d9dfe8d7a88270800000000000000 + internalID: 8253030867335237739 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: buttonLong_blue.png + rect: + serializedVersion: 2 + x: 0 + y: 275 + width: 190 + height: 49 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: 015e42508ed8fa8c0800000000000000 + internalID: -3985811117541366512 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: buttonLong_blue_pressed.png + rect: + serializedVersion: 2 + x: 0 + y: 324 + width: 190 + height: 45 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: 960de380b5aeacc70800000000000000 + internalID: 8992257282699874409 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: buttonLong_brown.png + rect: + serializedVersion: 2 + x: 0 + y: 414 + width: 190 + height: 49 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: 243e27691da9c04f0800000000000000 + internalID: -861143203771653310 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: buttonLong_brown_pressed.png + rect: + serializedVersion: 2 + x: 0 + y: 369 + width: 190 + height: 45 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: 0d2b03093f80b07c0800000000000000 + internalID: -4104176793228889392 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: buttonLong_grey.png + rect: + serializedVersion: 2 + x: 0 + y: 463 + width: 190 + height: 49 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: 993399f4c49c1ae80800000000000000 + internalID: -8169026919483231335 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: buttonLong_grey_pressed.png + rect: + serializedVersion: 2 + x: 0 + y: 136 + width: 190 + height: 45 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: 520cd434ec5a32670800000000000000 + internalID: 8512830025971384357 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: buttonRound_beige.png + rect: + serializedVersion: 2 + x: 335 + y: 398 + width: 35 + height: 38 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: a1b385f6584a8a0e0800000000000000 + internalID: -2258374320120644838 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: buttonRound_blue.png + rect: + serializedVersion: 2 + x: 335 + y: 436 + width: 35 + height: 38 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: be0c5d532a51f04a0800000000000000 + internalID: -6625052740406624021 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: buttonRound_brown.png + rect: + serializedVersion: 2 + x: 335 + y: 360 + width: 35 + height: 38 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: e6625f5aeeb392880800000000000000 + internalID: -8635304914333653394 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: buttonRound_grey.png + rect: + serializedVersion: 2 + x: 335 + y: 474 + width: 35 + height: 38 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: 01a39e45b71a683e0800000000000000 + internalID: -2051775029143062000 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: buttonSquare_beige.png + rect: + serializedVersion: 2 + x: 293 + y: 169 + width: 45 + height: 49 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: 6d07f185ad3151260800000000000000 + internalID: 7067577018730115286 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: buttonSquare_beige_pressed.png + rect: + serializedVersion: 2 + x: 290 + y: 373 + width: 45 + height: 45 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: c8bcf9660674a6e30800000000000000 + internalID: 4497485657247042444 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: buttonSquare_blue.png + rect: + serializedVersion: 2 + x: 290 + y: 463 + width: 45 + height: 49 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: 5c4605f1b6f0b0ad0800000000000000 + internalID: -2735075395936164667 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: buttonSquare_blue_pressed.png + rect: + serializedVersion: 2 + x: 290 + y: 328 + width: 45 + height: 45 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: dd61328bbbf07d530800000000000000 + internalID: 3879586902925579997 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: buttonSquare_brown.png + rect: + serializedVersion: 2 + x: 293 + y: 120 + width: 45 + height: 49 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: d1d6c95e26f00bf60800000000000000 + internalID: 8047949451544522013 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: buttonSquare_brown_pressed.png + rect: + serializedVersion: 2 + x: 293 + y: 75 + width: 45 + height: 45 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: 408cd47d8aa257b40800000000000000 + internalID: 5437299029774813188 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: buttonSquare_grey.png + rect: + serializedVersion: 2 + x: 293 + y: 26 + width: 45 + height: 49 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: 65dc352e4c8745020800000000000000 + internalID: 2329619694263455062 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: buttonSquare_grey_pressed.png + rect: + serializedVersion: 2 + x: 290 + y: 418 + width: 45 + height: 45 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: 49ff4310f9e303720800000000000000 + internalID: 2823825819002273684 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: cursorGauntlet_blue.png + rect: + serializedVersion: 2 + x: 30 + y: 0 + width: 30 + height: 30 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: d15a93db3b15662b0800000000000000 + internalID: -5591692054918224611 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: cursorGauntlet_bronze.png + rect: + serializedVersion: 2 + x: 0 + y: 0 + width: 30 + height: 30 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: a3caeeb062362cf00800000000000000 + internalID: 1135579071110884410 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: cursorGauntlet_grey.png + rect: + serializedVersion: 2 + x: 60 + y: 0 + width: 30 + height: 30 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: 48bd17b57739d3130800000000000000 + internalID: 3548154222282398596 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: cursorHand_beige.png + rect: + serializedVersion: 2 + x: 90 + y: 2 + width: 27 + height: 28 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: 5ddcaf92c5c75b820800000000000000 + internalID: 2933387467584884181 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: cursorHand_blue.png + rect: + serializedVersion: 2 + x: 117 + y: 2 + width: 27 + height: 28 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: 74bcc497329762a70800000000000000 + internalID: 8801855715008105287 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: cursorHand_grey.png + rect: + serializedVersion: 2 + x: 144 + y: 2 + width: 27 + height: 28 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: d3eba804f1fca8700800000000000000 + internalID: 543474438185336381 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: cursorSword_bronze.png + rect: + serializedVersion: 2 + x: 338 + y: 144 + width: 34 + height: 37 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: c4da444ed8a663ee0800000000000000 + internalID: -1281719886287688372 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: cursorSword_gold.png + rect: + serializedVersion: 2 + x: 338 + y: 181 + width: 34 + height: 37 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: 24ff2d9b8406d6ef0800000000000000 + internalID: -113328550142869694 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: cursorSword_silver.png + rect: + serializedVersion: 2 + x: 335 + y: 323 + width: 34 + height: 37 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: cc0bc67d5febc60b0800000000000000 + internalID: -5733998262458994484 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: iconCheck_beige.png + rect: + serializedVersion: 2 + x: 369 + y: 313 + width: 16 + height: 15 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: 151c9e776d2d12460800000000000000 + internalID: 7215279896600887633 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: iconCheck_blue.png + rect: + serializedVersion: 2 + x: 370 + y: 467 + width: 16 + height: 15 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: 7c4eeb57be13e2980800000000000000 + internalID: -8561850954222213945 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: iconCheck_bronze.png + rect: + serializedVersion: 2 + x: 370 + y: 452 + width: 16 + height: 15 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: 7ef5954b41fd1e030800000000000000 + internalID: 3522341663598534631 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: iconCheck_grey.png + rect: + serializedVersion: 2 + x: 370 + y: 422 + width: 16 + height: 15 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: 7d9110b9730c997b0800000000000000 + internalID: -5216927348275734057 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: iconCircle_beige.png + rect: + serializedVersion: 2 + x: 356 + y: 29 + width: 17 + height: 17 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: 55a790054af28ae50800000000000000 + internalID: 6820754018416556629 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: iconCircle_blue.png + rect: + serializedVersion: 2 + x: 365 + y: 12 + width: 17 + height: 17 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: ab3dedcbd50a28820800000000000000 + internalID: 2919071832950625210 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: iconCircle_brown.png + rect: + serializedVersion: 2 + x: 369 + y: 343 + width: 17 + height: 17 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: fa1ab2610b9f22d70800000000000000 + internalID: 9017043938630672815 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: iconCircle_grey.png + rect: + serializedVersion: 2 + x: 356 + y: 46 + width: 17 + height: 17 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: 54e22e610d11d6860800000000000000 + internalID: 7524690137840758341 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: iconCross_beige.png + rect: + serializedVersion: 2 + x: 369 + y: 328 + width: 16 + height: 15 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: b3951673b89facfb0800000000000000 + internalID: -4626611290844866245 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: iconCross_blue.png + rect: + serializedVersion: 2 + x: 370 + y: 482 + width: 16 + height: 15 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: fb2afc76699a8bee0800000000000000 + internalID: -1245058833516092737 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: iconCross_brown.png + rect: + serializedVersion: 2 + x: 370 + y: 497 + width: 16 + height: 15 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: ed6c6891379bdce50800000000000000 + internalID: 6831320113791551198 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: iconCross_grey.png + rect: + serializedVersion: 2 + x: 370 + y: 437 + width: 16 + height: 15 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: b9773e82407cc7800800000000000000 + internalID: 611582470095337371 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: panelInset_beige.png + rect: + serializedVersion: 2 + x: 200 + y: 124 + width: 93 + height: 94 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: 4f2dbcaa5f2b2dc00800000000000000 + internalID: 923997641766589172 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: panelInset_beigeLight.png + rect: + serializedVersion: 2 + x: 190 + y: 218 + width: 93 + height: 94 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: bc16d4113feb49fa0800000000000000 + internalID: -5794796869342371381 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: panelInset_blue.png + rect: + serializedVersion: 2 + x: 200 + y: 30 + width: 93 + height: 94 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: 95819d354b44adc80800000000000000 + internalID: -8297243822185179047 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: panelInset_brown.png + rect: + serializedVersion: 2 + x: 283 + y: 218 + width: 93 + height: 94 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: f954b929f9cc60880800000000000000 + internalID: -8644997448959572577 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: panel_beige.png + rect: + serializedVersion: 2 + x: 190 + y: 312 + width: 100 + height: 100 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: 7329d82aad5c88710800000000000000 + internalID: 1695822802525721143 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: panel_beigeLight.png + rect: + serializedVersion: 2 + x: 100 + y: 36 + width: 100 + height: 100 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: 11d6beb9bce61e4e0800000000000000 + internalID: -1954158942528770799 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: panel_blue.png + rect: + serializedVersion: 2 + x: 190 + y: 412 + width: 100 + height: 100 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: ed184c26878e6c1a0800000000000000 + internalID: -6789483784463679010 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: panel_brown.png + rect: + serializedVersion: 2 + x: 0 + y: 36 + width: 100 + height: 100 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + outline: [] + physicsShape: [] + tessellationDetail: -1 + bones: [] + spriteID: 4eba342ab795806e0800000000000000 + internalID: -1871147257634247708 + vertices: [] + indices: + edges: [] + weights: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Spritesheets/uipack_rpg_sheet.xml b/Assets/Spritesheets/uipack_rpg_sheet.xml new file mode 100644 index 0000000..09aeee4 --- /dev/null +++ b/Assets/Spritesheets/uipack_rpg_sheet.xml @@ -0,0 +1,89 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Assets/Spritesheets/uipack_rpg_sheet.xml.meta b/Assets/Spritesheets/uipack_rpg_sheet.xml.meta new file mode 100644 index 0000000..46baa4e --- /dev/null +++ b/Assets/Spritesheets/uipack_rpg_sheet.xml.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: eb81e257b5879c4479ed1e2a1874505f +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TextureAtlasSlicer.meta b/Assets/TextureAtlasSlicer.meta new file mode 100644 index 0000000..d901a50 --- /dev/null +++ b/Assets/TextureAtlasSlicer.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 575a86d4fe7d22f4f915b9d1c09778e9 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TextureAtlasSlicer/Editor.meta b/Assets/TextureAtlasSlicer/Editor.meta new file mode 100644 index 0000000..8509ee6 --- /dev/null +++ b/Assets/TextureAtlasSlicer/Editor.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 23aa647f2fb21bf46b850587506ba4a2 +folderAsset: yes +timeCreated: 1430572177 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TextureAtlasSlicer/Editor/TextureAtlasSlicer.cs b/Assets/TextureAtlasSlicer/Editor/TextureAtlasSlicer.cs new file mode 100644 index 0000000..a738c29 --- /dev/null +++ b/Assets/TextureAtlasSlicer/Editor/TextureAtlasSlicer.cs @@ -0,0 +1,281 @@ +using System; +using System.IO; +using System.Linq; +using System.Xml; +using UnityEditor; +using UnityEngine; + +public class TextureAtlasSlicer : EditorWindow { + [MenuItem("CONTEXT/TextureImporter/Slice Sprite Using XML")] + public static void SliceUsingXML(MenuCommand command) { + var textureImporter = command.context as TextureImporter; + + var window = CreateInstance(); + + window.importer = textureImporter; + + window.ShowUtility(); + } + + [MenuItem("Assets/Slice Sprite Using XML")] + public static void TextureAtlasSlicerWindow() { + var window = CreateInstance(); + + window.Show(); + } + + [MenuItem("CONTEXT/TextureImporter/Slice Sprite Using XML", true)] + public static bool ValidateSliceUsingXML(MenuCommand command) { + var textureImporter = command.context as TextureImporter; + + //valid only if the texture type is 'sprite' or 'advanced'. + return textureImporter && textureImporter.textureType == TextureImporterType.Sprite || + textureImporter.textureType == TextureImporterType.Default; + } + + public TextureImporter importer; + + public TextureAtlasSlicer() { + titleContent = new GUIContent("XML Slicer"); + } + + + [SerializeField] + private TextAsset xmlAsset; + + public SpriteAlignment spriteAlignment = SpriteAlignment.Center; + + public Vector2 customOffset = new Vector2(0.5f, 0.5f); + + public void OnSelectionChange() { + UseSelectedTexture(); + } + + private Texture2D selectedTexture; + + private void UseSelectedTexture() { + if (Selection.objects.Length > 1) { + selectedTexture = null; + } else { + selectedTexture = Selection.activeObject as Texture2D; + } + + if (selectedTexture != null) { + var assetPath = AssetDatabase.GetAssetPath(selectedTexture); + + importer = AssetImporter.GetAtPath(assetPath) as TextureImporter; + + if (importer) { + var extension = Path.GetExtension(assetPath); + var pathWithoutExtension = assetPath.Remove(assetPath.Length - extension.Length, extension.Length); + + var xmlPath = pathWithoutExtension + ".xml"; + + var textAsset = AssetDatabase.LoadAssetAtPath(xmlPath, typeof (TextAsset)); + + if (textAsset != null) { + xmlAsset = textAsset as TextAsset; + } else { + xmlAsset = null; + subTextures = null; + } + + ParseXML(); + } else { + xmlAsset = null; + subTextures = null; + } + } else { + importer = null; + xmlAsset = null; + subTextures = null; + } + + Repaint(); + } + + private SubTexture[] subTextures; + private int wantedWidth, wantedHeight; + + private void ParseXML() { + try { + var document = new XmlDocument(); + document.LoadXml(xmlAsset.text); + + var root = document.DocumentElement; + if (root == null || root.Name != "TextureAtlas") { + return; + } + + subTextures = root.ChildNodes + .Cast() + .Where(childNode => childNode.Name == "SubTexture") + .Select(childNode => new SubTexture { + width = Convert.ToInt32(childNode.Attributes["width"].Value), + height = Convert.ToInt32(childNode.Attributes["height"].Value), + x = Convert.ToInt32(childNode.Attributes["x"].Value), + y = Convert.ToInt32(childNode.Attributes["y"].Value), + name = childNode.Attributes["name"].Value + }).ToArray(); + + wantedWidth = 0; + wantedHeight = 0; + + foreach (var subTexture in subTextures) { + var right = subTexture.x + subTexture.width; + var bottom = subTexture.y + subTexture.height; + + wantedWidth = Mathf.Max(wantedWidth, right); + wantedHeight = Mathf.Max(wantedHeight, bottom); + } + } catch (Exception) { + subTextures = null; + } + } + + public void OnEnable() { + UseSelectedTexture(); + } + + public void OnGUI() { + if (importer == null) { + EditorGUILayout.LabelField("Please select a texture to slice."); + return; + } + EditorGUI.BeginDisabledGroup(focusedWindow != this); + { + EditorGUI.BeginDisabledGroup(true); + EditorGUILayout.ObjectField("Texture", Selection.activeObject, typeof (Texture), false); + EditorGUI.EndDisabledGroup(); + + if (importer.textureType != TextureImporterType.Sprite && + importer.textureType != TextureImporterType.Default) { + EditorGUILayout.LabelField("The Texture Type needs to be Sprite or Advanced!"); + } + + EditorGUI.BeginDisabledGroup((importer.textureType != TextureImporterType.Sprite && + importer.textureType != TextureImporterType.Default)); + { + EditorGUI.BeginChangeCheck(); + xmlAsset = EditorGUILayout.ObjectField("XML Source", xmlAsset, typeof (TextAsset), false) as TextAsset; + if (EditorGUI.EndChangeCheck()) { + ParseXML(); + } + + spriteAlignment = (SpriteAlignment) EditorGUILayout.EnumPopup("Pivot", spriteAlignment); + + EditorGUI.BeginDisabledGroup(spriteAlignment != SpriteAlignment.Custom); + EditorGUILayout.Vector2Field("Custom Offset", customOffset); + EditorGUI.EndDisabledGroup(); + + var needsToResizeTexture = wantedWidth > selectedTexture.width || wantedHeight > selectedTexture.height; + + if (xmlAsset != null && needsToResizeTexture) { + EditorGUILayout.LabelField( + string.Format("Texture size too small." + + " It needs to be at least {0} by {1} pixels!", + wantedWidth, + wantedHeight)); + EditorGUILayout.LabelField("Try changing the Max Size property in the importer."); + } + + if (subTextures == null || subTextures.Length == 0) { + EditorGUILayout.LabelField("Could not find any SubTextures in XML."); + } + + EditorGUI.BeginDisabledGroup(xmlAsset == null || needsToResizeTexture || subTextures == null || + subTextures.Length == 0); + if (GUILayout.Button("Slice")) { + PerformSlice(); + } + EditorGUI.EndDisabledGroup(); + } + EditorGUI.EndDisabledGroup(); + } + EditorGUI.EndDisabledGroup(); + } + + private struct SubTexture { + public int width; + public int height; + public int x; + public int y; + public string name; + } + + private void PerformSlice() { + if (importer == null) { + return; + } + + var textureHeight = selectedTexture.height; + + var needsUpdate = false; + + if (importer.spriteImportMode != SpriteImportMode.Multiple) { + needsUpdate = true; + importer.spriteImportMode = SpriteImportMode.Multiple; + } + + var wantedSpriteSheet = (from subTexture in subTextures + let actualY = textureHeight - (subTexture.y + subTexture.height) + select new SpriteMetaData { + alignment = (int) spriteAlignment, + border = new Vector4(), + name = subTexture.name, + pivot = GetPivotValue(spriteAlignment, customOffset), + rect = new Rect(subTexture.x, actualY, subTexture.width, subTexture.height) + }).ToArray(); + if (!needsUpdate && !importer.spritesheet.SequenceEqual(wantedSpriteSheet)) { + needsUpdate = true; + importer.spritesheet = wantedSpriteSheet; + } + + if (needsUpdate) { + EditorUtility.SetDirty(importer); + + try { + AssetDatabase.StartAssetEditing(); + AssetDatabase.ImportAsset(importer.assetPath); + + EditorUtility.DisplayDialog("Success!", "The sprite was sliced successfully.", "OK"); + } catch (Exception exception) { + Debug.LogException(exception); + EditorUtility.DisplayDialog("Error", "There was an exception while trying to reimport the image." + + "\nPlease check the console log for details.", "OK"); + } finally { + AssetDatabase.StopAssetEditing(); + } + } else { + EditorUtility.DisplayDialog("Nope!", "The sprite is already sliced according to this XML file.", "OK"); + } + } + + //SpriteEditorUtility + public static Vector2 GetPivotValue(SpriteAlignment alignment, Vector2 customOffset) { + switch (alignment) { + case SpriteAlignment.Center: + return new Vector2(0.5f, 0.5f); + case SpriteAlignment.TopLeft: + return new Vector2(0.0f, 1f); + case SpriteAlignment.TopCenter: + return new Vector2(0.5f, 1f); + case SpriteAlignment.TopRight: + return new Vector2(1f, 1f); + case SpriteAlignment.LeftCenter: + return new Vector2(0.0f, 0.5f); + case SpriteAlignment.RightCenter: + return new Vector2(1f, 0.5f); + case SpriteAlignment.BottomLeft: + return new Vector2(0.0f, 0.0f); + case SpriteAlignment.BottomCenter: + return new Vector2(0.5f, 0.0f); + case SpriteAlignment.BottomRight: + return new Vector2(1f, 0.0f); + case SpriteAlignment.Custom: + return customOffset; + default: + return Vector2.zero; + } + } +} \ No newline at end of file diff --git a/Assets/TextureAtlasSlicer/Editor/TextureAtlasSlicer.cs.meta b/Assets/TextureAtlasSlicer/Editor/TextureAtlasSlicer.cs.meta new file mode 100644 index 0000000..f6484df --- /dev/null +++ b/Assets/TextureAtlasSlicer/Editor/TextureAtlasSlicer.cs.meta @@ -0,0 +1,12 @@ +fileFormatVersion: 2 +guid: 2067bd0762faf2c48910fee768c92901 +timeCreated: 1430572201 +licenseType: Store +MonoImporter: + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TextureAtlasSlicer/README.md b/Assets/TextureAtlasSlicer/README.md new file mode 100644 index 0000000..5c2b2fc --- /dev/null +++ b/Assets/TextureAtlasSlicer/README.md @@ -0,0 +1,17 @@ +# Unity3D-TextureAtlasSlicer +Simple and fast tool to import XML spritesheets (TextureAtlas) into Unity3D! + +![Preview Image](https://i.imgur.com/LhmcMjX.png) + +Works very well to import [Kenney's sprite assets](http://opengameart.org/users/kenney)! + +## Usage +- Copy this folder to your project's assets directory, or just use the latest .unitypackage file from the [Github project's releases](https://github.com/toxicFork/Unity3D-TextureAtlasSlicer/releases), or the [Unity3D asset store](https://www.assetstore.unity3d.com/en/#!/content/36103)! +- You can now use the Assets/Slice Sprite Using XML button! +- This will open a window. +- Select any sprite asset in your Project window +- If it has a XML file with the same name next to it, that XML file will automatically be selected +- Otherwise, drag-drop the XML file reference onto the XML Source field in the Texture Atlas Slicer window +- Configure the pivot settings +- Hit Slice! +- Enjoy! :D diff --git a/Assets/TextureAtlasSlicer/README.md.meta b/Assets/TextureAtlasSlicer/README.md.meta new file mode 100644 index 0000000..ebeb99b --- /dev/null +++ b/Assets/TextureAtlasSlicer/README.md.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 463e84607d141d645b70834aa062a0d1 +timeCreated: 1430859603 +licenseType: Store +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/ProjectSettings/ProjectSettings.asset b/ProjectSettings/ProjectSettings.asset index 43a0eae..fe6e2f1 100644 --- a/ProjectSettings/ProjectSettings.asset +++ b/ProjectSettings/ProjectSettings.asset @@ -145,7 +145,8 @@ PlayerSettings: resolutionScalingMode: 0 androidSupportedAspectRatio: 1 androidMaxAspectRatio: 2.1 - applicationIdentifier: {} + applicationIdentifier: + Standalone: com.DefaultCompany.prototurnbasedrpg buildNumber: Standalone: 0 iPhone: 0 diff --git a/ProjectSettings/ProjectVersion.txt b/ProjectSettings/ProjectVersion.txt index 78a3249..833e6ef 100644 --- a/ProjectSettings/ProjectVersion.txt +++ b/ProjectSettings/ProjectVersion.txt @@ -1,2 +1,2 @@ -m_EditorVersion: 2020.2.3f1 -m_EditorVersionWithRevision: 2020.2.3f1 (8ff31bc5bf5b) +m_EditorVersion: 2020.2.4f1 +m_EditorVersionWithRevision: 2020.2.4f1 (becced5a802b) diff --git a/ProjectSettings/QualitySettings.asset b/ProjectSettings/QualitySettings.asset index d24eb10..2b39c51 100644 --- a/ProjectSettings/QualitySettings.asset +++ b/ProjectSettings/QualitySettings.asset @@ -4,7 +4,7 @@ QualitySettings: m_ObjectHideFlags: 0 serializedVersion: 5 - m_CurrentQuality: 5 + m_CurrentQuality: 3 m_QualitySettings: - serializedVersion: 2 name: Very Low @@ -165,7 +165,7 @@ QualitySettings: skinWeights: 4 textureQuality: 0 anisotropicTextures: 2 - antiAliasing: 2 + antiAliasing: 0 softParticles: 1 softVegetation: 1 realtimeReflectionProbes: 1 @@ -201,7 +201,7 @@ QualitySettings: skinWeights: 255 textureQuality: 0 anisotropicTextures: 2 - antiAliasing: 2 + antiAliasing: 0 softParticles: 1 softVegetation: 1 realtimeReflectionProbes: 1