1+ using System ;
2+ using LevelImposter . Core ;
3+ using LevelImposter . Lobby ;
4+ using UnityEngine ;
5+ using UnityEngine . Events ;
6+
7+ namespace LevelImposter . Builders . Lobby ;
8+
9+ public class LobbyMapConsoleBuilder : IElemBuilder
10+ {
11+ private static Sprite ? _defaultConsoleSprite ;
12+
13+ public void OnBuild ( LIElement elem , GameObject gameObject )
14+ {
15+ if ( elem . type != "util-lobbymaps" )
16+ return ;
17+
18+ Build ( gameObject ) ;
19+ }
20+
21+ /// <summary>
22+ /// Builds a Lobby Map Console at the specified GameObject or creates a new one if null
23+ /// </summary>
24+ /// <param name="gameObject">The GameObject to build the console on, or null to create a new one</param>
25+ public static void Build ( GameObject ? gameObject = null )
26+ {
27+ if ( gameObject == null )
28+ {
29+ gameObject = new GameObject ( "panel_LevelImposter" ) ;
30+ gameObject . transform . parent = LILobbyBehaviour . GetInstance ( ) . transform ;
31+ gameObject . transform . localPosition = new Vector3 ( - 1.41f , 1.84f , - 9.998f ) ; // <-- Default Position
32+ }
33+
34+ // Load Prefab
35+ var panelPrefab = LobbyDropshipPrefab . GetObjectFromPrefab ( "panel_Wardrobe" ) ;
36+ var prefabSpriteRenderer = panelPrefab . GetComponent < SpriteRenderer > ( ) ;
37+
38+ // SpriteRenderer
39+ var spriteRenderer = gameObject . GetOrAddComponent < SpriteRenderer > ( ) ;
40+ spriteRenderer . material = prefabSpriteRenderer . material ;
41+ if ( spriteRenderer . sprite == null )
42+ spriteRenderer . sprite = GetDefaultSprite ( ) ;
43+
44+ // Console
45+ var console = gameObject . AddComponent < LobbyMapConsole > ( ) ;
46+
47+ // Button
48+ var button = gameObject . AddComponent < ButtonBehavior > ( ) ;
49+ button . OnMouseOver = new UnityEvent ( ) ;
50+ button . OnMouseOut = new UnityEvent ( ) ;
51+ button . OnClick . AddListener ( ( Action ) console . Use ) ;
52+
53+ // Colliders
54+ MapUtils . CreateDefaultColliders ( gameObject , panelPrefab ) ;
55+
56+ // Layer
57+ gameObject . layer = ( int ) Layer . ShortObjects ;
58+ }
59+
60+ /// <summary>
61+ /// Gets the default console sprite from assembly resources
62+ /// </summary>
63+ /// <returns>The default console sprite</returns>
64+ /// <exception cref="Exception">Thrown if the resource could not be found</exception>
65+ private static Sprite GetDefaultSprite ( )
66+ {
67+ if ( _defaultConsoleSprite == null )
68+ _defaultConsoleSprite = MapUtils . LoadSpriteResource ( "LobbyConsole.png" ) ;
69+ if ( _defaultConsoleSprite == null )
70+ throw new Exception ( "The \" LobbyConsole.png\" resource was not found in assembly" ) ;
71+ return _defaultConsoleSprite ;
72+ }
73+ }
0 commit comments