From dfce7deb1763a48334133dfc51b41f872cda2602 Mon Sep 17 00:00:00 2001 From: Pasha Date: Thu, 23 Apr 2026 14:31:11 +0100 Subject: [PATCH] Heat Exchanger Stuff Added heat exchanger building --- Assets/Art/Annimations/HeatExchangerClip.anim | 53 ++ .../Annimations/HeatExchangerClip.anim.meta | 8 + .../HeatExchangerController.controller | 12 + .../HeatExchangerController.controller.meta | 8 + Assets/Art/Building/HeatExchanger-v1.png | Bin 0 -> 2788 bytes Assets/Art/Building/HeatExchanger-v1.png.meta | 477 ++++++++++++++++++ Assets/Prefabs/Buildings/HeatExchanger.prefab | 220 ++++++++ .../Buildings/HeatExchanger.prefab.meta | 7 + Assets/Prefabs/Buildings/Registry.asset | 4 + Assets/Scenes/GameScene.unity | 280 ++++++++++ .../Scripts/Game/Buildings/BuildingManager.cs | 66 ++- .../Scripts/Game/Buildings/HeatExchanger.cs | 32 ++ .../Game/Buildings/HeatExchanger.cs.meta | 3 + 13 files changed, 1168 insertions(+), 2 deletions(-) create mode 100644 Assets/Art/Annimations/HeatExchangerClip.anim create mode 100644 Assets/Art/Annimations/HeatExchangerClip.anim.meta create mode 100644 Assets/Art/Annimations/HeatExchangerController.controller create mode 100644 Assets/Art/Annimations/HeatExchangerController.controller.meta create mode 100644 Assets/Art/Building/HeatExchanger-v1.png create mode 100644 Assets/Art/Building/HeatExchanger-v1.png.meta create mode 100644 Assets/Prefabs/Buildings/HeatExchanger.prefab create mode 100644 Assets/Prefabs/Buildings/HeatExchanger.prefab.meta create mode 100644 Assets/Scripts/Game/Buildings/HeatExchanger.cs create mode 100644 Assets/Scripts/Game/Buildings/HeatExchanger.cs.meta diff --git a/Assets/Art/Annimations/HeatExchangerClip.anim b/Assets/Art/Annimations/HeatExchangerClip.anim new file mode 100644 index 0000000..590b751 --- /dev/null +++ b/Assets/Art/Annimations/HeatExchangerClip.anim @@ -0,0 +1,53 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!74 &7400000 +AnimationClip: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: HeatExchangerClip + serializedVersion: 7 + m_Legacy: 0 + m_Compressed: 0 + m_UseHighQualityCurve: 1 + m_RotationCurves: [] + m_CompressedRotationCurves: [] + m_EulerCurves: [] + m_PositionCurves: [] + m_ScaleCurves: [] + m_FloatCurves: [] + m_PPtrCurves: [] + m_SampleRate: 60 + m_WrapMode: 0 + m_Bounds: + m_Center: {x: 0, y: 0, z: 0} + m_Extent: {x: 0, y: 0, z: 0} + m_ClipBindingConstant: + genericBindings: [] + pptrCurveMapping: [] + m_AnimationClipSettings: + serializedVersion: 2 + m_AdditiveReferencePoseClip: {fileID: 0} + m_AdditiveReferencePoseTime: 0 + m_StartTime: 0 + m_StopTime: 1 + m_OrientationOffsetY: 0 + m_Level: 0 + m_CycleOffset: 0 + m_HasAdditiveReferencePose: 0 + m_LoopTime: 0 + m_LoopBlend: 0 + m_LoopBlendOrientation: 0 + m_LoopBlendPositionY: 0 + m_LoopBlendPositionXZ: 0 + m_KeepOriginalOrientation: 0 + m_KeepOriginalPositionY: 1 + m_KeepOriginalPositionXZ: 0 + m_HeightFromFeet: 0 + m_Mirror: 0 + m_EditorCurves: [] + m_EulerEditorCurves: [] + m_HasGenericRootTransform: 0 + m_HasMotionFloatCurves: 0 + m_Events: [] diff --git a/Assets/Art/Annimations/HeatExchangerClip.anim.meta b/Assets/Art/Annimations/HeatExchangerClip.anim.meta new file mode 100644 index 0000000..af3fe22 --- /dev/null +++ b/Assets/Art/Annimations/HeatExchangerClip.anim.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 77dc4557798cec84e8e0e3ccb4f84135 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 7400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Art/Annimations/HeatExchangerController.controller b/Assets/Art/Annimations/HeatExchangerController.controller new file mode 100644 index 0000000..3af53dd --- /dev/null +++ b/Assets/Art/Annimations/HeatExchangerController.controller @@ -0,0 +1,12 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!91 &9100000 +AnimatorController: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: HeatExchangerController + serializedVersion: 5 + m_AnimatorParameters: [] + m_AnimatorLayers: [] diff --git a/Assets/Art/Annimations/HeatExchangerController.controller.meta b/Assets/Art/Annimations/HeatExchangerController.controller.meta new file mode 100644 index 0000000..674584e --- /dev/null +++ b/Assets/Art/Annimations/HeatExchangerController.controller.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c88e2f1fbd65e8348856c09127d2891f +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 9100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Art/Building/HeatExchanger-v1.png b/Assets/Art/Building/HeatExchanger-v1.png new file mode 100644 index 0000000000000000000000000000000000000000..af43be64f2871ac9257f414c95b94fd62a467e51 GIT binary patch literal 2788 zcmZ8j2{@E%8y*f~h%=>ZH9D3?S!dE%BQ*_5V+m(k4vsk}VOox5Fxex9IdhbhHD%A1 ztPR6R6N*lf?YD0+5i^#-82@Lf-}$fWd%t<#=X&OOp7*}*=l$M$Rv6RWU|BE-1lnzG zhOz;H_|$+oR9FajCsZoB0Y7}VZA?#r3R@3MfR%w=z0aL_DZlIlvswFYEkOLhL8`^<_&lKM~C# zWoqPbH)v2JA(%OQXnIg<+6gJspmknCs4grs`T5cn=*fz{Q**Pz*#78C^m7~kI3ds` z5IlJUgx&AaA_S7o5?MVIv6|t%AY+5s@6*%0^4kx$sGf!u-pDt9V~G{wD2wo|B*n)` z_HgnQsC*DBGGIU(NFM%hc6hY=VNi`0XmGCAl1Z*zN?GYJ{nn9kg>S?}BJ7SaYqwNO z#1eZKqlPWDZk|H(CJ<(V&L>kDc;f>892#pH-*K51ux>H5rl6xst9sEu^`A^C>b&hp zDC2cU8b{Dqn{KeggV_}tnn^>o`VVf^%rWKjsq+2Dec&w2F^1{FuuiQ#ZRJbNWBTeN zJ?>aBej~}UVYFTqXWC$xi`4J@Oh}Z0Y0mJB>il#0bEIk=3M7n{V_&8Q&4_7KtFIb{ z62R$RyjAi?&RX8b(-kgh~C?>Ke0%H(MiR2;rK| zk^96}h+Wrq`SjEWBHjQ`@j##V)nuysI48$lZ!)hri9`|#MsswtZ$*U#&bah+&THP^ zHKqBcKaw3Os2Fkz{sMks zQeU=wZLh!$xO|+3twUjP&fQ1Mx%^C3mnz!KyQ_)gh-AgG2Dn-$8dr(7Xl;0jkFidX+sf${R*t|a=Z&yl=8(To6$x87` zmw$S1nm(v%m^G+M%?YJJY3*P0i<0xGCT;#kUoW?v*88ZXp8tEMjbc;$+?J8)2``(vM#Z#eH5jYVM2>sJTIEU)U1*6I_iXU48PW` z)oH*Z0YTmX&U@jr{302%i2~L@mMs$w1%LOw{!JeoYIvnrmRbxs0*o__M(kGvq!X&j zJK|hXet$@Oy$A9Pl2$!*9RVePHe%vX3YrK&1lZhd5!gO$HSr)DzQJ)Icd)$S0+0th zV4It-0H%Np3|-0FexfD% zg#dh5gsN=A5Ad8JJ+5dqyAOH+7+b{OT#I;B<+70{gE*n%0Zh8v?fr)Kx+)R1p*X!X z{||x7KQFU}z#lw|WIuoF>%B$;2y}zNjHBxWH);fEm);cD7VTS+KL-Acezt9Iq~PIf zeqfn+!n1@JqFVVjv@F?@57g)^vgYNxcB)}@O~~I;0Eh(;w$RUW0?0m=oi z%8f+mtS-w?;pwMFBCHo{eUi^lhTcEQz_w^~>{r+#Yng8o6Z*p6RP7W2S}e`C>q z5Te2XlaByntHCOPMg@9m2iBW*YcZxCvOjAnL_mgoSH&*wANMjVl?T>p34_(5l{1Tf z{9o8@@^(TDbh7iH;3il~z6UdBo9wV9MukWL%?BJjU9~A_Nd{**)@-z| zEPE}G)A+E>&Y^HH)s;OndDxg=@H!3!`m1dW0ET+BGB-S?TOhL;j(*zV7PKurs(~|; z%&$gXdkSj#cg`c!9O3T*LBGTY$p>#Fl|m|TFkj;BS5J+(uwovsD^0A=mb#&q|1%{A zx-i*W1TU~XdbOgEq6*FEt3GeB1E|e&a>uSLUe}3kZOUT+qZp0ja?wgGA6ZI*yoqA; zD_T-}Qvzf`-*fafVP4-807$G_2U~aYm3OS5*t6*l;@;}C_2{${hCEbkH!GsPqS1*@r<~^$+R5ZD@}JJtp4Gx!`INw(ytuRuIjX3|m;U}0p$c4ELFQ*LsKQfDq5lOuLP%Z! literal 0 HcmV?d00001 diff --git a/Assets/Art/Building/HeatExchanger-v1.png.meta b/Assets/Art/Building/HeatExchanger-v1.png.meta new file mode 100644 index 0000000..91549a7 --- /dev/null +++ b/Assets/Art/Building/HeatExchanger-v1.png.meta @@ -0,0 +1,477 @@ +fileFormatVersion: 2 +guid: e8fdd3c49e2adbf4986dcdf630e75bdd +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 13 + 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 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 0 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 0 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 2 + 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 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 4 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 0 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 4 + buildTarget: WebGL + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: + - serializedVersion: 2 + name: HeatExchanger-v1_0 + rect: + serializedVersion: 2 + x: 0 + y: 0 + width: 20 + height: 30 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: 7e167105b99864b459c5f5489a34c336 + internalID: -1276922600 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: HeatExchanger-v1_1 + rect: + serializedVersion: 2 + x: 20 + y: 0 + width: 20 + height: 30 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: 08967b37593cb45418cd048c335e2325 + internalID: -347313693 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: HeatExchanger-v1_2 + rect: + serializedVersion: 2 + x: 40 + y: 0 + width: 20 + height: 30 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: a94401e378c9399418ab9198ceb89303 + internalID: -584304388 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: HeatExchanger-v1_3 + rect: + serializedVersion: 2 + x: 60 + y: 0 + width: 20 + height: 30 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: 5500438750c1ca244992b74c6061825f + internalID: 1566822422 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: HeatExchanger-v1_4 + rect: + serializedVersion: 2 + x: 80 + y: 0 + width: 20 + height: 30 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: 06c5033716f53634ca8a5759508bffa6 + internalID: -1569199960 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: HeatExchanger-v1_5 + rect: + serializedVersion: 2 + x: 100 + y: 0 + width: 20 + height: 30 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: b9d152e59efd72744b018f1dc3c96e97 + internalID: -587898306 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: HeatExchanger-v1_6 + rect: + serializedVersion: 2 + x: 120 + y: 0 + width: 20 + height: 30 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: da850670df38a2a40bc954501520fa6a + internalID: 1859746261 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: HeatExchanger-v1_7 + rect: + serializedVersion: 2 + x: 140 + y: 0 + width: 20 + height: 30 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: 056bbd71023dc7c419e01765cc213651 + internalID: 59747105 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: HeatExchanger-v1_8 + rect: + serializedVersion: 2 + x: 160 + y: 0 + width: 20 + height: 30 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: 0e823400534c1dc479fd3b3bf62782b3 + internalID: 1513843681 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: HeatExchanger-v1_9 + rect: + serializedVersion: 2 + x: 180 + y: 0 + width: 20 + height: 30 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: da7bcfdde8258a74a9a3047c551fd942 + internalID: 912291288 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: HeatExchanger-v1_10 + rect: + serializedVersion: 2 + x: 200 + y: 0 + width: 20 + height: 30 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: b2fc58155dffe5d42bb9c224f1274771 + internalID: -202336097 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: HeatExchanger-v1_11 + rect: + serializedVersion: 2 + x: 220 + y: 0 + width: 20 + height: 30 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: 053576e0f0b8caa45bb977a9e4319fac + internalID: -863409376 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: HeatExchanger-v1_12 + rect: + serializedVersion: 2 + x: 240 + y: 0 + width: 20 + height: 30 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: 88fde5c5e6b008841adede987a8f3eb5 + internalID: 204778628 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: HeatExchanger-v1_13 + rect: + serializedVersion: 2 + x: 260 + y: 0 + width: 20 + height: 30 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: e8f384f5f8c4e554595179eadd2b7b2d + internalID: 130305901 + vertices: [] + indices: + edges: [] + weights: [] + - serializedVersion: 2 + name: HeatExchanger-v1_14 + rect: + serializedVersion: 2 + x: 280 + y: 0 + width: 20 + height: 30 + alignment: 0 + pivot: {x: 0.5, y: 0.5} + border: {x: 0, y: 0, z: 0, w: 0} + customData: + outline: [] + physicsShape: [] + tessellationDetail: 0 + bones: [] + spriteID: 9f35e1f0dd2e01142916640dc5b89fda + internalID: 1768685278 + vertices: [] + indices: + edges: [] + weights: [] + outline: [] + customData: + physicsShape: [] + bones: [] + spriteID: 2e997faae9e3e1c4491d3aa3344eeca5 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + spriteCustomMetadata: + entries: + - key: SpriteEditor.SliceSettings + value: '{"sliceOnImport":false,"gridCellCount":{"x":1.0,"y":1.0},"gridSpriteSize":{"x":20.0,"y":30.0},"gridSpriteOffset":{"x":0.0,"y":0.0},"gridSpritePadding":{"x":0.0,"y":0.0},"pivot":{"x":0.5,"y":0.5},"pivotPixels":{"x":0.0,"y":0.0},"autoSlicingMethod":0,"spriteAlignment":0,"pivotUnitMode":0,"slicingType":1,"keepEmptyRects":false,"isAlternate":false}' + nameFileIdTable: + HeatExchanger-v1_0: -1276922600 + HeatExchanger-v1_1: -347313693 + HeatExchanger-v1_10: -202336097 + HeatExchanger-v1_11: -863409376 + HeatExchanger-v1_12: 204778628 + HeatExchanger-v1_13: 130305901 + HeatExchanger-v1_14: 1768685278 + HeatExchanger-v1_2: -584304388 + HeatExchanger-v1_3: 1566822422 + HeatExchanger-v1_4: -1569199960 + HeatExchanger-v1_5: -587898306 + HeatExchanger-v1_6: 1859746261 + HeatExchanger-v1_7: 59747105 + HeatExchanger-v1_8: 1513843681 + HeatExchanger-v1_9: 912291288 + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Prefabs/Buildings/HeatExchanger.prefab b/Assets/Prefabs/Buildings/HeatExchanger.prefab new file mode 100644 index 0000000..7d1a511 --- /dev/null +++ b/Assets/Prefabs/Buildings/HeatExchanger.prefab @@ -0,0 +1,220 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &4891679070417735619 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3428747699785167502} + - component: {fileID: 502757703465590470} + - component: {fileID: 2536386129348906551} + - component: {fileID: 6387254042048878594} + - component: {fileID: 6639237667032454216} + - component: {fileID: 3830633494613608448} + - component: {fileID: 4064893987466290397} + m_Layer: 0 + m_Name: HeatExchanger + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &3428747699785167502 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4891679070417735619} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 80, y: 120} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &502757703465590470 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4891679070417735619} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2a40d30ecee1430c9a21ab42f4290132, type: 3} + m_Name: + m_EditorClassIdentifier: Fruitomation::Fruitomation.Game.HeatExchanger + BuildingSprite: {fileID: -1276922600, guid: e8fdd3c49e2adbf4986dcdf630e75bdd, type: 3} + k__BackingField: {x: 2, y: 3} + Animator: {fileID: 4064893987466290397} +--- !u!222 &2536386129348906551 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4891679070417735619} + m_CullTransparentMesh: 1 +--- !u!114 &6387254042048878594 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4891679070417735619} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.Image + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: -1276922600, guid: e8fdd3c49e2adbf4986dcdf630e75bdd, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &6639237667032454216 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4891679070417735619} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.Button + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 6387254042048878594} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 502757703465590470} + m_TargetAssemblyTypeName: Fruitomation.Game.HeatExchanger, Fruitomation + m_MethodName: OnBuildingClicked + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 +--- !u!61 &3830633494613608448 +BoxCollider2D: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4891679070417735619} + m_Enabled: 1 + serializedVersion: 3 + m_Density: 1 + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_ForceSendLayers: + serializedVersion: 2 + m_Bits: 4294967295 + m_ForceReceiveLayers: + serializedVersion: 2 + m_Bits: 4294967295 + m_ContactCaptureLayers: + serializedVersion: 2 + m_Bits: 4294967295 + m_CallbackLayers: + serializedVersion: 2 + m_Bits: 4294967295 + m_IsTrigger: 0 + m_UsedByEffector: 0 + m_CompositeOperation: 0 + m_CompositeOrder: 0 + m_Offset: {x: 0, y: 0} + m_SpriteTilingProperty: + border: {x: 0, y: 0, z: 0, w: 0} + pivot: {x: 0, y: 0} + oldSize: {x: 0, y: 0} + newSize: {x: 0, y: 0} + adaptiveTilingThreshold: 0 + drawMode: 0 + adaptiveTiling: 0 + m_AutoTiling: 0 + m_Size: {x: 80, y: 120} + m_EdgeRadius: 0 +--- !u!95 &4064893987466290397 +Animator: + serializedVersion: 7 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4891679070417735619} + m_Enabled: 1 + m_Avatar: {fileID: 0} + m_Controller: {fileID: 9100000, guid: c88e2f1fbd65e8348856c09127d2891f, type: 2} + m_CullingMode: 0 + m_UpdateMode: 0 + m_ApplyRootMotion: 0 + m_LinearVelocityBlending: 0 + m_StabilizeFeet: 0 + m_AnimatePhysics: 0 + m_WarningMessage: + m_HasTransformHierarchy: 1 + m_AllowConstantClipSamplingOptimization: 1 + m_KeepAnimatorStateOnDisable: 0 + m_WriteDefaultValuesOnDisable: 0 diff --git a/Assets/Prefabs/Buildings/HeatExchanger.prefab.meta b/Assets/Prefabs/Buildings/HeatExchanger.prefab.meta new file mode 100644 index 0000000..50bdfd0 --- /dev/null +++ b/Assets/Prefabs/Buildings/HeatExchanger.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: b1a7f1412640c364ea57dec3b12353df +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Prefabs/Buildings/Registry.asset b/Assets/Prefabs/Buildings/Registry.asset index c0c9c9f..5354b5e 100644 --- a/Assets/Prefabs/Buildings/Registry.asset +++ b/Assets/Prefabs/Buildings/Registry.asset @@ -37,3 +37,7 @@ MonoBehaviour: Requirement: 0 Prefab: {fileID: 4125748828694197055, guid: a4c4117a8b12b324186385e04c3ede89, type: 3} + - Name: Heat Exchanger + Requirement: 0 + Prefab: {fileID: 4891679070417735619, guid: b1a7f1412640c364ea57dec3b12353df, + type: 3} diff --git a/Assets/Scenes/GameScene.unity b/Assets/Scenes/GameScene.unity index e7ee851..ef5ec6d 100644 --- a/Assets/Scenes/GameScene.unity +++ b/Assets/Scenes/GameScene.unity @@ -368,6 +368,66 @@ MonoBehaviour: m_FillOrigin: 0 m_UseSpriteMesh: 0 m_PixelsPerUnitMultiplier: 1 +--- !u!1 &208685785 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 208685786} + - component: {fileID: 208685787} + m_Layer: 5 + m_Name: HeatGrid + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &208685786 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 208685785} + 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_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1165634414} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 100} + m_SizeDelta: {x: 3840, y: 1960} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &208685787 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 208685785} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8a8695521f0d02e499659fee002a26c2, type: 3} + m_Name: + m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.GridLayoutGroup + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 0 + m_StartCorner: 0 + m_StartAxis: 0 + m_CellSize: {x: 40, y: 40} + m_Spacing: {x: 0, y: 0} + m_Constraint: 0 + m_ConstraintCount: 2 --- !u!1 &224905609 GameObject: m_ObjectHideFlags: 0 @@ -1468,6 +1528,7 @@ RectTransform: - {fileID: 2112507919} - {fileID: 2026916298} - {fileID: 96288173} + - {fileID: 208685786} - {fileID: 2142689107} - {fileID: 1330313875} - {fileID: 1194686691} @@ -2034,6 +2095,85 @@ MonoBehaviour: m_Spacing: {x: 25, y: 25} m_Constraint: 0 m_ConstraintCount: 2 +--- !u!1 &1504934455 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1504934456} + - component: {fileID: 1504934458} + - component: {fileID: 1504934457} + m_Layer: 5 + m_Name: Text (Legacy) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1504934456 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1504934455} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.25, y: 0.25, z: 0.25} + m_ConstrainProportionsScale: 1 + m_Children: [] + m_Father: {fileID: 1754435485} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1504934457 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1504934455} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.Text + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 140 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 1 + m_MaxSize: 140 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 1 + m_VerticalOverflow: 1 + m_LineSpacing: 1 + m_Text: Heat Grid +--- !u!222 &1504934458 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1504934455} + m_CullTransparentMesh: 1 --- !u!1 &1511006084 GameObject: m_ObjectHideFlags: 0 @@ -2201,6 +2341,139 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: Fruitomation::Fruitomation.Game.Items.ItemInfoRegistry SerializedRegistry: {fileID: 11400000, guid: b518751a8b5ee0942af68ec87eeba0c5, type: 2} +--- !u!1 &1754435484 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1754435485} + - component: {fileID: 1754435488} + - component: {fileID: 1754435487} + - component: {fileID: 1754435486} + m_Layer: 5 + m_Name: Button (Legacy) + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1754435485 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1754435484} + 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_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 1504934456} + m_Father: {fileID: 2112507919} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 175, y: 125} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1754435486 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1754435484} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.Button + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Selected + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 1754435487} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 2005593405} + m_TargetAssemblyTypeName: Fruitomation.Game.BuildingManager, Fruitomation + m_MethodName: ToggleGrid + m_Mode: 1 + m_Arguments: + m_ObjectArgument: {fileID: 0} + m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine + m_IntArgument: 0 + m_FloatArgument: 0 + m_StringArgument: + m_BoolArgument: 0 + m_CallState: 2 +--- !u!114 &1754435487 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1754435484} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: UnityEngine.UI::UnityEngine.UI.Image + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, 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 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1754435488 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1754435484} + m_CullTransparentMesh: 1 --- !u!1 &1935863237 GameObject: m_ObjectHideFlags: 0 @@ -2474,6 +2747,12 @@ MonoBehaviour: m_Name: m_EditorClassIdentifier: Registry: {fileID: 11400000, guid: e6ae3d283005f994da00a3d8835a3cb5, type: 2} + HeatGrid: {fileID: 208685785} + FreezingColor: {r: 0, g: 0.19607843, b: 1, a: 0.5882353} + ColdColor: {r: 0, g: 0.78431374, b: 1, a: 0.5882353} + RoomColor: {r: 1, g: 1, b: 1, a: 0.5882353} + WarmColor: {r: 1, g: 0.5882353, b: 0, a: 0.5882353} + BoilingColor: {r: 1, g: 0.19607843, b: 0, a: 0.5882353} --- !u!1 &2026916297 GameObject: m_ObjectHideFlags: 0 @@ -2708,6 +2987,7 @@ RectTransform: - {fileID: 1347333877} - {fileID: 873667506} - {fileID: 1511006085} + - {fileID: 1754435485} - {fileID: 2048015618} m_Father: {fileID: 1165634414} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} diff --git a/Assets/Scripts/Game/Buildings/BuildingManager.cs b/Assets/Scripts/Game/Buildings/BuildingManager.cs index fe22980..b86ff08 100644 --- a/Assets/Scripts/Game/Buildings/BuildingManager.cs +++ b/Assets/Scripts/Game/Buildings/BuildingManager.cs @@ -5,17 +5,37 @@ using UnityEngine; using System.Linq; using System.IO; using System; +using Random = UnityEngine.Random; #if UNITY_EDITOR using UnityEditor; +using UnityEngine.UI; #endif // UNITY_EDITOR namespace Fruitomation.Game { public class BuildingManager : MonoBehaviour { + [Header("References")] [SerializeField] private BuildingRegistry Registry; - + [SerializeField] private GameObject HeatGrid; + + [Header("Colors")] + [SerializeField] private Color FreezingColor; + [SerializeField] private Color ColdColor; + [SerializeField] private Color RoomColor; + [SerializeField] private Color WarmColor; + [SerializeField] private Color BoilingColor; + + private enum HeatingLevel + { + Freezing, + Cold, + Room, + Warm, + Boiling + } + private class BuildingInfo { public BuildingInfo(Building b, RectTransform rt) @@ -55,13 +75,55 @@ namespace Fruitomation.Game private static string Filepath => Path.Combine(Application.persistentDataPath, "buildings.json"); + private (HeatingLevel, Image)[,] HeatingLevels { get; } = new (HeatingLevel, Image)[96, 49]; private bool[,] InhabitedCells { get; } = new bool[96, 49]; + private List Buildings { get; } = new(); #if UNITY_EDITOR private static BuildingManager Instance; - private void Awake() => Instance = this; + + public void ToggleGrid() => HeatGrid.SetActive(!HeatGrid.activeSelf); + + private Color LevelToColor(HeatingLevel level) + { + return level switch + { + HeatingLevel.Room => RoomColor, + HeatingLevel.Boiling => BoilingColor, + HeatingLevel.Cold => ColdColor, + HeatingLevel.Freezing => FreezingColor, + HeatingLevel.Warm => WarmColor, + var _ => new Color() + }; + } + + private void Awake() + { + HeatGrid.SetActive(false); + Instance = this; + + for (int x = 0; x < HeatingLevels.GetLength(0); x++) + { + for (int y = 0; y < HeatingLevels.GetLength(1); y++) + { + GameObject go = new($"Grid_{x}_{y}"); + go.transform.SetParent(HeatGrid.transform); + + RectTransform rt = go.AddComponent(); + Image img = go.AddComponent(); + + HeatingLevels[x, y].Item1 = (HeatingLevel)Random.Range(0, 5); + HeatingLevels[x, y].Item2 = img; + + img.color = LevelToColor(HeatingLevels[x, y].Item1); + + rt.localScale = Vector3.one; + img.raycastTarget = false; + } + } + } [MenuItem("Fruitomation/Clear Buildings")] public static void ClearBuildings() diff --git a/Assets/Scripts/Game/Buildings/HeatExchanger.cs b/Assets/Scripts/Game/Buildings/HeatExchanger.cs new file mode 100644 index 0000000..6fa7ca9 --- /dev/null +++ b/Assets/Scripts/Game/Buildings/HeatExchanger.cs @@ -0,0 +1,32 @@ +using Fruitomation.Global; +using UnityEngine; + +namespace Fruitomation.Game +{ + public class HeatExchanger : Building + { + [Header("Heat Exchanger Specific Items")] + [SerializeField] private Animator Animator; + + private void Update() + { + if (GameStateController.Is(GameState.Simulation)) + { + if (Animator.speed == 0) + { + Animator.Play(0, 0, 0f); // Play from beginning + Animator.speed = 0.2f; // Playing + } + } + + else + { + if (Animator.speed != 0) + { + Animator.Play(0, 0, 0f); // Jump back to default frame + Animator.speed = 0; // Paused + } + } + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/Game/Buildings/HeatExchanger.cs.meta b/Assets/Scripts/Game/Buildings/HeatExchanger.cs.meta new file mode 100644 index 0000000..c6b2927 --- /dev/null +++ b/Assets/Scripts/Game/Buildings/HeatExchanger.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 2a40d30ecee1430c9a21ab42f4290132 +timeCreated: 1776951500 \ No newline at end of file