using Godot; using System; using System.Collections.Generic; public partial class Cube : Node2D { private static readonly Rect2I tableRect = new(0, 0, 3, 2); private static readonly Rect2I table2Rect = new(0, -1, 3, 1); private static readonly Rect2I chairRect = new(1, 1, 1, 2); private static readonly Rect2I chair2Rect = new(1, -2, 1, 2); private static readonly Rect2I equipRect = new(0, 0, 3, 2); private static readonly Rect2I equip2Rect = new(0, -1, 3, 1); private static readonly TileMapping[] tableThemes = { new(new Vector2I(1, 30), tableRect), new(new Vector2I(4, 30), tableRect), new(new Vector2I(7, 30), tableRect), new(new Vector2I(7, 28), tableRect), new(new Vector2I(10, 28), tableRect), }; private static readonly TileMapping[] table2Themes = { new(new Vector2I(1, 31), table2Rect), new(new Vector2I(4, 31), table2Rect), new(new Vector2I(7, 31), table2Rect), new(new Vector2I(7, 29), table2Rect), new(new Vector2I(10, 29), table2Rect), }; private static readonly TileMapping[] chairThemes = { new(new Vector2I(-1, 7), chairRect), new(new Vector2I(0, 7), chairRect), new(new Vector2I(-1, 9), chairRect), new(new Vector2I(0, 9), chairRect), }; private static readonly TileMapping[] chair2Themes = { new(new Vector2I(-1, 10), chair2Rect), new(new Vector2I(0, 10), chair2Rect), new(new Vector2I(-1, 12), chair2Rect), new(new Vector2I(0, 12), chair2Rect), }; private static readonly TileMapping[] equipThemes = { // one laptop new(new Vector2I(13, 26), equipRect), // one laptop with one monitor new(new Vector2I(7, 26), equipRect), // one desktop PC new(new Dictionary() { [new Vector2I(0, 0)] = new Vector2I(11, 17), [new Vector2I(1, 0)] = new Vector2I(8, 32), [new Vector2I(2, 0)] = new Vector2I(9, 32), [new Vector2I(0, 1)] = new Vector2I(11, 18), [new Vector2I(1, 1)] = new Vector2I(8, 33), [new Vector2I(2, 1)] = new Vector2I(9, 33), }), // one desktop PC with one monitors new(new Vector2I(7, 32), equipRect), }; private static readonly TileMapping[] equip2Themes = { // one laptop new(new Vector2I(13, 31), equip2Rect), // one laptop with one monitor new(new Dictionary() { [new Vector2I(0, -1)] = new Vector2I(13, 32), [new Vector2I(1, -1)] = new Vector2I(10, 7), [new Vector2I(2, -1)] = new Vector2I(15, 32), }), // one desktop PC new(new Dictionary() { [new Vector2I(0, -1)] = new Vector2I(13, 32), [new Vector2I(1, -1)] = new Vector2I(14, 32), [new Vector2I(2, -1)] = new Vector2I(15, 30), }), // one desktop PC with one monitors new(new Vector2I(13, 33), equip2Rect), }; // Called when the node enters the scene tree for the first time. public override void _Ready() { RandomChangeTheme(); } // Called every frame. 'delta' is the elapsed time since the previous frame. public override void _Process(double delta) { } public void RandomChangeTheme() { tableThemes[GD.RandRange(0, tableThemes.Length-1)].Apply(GetNode("Desk")); table2Themes[GD.RandRange(0, table2Themes.Length-1)].Apply(GetNode("Desk2")); chairThemes[GD.RandRange(0, chairThemes.Length-1)].Apply(GetNode("Chair")); chair2Themes[GD.RandRange(0, chair2Themes.Length-1)].Apply(GetNode("Chair2")); equipThemes[GD.RandRange(0, equipThemes.Length-1)].Apply(GetNode("Equip")); var x =GD.RandRange(0, equip2Themes.Length-1); GD.Print(GD.RandRange(0, equip2Themes.Length-1)); equip2Themes[x].Apply(GetNode("Equip2")); } }