diff --git a/Assets/Audio/kivikausi_bushEffect.it b/Assets/Audio/kivikausi_bushEffect.it new file mode 100644 index 0000000000000000000000000000000000000000..e3ea46a3e62fc99fca80a4340d94bb08e90be42b Binary files /dev/null and b/Assets/Audio/kivikausi_bushEffect.it differ diff --git a/Assets/Audio/kivikausi_bushEffect.it.meta b/Assets/Audio/kivikausi_bushEffect.it.meta new file mode 100644 index 0000000000000000000000000000000000000000..141e02b08298f205842a489d3f2ddc60d384f7a0 --- /dev/null +++ b/Assets/Audio/kivikausi_bushEffect.it.meta @@ -0,0 +1,22 @@ +fileFormatVersion: 2 +guid: 2edad0f30cce2dc47a11eee3baf3118a +AudioImporter: + externalObjects: {} + serializedVersion: 6 + defaultSettings: + loadType: 1 + sampleRateSetting: 0 + sampleRateOverride: 44100 + compressionFormat: 1 + quality: 1 + conversionMode: 0 + platformSettingOverrides: {} + forceToMono: 0 + normalize: 1 + preloadAudioData: 1 + loadInBackground: 0 + ambisonic: 0 + 3D: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Audio/kivikausi_stoneEffect.it b/Assets/Audio/kivikausi_stoneEffect.it new file mode 100644 index 0000000000000000000000000000000000000000..2a47042bf0b2ffa210eb655f2a7a6289ffc6d6c5 Binary files /dev/null and b/Assets/Audio/kivikausi_stoneEffect.it differ diff --git a/Assets/Audio/kivikausi_stoneEffect.it.meta b/Assets/Audio/kivikausi_stoneEffect.it.meta new file mode 100644 index 0000000000000000000000000000000000000000..2ae594d7068b28f50de0c7047790bd47b380e487 --- /dev/null +++ b/Assets/Audio/kivikausi_stoneEffect.it.meta @@ -0,0 +1,22 @@ +fileFormatVersion: 2 +guid: 86208dc8a75ffb24ebab218e12d74c9a +AudioImporter: + externalObjects: {} + serializedVersion: 6 + defaultSettings: + loadType: 1 + sampleRateSetting: 0 + sampleRateOverride: 44100 + compressionFormat: 1 + quality: 1 + conversionMode: 0 + platformSettingOverrides: {} + forceToMono: 0 + normalize: 1 + preloadAudioData: 1 + loadInBackground: 0 + ambisonic: 0 + 3D: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Audio/kivikausi_woodeffect.it b/Assets/Audio/kivikausi_woodeffect.it new file mode 100644 index 0000000000000000000000000000000000000000..043d5d6c36669d991bbff45d54e9a185d4040a0c Binary files /dev/null and b/Assets/Audio/kivikausi_woodeffect.it differ diff --git a/Assets/Audio/kivikausi_woodeffect.it.meta b/Assets/Audio/kivikausi_woodeffect.it.meta new file mode 100644 index 0000000000000000000000000000000000000000..287aea64d01ba0b19bde000915746a59319c45f9 --- /dev/null +++ b/Assets/Audio/kivikausi_woodeffect.it.meta @@ -0,0 +1,22 @@ +fileFormatVersion: 2 +guid: 1b51dbf8319818449ab62be8d9450e31 +AudioImporter: + externalObjects: {} + serializedVersion: 6 + defaultSettings: + loadType: 1 + sampleRateSetting: 0 + sampleRateOverride: 44100 + compressionFormat: 1 + quality: 1 + conversionMode: 0 + platformSettingOverrides: {} + forceToMono: 0 + normalize: 1 + preloadAudioData: 1 + loadInBackground: 0 + ambisonic: 0 + 3D: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Audio/lautanen.it b/Assets/Audio/lautanen.it new file mode 100644 index 0000000000000000000000000000000000000000..ff08993bd67bc1930bcead22e1da9b79cce42b45 Binary files /dev/null and b/Assets/Audio/lautanen.it differ diff --git a/Assets/Audio/lautanen.it.meta b/Assets/Audio/lautanen.it.meta new file mode 100644 index 0000000000000000000000000000000000000000..1d0f4f56f7534fbc5eebcb1affa8bf5a626631eb --- /dev/null +++ b/Assets/Audio/lautanen.it.meta @@ -0,0 +1,22 @@ +fileFormatVersion: 2 +guid: 117f35b9a9c960540ae24eea2bf3ea27 +AudioImporter: + externalObjects: {} + serializedVersion: 6 + defaultSettings: + loadType: 1 + sampleRateSetting: 0 + sampleRateOverride: 44100 + compressionFormat: 1 + quality: 1 + conversionMode: 0 + platformSettingOverrides: {} + forceToMono: 0 + normalize: 1 + preloadAudioData: 1 + loadInBackground: 0 + ambisonic: 0 + 3D: 1 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Prefab/Flag.prefab b/Assets/Prefab/Flag.prefab new file mode 100644 index 0000000000000000000000000000000000000000..ce84a5a726df5d5e6f75a32f0efc449b91fd28a6 --- /dev/null +++ b/Assets/Prefab/Flag.prefab @@ -0,0 +1,122 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &8796312832300166883 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3911026953838394632} + - component: {fileID: 7981019715402497320} + - component: {fileID: 3689336998828211151} + - component: {fileID: 4443572787190976141} + m_Layer: 0 + m_Name: Flag + m_TagString: Flag + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &3911026953838394632 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8796312832300166883} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 4.078, y: 2.369, z: -1.0712891} + m_LocalScale: {x: 0.3136983, y: 0.3136983, z: 0.3136983} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!212 &7981019715402497320 +SpriteRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8796312832300166883} + m_Enabled: 1 + m_CastShadows: 0 + m_ReceiveShadows: 0 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10754, guid: 0000000000000000f000000000000000, type: 0} + 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: 0 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_Sprite: {fileID: 21300000, guid: dd3f1a90ef7844947ae3599531fcd6d2, type: 3} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_FlipX: 0 + m_FlipY: 0 + m_DrawMode: 0 + m_Size: {x: 0.2, y: 0.2} + m_AdaptiveModeThreshold: 0.5 + m_SpriteTileMode: 0 + m_WasSpriteAssigned: 1 + m_MaskInteraction: 0 + m_SpriteSortPoint: 0 +--- !u!114 &3689336998828211151 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8796312832300166883} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1c028ba564ee8304e9c41111c8912ebe, type: 3} + m_Name: + m_EditorClassIdentifier: + Worker: {fileID: 0} +--- !u!61 &4443572787190976141 +BoxCollider2D: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8796312832300166883} + m_Enabled: 1 + m_Density: 1 + m_Material: {fileID: 0} + m_IsTrigger: 1 + m_UsedByEffector: 0 + m_UsedByComposite: 0 + m_Offset: {x: 0, y: 0} + m_SpriteTilingProperty: + border: {x: 0, y: 0, z: 0, w: 0} + pivot: {x: 0.5, y: 0.5} + oldSize: {x: 1.78, y: 1.44} + newSize: {x: 0.2, y: 0.2} + adaptiveTilingThreshold: 0.5 + drawMode: 0 + adaptiveTiling: 0 + m_AutoTiling: 0 + serializedVersion: 2 + m_Size: {x: 1.78, y: 1.44} + m_EdgeRadius: 0 diff --git a/Assets/Prefab/Flag.prefab.meta b/Assets/Prefab/Flag.prefab.meta new file mode 100644 index 0000000000000000000000000000000000000000..b52c8108c0461fb3038ea4687dc08a5834f4764f --- /dev/null +++ b/Assets/Prefab/Flag.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 5cba37404bc15114b929eea3f4ec84f3 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Prefab/FoodResource.prefab b/Assets/Prefab/FoodResource.prefab index 37954173b999b0c1192680c789bd3b99319cfe00..16fec162eab2d6bf40554fd1bb489f785de57e43 100644 --- a/Assets/Prefab/FoodResource.prefab +++ b/Assets/Prefab/FoodResource.prefab @@ -93,6 +93,13 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: fa5bb155b8732f34994d234d1a214353, type: 3} m_Name: m_EditorClassIdentifier: + sprites: + - {fileID: 21300000, guid: f85d51a973c87b04692395ace7bbb53d, type: 3} + - {fileID: 21300002, guid: f85d51a973c87b04692395ace7bbb53d, type: 3} + - {fileID: 21300004, guid: f85d51a973c87b04692395ace7bbb53d, type: 3} + - {fileID: 21300006, guid: f85d51a973c87b04692395ace7bbb53d, type: 3} + - {fileID: 21300008, guid: f85d51a973c87b04692395ace7bbb53d, type: 3} + - {fileID: 21300010, guid: f85d51a973c87b04692395ace7bbb53d, type: 3} --- !u!61 &5070108541231774712 BoxCollider2D: m_ObjectHideFlags: 0 diff --git a/Assets/Prefab/WoodResource.prefab b/Assets/Prefab/WoodResource.prefab index f8225feb1e148874c57c1cec61c1841e1985f68e..bdbac8470052847f56671c03ab060c469cd1004f 100644 --- a/Assets/Prefab/WoodResource.prefab +++ b/Assets/Prefab/WoodResource.prefab @@ -119,3 +119,13 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: cb94cfa918a502245a4097b1749281ad, type: 3} m_Name: m_EditorClassIdentifier: + resources: 0 + sprites: + - {fileID: 21300000, guid: c6be499253804b13b9d479f7394d8bd4, type: 3} + - {fileID: 21300002, guid: c6be499253804b13b9d479f7394d8bd4, type: 3} + - {fileID: 21300004, guid: c6be499253804b13b9d479f7394d8bd4, type: 3} + - {fileID: 21300006, guid: c6be499253804b13b9d479f7394d8bd4, type: 3} + - {fileID: 21300008, guid: c6be499253804b13b9d479f7394d8bd4, type: 3} + - {fileID: 21300010, guid: c6be499253804b13b9d479f7394d8bd4, type: 3} + - {fileID: 21300012, guid: c6be499253804b13b9d479f7394d8bd4, type: 3} + - {fileID: 21300014, guid: c6be499253804b13b9d479f7394d8bd4, type: 3} diff --git a/Assets/Prefab/worker.prefab b/Assets/Prefab/worker.prefab index d6506cee223d065f8f7b5dd080b1e6bd4dd3a107..c7c68fbb4ed920d43488ee2da1dfecd2da8c8d05 100644 --- a/Assets/Prefab/worker.prefab +++ b/Assets/Prefab/worker.prefab @@ -14,7 +14,7 @@ GameObject: - component: {fileID: 548039319383633028} - component: {fileID: 548039319383633031} m_Layer: 0 - m_Name: Worker + m_Name: worker m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 @@ -101,6 +101,7 @@ MonoBehaviour: home: {fileID: 7607310651946833762, guid: 118ed7528555d45418acb5a87b330000, type: 3} resource: {fileID: 0} speed: 1 + flag: {fileID: 8796312832300166883, guid: 5cba37404bc15114b929eea3f4ec84f3, type: 3} --- !u!61 &548039319383633028 BoxCollider2D: m_ObjectHideFlags: 0 diff --git a/Assets/Scenes/MainScene.unity b/Assets/Scenes/MainScene.unity index ab770ecadb98649c22e97eefb16e30d7f610e767..0452e9c46aebcd461d2aface2a55974f383d70a2 100644 --- a/Assets/Scenes/MainScene.unity +++ b/Assets/Scenes/MainScene.unity @@ -274,6 +274,31 @@ PrefabInstance: propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} + - target: {fileID: 203678261489018089, guid: 530bea3a047bd31458b647c456257c63, + type: 3} + propertyPath: musics.Array.size + value: 10 + objectReference: {fileID: 0} + - target: {fileID: 203678261489018089, guid: 530bea3a047bd31458b647c456257c63, + type: 3} + propertyPath: musics.Array.data[6] + value: + objectReference: {fileID: 8300000, guid: 117f35b9a9c960540ae24eea2bf3ea27, type: 3} + - target: {fileID: 203678261489018089, guid: 530bea3a047bd31458b647c456257c63, + type: 3} + propertyPath: musics.Array.data[7] + value: + objectReference: {fileID: 8300000, guid: 1b51dbf8319818449ab62be8d9450e31, type: 3} + - target: {fileID: 203678261489018089, guid: 530bea3a047bd31458b647c456257c63, + type: 3} + propertyPath: musics.Array.data[8] + value: + objectReference: {fileID: 8300000, guid: 86208dc8a75ffb24ebab218e12d74c9a, type: 3} + - target: {fileID: 203678261489018089, guid: 530bea3a047bd31458b647c456257c63, + type: 3} + propertyPath: musics.Array.data[9] + value: + objectReference: {fileID: 8300000, guid: 2edad0f30cce2dc47a11eee3baf3118a, type: 3} m_RemovedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 530bea3a047bd31458b647c456257c63, type: 3} --- !u!1001 &5792638251041000132 diff --git a/Assets/Scripts/AudioSystem.cs b/Assets/Scripts/AudioSystem.cs index a611bb0a463d80e00d727470fd5aa8e37f0717fc..cf61860a9210eab662695b268c0c8b0f13eced8a 100644 --- a/Assets/Scripts/AudioSystem.cs +++ b/Assets/Scripts/AudioSystem.cs @@ -10,8 +10,10 @@ public class AudioSystem : MonoBehaviour, IAction private List<AudioClip> musics = new List<AudioClip>(); [SerializeField] - private AudioSource ac; + private AudioSource ac = null; + // Start is called before the first frame update + void Start() { @@ -22,12 +24,7 @@ public class AudioSystem : MonoBehaviour, IAction React(EventType.GameStarts); } - // Update is called once per frame - void Update() - { - - } - + public void React(EventType type) { if (type == EventType.GameStarts) { @@ -51,18 +48,32 @@ public class AudioSystem : MonoBehaviour, IAction } if (type == EventType.WoodChopped) { - + WoodClip(); } if (type == EventType.StoneCut) { - + StoneClip(); + } + if (type == EventType.Berrypicked) + { + BerryClip(); + } + if (type == EventType.UpgradeBuilt) + { + + } + if (type == EventType.TimePeriodChanged) + { + } + } public void GameStartsClip() { - StartCoroutine("FadeOutIn", new Timing(0,0)); + StartCoroutine("FadeOutIn", new Timing(2,1)); + StartCoroutine("PlayEffect", 6); } public void CitySmallClip() { @@ -80,6 +91,18 @@ public class AudioSystem : MonoBehaviour, IAction { StartCoroutine("FadeOutIn", new Timing(2, 6)); } + public void WoodClip() + { + StartCoroutine("PlayEffect", 7); + } + public void StoneClip() + { + StartCoroutine("PlayEffect", 8); + } + public void BerryClip() + { + StartCoroutine("PlayEffect", 9); + } IEnumerator FadeOutIn(Timing t) { //yield return FadeOut(t.duration); @@ -115,13 +138,20 @@ public class AudioSystem : MonoBehaviour, IAction { float current = Time.time - start; //(max-current)/(max-min) - float volume = (end - Time.time) / (end - start); + float volume = (Time.time - start) / (end - start); yield return null; ac.volume = volume; } ac.volume = 1; } - + public IEnumerator PlayEffect(int clip) + { + AudioSource v = gameObject.AddComponent<AudioSource>(); + v.clip = musics[clip]; + v.Play(); + yield return new WaitForSeconds(v.clip.length + 1); + Destroy(v); + } diff --git a/Assets/Scripts/Collector.cs b/Assets/Scripts/Collector.cs index d772789090ed0174bacc40f72d1e189363aabf1e..56f8cae6af3e7a7dc68eafd684907271a70bca04 100644 --- a/Assets/Scripts/Collector.cs +++ b/Assets/Scripts/Collector.cs @@ -18,11 +18,15 @@ public class Collector : MonoBehaviour [SerializeField] private GameObject home; - + [SerializeField] private Resource resource; public float speed = 1; + [SerializeField] + private GameObject target_flag; + + public GameObject flag; // Start is called before the first frame update void Start() { @@ -37,7 +41,7 @@ public class Collector : MonoBehaviour { this.move_to = target; } - + // Update is called once per frame void Update() { @@ -49,8 +53,12 @@ public class Collector : MonoBehaviour RaycastHit2D hit = Physics2D.Raycast(mousePos2D, Vector2.zero); if (hit.collider != null) { + DestroyImmediate(target_flag); + target_flag = Instantiate(flag, hit.point, Quaternion.identity); + target_flag.GetComponent<Flag>().SetWorker(this.gameObject); SetTarget(hit.collider.gameObject); - MoveTo(hit.collider.gameObject); + if(resource == null || hit.collider.gameObject.tag == "Home") + MoveTo(hit.collider.gameObject); } } if (move_to != null) @@ -59,15 +67,28 @@ public class Collector : MonoBehaviour private void OnTriggerEnter2D(Collider2D collision) { - if (collision.gameObject.tag == "Resource") + if (target_flag != null) { - //Amount of resources worker is carrying right now - this.amount = collision.gameObject.GetComponent<Resource>().extractResource(this.max_amount); - //Gives target resource to resource variable - this.resource = this.target.GetComponent<Resource>(); - StartCoroutine("goHome"); + if(collision.gameObject.transform.position == target_flag.transform.position) { + if(resource == null) + { + /*if(target.GetComponent<Resource>().vie_tavaraa()) + { + + } + else + {*/ + //Amount of resources worker is carrying right now + this.amount = target.GetComponent<Resource>().extractResource(this.max_amount); + //Gives target resource to resource variable + this.resource = this.target.GetComponent<Resource>(); + //} + + } + StartCoroutine("goHome"); + } } - else if (collision.gameObject.tag == "Home" && this.resource != null) + if (collision.gameObject.tag == "Home" && this.resource != null) { //resets amount and resource variables collision.gameObject.GetComponent<City>().AddResource(this.resource, this.amount); @@ -80,6 +101,8 @@ public class Collector : MonoBehaviour IEnumerator goHome() { yield return new WaitForSeconds(4); + if(target == null) + DestroyImmediate(target_flag); MoveTo(home); } diff --git a/Assets/Scripts/EventSystem/EventType.cs b/Assets/Scripts/EventSystem/EventType.cs index 1b3013264a49a984465560353127b9961279d50a..80cd57fcd4908c637f7cab71b66433fde216ead5 100644 --- a/Assets/Scripts/EventSystem/EventType.cs +++ b/Assets/Scripts/EventSystem/EventType.cs @@ -4,14 +4,17 @@ using UnityEngine; public enum EventType { - GameStarts, //music - TimePeriodChanged, // music - CitySmall, //music - CityBig, //music - WoodChopped, //effect - StoneCut, //effect - HuntingSmall, //music - HuntingBig, //music - UpgradeBuilt //effect + //music + GameStarts, + TimePeriodChanged, + CitySmall, + CityBig, + HuntingSmall, + HuntingBig, + //effects + WoodChopped, + StoneCut, + Berrypicked, + UpgradeBuilt } diff --git a/Assets/Scripts/Flag.cs b/Assets/Scripts/Flag.cs new file mode 100644 index 0000000000000000000000000000000000000000..fd1157d400e79126c643310a113f5217476426a6 --- /dev/null +++ b/Assets/Scripts/Flag.cs @@ -0,0 +1,18 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class Flag : MonoBehaviour +{ + [SerializeField] + private GameObject Worker; + + public void SetWorker(GameObject w) + { + this.Worker = w; + } + public GameObject GetWorker() + { + return this.Worker; + } +} diff --git a/Assets/Scripts/Flag.cs.meta b/Assets/Scripts/Flag.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..81aa7e9625e914f41337c7c67f0eb5ebfce1b2c1 --- /dev/null +++ b/Assets/Scripts/Flag.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1c028ba564ee8304e9c41111c8912ebe +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Resources/BerryBush.cs b/Assets/Scripts/Resources/BerryBush.cs index fab98963e5170604ad5ee99422d55dfc71201525..f708c7e3817ebbcf3b60e5309a94576b6518a1cb 100644 --- a/Assets/Scripts/Resources/BerryBush.cs +++ b/Assets/Scripts/Resources/BerryBush.cs @@ -4,34 +4,64 @@ using UnityEngine; public class BerryBush : Resource { - - private float growthspeed; + public bool coroutineRunning =false; public override void checkExistence() { - + if (!coroutineRunning) + { + StartCoroutine("timer"); + coroutineRunning = true; + } } - public override void refreshSprite() + private IEnumerator timer() { + yield return new WaitForSeconds(3); + setAmount(500); + coroutineRunning = false; + } - // Start is called before the first frame update - void Start() + + public override void setAmount(int i) { - resources = Random.Range(50, 200); - growthspeed = 1; - StartCoroutine("Grow"); + base.setAmount(i); } - IEnumerator Grow() + public override void refreshSprite() { - while (resources < 500) + if (getAmount() < 1) { - resources++; - yield return new WaitForSeconds(growthspeed); + gameObject.GetComponent<SpriteRenderer>().sprite = sprites[5]; } + else if (getAmount() < 100) + { + gameObject.GetComponent<SpriteRenderer>().sprite = sprites[4]; + } + else if (getAmount() < 200) + { + gameObject.GetComponent<SpriteRenderer>().sprite = sprites[3]; + } + else if (getAmount() < 300) + { + gameObject.GetComponent<SpriteRenderer>().sprite = sprites[2]; + } + else if (getAmount() < 400) + { + gameObject.GetComponent<SpriteRenderer>().sprite = sprites[1]; + } + else + { + gameObject.GetComponent<SpriteRenderer>().sprite = sprites[0]; + } + } + + // Start is called before the first frame update + void Start() + { + setAmount(500); } // Update is called once per frame @@ -39,4 +69,5 @@ public class BerryBush : Resource { } + } diff --git a/Assets/Scripts/Resources/Forest.cs b/Assets/Scripts/Resources/Forest.cs index cc8347eebf1a6f3d92be47f767e51297be5da037..8e61b5b483ba33448f573bad481a8a4fc21b47e6 100644 --- a/Assets/Scripts/Resources/Forest.cs +++ b/Assets/Scripts/Resources/Forest.cs @@ -16,49 +16,49 @@ public class Forest : Resource } else { - growthspeed = 1; + growthspeed = 1f; } } public override void refreshSprite() { - if (resources < 125) + if (getAmount() < 125) { - //yhden puun sprite + gameObject.GetComponent<SpriteRenderer>().sprite = sprites[7]; } - else if (resources < 250) + else if (getAmount() < 250) { - //2 sprite + gameObject.GetComponent<SpriteRenderer>().sprite = sprites[6]; } - else if (resources < 375) + else if (getAmount() < 375) { - + gameObject.GetComponent<SpriteRenderer>().sprite = sprites[5]; } - else if (resources < 500) + else if (getAmount() < 500) { - + gameObject.GetComponent<SpriteRenderer>().sprite = sprites[4]; } - else if (resources < 625) + else if (getAmount() < 625) { - + gameObject.GetComponent<SpriteRenderer>().sprite = sprites[3]; } - else if (resources < 750) + else if (getAmount() < 750) { - + gameObject.GetComponent<SpriteRenderer>().sprite = sprites[2]; } - else if (resources < 875) + else if (getAmount() < 875) { - + gameObject.GetComponent<SpriteRenderer>().sprite = sprites[1]; } else { - + gameObject.GetComponent<SpriteRenderer>().sprite = sprites[0]; } } public override void checkExistence() { - if (resources < 1) + if (getAmount() < 1) { Destroy(gameObject); } @@ -67,7 +67,8 @@ public class Forest : Resource // Start is called before the first frame update void Start() { - resources = Random.Range(50, 300); + + setAmount(Random.Range(50, 300)); isForester = false; growthspeed = 1; StartCoroutine("Grow"); @@ -81,9 +82,9 @@ public class Forest : Resource IEnumerator Grow() { - while (resources < 1000) + while (getAmount() < 1000) { - resources++; + setAmount(getAmount() + 1); yield return new WaitForSeconds(growthspeed); } } diff --git a/Assets/Scripts/Resources/Outcrop.cs b/Assets/Scripts/Resources/Outcrop.cs index c89d689992d547b8cd1de695f5653952984a80e1..9f1f36f9b82c5d21adb1e4c37cae0dc24962a0c5 100644 --- a/Assets/Scripts/Resources/Outcrop.cs +++ b/Assets/Scripts/Resources/Outcrop.cs @@ -2,33 +2,54 @@ using System.Collections.Generic; using UnityEngine; -public class Outcrop : Resource +// Luokka, joka vaatii collectoreilta 100 puuta ennen kuin Quarry voidaan luoda samaan pisteeseen kartalla +public class Outcrop : MonoBehaviour { - public override void checkExistence() + [SerializeField] + private int wood; + + [SerializeField] + private GameObject quarry; + + public int getAmount() + { + return wood; + } + + public void setAmount(int amount) { - if (resources < 1) + wood += amount; + } + + public void checkExistence() + { + if (getAmount() >= 100) { + GameObject go = Instantiate<GameObject>(quarry); + go.transform.position = this.transform.position; Destroy(gameObject); } } - public override void refreshSprite() + public void addResource(int amount) { - + setAmount(getAmount() + amount); + checkExistence(); } // Start is called before the first frame update void Start() { - resources = 0; + setAmount(0); } // Update is called once per frame void Update() { - if (resources == 100) + if (getAmount() == 100) { // luo Quarry -olio samaan pisteeseen kartalla ja tuhoa Outcrop -olio } } + } diff --git a/Assets/Scripts/Resources/Quarry.cs b/Assets/Scripts/Resources/Quarry.cs index 07199d7c4cfd739ab29be5bd2193e398464ed881..2975e62dd47fb7c409ca1768fc3485a3bef16974 100644 --- a/Assets/Scripts/Resources/Quarry.cs +++ b/Assets/Scripts/Resources/Quarry.cs @@ -7,7 +7,7 @@ public class Quarry : Resource public override void checkExistence() { - if (resources < 1) + if (getAmount() < 1) { Destroy(gameObject); } @@ -15,13 +15,37 @@ public class Quarry : Resource public override void refreshSprite() { - + if (getAmount() < 100) + { + gameObject.GetComponent<SpriteRenderer>().sprite = sprites[5]; + } + else if (getAmount() < 200) + { + gameObject.GetComponent<SpriteRenderer>().sprite = sprites[4]; + } + else if (getAmount() < 300) + { + gameObject.GetComponent<SpriteRenderer>().sprite = sprites[3]; + } + else if (getAmount() < 400) + { + gameObject.GetComponent<SpriteRenderer>().sprite = sprites[2]; + } + else if (getAmount() < 500) + { + gameObject.GetComponent<SpriteRenderer>().sprite = sprites[1]; + } + else + { + gameObject.GetComponent<SpriteRenderer>().sprite = sprites[0]; + } } // Start is called before the first frame update void Start() { - resources = Random.Range(2000, 4000); + + setAmount(Random.Range(2000, 4000)); } // Update is called once per frame diff --git a/Assets/Scripts/Resources/Resource.cs b/Assets/Scripts/Resources/Resource.cs index 12e2222176840903099736ceb30c8c6e9d458faf..cd22d75ee8518514ec6d475a899b1a25c4126e34 100644 --- a/Assets/Scripts/Resources/Resource.cs +++ b/Assets/Scripts/Resources/Resource.cs @@ -4,18 +4,35 @@ using UnityEngine; public abstract class Resource : MonoBehaviour { - protected int resources; + [SerializeField] + private int resources; - public void setAmount(int i) + [SerializeField] + private bool resourceSource; + + [SerializeField] + protected Sprite[] sprites; + + public bool isResourceSource() + { + return resourceSource; + } + + public void setResourceSource(bool i) + { + resourceSource = i; + } + + public virtual void setAmount(int i) { resources = i; + refreshSprite(); + checkExistence(); } public int getAmount() { - //r.setAmount(ref.getAmount() - extraction); return resources; - } public int extractResource(int amount) @@ -23,16 +40,12 @@ public abstract class Resource : MonoBehaviour if (resources-amount < 0) { int r = resources; - resources = 0; - refreshSprite(); - checkExistence(); + setAmount(0); return r; } else { - resources = resources - amount; - refreshSprite(); - checkExistence(); + setAmount(resources - amount); return amount; } diff --git a/Assets/Scripts/Upgrades/CityUpgrade.cs b/Assets/Scripts/Upgrades/CityUpgrade.cs new file mode 100644 index 0000000000000000000000000000000000000000..c16877c631e7ee7b4b78021fb4bf14ae02065305 --- /dev/null +++ b/Assets/Scripts/Upgrades/CityUpgrade.cs @@ -0,0 +1,32 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class CityUpgrade : Upgrade +{ + // Start is called before the first frame update + void Start() + { + + } + + // Update is called once per frame + void Update() + { + + } + + public void UpgradeCity() + { + + UpgradeTargets target = UpgradeTargets.city; + City city = gameObject.GetComponent<City>(); + int currentLevel = city.GetLevel(target); + + if (city.GetLevel(UpgradeTargets.population) >= 5) { + city.UseResources(GetPrices(currentLevel * 10)); + // city.IncreaseCityLevel(); currently not implemented in City + } + + } +} diff --git a/Assets/Scripts/Upgrades/CityUpgrade.cs.meta b/Assets/Scripts/Upgrades/CityUpgrade.cs.meta new file mode 100644 index 0000000000000000000000000000000000000000..a1b5e1c7f62cd4a595b1e11a76cab2a5e2c23ad3 --- /dev/null +++ b/Assets/Scripts/Upgrades/CityUpgrade.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d033c0fdb28116543820fef49807d764 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Upgrades/CollectorUpgrade.cs b/Assets/Scripts/Upgrades/CollectorUpgrade.cs index ab1c34d767aed16bf66ab706a5824176a0ddf3d0..698c69f81df2271713aa2f59445cbd456d772dcb 100644 --- a/Assets/Scripts/Upgrades/CollectorUpgrade.cs +++ b/Assets/Scripts/Upgrades/CollectorUpgrade.cs @@ -8,12 +8,7 @@ public class CollectorUpgrade : Upgrade // Start is called before the first frame update void Start() { - - UpgradeTargets target = UpgradeTargets.collector; - City city = gameObject.GetComponent<City>(); - int currentLevel = city.GetLevel(target); - city.UseResources(GetPrices(currentLevel)); - city.AddCollector(); + maxLevelModifier = 4; } // Update is called once per frame @@ -21,4 +16,17 @@ public class CollectorUpgrade : Upgrade { } + + public void UpgradeCollector() + { + UpgradeTargets target = UpgradeTargets.collector; + City city = gameObject.GetComponent<City>(); + int currentLevel = city.GetLevel(target); + + if (currentLevel <= city.GetLevel(UpgradeTargets.city) * maxLevelModifier) + { + city.UseResources(GetPrices(currentLevel)); + city.AddCollector(); + } + } } diff --git a/Assets/Scripts/Upgrades/PopulationUpgrade.cs b/Assets/Scripts/Upgrades/PopulationUpgrade.cs index 04377c22e30f7c2ab3c8ded9ff765617130e67b9..f9fa3da07604c3e55aba3aaa0b2138978d2febe6 100644 --- a/Assets/Scripts/Upgrades/PopulationUpgrade.cs +++ b/Assets/Scripts/Upgrades/PopulationUpgrade.cs @@ -7,7 +7,7 @@ public class PopulationUpgrade : Upgrade // Start is called before the first frame update public void Start() { - + maxLevelModifier = 10; } // Update is called once per frame @@ -21,8 +21,12 @@ public class PopulationUpgrade : Upgrade UpgradeTargets target = UpgradeTargets.population; City city = gameObject.GetComponent<City>(); int currentLevel = city.GetLevel(target); - city.UseResources(GetPrices(currentLevel)); - city.AddPopulation(currentLevel * 10); - Debug.Log("population upgraded"); + + if (currentLevel <= city.GetLevel(UpgradeTargets.city) * maxLevelModifier) + { + city.UseResources(GetPrices(currentLevel)); + city.AddPopulation(currentLevel * 10); + Debug.Log("population upgraded"); + } } } diff --git a/Assets/Scripts/Upgrades/ResourceCapacityUpgrade.cs b/Assets/Scripts/Upgrades/ResourceCapacityUpgrade.cs index 6158772d0a4fb080ef6a4b477144b05c3ea18f13..3f17ea3427668157c75c22cb8f418d61ca06e607 100644 --- a/Assets/Scripts/Upgrades/ResourceCapacityUpgrade.cs +++ b/Assets/Scripts/Upgrades/ResourceCapacityUpgrade.cs @@ -7,7 +7,7 @@ public class ResourceCapacityUpgrade : Upgrade // Start is called before the first frame update void Start() { - + maxLevelModifier = 4; } // Update is called once per frame @@ -21,9 +21,13 @@ public class ResourceCapacityUpgrade : Upgrade UpgradeTargets target = UpgradeTargets.capacity; City city = gameObject.GetComponent<City>(); int currentLevel = city.GetLevel(target); - city.UseResources((GetPrices(currentLevel))); - city.IncreaseCapacity(currentLevel * 100); - Debug.Log("Capacity upgraded"); + + if (currentLevel <= city.GetLevel(UpgradeTargets.city) * maxLevelModifier) + { + city.UseResources((GetPrices(currentLevel))); + city.IncreaseCapacity(currentLevel * 100); + Debug.Log("Capacity upgraded"); + } } } diff --git a/Assets/Scripts/Upgrades/ResourceEfficiencyUpgrade.cs b/Assets/Scripts/Upgrades/ResourceEfficiencyUpgrade.cs index 94cb070ee00f1601542f1e71b113f0a87d970a9a..ab8ee4ad8d5d365e71254840a757e27284d13cca 100644 --- a/Assets/Scripts/Upgrades/ResourceEfficiencyUpgrade.cs +++ b/Assets/Scripts/Upgrades/ResourceEfficiencyUpgrade.cs @@ -7,7 +7,7 @@ public class ResourceEfficiencyUpgrade : Upgrade // Start is called before the first frame update void Start() { - + maxLevelModifier = 5; } // Update is called once per frame @@ -19,8 +19,11 @@ public class ResourceEfficiencyUpgrade : Upgrade public void UpgradeEfficiency() { City city = gameObject.GetComponent<City>(); - IncreaseEfficiencyLevel(); - city.UseResources(GetPrices(GetEfficiencyLevel() * GetEfficiencyLevel())); - Debug.Log("Efficienfy upgraded to: " + GetEfficiencyLevel()); + if (GetEfficiencyLevel() <= maxLevelModifier) + { + IncreaseEfficiencyLevel(); + city.UseResources(GetPrices(GetEfficiencyLevel() * GetEfficiencyLevel())); + Debug.Log("Efficienfy upgraded to: " + GetEfficiencyLevel()); + } } } diff --git a/Assets/Scripts/Upgrades/RoadUpgrade.cs b/Assets/Scripts/Upgrades/RoadUpgrade.cs index 52676a0fd29f8148bfedffab67789e09a572ed9a..6ef9e4daafc52f2d623ddcaed3cd1e86dc5d898e 100644 --- a/Assets/Scripts/Upgrades/RoadUpgrade.cs +++ b/Assets/Scripts/Upgrades/RoadUpgrade.cs @@ -4,10 +4,11 @@ using UnityEngine; public class RoadUpgrade : Upgrade { + // Start is called before the first frame update void Start() { - + maxLevelModifier = 2; } // Update is called once per frame @@ -21,10 +22,14 @@ public class RoadUpgrade : Upgrade UpgradeTargets target = UpgradeTargets.speed; Road road = gameObject.GetComponent<Road>(); City city = gameObject.GetComponent<City>(); - float currentLevel = road.GetLevel(target); - city.UseResources(GetPrices(currentLevel)); - road.IncreaseSpeed(1 / currentLevel); - Debug.Log("Road upgraded"); + int currentLevel = (int) road.GetLevel(target); + + if (currentLevel <= city.GetLevel(UpgradeTargets.city) * maxLevelModifier) + { + city.UseResources(GetPrices(currentLevel)); + road.IncreaseSpeed(1 / currentLevel); + Debug.Log("Road upgraded"); + } } } diff --git a/Assets/Scripts/Upgrades/Upgrade.cs b/Assets/Scripts/Upgrades/Upgrade.cs index 085a6a5f479780f3601d5d71e3bde5c52f4832bd..9bc13dc5d1fafcfc3df4ab2134527ff2e795af59 100644 --- a/Assets/Scripts/Upgrades/Upgrade.cs +++ b/Assets/Scripts/Upgrades/Upgrade.cs @@ -4,14 +4,16 @@ using UnityEngine; public abstract class Upgrade : MonoBehaviour { - /* - private float baseWoodCost = 10; - private float baseStoneCost = 10; - private float baseFoodCost = 10; - */ + protected int maxLevelModifier; + private float efficiencyLevel = 1; - private Dictionary<Resources, int> resources = new Dictionary<Resources, int>(); + private Dictionary<Resource, int> resources = new Dictionary<Resource, int>() + { + { null , 1}, + { null , 1}, + { null , 0}, + }; // Start is called before the first frame update void Start() @@ -61,7 +63,7 @@ public abstract class Upgrade : MonoBehaviour public List<int> GetPrices(float modifier) { List<int> prices = new List<int>(); - foreach(KeyValuePair<Resources, int> key in resources) + foreach(KeyValuePair<Resource, int> key in resources) { prices.Add((int) (key.Value * modifier * 50 * GetEfficiency())); } diff --git a/Assets/Scripts/Upgrades/UpgradeTargets.cs b/Assets/Scripts/Upgrades/UpgradeTargets.cs index ae059aa35a7bd0107c426ee560069bc9db115f51..57c44cd58ea805d7643d30e1959562063434b595 100644 --- a/Assets/Scripts/Upgrades/UpgradeTargets.cs +++ b/Assets/Scripts/Upgrades/UpgradeTargets.cs @@ -3,5 +3,5 @@ using System.Collections.Generic; using UnityEngine; public enum UpgradeTargets - {population, capacity, speed, collector} + {population, capacity, speed, collector, city} diff --git a/Assets/Sprites/flag.png b/Assets/Sprites/flag.png new file mode 100644 index 0000000000000000000000000000000000000000..09ada3428cabb1a3b13a42f8c8d5f2d46c493488 Binary files /dev/null and b/Assets/Sprites/flag.png differ diff --git a/Assets/Sprites/flag.png.meta b/Assets/Sprites/flag.png.meta new file mode 100644 index 0000000000000000000000000000000000000000..6e783e839844da15123f8acaed294f4e8c7db059 --- /dev/null +++ b/Assets/Sprites/flag.png.meta @@ -0,0 +1,88 @@ +fileFormatVersion: 2 +guid: dd3f1a90ef7844947ae3599531fcd6d2 +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: 4f0b75042eebcc842953244e7cf3cc95 + vertices: [] + indices: + edges: [] + weights: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: