From af5dd22bc2ae17bbdf79b02b1fb01e63f6302e44 Mon Sep 17 00:00:00 2001 From: craftwill Date: Tue, 29 Oct 2024 15:46:57 -0400 Subject: [PATCH] Integration of upgrades for melee, ranged and house units; Lots of balancing and created levels 8 to 12; Added desert sprites and change background dynamicaly; Fix upgrade error when only 1-2 upgrades are put in a unit; Made it so that resources are collected automaticaly after a delay; Units need to be upgraded to access the better units now; Some visual updates on units; Added slinger unit (temporary graphics) --- Assets/Art/Sprites/decorations/rock_sandy.png | Bin 0 -> 4330 bytes .../Sprites/decorations/rock_sandy.png.meta | 135 ++ .../Sprites/decorations/tile_tree_desert.png | Bin 0 -> 9832 bytes .../decorations/tile_tree_desert.png.meta | 135 ++ Assets/Art/Sprites/tiles/tile_farm.png.meta | 39 +- Assets/Art/Sprites/tiles/tile_grass.png.meta | 39 +- .../Art/Sprites/tiles/tile_mountain.png.meta | 12 + .../Sprites/tiles/tile_mountain_sandy.asset | 36 + .../tiles/tile_mountain_sandy.asset.meta | 8 + .../Art/Sprites/tiles/tile_moutain_sandy.png | Bin 0 -> 4484 bytes .../Sprites/tiles/tile_moutain_sandy.png.meta | 135 ++ Assets/Art/Sprites/tiles/tile_sand.asset | 36 + Assets/Art/Sprites/tiles/tile_sand.asset.meta | 8 + Assets/Art/Sprites/tiles/tile_sand.png | Bin 0 -> 2402 bytes Assets/Art/Sprites/tiles/tile_sand.png.meta | 135 ++ Assets/Design/Levels/Level10.asset | 221 ++ Assets/Design/Levels/Level10.asset.meta | 8 + Assets/Design/Levels/Level11.asset | 239 ++ Assets/Design/Levels/Level11.asset.meta | 8 + Assets/Design/Levels/Level12.asset | 217 ++ Assets/Design/Levels/Level12.asset.meta | 8 + Assets/Design/Levels/Level3.asset | 4 +- Assets/Design/Levels/Level4.asset | 8 +- Assets/Design/Levels/Level5.asset | 16 +- Assets/Design/Levels/Level6.asset | 6 +- Assets/Design/Levels/Level7.asset | 235 ++ Assets/Design/Levels/Level7.asset.meta | 8 + Assets/Design/Levels/Level8.asset | 241 ++ Assets/Design/Levels/Level8.asset.meta | 8 + Assets/Design/Levels/Level9.asset | 251 ++ Assets/Design/Levels/Level9.asset.meta | 8 + Assets/Design/Levels/WaveConfig_1_10.asset | 35 + .../Design/Levels/WaveConfig_1_10.asset.meta | 8 + Assets/Design/Levels/WaveConfig_1_11.asset | 35 + .../Design/Levels/WaveConfig_1_11.asset.meta | 8 + Assets/Design/Levels/WaveConfig_1_7.asset | 37 + .../Design/Levels/WaveConfig_1_7.asset.meta | 8 + Assets/Design/Levels/WaveConfig_1_8.asset | 35 + .../Design/Levels/WaveConfig_1_8.asset.meta | 8 + Assets/Design/Levels/WaveConfig_1_9.asset | 37 + .../Design/Levels/WaveConfig_1_9.asset.meta | 8 + Assets/Design/Levels/WaveConfig_2_12.asset | 35 + .../Design/Levels/WaveConfig_2_12.asset.meta | 8 + Assets/Design/UnitCards/Farm.asset | 4 +- Assets/Design/UnitCards/Farmer.asset | 2 +- Assets/Design/UnitCards/FarmerMob.asset | 4 +- Assets/Design/UnitCards/Mill.asset | 4 +- Assets/Design/UnitCards/Slinger.asset | 18 + Assets/Design/UnitCards/Slinger.asset.meta | 8 + Assets/Design/UnitUpgrades/Buildings.meta | 8 + .../UnitUpgrades/Buildings/Upgrade_Mill.asset | 17 + .../Buildings/Upgrade_Mill.asset.meta | 8 + .../{Upgrade1.asset => Upgrade_Archer.asset} | 2 +- .../UnitUpgrades/Upgrade_Archer.asset.meta | 8 + .../{Upgrade2.asset => Upgrade_Knight.asset} | 2 +- ...2.asset.meta => Upgrade_Knight.asset.meta} | 0 .../UnitUpgrades/Upgrade_Swordsman.asset | 17 + ...sset.meta => Upgrade_Swordsman.asset.meta} | 0 Assets/GlobalConfig.asset | 2 +- Assets/Prefabs/Buildings/House.prefab | 16 + .../Sticks/Harversters/axemanStick.prefab | 85 + .../Prefabs/Sticks/farmersAssociation.prefab | 2 - Assets/Prefabs/Sticks/slingerStick.prefab | 2134 +++++++++++++++++ .../Prefabs/Sticks/slingerStick.prefab.meta | 7 + Assets/Prefabs/Sticks/swordsmanStick.prefab | 16 + .../UnitPlacementButtons.prefab | 152 +- Assets/Scenes/Game.unity | 406 +++- Assets/Scenes/LevelSelect.unity | 461 +++- Assets/Scripts/Ally/AllyUpgrade.cs | 2 +- Assets/Scripts/LevelEditor/Level.cs | 2 +- Assets/Scripts/LevelManager/LevelManager.cs | 1 - .../LevelManager/LevelManagerScript.cs | 11 +- Assets/Scripts/Resource/ResourceMaker.cs | 10 + Assets/Scripts/WorldMap/WorldMapManager.cs | 1 + Assets/Scripts/WorldMap/WorldMapSave.cs | 10 +- Assets/Tilemaps/LevelEditorPalette.prefab | 78 +- Assets/Tiles/Forest_Desert.asset | 19 + Assets/Tiles/Forest_Desert.asset.meta | 8 + Assets/Tiles/Mountain_Desert.asset | 16 + Assets/Tiles/Mountain_Desert.asset.meta | 8 + Assets/Tiles/RockNode_Desert.asset | 19 + Assets/Tiles/RockNode_Desert.asset.meta | 8 + 82 files changed, 5826 insertions(+), 216 deletions(-) create mode 100644 Assets/Art/Sprites/decorations/rock_sandy.png create mode 100644 Assets/Art/Sprites/decorations/rock_sandy.png.meta create mode 100644 Assets/Art/Sprites/decorations/tile_tree_desert.png create mode 100644 Assets/Art/Sprites/decorations/tile_tree_desert.png.meta create mode 100644 Assets/Art/Sprites/tiles/tile_mountain_sandy.asset create mode 100644 Assets/Art/Sprites/tiles/tile_mountain_sandy.asset.meta create mode 100644 Assets/Art/Sprites/tiles/tile_moutain_sandy.png create mode 100644 Assets/Art/Sprites/tiles/tile_moutain_sandy.png.meta create mode 100644 Assets/Art/Sprites/tiles/tile_sand.asset create mode 100644 Assets/Art/Sprites/tiles/tile_sand.asset.meta create mode 100644 Assets/Art/Sprites/tiles/tile_sand.png create mode 100644 Assets/Art/Sprites/tiles/tile_sand.png.meta create mode 100644 Assets/Design/Levels/Level10.asset create mode 100644 Assets/Design/Levels/Level10.asset.meta create mode 100644 Assets/Design/Levels/Level11.asset create mode 100644 Assets/Design/Levels/Level11.asset.meta create mode 100644 Assets/Design/Levels/Level12.asset create mode 100644 Assets/Design/Levels/Level12.asset.meta create mode 100644 Assets/Design/Levels/Level7.asset create mode 100644 Assets/Design/Levels/Level7.asset.meta create mode 100644 Assets/Design/Levels/Level8.asset create mode 100644 Assets/Design/Levels/Level8.asset.meta create mode 100644 Assets/Design/Levels/Level9.asset create mode 100644 Assets/Design/Levels/Level9.asset.meta create mode 100644 Assets/Design/Levels/WaveConfig_1_10.asset create mode 100644 Assets/Design/Levels/WaveConfig_1_10.asset.meta create mode 100644 Assets/Design/Levels/WaveConfig_1_11.asset create mode 100644 Assets/Design/Levels/WaveConfig_1_11.asset.meta create mode 100644 Assets/Design/Levels/WaveConfig_1_7.asset create mode 100644 Assets/Design/Levels/WaveConfig_1_7.asset.meta create mode 100644 Assets/Design/Levels/WaveConfig_1_8.asset create mode 100644 Assets/Design/Levels/WaveConfig_1_8.asset.meta create mode 100644 Assets/Design/Levels/WaveConfig_1_9.asset create mode 100644 Assets/Design/Levels/WaveConfig_1_9.asset.meta create mode 100644 Assets/Design/Levels/WaveConfig_2_12.asset create mode 100644 Assets/Design/Levels/WaveConfig_2_12.asset.meta create mode 100644 Assets/Design/UnitCards/Slinger.asset create mode 100644 Assets/Design/UnitCards/Slinger.asset.meta create mode 100644 Assets/Design/UnitUpgrades/Buildings.meta create mode 100644 Assets/Design/UnitUpgrades/Buildings/Upgrade_Mill.asset create mode 100644 Assets/Design/UnitUpgrades/Buildings/Upgrade_Mill.asset.meta rename Assets/Design/UnitUpgrades/{Upgrade1.asset => Upgrade_Archer.asset} (96%) create mode 100644 Assets/Design/UnitUpgrades/Upgrade_Archer.asset.meta rename Assets/Design/UnitUpgrades/{Upgrade2.asset => Upgrade_Knight.asset} (96%) rename Assets/Design/UnitUpgrades/{Upgrade2.asset.meta => Upgrade_Knight.asset.meta} (100%) create mode 100644 Assets/Design/UnitUpgrades/Upgrade_Swordsman.asset rename Assets/Design/UnitUpgrades/{Upgrade1.asset.meta => Upgrade_Swordsman.asset.meta} (100%) create mode 100644 Assets/Prefabs/Sticks/slingerStick.prefab create mode 100644 Assets/Prefabs/Sticks/slingerStick.prefab.meta create mode 100644 Assets/Tiles/Forest_Desert.asset create mode 100644 Assets/Tiles/Forest_Desert.asset.meta create mode 100644 Assets/Tiles/Mountain_Desert.asset create mode 100644 Assets/Tiles/Mountain_Desert.asset.meta create mode 100644 Assets/Tiles/RockNode_Desert.asset create mode 100644 Assets/Tiles/RockNode_Desert.asset.meta diff --git a/Assets/Art/Sprites/decorations/rock_sandy.png b/Assets/Art/Sprites/decorations/rock_sandy.png new file mode 100644 index 0000000000000000000000000000000000000000..5ddaa2bb3a52fb2510fe0608ae934f4a518094d2 GIT binary patch literal 4330 zcmVymdi*^Iq2zu9E(-h0mZp6~B@&b?P%HOG&>?xgSZ zbR;CMX-mlN?Ml2h(EXWnM_*Us_t$kMhVyyFIR#!vQ{0+dd+;Z=^q}*VrQxptW+3`G zCyzDl36`qT@R#iw#`855;jgXjOpK9p0NUITbI_h)`rMLg9L%;E&!?vtT#G6ro(I?f zc6)9dfLD@le#e?>bSiea6-b_zhR6@rcPF1-TowLCSz+jh8EJ+=o5ko@-4=Uh&$jf> zb23eiv}B`mNmb-;1Ks~wKVXe8r@bk*r!XhvBL$kPx;(Uro}jrk!BpKtBG>neoK~i?}1!xOJAB+m}}O`i^8?lZS%D~+icpY`-`=scjW8m z5ADg)ZrPTh<=IUaGtz^;>S~Q&6zFly$^q*tio;$@OE$Qay1Ep5+<93cp4Dwh+THte zbOE6I59MhO-Cd~lA1TrvIaaJa_CSgD#6zXpgNFoR#umrKloP1g?(K~-&?snc57j7@L6TEJU4H)>Z%F5VA&nFW@|7K=Ku?Z zk;m@L*MSp(c>pZ{av$Yrw3PV`5mXfb1sFbI8US)mz{4)ywJ%3kd05ErkkW!MEp>rGD=Q2>bH~2Q?@F7> zu`IS*O`j(x89b#0=C=Yl{%IY(s}fBm`5_Q2`NVjRl&w;B1(T&gMiNL=|{@vTea0#YU}V zS-kFKmR3jnHPARr=^*Ya&JTSb^+GiP52t~8P86W=1UpHL`1GlA-KhX1fj8&6S0-sp zUUixI{XkU#9*1@hV+@_E@FPa7+Lh4XiBA zGkvBe^Sk5sc#a)PeV@e!H8;fR1H~cu6FiuVT|IrW{4#(D6NPixy(L4-wTEbSt8t*G zJs~~Ncue>ps9jMPeL}I%X|tI07*7IWe*%b?20(8H{^XGgy)D!j010yl-d8rp?hG_8 z;~wi)C5Eb)??6#r=zEt+Q=U~ViMpM_*!!D(0EN0f{$Q!jLgdL4Wje5AH8*XtYITdE zm18jsEv}0EU7+z9^B~VvQU4p%?W}3Wp~{l*pQYfLFB}Yoi`l;exxmJkolog=OJRt4bx?md9@N?sxl&*!3!A{Isex{3Vq! z83F>{vBP!Os17(XttP#*Vv8Obrh*vJP5KW{7UH+E)xSaZ%+wJugO`rvo7O$h8N%vTZ@< z`nndR5@r?Wh5j=m-RS6PPa15hi~J-#+2B;F{+E%KRA=O%%F@{!^OilstaQ* z`2sA*=_!C6Dr>o*`t!_*`<7olWXq_r}ObBry6N0Hx&W_bQ_oj8p=cxeg-<7GgG{m_nL=@(lJ-6=2 zd-de8=9yz6_CtX;P>>Viq=T?dgrHW!h_MF6dI-yxs6XYXA3a?5jaUw504~J<&NI-d z0*F0Es!AjDN#ULq#Syyamh}}y0ykvfJRmE3c>dJ!mYD%@$->Cr;JJF*l~vEh}5nmKTID8VGGv@cnEPFtP`(XoM+bmp9*+Pq?FNwg)p8VTP7L+cWkt1 zc z#(2nk;L@qF*hi5QKu{BApKI~j2!CS&a6WirSb|69_oy?>oh*Q|w#?*8Uui=!7GWXn zF=0#;fjmqFMCIVz+c(;5eg}}8cjv~h0i=U;YAoA#!UltLKVN$7TOS=T% z*uwnm5SNM_uk#y#H5Czmu%;Ru%#^4EvpO34VAPU@QM%nDMMK?v!GnFUgUkb){@Y}gU`g}puP#VLx9&Giv%h}2kn74}Jd<=qh&I&6f82P~dYR2VjnWjj$N zZvYXp61@3joylZ`ao~}qP1sMBh$V^xyNmWu3qZEx=4Ayth|3r_wh!AP`&zsQMr03o zI01~e#A5&n>m=wNEoYWs+8aPrdOB&{L;<92F&_wK2o`p?#(mL$tjRQG0Gk_Po@dJ~ z;K=?K?|m(RC>@di0b1fQ*_AaOcnFgrUKn9O{O{eyRE2vlTN0xO^xWI`JZ%tq34oOA zaAFn3VHY1d(il1=@OnCu8gepCg9O5OGr*9&eIo&g5QjfwWjNVv7tC4LMzF&VVG~p3^I^DiWwnKX5;&&UQ5$t!E4OP z4E~f=H&mCH4FF-1xB4P8Vcdlc$aL?IT1uIWHEX~@qol;eQv%-YGA3~-l*3TtmWJq; zCJf%%j)Vku)w3wm+8F1MMI-E)ulgc08K3!MB3LHScWl)}U+ybaZVL@X74>!?@2?VO#(R@OWbw3=5m;BHmLW&B$ecp8ipe;|w|P?k!d~0J30&<6uU} zYq1@;d2T${)pxogB{tNUloETHZ8JHy^jUsz1$e!y5{)GV=6~=+QDuqwJkElm!2^d2 zJa_EL^1wX6gVLxl44lc-YNRxAHs$cX9M8esSwp)vS=~D}T3src7$AP+`M$pH1#wpZ z$TJ;md0>}&bA8N3QZG_4VmXX2vp{|*_GBg#`?(_6dB#haLupOngkOFaZ0NF5!r-5OzRSo1}AFdpG@NM_Jz5oh=aGq4hl^TDcGLnc9 z0R&x=XQ?=27XT2|g?%&adFPr)KF-(?%3#BL4x^sB0zAT)Y+KM5tVof0;6MONg6IE- zxX)K4r4vtlsT}4i$_;)0iZXxq%J@>7#W+BnjLHkC8-M{I`j73K>z>!&BH0K|lq6!f zyk#1&TZ7K=s+OZ&P5dw4rN#!P4zL3=7v~jQ+=#U zMec5*_r}`cjTQ2fjBqQDEqJWGDiPWc)9U1HkvRjQ8^6aKFwbhZ&j=1gP^_Pxa_xj7n4C+&V zh5|#mdS!f3V{KGFdx^^m&2RGX3eh-^3S?SM=XfQPYG{DHgS-^SSNNV?U2L!Aw`u~u zN%cXr?x=ZC&aG(kHyAIZEVm)bwe z?-)x#cF2dcM;NE>_o4#mS8B|sn(CwPYHo-=+`c0A(CW5?o^_o`iGF*4k#{2WbR;ZT z)e>LFGikhBg53-Ci{|~&pd)R|V>j_gKF&&+jCnKppbIvgmzAMrm!#6`)35FS Y5Bh=?w0+hac>n+a07*qoM6N<$f)Ow-&j0`b literal 0 HcmV?d00001 diff --git a/Assets/Art/Sprites/decorations/rock_sandy.png.meta b/Assets/Art/Sprites/decorations/rock_sandy.png.meta new file mode 100644 index 0000000..e36ca01 --- /dev/null +++ b/Assets/Art/Sprites/decorations/rock_sandy.png.meta @@ -0,0 +1,135 @@ +fileFormatVersion: 2 +guid: 7cbc0cdc8f458684fa65c3dc3e6f86fc +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 12 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMasterTextureLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 1 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 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 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + cookieLightType: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Server + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Android + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Art/Sprites/decorations/tile_tree_desert.png b/Assets/Art/Sprites/decorations/tile_tree_desert.png new file mode 100644 index 0000000000000000000000000000000000000000..781053d93a962a2862935fc3d9f3427fa74ffd1b GIT binary patch literal 9832 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 i && _upgradeList[i] != null) { GameObject upgradeEnfant = _instance.transform.GetChild(i).gameObject; UpgradePlacementButton button = upgradeEnfant.GetComponent(); diff --git a/Assets/Scripts/LevelEditor/Level.cs b/Assets/Scripts/LevelEditor/Level.cs index d662808..339a6b0 100644 --- a/Assets/Scripts/LevelEditor/Level.cs +++ b/Assets/Scripts/LevelEditor/Level.cs @@ -21,7 +21,7 @@ namespace GatherAndDefend.LevelEditor } [SerializeField] - private int _startPopulation = 5; + private int _startPopulation = 10; [SerializeField] private int _startFood = 50; [SerializeField] diff --git a/Assets/Scripts/LevelManager/LevelManager.cs b/Assets/Scripts/LevelManager/LevelManager.cs index d47011d..57b1351 100644 --- a/Assets/Scripts/LevelManager/LevelManager.cs +++ b/Assets/Scripts/LevelManager/LevelManager.cs @@ -227,7 +227,6 @@ public class LevelManager : Singleton { //fetch level from database _currentLevel = Database.Instance.ScriptableObjects[levelName] as Level; - await LoadLevel(_currentLevel, placementAnimation).ConfigureAwait(false); } diff --git a/Assets/Scripts/LevelManager/LevelManagerScript.cs b/Assets/Scripts/LevelManager/LevelManagerScript.cs index 969851e..e3f1139 100644 --- a/Assets/Scripts/LevelManager/LevelManagerScript.cs +++ b/Assets/Scripts/LevelManager/LevelManagerScript.cs @@ -6,7 +6,6 @@ using System.Threading.Tasks; using System; using GatherAndDefend.Events; using static LevelManager; - /// The position the tile should be placed on /// the tile we should place /// the action of placing the tile on the tilemap @@ -17,11 +16,21 @@ public class LevelManagerScript : SingletonBehaviour private Action updateAction = null; public bool loadOnStart = false; public Level firstLevel; + + [SerializeField] private SpriteRenderer _worldBackgroundSpriteRenderer; + [SerializeField] private Sprite[] _worldBackgrounds; + async void Start() { //only when the level is loaded do we start updating EventAggregator.Instance.GetEvent().Attach(Instance_LevelLoaded); EventAggregator.Instance.GetEvent().Attach(KillLoading); + + if (PlayerPrefs.GetInt(LoadingManager.LevelToLoad) >= 12) + { + _worldBackgroundSpriteRenderer.sprite = _worldBackgrounds[1]; + } + if (loadOnStart && firstLevel) { await LevelManager.Instance.LoadLevel(firstLevel, PlacementAnimation); diff --git a/Assets/Scripts/Resource/ResourceMaker.cs b/Assets/Scripts/Resource/ResourceMaker.cs index c2fa515..679b906 100644 --- a/Assets/Scripts/Resource/ResourceMaker.cs +++ b/Assets/Scripts/Resource/ResourceMaker.cs @@ -44,6 +44,16 @@ public class ResourceMaker : MonoBehaviour _destination = GameObject.FindWithTag("Food"); break; } + + // Auto collect resource + StartCoroutine(AutoCollect()); + } + + private IEnumerator AutoCollect() + { + yield return new WaitForSeconds(Random.Range(1f, 1.3f)); + if(!_isPlaying) + ClickOnResource(); } /// diff --git a/Assets/Scripts/WorldMap/WorldMapManager.cs b/Assets/Scripts/WorldMap/WorldMapManager.cs index 8ac0aff..c34085e 100644 --- a/Assets/Scripts/WorldMap/WorldMapManager.cs +++ b/Assets/Scripts/WorldMap/WorldMapManager.cs @@ -79,6 +79,7 @@ public class WorldMapManager : MonoBehaviour public void CallLevelWorld1(int levelToCall) { + print("Load " + levelToCall); if (_buttonList[levelToCall - 1].GetComponent().sprite.name != "worldmap_level_locked") { PlayerPrefs.SetString(LoadingManager.SceneToLoad, _gameScene); diff --git a/Assets/Scripts/WorldMap/WorldMapSave.cs b/Assets/Scripts/WorldMap/WorldMapSave.cs index 8a8e027..19fbd35 100644 --- a/Assets/Scripts/WorldMap/WorldMapSave.cs +++ b/Assets/Scripts/WorldMap/WorldMapSave.cs @@ -14,8 +14,14 @@ public class WorldMapSave SAVED } - private LevelState[] levelUnlocked = { LevelState.SAVED, LevelState.LOCKED, LevelState.LOCKED, LevelState.LOCKED, - LevelState.LOCKED, LevelState.LOCKED, LevelState.LOCKED, LevelState.LOCKED, LevelState.LOCKED, LevelState.LOCKED, LevelState.LOCKED }; + private LevelState[] levelUnlocked = { + // World1 + LevelState.SAVED, LevelState.LOCKED, LevelState.LOCKED, LevelState.LOCKED, + LevelState.LOCKED, LevelState.LOCKED, LevelState.LOCKED, LevelState.LOCKED, LevelState.LOCKED, LevelState.LOCKED, LevelState.LOCKED, + // World2 + LevelState.UNLOCKED, LevelState.LOCKED, LevelState.LOCKED, LevelState.LOCKED, + LevelState.LOCKED, LevelState.LOCKED, LevelState.LOCKED, LevelState.LOCKED, LevelState.LOCKED, LevelState.LOCKED, LevelState.LOCKED, + }; private string filePath; diff --git a/Assets/Tilemaps/LevelEditorPalette.prefab b/Assets/Tilemaps/LevelEditorPalette.prefab index 457a086..4d6515f 100644 --- a/Assets/Tilemaps/LevelEditorPalette.prefab +++ b/Assets/Tilemaps/LevelEditorPalette.prefab @@ -87,6 +87,36 @@ Tilemap: m_GameObject: {fileID: 5890485537825364348} m_Enabled: 1 m_Tiles: + - first: {x: -1, y: -4, z: 0} + second: + serializedVersion: 2 + m_TileIndex: 11 + m_TileSpriteIndex: 11 + m_TileMatrixIndex: 0 + m_TileColorIndex: 0 + m_TileObjectToInstantiateIndex: 65535 + dummyAlignment: 0 + m_AllTileFlags: 0 + - first: {x: 0, y: -4, z: 0} + second: + serializedVersion: 2 + m_TileIndex: 13 + m_TileSpriteIndex: 6 + m_TileMatrixIndex: 0 + m_TileColorIndex: 0 + m_TileObjectToInstantiateIndex: 65535 + dummyAlignment: 0 + m_AllTileFlags: 0 + - first: {x: 1, y: -4, z: 0} + second: + serializedVersion: 2 + m_TileIndex: 12 + m_TileSpriteIndex: 12 + m_TileMatrixIndex: 0 + m_TileColorIndex: 0 + m_TileObjectToInstantiateIndex: 65535 + dummyAlignment: 0 + m_AllTileFlags: 0 - first: {x: -1, y: -3, z: 0} second: serializedVersion: 2 @@ -127,6 +157,26 @@ Tilemap: m_TileObjectToInstantiateIndex: 65535 dummyAlignment: 0 m_AllTileFlags: 0 + - first: {x: 0, y: -1, z: 0} + second: + serializedVersion: 2 + m_TileIndex: 9 + m_TileSpriteIndex: 9 + m_TileMatrixIndex: 0 + m_TileColorIndex: 0 + m_TileObjectToInstantiateIndex: 65535 + dummyAlignment: 0 + m_AllTileFlags: 1073741825 + - first: {x: 1, y: -1, z: 0} + second: + serializedVersion: 2 + m_TileIndex: 10 + m_TileSpriteIndex: 10 + m_TileMatrixIndex: 0 + m_TileColorIndex: 0 + m_TileObjectToInstantiateIndex: 65535 + dummyAlignment: 0 + m_AllTileFlags: 1073741825 - first: {x: -1, y: 0, z: 0} second: serializedVersion: 2 @@ -207,6 +257,16 @@ Tilemap: m_Data: {fileID: 11400000, guid: 15606c8c503e8164fb69178aa7016f58, type: 2} - m_RefCount: 1 m_Data: {fileID: 11400000, guid: 3723ba09738ef6245947ae3ba7978b21, type: 2} + - m_RefCount: 1 + m_Data: {fileID: 11400000, guid: 4abc113f1a69a564b863f76e96756a75, type: 2} + - m_RefCount: 1 + m_Data: {fileID: 11400000, guid: 760092a3b8a4148488386ce5208108f4, type: 2} + - m_RefCount: 1 + m_Data: {fileID: 11400000, guid: bf54aafd910e06643ad05893f9c02803, type: 2} + - m_RefCount: 1 + m_Data: {fileID: 11400000, guid: e03705cfeb12caa4fa060a306c265520, type: 2} + - m_RefCount: 1 + m_Data: {fileID: 11400000, guid: 61f6ef7d247d2a54e9d4b2a8005e3cb1, type: 2} m_TileSpriteArray: - m_RefCount: 1 m_Data: {fileID: 21300000, guid: ccca3e050cb082b45af0a099790463f6, type: 3} @@ -220,14 +280,22 @@ Tilemap: m_Data: {fileID: 21300000, guid: 77a39e873655d3c4b93d0b7696397b83, type: 3} - m_RefCount: 1 m_Data: {fileID: 21300000, guid: b85a4b2ec6433d04895612d791edc260, type: 3} - - m_RefCount: 2 + - m_RefCount: 3 m_Data: {fileID: 21300000, guid: 5cf7447a03096c04ead18f1855f01cd7, type: 3} - m_RefCount: 1 m_Data: {fileID: 21300000, guid: 8354a544f4ca3514e87d40d2de9afaee, type: 3} - m_RefCount: 1 m_Data: {fileID: 21300000, guid: 22cdcbd5df3efd74fa4d119fc5836708, type: 3} + - m_RefCount: 1 + m_Data: {fileID: 21300000, guid: 669f9bfec2c5fad4eb7e2e792e4cc5cc, type: 3} + - m_RefCount: 1 + m_Data: {fileID: 21300000, guid: 70ecf45f3fcaa8247ad52c0b3aaca4ba, type: 3} + - m_RefCount: 1 + m_Data: {fileID: 21300000, guid: 6d546f9d5bcc2684ead4560620b49661, type: 3} + - m_RefCount: 1 + m_Data: {fileID: 21300000, guid: 7cbc0cdc8f458684fa65c3dc3e6f86fc, type: 3} m_TileMatrixArray: - - m_RefCount: 10 + - m_RefCount: 15 m_Data: e00: 1 e01: 0 @@ -246,8 +314,10 @@ Tilemap: e32: 0 e33: 1 m_TileColorArray: - - m_RefCount: 10 + - m_RefCount: 15 m_Data: {r: 1, g: 1, b: 1, a: 1} + - m_RefCount: 0 + m_Data: {r: 0.00013800501, g: 0.00013800501, b: 0.00013800501, a: 0.00013800501} m_TileObjectToInstantiateArray: [] m_AnimationFrameRate: 1 m_Color: {r: 1, g: 1, b: 1, a: 1} @@ -321,7 +391,7 @@ TilemapRenderer: m_Mode: 0 m_DetectChunkCullingBounds: 0 m_MaskInteraction: 0 ---- !u!114 &70335294776359290 +--- !u!114 &3614411174713001027 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} diff --git a/Assets/Tiles/Forest_Desert.asset b/Assets/Tiles/Forest_Desert.asset new file mode 100644 index 0000000..d666f13 --- /dev/null +++ b/Assets/Tiles/Forest_Desert.asset @@ -0,0 +1,19 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 84b05f2a26f63da46a1028488482d079, type: 3} + m_Name: Forest_Desert + m_EditorClassIdentifier: + _sprite: {fileID: 21300000, guid: 6d546f9d5bcc2684ead4560620b49661, type: 3} + _isCollidable: 0 + _yieldPrefab: {fileID: 6962989255644195630, guid: f20569b5452c2b341a95d656b7534b7e, type: 3} + _resourceNodeType: 1 + _randomPositionConfig: 0.5 diff --git a/Assets/Tiles/Forest_Desert.asset.meta b/Assets/Tiles/Forest_Desert.asset.meta new file mode 100644 index 0000000..4bdeaf0 --- /dev/null +++ b/Assets/Tiles/Forest_Desert.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: bf54aafd910e06643ad05893f9c02803 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Tiles/Mountain_Desert.asset b/Assets/Tiles/Mountain_Desert.asset new file mode 100644 index 0000000..e7073cd --- /dev/null +++ b/Assets/Tiles/Mountain_Desert.asset @@ -0,0 +1,16 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 9ff04aa2e904a19458fd5b144c230054, type: 3} + m_Name: Mountain_Desert + m_EditorClassIdentifier: + _sprite: {fileID: 21300000, guid: 70ecf45f3fcaa8247ad52c0b3aaca4ba, type: 3} + _isCollidable: 1 diff --git a/Assets/Tiles/Mountain_Desert.asset.meta b/Assets/Tiles/Mountain_Desert.asset.meta new file mode 100644 index 0000000..6f3362a --- /dev/null +++ b/Assets/Tiles/Mountain_Desert.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 61f6ef7d247d2a54e9d4b2a8005e3cb1 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Tiles/RockNode_Desert.asset b/Assets/Tiles/RockNode_Desert.asset new file mode 100644 index 0000000..6e4ff1a --- /dev/null +++ b/Assets/Tiles/RockNode_Desert.asset @@ -0,0 +1,19 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 84b05f2a26f63da46a1028488482d079, type: 3} + m_Name: RockNode_Desert + m_EditorClassIdentifier: + _sprite: {fileID: 21300000, guid: 7cbc0cdc8f458684fa65c3dc3e6f86fc, type: 3} + _isCollidable: 0 + _yieldPrefab: {fileID: 6962989255644195630, guid: 484f0eca1c74ae34694692de56a36739, type: 3} + _resourceNodeType: 0 + _randomPositionConfig: 0.5 diff --git a/Assets/Tiles/RockNode_Desert.asset.meta b/Assets/Tiles/RockNode_Desert.asset.meta new file mode 100644 index 0000000..354579f --- /dev/null +++ b/Assets/Tiles/RockNode_Desert.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e03705cfeb12caa4fa060a306c265520 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: