Added basic heat grid

This commit is contained in:
2026-04-23 14:31:11 +01:00
parent 84d0e1d115
commit 44de4a8a8c
2 changed files with 344 additions and 2 deletions

View File

@@ -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}

View File

@@ -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<Building> 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<RectTransform>();
Image img = go.AddComponent<Image>();
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()