diff --git a/.idea/.idea.Aetheria-Economy/.idea/contentModel.xml b/.idea/.idea.Aetheria-Economy/.idea/contentModel.xml
index ca2ea6cf3..b19ca72d2 100644
--- a/.idea/.idea.Aetheria-Economy/.idea/contentModel.xml
+++ b/.idea/.idea.Aetheria-Economy/.idea/contentModel.xml
@@ -9,9 +9,10 @@
+
+
-
@@ -56,6 +57,7 @@
+
@@ -1144,6 +1146,7 @@
+
diff --git a/Assembly-CSharp.csproj b/Assembly-CSharp.csproj
index ba9c759ee..c271fc57d 100644
--- a/Assembly-CSharp.csproj
+++ b/Assembly-CSharp.csproj
@@ -60,11 +60,13 @@
+
+
-
+
@@ -400,6 +402,7 @@
+
diff --git a/Assets/ClickRaycaster.cs b/Assets/ClickRaycaster.cs
new file mode 100644
index 000000000..fc72b7f05
--- /dev/null
+++ b/Assets/ClickRaycaster.cs
@@ -0,0 +1,18 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+public class ClickRaycaster : MonoBehaviour
+{
+ // Start is called before the first frame update
+ void Start()
+ {
+
+ }
+
+ // Update is called once per frame
+ void Update()
+ {
+
+ }
+}
diff --git a/Assets/ClickRaycaster.cs.meta b/Assets/ClickRaycaster.cs.meta
new file mode 100644
index 000000000..b96b17bba
--- /dev/null
+++ b/Assets/ClickRaycaster.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: ba30ab714c5cf6943957d3e4ae549c84
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/ClickableCollider.cs b/Assets/ClickableCollider.cs
new file mode 100644
index 000000000..2a19a8e6d
--- /dev/null
+++ b/Assets/ClickableCollider.cs
@@ -0,0 +1,9 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+public class ClickableCollider : MonoBehaviour
+{
+ public event Action OnClick;
+}
diff --git a/Assets/ClickableCollider.cs.meta b/Assets/ClickableCollider.cs.meta
new file mode 100644
index 000000000..cf21f2d11
--- /dev/null
+++ b/Assets/ClickableCollider.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 52538a3309c36fc4583c964a1c0b705f
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/GalaxyZone.cs b/Assets/GalaxyZone.cs
index 80d407f47..4aed768aa 100644
--- a/Assets/GalaxyZone.cs
+++ b/Assets/GalaxyZone.cs
@@ -5,6 +5,7 @@ using UnityEngine;
public class GalaxyZone : MonoBehaviour
{
+ public MeshRenderer Background;
public MeshRenderer Icon;
public TextMeshPro Label;
}
diff --git a/Assets/Materials/Galaxy Zone Background.mat b/Assets/Materials/Galaxy Zone Background.mat
new file mode 100644
index 000000000..c9dfe1421
--- /dev/null
+++ b/Assets/Materials/Galaxy Zone Background.mat
@@ -0,0 +1,79 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!21 &2100000
+Material:
+ serializedVersion: 6
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_Name: Galaxy Zone Background
+ m_Shader: {fileID: 203, guid: 0000000000000000f000000000000000, type: 0}
+ m_ShaderKeywords:
+ m_LightmapFlags: 4
+ m_EnableInstancingVariants: 0
+ m_DoubleSidedGI: 0
+ m_CustomRenderQueue: -1
+ stringTagMap: {}
+ disabledShaderPasses: []
+ m_SavedProperties:
+ serializedVersion: 3
+ m_TexEnvs:
+ - _BumpMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailAlbedoMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailMask:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _DetailNormalMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _EmissionMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _MainTex:
+ m_Texture: {fileID: 10300, guid: 0000000000000000f000000000000000, type: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _MetallicGlossMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _OcclusionMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ - _ParallaxMap:
+ m_Texture: {fileID: 0}
+ m_Scale: {x: 1, y: 1}
+ m_Offset: {x: 0, y: 0}
+ m_Floats:
+ - _BumpScale: 1
+ - _Cutoff: 0.5
+ - _DetailNormalMapScale: 1
+ - _DstBlend: 0
+ - _GlossMapScale: 1
+ - _Glossiness: 0.5
+ - _GlossyReflections: 1
+ - _InvFade: 1
+ - _Metallic: 0
+ - _Mode: 0
+ - _OcclusionStrength: 1
+ - _Parallax: 0.02
+ - _SmoothnessTextureChannel: 0
+ - _SpecularHighlights: 1
+ - _SrcBlend: 1
+ - _UVSec: 0
+ - _ZWrite: 1
+ m_Colors:
+ - _Color: {r: 1, g: 1, b: 1, a: 1}
+ - _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
+ - _TintColor: {r: 0.20084397, g: 0.5982815, b: 0.797, a: 1}
diff --git a/Assets/Materials/Galaxy Zone Background.mat.meta b/Assets/Materials/Galaxy Zone Background.mat.meta
new file mode 100644
index 000000000..666bbc02e
--- /dev/null
+++ b/Assets/Materials/Galaxy Zone Background.mat.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 76476d467e1cd844dacbcbe00105866e
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 2100000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Materials/Galaxy.mat b/Assets/Materials/Galaxy.mat
index 55697b92f..9a9ccdac8 100644
--- a/Assets/Materials/Galaxy.mat
+++ b/Assets/Materials/Galaxy.mat
@@ -67,7 +67,7 @@ Material:
- GlowPower: 3
- NoiseAmplitude: 2
- NoiseFrequency: 1
- - NoiseGain: 0.85
+ - NoiseGain: 0.75
- NoiseLacunarity: 3
- NoiseOffset: 0
- NoisePosition: -2.1
diff --git a/Assets/Prefabs/Tab Button Bottom.prefab b/Assets/Prefabs/Tab Button Bottom.prefab
index a9f9412c9..1f1f58cb4 100644
--- a/Assets/Prefabs/Tab Button Bottom.prefab
+++ b/Assets/Prefabs/Tab Button Bottom.prefab
@@ -368,12 +368,13 @@ MonoBehaviour:
Label: {fileID: 4750078953547169287}
LabelLayout: {fileID: 323497596060304149}
CurrentState: 0
+ DisableClickWhenSelected: 1
UnselectedAppearance:
FillColor: {r: 0, g: 0.4180913, b: 1, a: 0.15294118}
OutlineColor: {r: 0.20084397, g: 0.5982815, b: 0.797, a: 1}
LayoutPadding: 32
SelectedAppearance:
- FillColor: {r: 0, g: 0.4180913, b: 1, a: 0.5019608}
+ FillColor: {r: 1, g: 0.44583336, b: 0.050000012, a: 0.65882355}
OutlineColor: {r: 0.8, g: 0.9333333, b: 1, a: 1}
LayoutPadding: 64
HoverAppearance:
diff --git a/Assets/Resources/Elysium.asset b/Assets/Resources/Elysium.asset
new file mode 100644
index 000000000..2274e6b1d
--- /dev/null
+++ b/Assets/Resources/Elysium.asset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:3b103288a5b2bd4750611dd792894c8548a37a2057dd00eaeb2958879bcd78eb
+size 16588
diff --git a/Assets/Resources/Test.asset.meta b/Assets/Resources/Elysium.asset.meta
similarity index 100%
rename from Assets/Resources/Test.asset.meta
rename to Assets/Resources/Elysium.asset.meta
diff --git a/Assets/Resources/Sprites/Flat UI/DotBottom.png b/Assets/Resources/Sprites/Flat UI/DotBottom.png
new file mode 100644
index 000000000..774e2e6a1
--- /dev/null
+++ b/Assets/Resources/Sprites/Flat UI/DotBottom.png
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:a458c77949c6857a1eaa948abff9b8c58c72d71962ea81620a30ddd1362de138
+size 1831
diff --git a/Assets/Resources/Sprites/Flat UI/DotBottom.png.meta b/Assets/Resources/Sprites/Flat UI/DotBottom.png.meta
new file mode 100644
index 000000000..0c56e8da2
--- /dev/null
+++ b/Assets/Resources/Sprites/Flat UI/DotBottom.png.meta
@@ -0,0 +1,88 @@
+fileFormatVersion: 2
+guid: 5d7bb923bb67cb840ad34e22266ce55b
+TextureImporter:
+ fileIDToRecycleName: {}
+ externalObjects: {}
+ serializedVersion: 9
+ 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
+ grayScaleToAlpha: 0
+ generateCubemap: 6
+ cubemapConvolution: 0
+ seamlessCubemap: 0
+ textureFormat: 1
+ maxTextureSize: 2048
+ textureSettings:
+ serializedVersion: 2
+ filterMode: -1
+ aniso: -1
+ mipBias: -100
+ wrapU: 1
+ wrapV: 1
+ wrapW: 1
+ nPOTScale: 0
+ lightmap: 0
+ compressionQuality: 50
+ spriteMode: 1
+ spriteExtrude: 1
+ spriteMeshType: 1
+ alignment: 0
+ spritePivot: {x: 0.5, y: 0.5}
+ spritePixelsToUnits: 100
+ spriteBorder: {x: 0, y: 0, z: 0, w: 0}
+ spriteGenerateFallbackPhysicsShape: 1
+ alphaUsage: 1
+ alphaIsTransparency: 1
+ spriteTessellationDetail: -1
+ textureType: 8
+ textureShape: 1
+ singleChannelComponent: 0
+ maxTextureSizeSet: 0
+ compressionQualitySet: 0
+ textureFormatSet: 0
+ platformSettings:
+ - serializedVersion: 2
+ buildTarget: DefaultTexturePlatform
+ maxTextureSize: 2048
+ resizeAlgorithm: 0
+ textureFormat: -1
+ textureCompression: 1
+ compressionQuality: 50
+ crunchedCompression: 0
+ allowsAlphaSplitting: 0
+ overridden: 0
+ androidETC2FallbackOverride: 0
+ spriteSheet:
+ serializedVersion: 2
+ sprites: []
+ outline: []
+ physicsShape: []
+ bones: []
+ spriteID: 2320f8e9ab5fadf4c9b97bea9d34b24e
+ vertices: []
+ indices:
+ edges: []
+ weights: []
+ spritePackingTag:
+ pSDRemoveMatte: 0
+ pSDShowRemoveMatteOption: 0
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Resources/Test Galaxy.asset b/Assets/Resources/Test Galaxy.asset
new file mode 100644
index 000000000..34ee8e4b9
--- /dev/null
+++ b/Assets/Resources/Test Galaxy.asset
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:2a375f5f35d892d74343834ffb07c7c3a08c6c4135fff863cf21b66a0cef72d5
+size 16592
diff --git a/Assets/Resources/Test Galaxy.asset.meta b/Assets/Resources/Test Galaxy.asset.meta
new file mode 100644
index 000000000..9c51f200b
--- /dev/null
+++ b/Assets/Resources/Test Galaxy.asset.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: ee668592f6b83e941906711e854fa7ae
+NativeFormatImporter:
+ externalObjects: {}
+ mainObjectFileID: 11400000
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Resources/Test.asset b/Assets/Resources/Test.asset
deleted file mode 100644
index dcded4eba..000000000
--- a/Assets/Resources/Test.asset
+++ /dev/null
@@ -1,3 +0,0 @@
-version https://git-lfs.github.com/spec/v1
-oid sha256:00f6783d549aa1c72f091dac2a499c8d3a015d7b1a122733868c0f5e5ae20393
-size 16585
diff --git a/Assets/Scenes/Main.unity b/Assets/Scenes/Main.unity
index 5b2804575..90be7aa99 100644
--- a/Assets/Scenes/Main.unity
+++ b/Assets/Scenes/Main.unity
@@ -578,7 +578,7 @@ PrefabInstance:
- target: {fileID: 5318229203699776728, guid: b93e36d73a071274d8e9225e077ce92a,
type: 3}
propertyPath: m_RootOrder
- value: 4
+ value: 5
objectReference: {fileID: 0}
- target: {fileID: 5318229203699776728, guid: b93e36d73a071274d8e9225e077ce92a,
type: 3}
@@ -2629,7 +2629,6 @@ GameObject:
m_Component:
- component: {fileID: 143833100}
- component: {fileID: 143833102}
- - component: {fileID: 143833101}
- component: {fileID: 143833104}
- component: {fileID: 143833103}
- component: {fileID: 143833105}
@@ -2651,6 +2650,7 @@ RectTransform:
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children:
+ - {fileID: 1847575589}
- {fileID: 7785480703375542972}
- {fileID: 646091939}
- {fileID: 618245057}
@@ -2665,33 +2665,6 @@ RectTransform:
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0.5, y: 0.5}
---- !u!114 &143833101
-MonoBehaviour:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 143833099}
- m_Enabled: 0
- m_EditorHideFlags: 0
- m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3}
- m_Name:
- m_EditorClassIdentifier:
- m_Material: {fileID: 0}
- m_Color: {r: 0.20392157, g: 0.12156863, b: 0.5921569, a: 0.1254902}
- m_RaycastTarget: 1
- m_OnCullStateChanged:
- m_PersistentCalls:
- m_Calls: []
- m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0}
- m_Type: 1
- m_PreserveAspect: 0
- m_FillCenter: 1
- m_FillMethod: 4
- m_FillAmount: 1
- m_FillClockwise: 1
- m_FillOrigin: 0
- m_UseSpriteMesh: 0
--- !u!222 &143833102
CanvasRenderer:
m_ObjectHideFlags: 0
@@ -3048,7 +3021,7 @@ RectTransform:
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
- m_AnchoredPosition: {x: 960, y: -50.305714}
+ m_AnchoredPosition: {x: 960, y: -50.305664}
m_SizeDelta: {x: 379, y: 80.61143}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &163559173
@@ -5173,7 +5146,7 @@ RectTransform:
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 559120530}
- m_RootOrder: 1
+ m_RootOrder: 2
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0.5}
m_AnchorMax: {x: 0.5, y: 0.5}
@@ -9230,6 +9203,98 @@ MonoBehaviour:
m_FlexibleWidth: -1
m_FlexibleHeight: -1
m_LayoutPriority: 1
+--- !u!1 &515449809
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 515449810}
+ - component: {fileID: 515449813}
+ - component: {fileID: 515449812}
+ - component: {fileID: 515449811}
+ m_Layer: 0
+ m_Name: Background
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &515449810
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 515449809}
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1.5, y: 1.5, z: 1}
+ m_Children: []
+ m_Father: {fileID: 559120530}
+ m_RootOrder: 0
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!64 &515449811
+MeshCollider:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 515449809}
+ m_Material: {fileID: 0}
+ m_IsTrigger: 0
+ m_Enabled: 1
+ serializedVersion: 3
+ m_Convex: 0
+ m_CookingOptions: 14
+ m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0}
+--- !u!23 &515449812
+MeshRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 515449809}
+ m_Enabled: 1
+ m_CastShadows: 1
+ m_ReceiveShadows: 1
+ m_DynamicOccludee: 1
+ m_MotionVectors: 1
+ m_LightProbeUsage: 1
+ m_ReflectionProbeUsage: 1
+ m_RenderingLayerMask: 1
+ m_RendererPriority: 0
+ m_Materials:
+ - {fileID: 2100000, guid: 76476d467e1cd844dacbcbe00105866e, type: 2}
+ m_StaticBatchInfo:
+ firstSubMesh: 0
+ subMeshCount: 0
+ m_StaticBatchRoot: {fileID: 0}
+ m_ProbeAnchor: {fileID: 0}
+ m_LightProbeVolumeOverride: {fileID: 0}
+ m_ScaleInLightmap: 1
+ m_PreserveUVs: 0
+ m_IgnoreNormalsForChartDetection: 0
+ m_ImportantGI: 0
+ m_StitchLightmapSeams: 0
+ m_SelectedEditorRenderState: 3
+ m_MinimumChartSize: 4
+ m_AutoUVMaxDistance: 0.5
+ m_AutoUVMaxAngle: 89
+ m_LightmapParameters: {fileID: 0}
+ m_SortingLayerID: 0
+ m_SortingLayer: 0
+ m_SortingOrder: 0
+--- !u!33 &515449813
+MeshFilter:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 515449809}
+ m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0}
--- !u!1 &515809179
GameObject:
m_ObjectHideFlags: 0
@@ -10039,6 +10104,7 @@ GameObject:
- component: {fileID: 559120530}
- component: {fileID: 559120531}
- component: {fileID: 559120532}
+ - component: {fileID: 559120533}
m_Layer: 0
m_Name: Zone
m_TagString: Untagged
@@ -10057,6 +10123,7 @@ Transform:
m_LocalPosition: {x: 2.5, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children:
+ - {fileID: 515449810}
- {fileID: 1873099341}
- {fileID: 258993625}
m_Father: {fileID: 597171594}
@@ -10086,8 +10153,21 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 685a87786d510214eb9f9a11f756dcde, type: 3}
m_Name:
m_EditorClassIdentifier:
+ Background: {fileID: 515449812}
Icon: {fileID: 1873099343}
Label: {fileID: 258993626}
+--- !u!114 &559120533
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 559120529}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 52538a3309c36fc4583c964a1c0b705f, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
--- !u!1 &565356060
GameObject:
m_ObjectHideFlags: 0
@@ -11697,7 +11777,7 @@ PrefabInstance:
- target: {fileID: 5318229203699776728, guid: b93e36d73a071274d8e9225e077ce92a,
type: 3}
propertyPath: m_RootOrder
- value: 2
+ value: 3
objectReference: {fileID: 0}
- target: {fileID: 5318229203699776728, guid: b93e36d73a071274d8e9225e077ce92a,
type: 3}
@@ -12845,7 +12925,7 @@ PrefabInstance:
- target: {fileID: 5318229203699776728, guid: b93e36d73a071274d8e9225e077ce92a,
type: 3}
propertyPath: m_RootOrder
- value: 1
+ value: 2
objectReference: {fileID: 0}
- target: {fileID: 5318229203699776728, guid: b93e36d73a071274d8e9225e077ce92a,
type: 3}
@@ -15361,7 +15441,7 @@ RectTransform:
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 1}
- m_AnchoredPosition: {x: -2, y: -0.000030517578}
+ m_AnchoredPosition: {x: -2, y: 0}
m_SizeDelta: {x: 4, y: 125.1}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!114 &763593019
@@ -15653,6 +15733,8 @@ GameObject:
m_Component:
- component: {fileID: 784574043}
- component: {fileID: 784574044}
+ - component: {fileID: 784574046}
+ - component: {fileID: 784574045}
m_Layer: 5
m_Name: Root
m_TagString: Untagged
@@ -15705,6 +15787,36 @@ MonoBehaviour:
m_ChildForceExpandHeight: 1
m_ChildControlWidth: 1
m_ChildControlHeight: 1
+--- !u!114 &784574045
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 784574042}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: ba30ab714c5cf6943957d3e4ae549c84, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+--- !u!114 &784574046
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 784574042}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 20fa7724865c6b04097615292a325dfe, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ OnEnter:
+ m_PersistentCalls:
+ m_Calls: []
+ OnExit:
+ m_PersistentCalls:
+ m_Calls: []
--- !u!1 &798747641
GameObject:
m_ObjectHideFlags: 0
@@ -21635,7 +21747,7 @@ MonoBehaviour:
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1126386499}
- m_Enabled: 1
+ m_Enabled: 0
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 1c1faf0a46b9cf24498cd5ec93c34c71, type: 3}
m_Name:
@@ -21653,6 +21765,8 @@ MonoBehaviour:
OrbitalSprite: {fileID: 2800000, guid: 97bce58bfe43bfa40870ca062cfb7ec1, type: 3}
SunSprite: {fileID: 2800000, guid: 6ca81c82c86205648a1a243805aae5c9, type: 3}
WormholeSprite: {fileID: 2800000, guid: 6d0b27330fdcc8347b1e09a2d17a0673, type: 3}
+ SelectedColor: {r: 1, g: 0.44583336, b: 0.050000012, a: 1}
+ UnselectedColor: {r: 0.20084397, g: 0.5982815, b: 0.797, a: 1}
--- !u!4 &1126386501
Transform:
m_ObjectHideFlags: 0
@@ -23646,7 +23760,7 @@ PrefabInstance:
- target: {fileID: 5318229203699776728, guid: b93e36d73a071274d8e9225e077ce92a,
type: 3}
propertyPath: m_RootOrder
- value: 5
+ value: 6
objectReference: {fileID: 0}
- target: {fileID: 5318229203699776728, guid: b93e36d73a071274d8e9225e077ce92a,
type: 3}
@@ -35229,6 +35343,99 @@ CanvasRenderer:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1839919436}
m_CullTransparentMesh: 0
+--- !u!1 &1847575588
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 1847575589}
+ - component: {fileID: 1847575592}
+ - component: {fileID: 1847575591}
+ - component: {fileID: 1847575590}
+ m_Layer: 5
+ m_Name: Image
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!224 &1847575589
+RectTransform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1847575588}
+ 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: 143833100}
+ 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: -40}
+ m_SizeDelta: {x: 0, y: 80}
+ m_Pivot: {x: 0.5, y: 0.5}
+--- !u!114 &1847575590
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1847575588}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 1679637790, guid: f70555f144d8491a825f0804e09c671c, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_IgnoreLayout: 1
+ m_MinWidth: -1
+ m_MinHeight: -1
+ m_PreferredWidth: -1
+ m_PreferredHeight: -1
+ m_FlexibleWidth: -1
+ m_FlexibleHeight: -1
+ m_LayoutPriority: 1
+--- !u!114 &1847575591
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1847575588}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: -765806418, guid: f70555f144d8491a825f0804e09c671c, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ m_Material: {fileID: 0}
+ m_Color: {r: 0, g: 0.06374996, b: 0.15, a: 0.7490196}
+ m_RaycastTarget: 1
+ m_OnCullStateChanged:
+ m_PersistentCalls:
+ m_Calls: []
+ m_Sprite: {fileID: 21300000, guid: 5d7bb923bb67cb840ad34e22266ce55b, 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
+--- !u!222 &1847575592
+CanvasRenderer:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1847575588}
+ m_CullTransparentMesh: 0
--- !u!1 &1848814556
GameObject:
m_ObjectHideFlags: 0
@@ -35593,7 +35800,6 @@ GameObject:
- component: {fileID: 1873099341}
- component: {fileID: 1873099344}
- component: {fileID: 1873099343}
- - component: {fileID: 1873099342}
m_Layer: 0
m_Name: Icon
m_TagString: Untagged
@@ -35613,22 +35819,8 @@ Transform:
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 559120530}
- m_RootOrder: 0
+ m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
---- !u!64 &1873099342
-MeshCollider:
- m_ObjectHideFlags: 0
- m_CorrespondingSourceObject: {fileID: 0}
- m_PrefabInstance: {fileID: 0}
- m_PrefabAsset: {fileID: 0}
- m_GameObject: {fileID: 1873099340}
- m_Material: {fileID: 0}
- m_IsTrigger: 0
- m_Enabled: 1
- serializedVersion: 3
- m_Convex: 0
- m_CookingOptions: 14
- m_Mesh: {fileID: 10210, guid: 0000000000000000e000000000000000, type: 0}
--- !u!23 &1873099343
MeshRenderer:
m_ObjectHideFlags: 0
@@ -35789,7 +35981,7 @@ PrefabInstance:
- target: {fileID: 5318229203699776728, guid: b93e36d73a071274d8e9225e077ce92a,
type: 3}
propertyPath: m_RootOrder
- value: 3
+ value: 4
objectReference: {fileID: 0}
- target: {fileID: 5318229203699776728, guid: b93e36d73a071274d8e9225e077ce92a,
type: 3}
@@ -45510,7 +45702,7 @@ PrefabInstance:
- target: {fileID: 5318229203699776728, guid: b93e36d73a071274d8e9225e077ce92a,
type: 3}
propertyPath: m_RootOrder
- value: 0
+ value: 1
objectReference: {fileID: 0}
- target: {fileID: 5318229203699776728, guid: b93e36d73a071274d8e9225e077ce92a,
type: 3}
diff --git a/Assets/Scripts/ClickCatcher.cs b/Assets/Scripts/ClickCatcher.cs
new file mode 100644
index 000000000..77f6aaccd
--- /dev/null
+++ b/Assets/Scripts/ClickCatcher.cs
@@ -0,0 +1,69 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using UnityEngine.Events;
+using UnityEngine.EventSystems;
+
+public class ClickCatcher : MonoBehaviour, IPointerEnterHandler, IPointerExitHandler, IPointerClickHandler
+{
+ public bool EnableMouse => PointerIsInside && !_catching;
+ public bool PointerIsInside { get; private set; }
+
+ public PointerEnterEvent OnEnter = new PointerEnterEvent();
+ public PointerExitEvent OnExit = new PointerExitEvent();
+
+ private bool _catching;
+ private UnityEvent _catchClick;
+
+ public static ClickCatcher Background
+ {
+ get
+ {
+ if (_background == null)
+ _background = GameObject.FindGameObjectWithTag("UIBackground").GetComponent();
+ return _background;
+ }
+ }
+
+ private static ClickCatcher _background;
+
+ public UnityEvent Catch()
+ {
+ _catching = true;
+ _catchClick = new UnityEvent();
+ return _catchClick;
+ }
+
+ public void Release()
+ {
+ _catching = false;
+ }
+
+ public void OnPointerEnter(PointerEventData eventData)
+ {
+ //Debug.Log("Pointer Entered");
+ OnEnter.Invoke();
+ PointerIsInside = true;
+ }
+
+ public void OnPointerExit(PointerEventData eventData)
+ {
+ //Debug.Log("Pointer Exited");
+ OnExit.Invoke();
+ PointerIsInside = false;
+ }
+
+ public void OnPointerClick(PointerEventData eventData)
+ {
+ if (!_catching) return;
+
+ _catchClick.Invoke();
+ _catching = false;
+ }
+
+ [Serializable]
+ public class PointerEnterEvent : UnityEvent { }
+ [Serializable]
+ public class PointerExitEvent : UnityEvent { }
+}
diff --git a/Assets/Scripts/ClickCatcher.cs.meta b/Assets/Scripts/ClickCatcher.cs.meta
new file mode 100644
index 000000000..5557d7c03
--- /dev/null
+++ b/Assets/Scripts/ClickCatcher.cs.meta
@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 20fa7724865c6b04097615292a325dfe
+MonoImporter:
+ externalObjects: {}
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Scripts/ServerShared/ZoneGenerator.cs b/Assets/Scripts/ServerShared/ZoneGenerator.cs
index 9ed915709..f128b81fb 100644
--- a/Assets/Scripts/ServerShared/ZoneGenerator.cs
+++ b/Assets/Scripts/ServerShared/ZoneGenerator.cs
@@ -39,6 +39,7 @@ public class ZoneGenerator
};
// There is some chance of generating a rosette or binary system
+ // Probabilities which are fixed for the entire galaxy are in GlobalData, contained in the GameContext
var rosette = random.NextFloat() < context.GlobalData.RosetteProbability;
if (rosette)
@@ -115,6 +116,9 @@ public class ZoneGenerator
}
}
+// All orbiting bodies are referred to here as "Planets"
+// This goes back to the original etymology for the word planet, which is traveler,
+// Because they were objects we observed to move in the sky instead of remaining fixed like the stars
public class Planet
{
public Random Random;
@@ -126,9 +130,10 @@ public class Planet
public float ChildDistanceMinimum;
public float ChildDistanceMaximum;
public bool Empty = false;
- public List Children = new List();
+ public List Children = new List(); // Planets orbiting this one are referred to as children
public Planet Parent;
+ // Recursively gather all planets in the hierarchy
public IEnumerable AllPlanets()
{
return new[]{this}.Concat(Children.SelectMany(c=>c.AllPlanets()));
diff --git a/Assets/StrategyGameManager.cs b/Assets/StrategyGameManager.cs
index 0b6ba6f85..40263096c 100644
--- a/Assets/StrategyGameManager.cs
+++ b/Assets/StrategyGameManager.cs
@@ -21,12 +21,18 @@ public class StrategyGameManager : MonoBehaviour
public Texture2D OrbitalSprite;
public Texture2D SunSprite;
public Texture2D WormholeSprite;
+ public Color SelectedColor;
+ public Color UnselectedColor;
private DatabaseCache _cache;
private GameContext _context;
private GalaxyResponseMessage _galaxy;
private TabButton _currentTab;
private bool _galaxyPopulated;
+ private Guid _selectedZone;
+ private GalaxyZone _selectedGalaxyZone;
+ private ZoneResponseMessage _zone;
+ private Dictionary _zoneObjects = new Dictionary();
void Start()
{
@@ -43,6 +49,7 @@ public class StrategyGameManager : MonoBehaviour
_galaxy = galaxy;
if (_currentTab == GalaxyTabButton && !_galaxyPopulated)
{
+ _context = new GameContext();
PopulateGalaxy();
}
});
@@ -79,7 +86,16 @@ public class StrategyGameManager : MonoBehaviour
linkedZones.Add(zone.ZoneID);
var instance = GalaxyZonePrototype.Instantiate();
instance.position = float3((Vector2) zone.Position - Vector2.one * .5f,0) * GalaxyScale;
- instance.GetComponent().Label.text = zone.Name;
+ var instanceZone = instance.GetComponent();
+ instanceZone.Label.text = zone.Name;
+ instance.GetComponent().OnClick += _ =>
+ {
+ if (_selectedGalaxyZone != null)
+ _selectedGalaxyZone.Background.material.SetColor("_TintColor", UnselectedColor);
+ _selectedGalaxyZone = instanceZone;
+ _selectedGalaxyZone.Background.material.SetColor("_TintColor", SelectedColor);
+ _selectedZone = zone.ZoneID;
+ };
foreach (var linkedZone in zone.Links.Where(l=>!linkedZones.Contains(l)))
{
var link = GalaxyZoneLinkPrototype.Instantiate();
diff --git a/Assets/GravityObject.cs b/Assets/ZoneObject.cs
similarity index 82%
rename from Assets/GravityObject.cs
rename to Assets/ZoneObject.cs
index 0bfcde75e..a682565d1 100644
--- a/Assets/GravityObject.cs
+++ b/Assets/ZoneObject.cs
@@ -3,7 +3,7 @@ using System.Collections.Generic;
using TMPro;
using UnityEngine;
-public class GravityObject : MonoBehaviour
+public class ZoneObject : MonoBehaviour
{
public MeshRenderer GravityMesh;
diff --git a/Assets/GravityObject.cs.meta b/Assets/ZoneObject.cs.meta
similarity index 100%
rename from Assets/GravityObject.cs.meta
rename to Assets/ZoneObject.cs.meta
diff --git a/README.md b/README.md
index 9cc204d7f..13a73b7e3 100644
--- a/README.md
+++ b/README.md
@@ -9,10 +9,13 @@ This repository is the home of Aetheria, a sci-fi hybrid ARPG/RTS MMO about a gr
2. [Previous Work](#Previous-Work)
3. [Current Work](#Current-Work)
4. [Architecture](#Architecture)
+ - [Project Structure](#Project-Structure)
+ - [Third Party Libraries](#Third-Party-Libraries)
+ - [Programming Paradigms](#Programming-Paradigms)
+ - [Data Structures](#Data-Structures)
5. [Contributing](#Contributing)
- [Getting the Files](#Getting-the-Files)
- [Choosing a Task](#Choosing-a-Task)
- - [Codebase Concepts](#Codebase-Concepts)
- [Database Editor Tools](#Database-Editor-Tools)
- [Connecting to RethinkDB](#Connecting-to-RethinkDB)
- [Editing Items](#Editing-Items)
@@ -26,7 +29,7 @@ This repository is the home of Aetheria, a sci-fi hybrid ARPG/RTS MMO about a gr
## Game Design
-The ARPG game design document is available [here](https://docs.google.com/document/d/1iULu1WsbuQoUM3c87XkGseb1P-8R5xlruoiyg03TsSE/edit?usp=sharing), while the RTS gameplay is documented [here](https://docs.google.com/document/d/1U3uGFqQboAiFJ_Y-nUOGpyixbXUHRbc5DiCuB59GM4w/edit?usp=sharing). The goal is to essentially create two games which both take place in the same persistent universe, allowing players with vastly different preferences to struggle together for the survival of mankind. Each instance of the game lasts until the inevitable destruction of the entire population at the hands of aliens, after which the universe resets. Each loop is designed to last up to a couple of months, during which the hostility of the aliens steadily increases until the players are unable to hold back the tide.
+The ARPG game design document is available [here](https://docs.google.com/document/d/1iULu1WsbuQoUM3c87XkGseb1P-8R5xlruoiyg03TsSE/edit?usp=sharing), while the RTS gameplay is documented [here](https://docs.google.com/document/d/1U3uGFqQboAiFJ_Y-nUOGpyixbXUHRbc5DiCuB59GM4w/edit?usp=sharing). There's also a document explaining how some of the shaders work [here](https://docs.google.com/document/d/1AFycvCtW6hA1jkKq1ZmYd3k6_uEWaaCqcZ4fYj4vU6A/edit?usp=sharing). The goal is to essentially create two games which both take place in the same persistent universe, allowing players with vastly different preferences to struggle together for the survival of mankind. Each instance of the game lasts until the inevitable destruction of the entire population at the hands of aliens, after which the universe resets. Each loop is designed to last up to a couple of months, during which the hostility of the aliens steadily increases until the players are unable to hold back the tide.
## Previous Work
@@ -40,24 +43,36 @@ Once we have built a persistent universe with a dynamic economy, we will begin r
## Architecture
-There are two solutions in this repository. One is a Unity project containing the desktop client for Aetheria, and the other is a .NET Core application intended to run on Linux cloud servers. There is some code shared between them, located at [Assets/Scripts/ServerShared](Assets/Scripts/ServerShared), defining a common protocol and data serialization format. Client-Server communication is implemented using [LiteNetLib](https://github.com/RevenantX/LiteNetLib), a reliable UDP transport library which we use to transmit [MessagePack](https://github.com/neuecc/MessagePack-CSharp) over the wire.
+### Project Structure
+
+There are two solutions in this repository. One is a Unity project containing the desktop client for Aetheria, and the other is a .NET Core application intended to run on Linux cloud servers. There is some code shared between them, located at [Assets/Scripts/ServerShared](Assets/Scripts/ServerShared), defining a common protocol and data serialization format.
+
+### Third Party Libraries
+
+Client-Server communication is implemented using [LiteNetLib](https://github.com/RevenantX/LiteNetLib), a reliable UDP transport library which we use to transmit [MessagePack](https://github.com/neuecc/MessagePack-CSharp) over the wire.
Aetheria uses [RethinkDB](https://rethinkdb.com/) for data persistence. To make this possible, all persistent data is marked with attributes for both MessagePack and [JSON.Net](https://www.newtonsoft.com/json) serialization. During operation, the client does not communicate with the database server directly, only the game server does that; the game server caches data relevant to the game and sends it to the clients.
+### Programming Paradigms
+
+The codebase makes heavy use of C#'s [Language Integrated Queries (LINQ)](https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/concepts/linq/), allowing for the concise representation of operations that modify or filter collections. Asynchronous stream processing is often performed using the [functional reactive programming](http://reactivex.io/) paradigm, which is achieved using [Microsoft's Reactive Extensions](https://github.com/dotnet/reactive) on the server and [Reactive Extensions for Unity](https://github.com/neuecc/UniRx). Combining Observables with LINQ allows for extremely powerful expressions of the programmer's intent.
+
+### Data Structures
+
+All of the state which is persisted to the database inherits from the DatabaseEntry class, which uses a GUID as each entry's primary key. Whenever a reference to a database entry must be held, it should be stored as a GUID and when needed, retrieved directly from the DatabaseCache held by the GameContext. References to Database Entries *should never be stored directly!* This is because the contents of entries can be updated in realtime by the database, causing changes to be pushed to the DatabaseCache and any previously existing DatabaseEntry instances will be outdated and invalid, potentially carrying stale data.
+
## Contributing
### Getting the Files
In order to checkout the project, you need a git client (Github's zip download will not work!). You also need to have installed [Git LFS (Large File Storage)](https://git-lfs.github.com/). This is necessary because assets in gamedev projects can get rather large, and Git is essentially a text versioning system that does not by itself support that use case well.
+When you have synced with the repository, you can open the project using Unity. The project was created with Unity 2018.4.17f1 LTS, and while it may work with newer or older versions, that cannot be guaranteed. You can open the project by opening the root of this repository either directly with the Unity Editor, or using [Unity Hub](https://public-cdn.cloud.unity3d.com/hub/prod/UnityHubSetup.exe), which will also take care of downloading the correct version of the Editor.
+
### Choosing a Task
We are organizing according to an [Agile development](https://en.wikipedia.org/wiki/Agile_software_development) schedule, with the progress of each sprint being tracked on its own board in the [Github Projects tab](https://github.com/rwvens/Aetheria-Economy/projects). If you wish to take on a task from the board, please contact us to become an official contributor so that the task can be assigned to you directly. Some issues are not on the sprint schedule, those are ideal for developers who want to jump in but are shy about joining.
-### Codebase Concepts
-
-All objects stored in the database inherit from DatabaseEntry. More coming soon.
-
### Testing Locally
If midgard.gamecult.games is not currently up, you can always build and run the economy server yourself, and connect to it by typing localhost into the main menu.