From f1474fb6dd1a9cd57c49215637bfcfe1dd0face4 Mon Sep 17 00:00:00 2001 From: laurids Date: Sat, 23 May 2020 12:51:02 +0200 Subject: [PATCH] Districts Part 1 --- Assets/GWConquest/Scenes/GalaxyMap.unity | 792 +++++++++++++++++- Assets/GWConquest/Scripts/District.cs | 32 + Assets/GWConquest/Scripts/District.cs.meta | 11 + Assets/GWConquest/Scripts/GWCamera.cs | 72 +- Assets/GWConquest/Scripts/Planet.cs | 1 + .../Textures/Icons/ICON_Build_2.PNG | Bin 12996 -> 11895 bytes 6 files changed, 899 insertions(+), 9 deletions(-) create mode 100644 Assets/GWConquest/Scripts/District.cs create mode 100644 Assets/GWConquest/Scripts/District.cs.meta diff --git a/Assets/GWConquest/Scenes/GalaxyMap.unity b/Assets/GWConquest/Scenes/GalaxyMap.unity index 604cbe8..d73a445 100644 --- a/Assets/GWConquest/Scenes/GalaxyMap.unity +++ b/Assets/GWConquest/Scenes/GalaxyMap.unity @@ -1204,6 +1204,21 @@ PrefabInstance: propertyPath: zoneId value: 340 objectReference: {fileID: 0} + - target: {fileID: 4678135252407299477, guid: 9ae35d7f911b63f4f95f432141dd5746, + type: 3} + propertyPath: m_LocalPosition.x + value: -1.67 + objectReference: {fileID: 0} + - target: {fileID: 4678135252407299477, guid: 9ae35d7f911b63f4f95f432141dd5746, + type: 3} + propertyPath: m_LocalPosition.y + value: 23.4 + objectReference: {fileID: 0} + - target: {fileID: 4678135252407299477, guid: 9ae35d7f911b63f4f95f432141dd5746, + type: 3} + propertyPath: m_LocalPosition.z + value: -10.34 + objectReference: {fileID: 0} m_RemovedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 9ae35d7f911b63f4f95f432141dd5746, type: 3} --- !u!4 &30126766 stripped @@ -3646,6 +3661,152 @@ RectTransform: type: 3} m_PrefabInstance: {fileID: 140575598} m_PrefabAsset: {fileID: 0} +--- !u!1 &140950775 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 140950776} + - component: {fileID: 140950778} + - component: {fileID: 140950777} + m_Layer: 5 + m_Name: Icon + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &140950776 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 140950775} + 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: 1367539068} + m_RootOrder: 1 + 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 &140950777 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 140950775} + 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_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 3b81d9ff9816c8240b02293797c69234, type: 3} + m_Type: 0 + m_PreserveAspect: 1 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &140950778 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 140950775} + m_CullTransparentMesh: 0 +--- !u!1 &145240817 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 145240818} + - component: {fileID: 145240820} + - component: {fileID: 145240819} + m_Layer: 5 + m_Name: Image (3) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &145240818 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 145240817} + 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: 570091126} + m_RootOrder: 1 + 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: 115.94, y: 115.94} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &145240819 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 145240817} + 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: 0 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 56cff57f239e75841b8fd76f339a712d, 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 &145240820 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 145240817} + m_CullTransparentMesh: 0 --- !u!1 &153502806 GameObject: m_ObjectHideFlags: 0 @@ -5223,6 +5384,42 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 243470604} m_CullTransparentMesh: 0 +--- !u!1 &244030530 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 244030531} + m_Layer: 5 + m_Name: DistrictIcons + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &244030531 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 244030530} + 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: 593026048} + m_Father: {fileID: 765894939} + 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!1 &252441371 GameObject: m_ObjectHideFlags: 0 @@ -11181,6 +11378,7 @@ RectTransform: - {fileID: 1642390277} - {fileID: 1798411515} - {fileID: 657809897} + - {fileID: 765894939} m_Father: {fileID: 1986334066} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} @@ -11417,6 +11615,79 @@ MeshFilter: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 496607024} m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &496804110 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 496804111} + - component: {fileID: 496804113} + - component: {fileID: 496804112} + m_Layer: 5 + m_Name: Image (1) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &496804111 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 496804110} + 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: 861005773} + m_RootOrder: 1 + 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: 115.94, y: 115.94} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &496804112 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 496804110} + 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: 0 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 56cff57f239e75841b8fd76f339a712d, 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 &496804113 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 496804110} + m_CullTransparentMesh: 0 --- !u!1 &498947895 GameObject: m_ObjectHideFlags: 0 @@ -12911,6 +13182,43 @@ Transform: type: 3} m_PrefabInstance: {fileID: 564464089} m_PrefabAsset: {fileID: 0} +--- !u!1 &570091125 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 570091126} + m_Layer: 5 + m_Name: EnemyIndicator + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &570091126 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 570091125} + 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: 1368323789} + - {fileID: 145240818} + m_Father: {fileID: 961268228} + m_RootOrder: 1 + 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: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} --- !u!1 &571827649 GameObject: m_ObjectHideFlags: 0 @@ -13511,6 +13819,43 @@ Transform: type: 3} m_PrefabInstance: {fileID: 589985524} m_PrefabAsset: {fileID: 0} +--- !u!1 &593026047 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 593026048} + m_Layer: 5 + m_Name: DistrictIcon + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &593026048 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 593026047} + 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: 961268228} + - {fileID: 1367539068} + m_Father: {fileID: 244030531} + m_RootOrder: 0 + 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: -429, y: 170} + m_SizeDelta: {x: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} --- !u!1 &603259465 stripped GameObject: m_CorrespondingSourceObject: {fileID: 4678135251219452000, guid: 9ae35d7f911b63f4f95f432141dd5746, @@ -14694,11 +15039,11 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 663080992} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalScale: {x: 0.5, y: 0.49999994, z: 0.5} m_Children: [] - m_Father: {fileID: 690503116} + m_Father: {fileID: 1647585765} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!114 &663080994 @@ -15453,8 +15798,7 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: -2000} m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: - - {fileID: 663080993} + m_Children: [] m_Father: {fileID: 1992706994} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} @@ -17663,6 +18007,42 @@ Transform: type: 3} m_PrefabInstance: {fileID: 762952354} m_PrefabAsset: {fileID: 0} +--- !u!1 &765894938 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 765894939} + m_Layer: 5 + m_Name: PlanetViewUI + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &765894939 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 765894938} + 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: 244030531} + m_Father: {fileID: 494226835} + m_RootOrder: 9 + 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!1001 &766573527 PrefabInstance: m_ObjectHideFlags: 0 @@ -19033,6 +19413,43 @@ MeshFilter: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 850500813} m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &861005772 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 861005773} + m_Layer: 5 + m_Name: PlayerIndicator + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &861005773 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 861005772} + 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: 1616235763} + - {fileID: 496804111} + m_Father: {fileID: 961268228} + m_RootOrder: 0 + 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: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} --- !u!1 &868134839 stripped GameObject: m_CorrespondingSourceObject: {fileID: 4678135251219452000, guid: 9ae35d7f911b63f4f95f432141dd5746, @@ -20882,6 +21299,43 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 958326568} m_CullTransparentMesh: 0 +--- !u!1 &961268227 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 961268228} + m_Layer: 5 + m_Name: Indicators + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &961268228 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 961268227} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.6711536, y: 0.67115295, z: 0.67115295} + m_Children: + - {fileID: 861005773} + - {fileID: 570091126} + m_Father: {fileID: 593026048} + m_RootOrder: 0 + 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: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} --- !u!1 &961958858 GameObject: m_ObjectHideFlags: 0 @@ -25707,6 +26161,11 @@ PrefabInstance: m_Modification: m_TransformParent: {fileID: 494226835} m_Modifications: + - target: {fileID: 2956280660929543382, guid: db87c6b873833724cafe2f8940f45b52, + type: 3} + propertyPath: m_IsActive + value: 0 + objectReference: {fileID: 0} - target: {fileID: 8467716388278459800, guid: db87c6b873833724cafe2f8940f45b52, type: 3} propertyPath: m_Text @@ -28097,6 +28556,26 @@ MonoBehaviour: sign: -1 drawCircle: 0 circle: {fileID: 2800000, guid: 9d02af9561347c349986baae6fb1fa27, type: 3} +--- !u!1 &1272010364 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 4678135252407299479, guid: 9ae35d7f911b63f4f95f432141dd5746, + type: 3} + m_PrefabInstance: {fileID: 30126765} + m_PrefabAsset: {fileID: 0} +--- !u!114 &1272010365 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1272010364} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a89484993d239124eb667c8c33c633d3, type: 3} + m_Name: + m_EditorClassIdentifier: + DefaultSprite: {fileID: 21300000, guid: b342f32a755f5ce4ba984c1fdb44394c, type: 3} + DistrictName: Arnough Primus --- !u!1 &1272903228 GameObject: m_ObjectHideFlags: 0 @@ -28696,6 +29175,79 @@ MonoBehaviour: sign: -1 drawCircle: 0 circle: {fileID: 2800000, guid: 9d02af9561347c349986baae6fb1fa27, type: 3} +--- !u!1 &1298132658 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1298132659} + - component: {fileID: 1298132661} + - component: {fileID: 1298132660} + m_Layer: 5 + m_Name: Border + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1298132659 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1298132658} + 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: 1367539068} + 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 &1298132660 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1298132658} + 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_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 9d02af9561347c349986baae6fb1fa27, 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 &1298132661 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1298132658} + m_CullTransparentMesh: 0 --- !u!1001 &1301173016 PrefabInstance: m_ObjectHideFlags: 0 @@ -29235,6 +29787,154 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 6ded4d2fd3f18ad40916c57fe4f6a566, type: 3} m_Name: m_EditorClassIdentifier: +--- !u!1 &1367539067 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1367539068} + - component: {fileID: 1367539070} + - component: {fileID: 1367539069} + m_Layer: 5 + m_Name: Background + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1367539068 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1367539067} + 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: 1298132659} + - {fileID: 140950776} + m_Father: {fileID: 593026048} + m_RootOrder: 1 + 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: 50, y: 50} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1367539069 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1367539067} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.084, g: 0.084, b: 0.084, a: 0.6509804} + m_RaycastTarget: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: c5c5d1f6b8fa0404ca44f3ea7c937909, 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 &1367539070 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1367539067} + m_CullTransparentMesh: 0 +--- !u!1 &1368323788 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1368323789} + - component: {fileID: 1368323791} + - component: {fileID: 1368323790} + m_Layer: 5 + m_Name: Image (2) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1368323789 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1368323788} + m_LocalRotation: {x: -0, y: -0, z: 0.23252034, w: 0.9725916} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: -1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 570091126} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 26.891} + 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: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1368323790 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1368323788} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.8, g: 0.25490198, b: 0.14509805, a: 0.62352943} + m_RaycastTarget: 0 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: b9cbeaf1157e7bc4caaefe06915891b0, type: 3} + m_Type: 3 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 0.355 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1368323791 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1368323788} + m_CullTransparentMesh: 0 --- !u!1 &1384416288 stripped GameObject: m_CorrespondingSourceObject: {fileID: 4678135251219452000, guid: 9ae35d7f911b63f4f95f432141dd5746, @@ -32691,6 +33391,79 @@ Transform: type: 3} m_PrefabInstance: {fileID: 1613302958} m_PrefabAsset: {fileID: 0} +--- !u!1 &1616235762 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1616235763} + - component: {fileID: 1616235765} + - component: {fileID: 1616235764} + m_Layer: 5 + m_Name: Image + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1616235763 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1616235762} + m_LocalRotation: {x: -0, y: -0, z: -0.23251688, w: 0.97259235} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 861005773} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: -26.891} + 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: 100, y: 100} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1616235764 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1616235762} + 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: 0.8901961, b: 0.5686275, a: 0.62352943} + m_RaycastTarget: 0 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: b9cbeaf1157e7bc4caaefe06915891b0, type: 3} + m_Type: 3 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 0.221 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1616235765 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1616235762} + m_CullTransparentMesh: 0 --- !u!1001 &1617289542 PrefabInstance: m_ObjectHideFlags: 0 @@ -33327,7 +34100,8 @@ Transform: m_LocalRotation: {x: 0.35157326, y: 0.2294723, z: -0.0893232, w: 0.90319437} m_LocalPosition: {x: 7.07, y: 37.71, z: -37.04} m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] + m_Children: + - {fileID: 663080993} m_Father: {fileID: 690382256} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 42.538002, y: 28.511002, z: 0} @@ -40349,7 +41123,9 @@ MonoBehaviour: scrollRegionSize: 100 cameraRotationSpeed: 200 cameraZoomSpeed: -40000 + cameraZoomTranslationSpeed: 1 cameraZoomSmooth: 1 + cameraTranslationSmooth: 1 minCameraAngle: 10 maxCameraAngle: 80 minCameraZoom: 500 @@ -40386,8 +41162,10 @@ MonoBehaviour: cameraTranslationSpeedMaxZoom: 3500 scrollRegionSize: 10 cameraRotationSpeed: 300 - cameraZoomSpeed: 200000 + cameraZoomSpeed: 300000 + cameraZoomTranslationSpeed: 1 cameraZoomSmooth: 0.03 + cameraTranslationSmooth: 0.03 minCameraAngle: 35 maxCameraAngle: 90 minCameraZoom: -5000 diff --git a/Assets/GWConquest/Scripts/District.cs b/Assets/GWConquest/Scripts/District.cs new file mode 100644 index 0000000..1ccd13d --- /dev/null +++ b/Assets/GWConquest/Scripts/District.cs @@ -0,0 +1,32 @@ +using UnityEngine; + +namespace GWConquest +{ + public class District : MonoBehaviour + { + public Sprite DefaultSprite; + public string DistrictName; + + private Zone zone; + private Planet planet; + + public void Initialize(Planet _planet) + { + planet = _planet; + zone = GetComponent(); + + } + + + public virtual Sprite GetCurrentSprite() + { + return DefaultSprite; + } + + public virtual string GetDistrictName() + { + return DistrictName; + } + + } +} \ No newline at end of file diff --git a/Assets/GWConquest/Scripts/District.cs.meta b/Assets/GWConquest/Scripts/District.cs.meta new file mode 100644 index 0000000..b246a49 --- /dev/null +++ b/Assets/GWConquest/Scripts/District.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a89484993d239124eb667c8c33c633d3 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GWConquest/Scripts/GWCamera.cs b/Assets/GWConquest/Scripts/GWCamera.cs index 8a8e692..467752f 100644 --- a/Assets/GWConquest/Scripts/GWCamera.cs +++ b/Assets/GWConquest/Scripts/GWCamera.cs @@ -16,7 +16,10 @@ namespace GWConquest public float cameraRotationSpeed = 1f; public float cameraZoomSpeed = 1f; + public float cameraZoomTranslationSpeed = 1f; + public float cameraZoomSmooth = 1f; + public float cameraTranslationSmooth = 1f; public float minCameraAngle; public float maxCameraAngle; @@ -27,9 +30,16 @@ namespace GWConquest private float cameraZoomTarget; private float cameraZoomVelocity = 0f; + private Vector3 transformPositionTarget; + private Vector3 transformPositionVelocity = Vector3.zero; + + private Plane cameraPlane; + private void Start() { cameraZoomTarget = cameraTransform.localPosition.z; + transformPositionTarget = transform.position; + cameraPlane = new Plane(Vector3.up, transform.position); } public Vector2 GetEdgeScroll() @@ -61,6 +71,21 @@ namespace GWConquest return new Vector2(horizontal, vertical); } + private Vector3 GetMousePositionTarget() + { + Vector3 mousePos = Input.mousePosition; + Ray mouseRay = Camera.main.ScreenPointToRay(mousePos); +#if UNITY_EDITOR + Debug.DrawRay(mouseRay.origin, mouseRay.direction); +#endif + if (cameraPlane.Raycast(mouseRay, out float enter)) + { + return mouseRay.GetPoint(enter); + } + else return cameraTransform.position; + + } + private void Update() { float horizontalButtons = Input.GetAxis("Horizontal"); @@ -79,8 +104,8 @@ namespace GWConquest float zoomPercent = Mathf.InverseLerp(minCameraZoom, maxCameraZoom, cameraZoomTarget); float cameraTranslationSpeed = Mathf.Lerp(cameraTranslationSpeedMaxZoom, cameraTranslationSpeedMinZoom, zoomPercent); - transform.localPosition += vertical * cameraTranslationSpeed * Time.deltaTime * forward; - transform.localPosition += horizontal * cameraTranslationSpeed * Time.deltaTime * right; + transformPositionTarget += vertical * cameraTranslationSpeed * Time.deltaTime * forward; + transformPositionTarget += horizontal * cameraTranslationSpeed * Time.deltaTime * right; if (Input.GetButton("Middle Click")) { @@ -109,6 +134,9 @@ namespace GWConquest } else { + /* + Vector3 pointedAtBegin = GetMousePositionTarget(); + cameraZoomTarget += middle * cameraZoomSpeed * Time.deltaTime; cameraZoomTarget = Mathf.Clamp(cameraZoomTarget, minCameraZoom, maxCameraZoom); @@ -117,6 +145,46 @@ namespace GWConquest cameraPos.z = Mathf.SmoothDamp(cameraPos.z, cameraZoomTarget, ref cameraZoomVelocity, cameraZoomSmooth); cameraTransform.localPosition = cameraPos; + + Vector3 pointedAtEnd = GetMousePositionTarget(); + + transform.position -= (pointedAtEnd - pointedAtBegin) * cameraZoomTranslationSpeed; + + Debug.LogFormat("Begin: {0}; End: {1}; Difference: {2}; Afterwards: {3}", pointedAtBegin, pointedAtEnd, pointedAtEnd - pointedAtBegin, GetMousePositionTarget()); + Debug.DrawLine(pointedAtBegin, pointedAtEnd, Color.magenta); + */ + + if(middle != 0) + { + Vector3 pointedAt = GetMousePositionTarget(); + float zoomDelta = cameraZoomSpeed * middle * Time.deltaTime; + Vector3 newCameraPosition = Vector3.MoveTowards(cameraTransform.position, pointedAt, zoomDelta); + + Ray newCameraRay = new Ray(newCameraPosition, cameraTransform.forward); + if (cameraPlane.Raycast(newCameraRay, out float enter)) + { + Vector3 newTransformPos = newCameraRay.GetPoint(enter); + //transformPositionTarget += newTransformPos - transform.position; + transformPositionTarget = newTransformPos; + + Vector3 newCameraPosLocal = transform.InverseTransformPoint(newCameraPosition); + + Debug.LogFormat("New Camera Pos {0}, New Camera Pos Local {1}; New Transform Pos {2}", newCameraPosition, newCameraPosLocal, newTransformPos); + + cameraZoomTarget = newCameraPosLocal.z; + cameraZoomTarget = Mathf.Clamp(cameraZoomTarget, minCameraZoom, maxCameraZoom); + + } + } + + + Vector3 cameraPos = cameraTransform.localPosition; + + cameraPos.z = Mathf.SmoothDamp(cameraPos.z, cameraZoomTarget, ref cameraZoomVelocity, cameraZoomSmooth); + + cameraTransform.localPosition = cameraPos; + + transform.position = Vector3.SmoothDamp(transform.position, transformPositionTarget, ref transformPositionVelocity, cameraTranslationSmooth); } } diff --git a/Assets/GWConquest/Scripts/Planet.cs b/Assets/GWConquest/Scripts/Planet.cs index 58f8884..fbe2651 100644 --- a/Assets/GWConquest/Scripts/Planet.cs +++ b/Assets/GWConquest/Scripts/Planet.cs @@ -68,6 +68,7 @@ namespace GWConquest foreach (Zone zone in groundZones) { zone.planet = this; + zone.GetComponent()?.Initialize(this); } foreach (Zone zone in spaceZones) { diff --git a/Assets/GWConquest/Textures/Icons/ICON_Build_2.PNG b/Assets/GWConquest/Textures/Icons/ICON_Build_2.PNG index 3c4d60b82b75ebde6a3d7269a397eedb97c192ec..f1fdd48059f90f5102e17f9dd852245521a2e1b9 100644 GIT binary patch literal 11895 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 literal 12996 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