Example #1
0
        public SingleMaskHandler(Texture2D spriteTexture, Texture2D maskTexture)
        {
            this.spriteTexture = spriteTexture;
            this.maskTexture   = maskTexture;

            int frameWidth  = maskTexture.Width;
            int frameHeight = maskTexture.Height;

            maskFrame = SpriteUtilities.distributeFrames(1, 1, frameWidth, frameHeight)[0];

            // FOR LINK SPECIFICALLY TODO: MAKE THIS FOR ANY SPRITE
            frameWidth    = spriteTexture.Width / LinkConstants.LinkTextureRows;
            frameHeight   = spriteTexture.Height / LinkConstants.LinkTextureCols;
            originalFrame = SpriteUtilities.distributeFrames(LinkConstants.LinkTextureRows, LinkConstants.LinkTextureCols, frameWidth, frameHeight)[6];

            originalData = new Color[spriteTexture.Width * spriteTexture.Height];
            spriteTexture.GetData(originalData);

            allMaskColors        = new List <Color[]>();
            textureColorSequence = new List <Color[]>();
            textureColorSequence.Add(originalData);
            AddAllColorMasks();

            GenerateTextureMasks();
            Reset();
        }
Example #2
0
        private void LoadSprites()
        {
            if (SpriteUtilities.GetAtlas(m_atlasName) != null)
            {
                return;
            }

            m_atlasLoaded = SpriteUtilities.InitialiseAtlas(Path.Combine(NetPickerMod.AsmPath, "SpriteAtlas.png"), m_atlasName);
            if (m_atlasLoaded)
            {
                var spriteSuccess = true;
                spriteSuccess = SpriteUtilities.AddSpriteToAtlas(new Rect(new Vector2(0, 0), new Vector2(128, 128)), "Elektrix", m_atlasName) &&
                                SpriteUtilities.AddSpriteToAtlas(new Rect(new Vector2(128, 0), new Vector2(128, 128)), "NetTool", m_atlasName) &&
                                SpriteUtilities.AddSpriteToAtlas(new Rect(new Vector2(0, 0), new Vector2(20, 20)), "Blank", m_atlasName) &&
                                spriteSuccess;
                if (!spriteSuccess)
                {
                    NetPickerTool.instance.ThrowError("Some sprites haven't been loaded. This is abnormal; you should probably report this to the mod creator.");
                }
            }
            else
            {
                NetPickerTool.instance.ThrowError("The texture atlas (provides custom icons) has not loaded. All icons have reverted to text prompts.");
            }
        }
Example #3
0
        public override void Start()
        {
            base.normalBgSprite   = "ToolbarIconGroup1Nomarl";
            base.hoveredBgSprite  = "ToolbarIconGroup1Hovered";
            base.focusedBgSprite  = "ToolbarIconGroup1Focused";
            base.pressedBgSprite  = "ToolbarIconGroup1Pressed";
            base.playAudioEvents  = true;
            base.name             = "PBButton";
            base.relativePosition = new Vector3(90f, 0f);
            UISprite internalSprite = base.AddUIComponent <UISprite>();

            internalSprite.atlas            = SpriteUtilities.GetAtlas(Loader.m_atlasName);
            internalSprite.spriteName       = "Pic";
            internalSprite.relativePosition = new Vector3(0, 0);
            internalSprite.width            = internalSprite.height = 40f;
            base.size = new Vector2(40f, 40f);
            //Setup UniqueFactoryUI
            var buildingWindowGameObject = new GameObject("buildingWindowObject");

            uniqueFactoryUI    = (UniqueFactoryUI)buildingWindowGameObject.AddComponent(typeof(UniqueFactoryUI));
            playerBuildingInfo = UIView.Find <UIPanel>("(Library) UniqueFactoryWorldInfoPanel");
            if (playerBuildingInfo == null)
            {
                DebugLog.LogToFileOnly("UIPanel not found (update broke the mod!): (Library) UniqueFactoryWorldInfoPanel\nAvailable panels are:\n");
            }
            uniqueFactoryUI.transform.parent   = playerBuildingInfo.transform;
            uniqueFactoryUI.baseBuildingWindow = playerBuildingInfo.gameObject.transform.GetComponentInChildren <UniqueFactoryWorldInfoPanel>();
            base.eventClick += delegate(UIComponent component, UIMouseEventParameter eventParam)
            {
                PlayerBuildingUIToggle();
            };
        }
Example #4
0
        private void RefreshDisplayData()
        {
            if (refreshOnce)
            {
                if (isVisible)
                {
                    m_fromLabel.text = Localization.Get("From");
                    m_toLabel.text   = Localization.Get("To");
                    //DebugLog.LogToFileOnly("fromSelected = " + fromSelected.ToString() + " toSelected = " + toSelected.ToString() + " symmetry = " + symmetry.ToString() + " uturnLane: " + uturnLane.ToString() + " hasSidewalk: " + hasSidewalk.ToString());

                    //DebugLog.LogToFileOnly(m_currentModule);
                    var m_prefab = Parser.NetInfoFromUI(fromSelected, toSelected, symmetry, hasSidewalk, hasBike);
                    m_prefab = UpdateRoadVariant(m_prefab);
                    if (m_prefab != null)
                    {
                        m_netTool = ToolsModifierControl.SetTool <NetTool>();
                        UIView.Find("RoadsPanel").Show();
                        m_netTool.m_prefab  = m_prefab;
                        m_result.atlas      = m_netTool.m_prefab.m_Atlas;
                        m_result.spriteName = m_netTool.m_prefab.m_Thumbnail;
                    }
                    else
                    {
                        //ToolsModifierControl.SetTool<DefaultTool>();
                        if (m_netTool != null)
                        {
                            m_netTool.m_prefab = null;
                        }
                        m_result.atlas      = SpriteUtilities.GetAtlas(Loader.m_atlasNameNoAsset);
                        m_result.spriteName = "NOASSET";
                    }
                    refreshOnce = false;
                }
            }
        }
Example #5
0
        private static void LoadSprites()
        {
            if (SpriteUtilities.GetAtlas(m_atlasName) != null)
            {
                return;
            }
            var modPath = PluginManager.instance.FindPluginInfo(Assembly.GetExecutingAssembly()).modPath;

            m_atlasLoaded = SpriteUtilities.InitialiseAtlas(Path.Combine(modPath, "Icon/RealCity.png"), m_atlasName);
            if (m_atlasLoaded)
            {
                var spriteSuccess = true;
                spriteSuccess = SpriteUtilities.AddSpriteToAtlas(new Rect(new Vector2(382, 0), new Vector2(191, 191)), "EcButton", m_atlasName) &&
                                SpriteUtilities.AddSpriteToAtlas(new Rect(new Vector2(0, 0), new Vector2(191, 191)), "Blank", m_atlasName) &&
                                SpriteUtilities.AddSpriteToAtlas(new Rect(new Vector2(191, 0), new Vector2(191, 191)), "BuildingButton", m_atlasName) &&
                                SpriteUtilities.AddSpriteToAtlas(new Rect(new Vector2(573, 0), new Vector2(191, 191)), "Politics", m_atlasName) &&
                                SpriteUtilities.AddSpriteToAtlas(new Rect(new Vector2(764, 0), new Vector2(191, 191)), "RcButton", m_atlasName) &&
                                spriteSuccess;
                if (!spriteSuccess)
                {
                    DebugLog.LogToFileOnly("Some sprites haven't been loaded. This is abnormal; you should probably report this to the mod creator.");
                }
            }
            else
            {
                DebugLog.LogToFileOnly("The texture atlas (provides custom icons) has not loaded. All icons have reverted to text prompts.");
            }
        }
Example #6
0
        /// <summary>
        /// Loads GUI sprites
        /// </summary>
        private void LoadSprites()
        {
            try
            {
                if (SpriteUtilities.GetAtlas(Atlas) != null)
                {
                    return;
                }

                var atlasSuccess = SpriteUtilities.InitialiseAtlas(Path.Combine(NetworkSkinsMod.AssemblyPath, "sprites.png"), Atlas);

                if (atlasSuccess)
                {
                    var spriteSuccess = true;

                    spriteSuccess = SpriteUtilities.AddSpriteToAtlas(new Rect(new Vector2(0, 0), new Vector2(24, 24)), "DragCursor", Atlas) && spriteSuccess;

                    // TODO add sprites for tunnel, ground, elevated, bridge?

                    if (!spriteSuccess)
                    {
                        Debug.LogError("Network Skins: Failed to load some sprites!");
                    }
                }
                else
                {
                    Debug.LogError("Network Skins: Failed to load the atlas!");
                }
            }
            catch (Exception e)
            {
                Debug.LogException(e);
            }
        }
Example #7
0
        private static void LoadSprites()
        {
            if (SpriteUtilities.GetAtlas(m_atlasName) != null)
            {
                return;
            }
            var modPath = PluginManager.instance.FindPluginInfo(Assembly.GetExecutingAssembly()).modPath;

            m_atlasLoaded = SpriteUtilities.InitialiseAtlas(Path.Combine(modPath, "Resources/Icon.png"), m_atlasName);
            if (m_atlasLoaded)
            {
                var spriteSuccess = true;
                spriteSuccess = SpriteUtilities.AddSpriteToAtlas(new Rect(new Vector2(2, 2), new Vector2(30, 30)), "3Round", m_atlasName) &&
                                SpriteUtilities.AddSpriteToAtlas(new Rect(new Vector2(34, 2), new Vector2(30, 30)), "3Round_S", m_atlasName) &&
                                SpriteUtilities.AddSpriteToAtlas(new Rect(new Vector2(66, 2), new Vector2(30, 30)), "1Round", m_atlasName) &&
                                SpriteUtilities.AddSpriteToAtlas(new Rect(new Vector2(98, 2), new Vector2(30, 30)), "1Round_S", m_atlasName) &&
                                SpriteUtilities.AddSpriteToAtlas(new Rect(new Vector2(130, 2), new Vector2(30, 30)), "Smooth", m_atlasName) &&
                                SpriteUtilities.AddSpriteToAtlas(new Rect(new Vector2(162, 2), new Vector2(30, 30)), "Smooth_S", m_atlasName) &&
                                SpriteUtilities.AddSpriteToAtlas(new Rect(new Vector2(194, 2), new Vector2(30, 30)), "Fix", m_atlasName) &&
                                SpriteUtilities.AddSpriteToAtlas(new Rect(new Vector2(226, 2), new Vector2(30, 30)), "Fix_S", m_atlasName) &&
                                SpriteUtilities.AddSpriteToAtlas(new Rect(new Vector2(258, 2), new Vector2(30, 30)), "YRoad", m_atlasName) &&
                                SpriteUtilities.AddSpriteToAtlas(new Rect(new Vector2(290, 2), new Vector2(30, 30)), "YRoad_S", m_atlasName);
                if (!spriteSuccess)
                {
                    DebugLog.LogToFileOnly("Error: Some sprites haven't been loaded. This is abnormal; you should probably report this to the mod creator.");
                }
            }
            else
            {
                DebugLog.LogToFileOnly("Error: The texture atlas (provides custom icons) has not loaded. All icons have reverted to text prompts.");
            }
        }
Example #8
0
 public override void Start()
 {
     base.Start();
     //init data
     fromSelected = 0;
     toSelected   = 0;
     symmetry     = 255;
     uturnLane    = false;
     hasSidewalk  = true;
     hasBike      = true;
     //UI
     size             = new Vector2(WIDTH, HEIGHT);
     backgroundSprite = "MenuPanel";
     canFocus         = true;
     isInteractive    = true;
     BringToFront();
     relativePosition = new Vector3((Loader.parentGuiView.fixedWidth / 2 + 20f), 170f);
     opacity          = 1f;
     cachedName       = cacheName;
     //UITOP
     m_DragHandler        = AddUIComponent <UIDragHandle>();
     m_DragHandler.target = this;
     m_DragHandler.zOrder = 11;
     m_UITOP                  = m_DragHandler.AddUIComponent <UISprite>();
     m_UITOP.atlas            = SpriteUtilities.GetAtlas(Loader.m_atlasNameHeader);
     m_UITOP.spriteName       = "UITOP";
     m_UITOP.relativePosition = new Vector3(0f, 0f);
     m_UITOP.width            = WIDTH;
     m_UITOP.height           = 35f;
     m_UITOP.zOrder           = 12;
     //UIBG
     m_UIBG                  = AddUIComponent <UISprite>();
     m_UIBG.atlas            = SpriteUtilities.GetAtlas(Loader.m_atlasNameBg);
     m_UIBG.spriteName       = "UIBG";
     m_UIBG.relativePosition = new Vector3(0f, 35f);
     m_UIBG.width            = WIDTH;
     m_UIBG.height           = HEIGHT - 30f;
     m_UIBG.zOrder           = 12;
     //result
     m_result                  = AddUIComponent <UISprite>();
     m_result.atlas            = SpriteUtilities.GetAtlas(Loader.m_atlasNameNoAsset);
     m_result.spriteName       = "NOASSET";
     m_result.relativePosition = new Vector3(20f, 45f);
     m_result.width            = 150f;
     m_result.height           = 150f;
     m_result.zOrder           = 11;
     //close
     m_closeButton = AddUIComponent <UIButton>();
     m_closeButton.normalBgSprite   = "buttonclose";
     m_closeButton.hoveredBgSprite  = "buttonclosehover";
     m_closeButton.pressedBgSprite  = "buttonclosepressed";
     m_closeButton.relativePosition = new Vector3(WIDTH - 35f, 0f, 10f);
     m_closeButton.eventClick      += delegate(UIComponent component, UIMouseEventParameter eventParam)
     {
         Hide();
     };
     Hide(); //dont show in the beginning
     DoOnStartup();
 }
        public override void Start()
        {
            name = "ThreeRoundButton";
            //text = "T";
            Vector2 resolution = UIView.GetAView().GetScreenResolution();
            var     pos        = new Vector2((145f), (resolution.y * 4f / 5f));
            Rect    rect       = new Rect(pos.x, pos.y, 30, 30);

            SpriteUtilities.ClampRectToScreen(ref rect, resolution);
            DebugLog.LogToFileOnly($"Setting ThreeRoundButton position to [{pos.x},{pos.y}]");
            absolutePosition = rect.position;
            Invalidate();
            //relativePosition = new Vector3((Loader.parentGuiView.fixedWidth / 2f - 450f), (Loader.parentGuiView.fixedHeight / 2f + 370f));
            //relativePosition = new Vector3((Loader.parentGuiView.fixedWidth - 70f), (Loader.parentGuiView.fixedHeight / 2 + 100f));
            atlas           = SpriteUtilities.GetAtlas(Loader.m_atlasName);
            normalBgSprite  = "3Round";
            hoveredBgSprite = "3Round_S";
            size            = new Vector2(30f, 30f);
            zOrder          = 11;
            eventClick     += delegate(UIComponent component, UIMouseEventParameter eventParam)
            {
                if (AdvancedTools.instance.enabled == false)
                {
                    //base.Hide();
                    ToolBase currentTool = ToolsModifierControl.GetCurrentTool <ToolBase>();
                    if (currentTool != null)
                    {
                        NetTool netTool = currentTool as NetTool;
                        if (netTool.m_prefab != null)
                        {
                            AdvancedTools.m_netInfo = netTool.m_prefab;
                        }
                    }
                    ToolsModifierControl.SetTool <DefaultTool>();
                    AdvancedTools.instance.enabled = true;
                    AdvancedTools.m_step           = 0;
                    AdvancedTools.rampMode         = 0;
                    AdvancedTools.height           = 0;
                }
                else
                {
                    ToolsModifierControl.SetTool <DefaultTool>();
                    AdvancedTools.instance.enabled = false;
                    AdvancedTools.m_step           = 0;
                    AdvancedTools.height           = 0;
                }
            };
        }
Example #10
0
    private IEnumerator DropBridge()
    {
        while (Mathf.Abs(createdBridge.transform.eulerAngles.z - 270) > 1)
        {
            createdBridge.transform.eulerAngles += new Vector3(0, 0, -ValueStepOfDroppingBridge);
            yield return(new WaitForEndOfFrame());
        }

        if (playerMovement.GetPlayerResult(transform.position + new Vector3(SpriteUtilities.GetSpriteHeight(createdBridge), 0, 0)) != 0)
        {
            AudioManager.instance.Play("BridgeFall1");
        }
        //Заставляем игрок идти на ту точку
        playerMovement.MovePlayerTo(transform.position + new Vector3(SpriteUtilities.GetSpriteHeight(createdBridge), 0, 0), this);
        yield return(null);
    }
Example #11
0
        public ZolSprite(SpriteBatch spriteBatch, Texture2D texture, int rows, int columns, Vector2 startingPosition)
        {
            this.spriteBatch = spriteBatch;
            spriteTexture    = texture;
            remainingDelay   = MovementConstants.ZolDelay;

            currentFrame = 0;

            startingFrameIndex = 0;
            endingFrameIndex   = 2;

            frameWidth  = spriteTexture.Width / columns;
            frameHeight = spriteTexture.Height / rows;
            frames      = SpriteUtilities.distributeFrames(columns, rows, frameWidth, frameHeight);

            center = startingPosition;
        }
Example #12
0
        /// <summary>
        /// Create a new CimToolBase with your mod settings. This will create
        /// instances of useful tools and you can access them from this class.
        /// </summary>
        /// <param name="modSettings">Your mod settings</param>
        public CimToolBase(CimToolSettings modSettings)
        {
            m_modSettings = modSettings;

            m_spriteUtilities = new SpriteUtilities();
            m_uiUtilities     = new UIUtilities();
            m_strings         = new Strings(this);
            m_path            = new Path(this);
            m_version         = new Version(this);
            m_detailedLogger  = new DetailedLogger(this);
            m_namedLogger     = new NamedLogger(this);
            m_translation     = new Translation(this);
            m_xmlOptions      = new XmlFileManager(this);
            m_saveFileOptions = new SaveFileManager(this);
            m_changelog       = new Changelog(this);
            m_modOptions      = new ModOptionPanelUtilities(this);
        }
Example #13
0
    private IEnumerator BridgeCreatingCorountine()
    {
        createdBridge = CreateBridge();

        //Пока создаём мост
        while (IsCreating)
        {
            createdBridge.transform.localScale += new Vector3(0, ValueStepOfCreating, 0);
            //Позиция верхушки моста
            Vector3 posTopOfBridge = transform.position + new Vector3(0, SpriteUtilities.GetSpriteHeight(createdBridge), 0);
            //Поворачиваем руку мага к мосту
            TurnHandToBridge(posTopOfBridge);

            yield return(null);
        }

        yield return(null);
    }
Example #14
0
        public KeeseSprite(SpriteBatch spriteBatch, Texture2D texture, int rows, int columns, Vector2 startingPosition)
        {
            this.spriteBatch = spriteBatch;
            spriteTexture    = texture;
            remainingDelay   = MovementConstants.KeeseDelay;

            totalFrames  = rows * columns;
            currentFrame = 0;

            startingFrameIndex = 0;
            endingFrameIndex   = 2;

            size.X = spriteTexture.Width / columns;
            size.Y = spriteTexture.Height / rows;
            frames = SpriteUtilities.distributeFrames(columns, rows, (int)size.X, (int)size.Y);


            center = startingPosition;
        }
Example #15
0
        public WallMasterSprite(SpriteBatch spriteBatch, Texture2D texture, int rows, int columns, Vector2 startingPosition)
        {
            this.spriteBatch = spriteBatch;
            spriteTexture    = texture;
            remainingDelay   = MovementConstants.WallMasterDelay;

            currentFrame = 0;

            startingFrameIndex = (int)FrameIndex.LeftUpFacing;
            endingFrameIndex   = startingFrameIndex + 2;

            frameWidth  = spriteTexture.Width / columns;
            frameHeight = spriteTexture.Height / rows;
            frames      = SpriteUtilities.distributeFrames(columns, rows, frameWidth, frameHeight);

            center = startingPosition;

            isAttacking = false;
        }
Example #16
0
        public TrapSprite(SpriteBatch spriteBatch, Texture2D texture, int rows, int columns, Vector2 startingPosition)
        {
            this.spriteBatch = spriteBatch;
            spriteTexture    = texture;
            remainingDelay   = MovementConstants.TrapDelay;

            currentFrame = 0;

            startingFrameIndex = 0;
            endingFrameIndex   = 1;

            size.X = spriteTexture.Width / columns;
            size.Y = spriteTexture.Height / rows;
            frames = SpriteUtilities.distributeFrames(columns, rows, (int)size.X, (int)size.Y);

            center = startingPosition;

            isAttacking = false;
        }
Example #17
0
        public override void Start()
        {
            name = "SmoothButton";
            //text = "O";
            Vector2 resolution = UIView.GetAView().GetScreenResolution();
            var     pos        = new Vector2((40f), (resolution.y * 4f / 5f));
            Rect    rect       = new Rect(pos.x, pos.y, 30, 30);

            SpriteUtilities.ClampRectToScreen(ref rect, resolution);
            DebugLog.LogToFileOnly($"Setting SmoothButton position to [{pos.x},{pos.y}]");
            absolutePosition = rect.position;
            Invalidate();
            //relativePosition = new Vector3((Loader.parentGuiView.fixedWidth / 2f - 570f), (Loader.parentGuiView.fixedHeight / 2f + 370f));
            atlas = SpriteUtilities.GetAtlas(Loader.m_atlasName);
            if (OptionUI.isSmoothMode)
            {
                normalBgSprite = "Smooth_S";
            }
            else
            {
                normalBgSprite = "Smooth";
            }
            size        = new Vector2(30f, 30f);
            zOrder      = 11;
            eventClick += delegate(UIComponent component, UIMouseEventParameter eventParam)
            {
                if (OptionUI.isSmoothMode)
                {
                    OptionUI.isSmoothMode = false;
                    normalBgSprite        = "Smooth";
                }
                else
                {
                    OptionUI.isSmoothMode = true;
                    normalBgSprite        = "Smooth_S";
                }
            };
        }
Example #18
0
        public SwordWeapon(SpriteBatch batch, Texture2D texture, Vector2 startingPos, Vector2 dir, int swordType)
        {
            spriteBatch   = batch;
            spriteTexture = texture;
            center        = startingPos;

            remainingDelay    = delaySequence[0];
            this.rows         = 4;
            this.columns      = 4;
            currentFrame      = swordType * rows;
            this.swordType    = swordType;
            frameWidth        = spriteTexture.Width / columns;
            frameHeight       = spriteTexture.Height / rows;
            frames            = SpriteUtilities.distributeFrames(columns, rows, frameWidth, frameHeight);
            animationComplete = false;

            this.direction = dir;

            if (dir.X > 0)
            {
                angle = (float)(Math.PI * 1.0 / 2.0);
            }
            else if (dir.X < 0)
            {
                angle = (float)(Math.PI * 3.0 / 2.0);
            }
            else if (dir.Y > 0)
            {
                angle = (float)Math.PI;
            }
            else
            {
                angle = 0;
            }

            collisionTexture = ProjectileHandler.Instance.CreateStarAnimTexture();
            this.collidable  = new SwordCollidable(this);
        }
Example #19
0
        public GenericTextureMask(Texture2D spriteTexture, Texture2D damageSequenceTexture, int sequenceRows, int sequenceColumns, int startingColorIndex)
        {
            this.spriteTexture         = spriteTexture;
            this.damageSequenceTexture = damageSequenceTexture;

            int frameWidth  = damageSequenceTexture.Width / sequenceColumns;
            int frameHeight = damageSequenceTexture.Height / sequenceRows;

            damageFrames = SpriteUtilities.distributeFrames(sequenceColumns, sequenceRows, frameWidth, frameHeight);

            originalData = new Color[spriteTexture.Width * spriteTexture.Height];
            spriteTexture.GetData(originalData);

            this.startingColorIndex = startingColorIndex;
            isDisabled = false;

            allMaskColors        = new List <Color[]>();
            textureColorSequence = new List <Color[]>();
            AddAllColorMasks();

            GenerateTextureMasks();
            Reset();
        }
Example #20
0
        public OrangeMapHUDItem(Game1 game, Texture2D map, Texture2D roomsTexture)
        {
            this.game = game;

            this.map          = map;
            this.roomsTexture = roomsTexture;

            this.offsetX = (int)(DimensionConstants.OriginalWindowWidth / OrangeMapConstants.XOffsetScalar);
            this.offsetY = (int)(DimensionConstants.OriginalWindowHeight / OrangeMapConstants.YOffsetScalar);

            this.scaledMapWidth  = (int)(map.Bounds.Width / OrangeMapConstants.MapScalar);
            this.scaledMapHeight = (int)(map.Bounds.Height / OrangeMapConstants.MapScalar);

            this.mapPos = new Rectangle(0, 0, scaledMapWidth, scaledMapHeight);

            this.roomFrames = SpriteUtilities.distributeFrames(OrangeMapConstants.Columns, OrangeMapConstants.Rows, OrangeMapConstants.FrameWidth, OrangeMapConstants.FrameHeight);

            this.rooms = new Dictionary <Vector3, int> [4];
            for (int i = 0; i < this.rooms.Length; i++)
            {
                this.rooms[i] = new Dictionary <Vector3, int>();
            }
        }
Example #21
0
        public override void Awake()
        {
            base.Awake();

            Debug.Log("Begin UINetworkSkinsPanel.Awake");

            LoadSprites();

            this.backgroundSprite = "MenuPanel2";
            this.width            = Width + 2 * Padding;
            //this.padding = new RectOffset(PADDING, 0, PADDING, 0);

            _titleBar                  = this.AddUIComponent <UIDragHandle>();
            _titleBar.name             = "TitlePanel";
            _titleBar.width            = this.width;
            _titleBar.height           = TabHeight + PaddingTop;
            _titleBar.target           = this;
            _titleBar.relativePosition = new Vector3(0, 0);

            // display a drag cursor sprite in the top right corner of the panel
            var dragSprite = _titleBar.AddUIComponent <UISprite>();

            dragSprite.atlas            = SpriteUtilities.GetAtlas(Atlas);
            dragSprite.spriteName       = "DragCursor";
            dragSprite.relativePosition = new Vector3(Width - 20, PaddingTop + 1);
            dragSprite.MakePixelPerfect();

            _tabstrip = _titleBar.AddUIComponent <UITabstrip>();
            _tabstrip.relativePosition          = new Vector3(Padding, PaddingTop, 0);
            _tabstrip.width                     = Width;
            _tabstrip.height                    = TabHeight;
            _tabstrip.tabPages                  = this.AddUIComponent <UITabContainer>();
            _tabstrip.tabPages.width            = this.width;
            _tabstrip.tabPages.height           = PageHeight;
            _tabstrip.tabPages.relativePosition = new Vector3(0, _titleBar.height);
            _tabstrip.tabPages.padding          = new RectOffset(PagesPadding, PagesPadding, PagesPadding, PagesPadding);
            _tabstrip.padding.right             = 0;

            // Add 4 tabs and 4 pages
            var keyMappingTabstrip = GameObject.Find("EconomyTabstrip").GetComponent <UITabstrip>();
            var buttonTemplate     = keyMappingTabstrip.GetComponentInChildren <UIButton>();

            _netTypePages = new UIPanel[NetUtil.NET_TYPE_NAMES.Length];

            for (var i = 0; i < NetUtil.NET_TYPE_NAMES.Length; i++)
            {
                var tab = _tabstrip.AddTab(NetUtil.NET_TYPE_NAMES[i], buttonTemplate, true);
                tab.textPadding.top    = 8;
                tab.textPadding.bottom = 8;
                tab.textPadding.left   = 10;
                tab.textPadding.right  = 10;
                tab.autoSize           = true;
                tab.textScale          = .9f;
                tab.playAudioEvents    = buttonTemplate.playAudioEvents;

                tab.pressedTextColor  = new Color32(255, 255, 255, 255);
                tab.focusedTextColor  = new Color32(255, 255, 255, 255);
                tab.focusedColor      = new Color32(205, 205, 205, 255);
                tab.disabledTextColor = buttonTemplate.disabledTextColor;

                var page = _tabstrip.tabPages.components.Last() as UIPanel;
                page.autoLayoutDirection = LayoutDirection.Vertical;
                page.autoLayoutPadding   = new RectOffset(0, 0, 0, Padding);
                page.autoLayout          = true;
                page.isVisible           = false;

                // TODO add scrolling + autofitting

                _netTypePages[i] = page;
            }

            this.FitChildren();

            _netToolWrapper = NetUtil.GenerateNetToolWrapper();
            if (_netToolWrapper == null)
            {
                throw new Exception("NetworkSkins Error: NetToolWrapper is null!");
            }

            // Add some example options
            GetPage(NetType.Ground).AddUIComponent <UILightOption>();
            //GetPage(NetType.Ground).AddUIComponent<UILightDistanceOption>();
            GetPage(NetType.Ground).AddUIComponent <UITreeOption>().LanePosition = LanePosition.Left;
            //GetPage(NetType.Ground).AddUIComponent<UITreeDistanceOption>().LanePosition = LanePosition.Left;
            GetPage(NetType.Ground).AddUIComponent <UITreeOption>().LanePosition = LanePosition.Middle;
            //GetPage(NetType.Ground).AddUIComponent<UITreeDistanceOption>().LanePosition = LanePosition.Middle;
            GetPage(NetType.Ground).AddUIComponent <UITreeOption>().LanePosition = LanePosition.Right;
            //GetPage(NetType.Ground).AddUIComponent<UITreeDistanceOption>().LanePosition = LanePosition.Right;

            GetPage(NetType.Elevated).AddUIComponent <UILightOption>();
            //GetPage(NetType.Elevated).AddUIComponent<UILightDistanceOption>();
            GetPage(NetType.Elevated).AddUIComponent <UIPillarOption>().PillarType = PillarType.BridgePillar;
            //GetPage(NetType.ELEVATED).AddUIComponent<UIPillarOption>().PillarType = PillarType.MIDDLE_PILLAR;

            GetPage(NetType.Bridge).AddUIComponent <UILightOption>();
            //GetPage(NetType.Bridge).AddUIComponent<UILightDistanceOption>();
            GetPage(NetType.Bridge).AddUIComponent <UIPillarOption>().PillarType = PillarType.BridgePillar;
            //GetPage(NetType.BRIDGE).AddUIComponent<UIPillarOption>().PillarType = PillarType.MIDDLE_PILLAR;
            //GetPage(NetType.BRIDGE).AddUIComponent<UIBridgeTypeOption>();

            _tabstrip.startSelectedIndex = (int)NetType.Ground;

            Debug.Log("End UINetworkSkinsPanel.Awake");
        }
Example #22
0
    private void SetBridgeOnEdge()
    {
        float newX = levelCreator.GetPrevColumn().transform.position.x + levelCreator.GetPrevColumnWidth() / 2f - SpriteUtilities.GetSpriteWidth(BridgePrefab) / 2f - BridgeSpawnOffsetX;

        transform.position = new Vector3(newX, transform.position.y, transform.position.z);
    }
Example #23
0
        private void ShowOnGui()
        {
            float currentX = 195f, currentY = 45f;

            // Top (to) section, half positions
            for (int i = 0; i < N_POS_INT - 1; i++)
            {
                m_toHalfButtons[i] = AddUIComponent <UIButton>();
                m_toHalfButtons[i].playAudioEvents  = true;
                m_toHalfButtons[i].relativePosition = new Vector3(currentX + SPACING2, currentY);
                m_toHalfButtons[i].atlas            = SpriteUtilities.GetAtlas(Loader.m_atlasName);
                m_toHalfButtons[i].normalBgSprite   = labelsHalf[i] + ((i < CENTER) ? "_L" : "_R");
                m_toHalfButtons[i].size             = new Vector2(BTN_SIZE, BTN_SIZE);
                m_toHalfButtons[i].zOrder           = 11;
                m_toHalfButtons[i].stringUserData   = $"ToLanePos_{2 * i + 1}";
                m_toHalfButtons[i].eventClick      += delegate(UIComponent component, UIMouseEventParameter eventParam)
                {
                    ClickToLaneButton(System.Convert.ToByte(component.stringUserData.Substring(10)));
                };
                currentX = m_toHalfButtons[i].relativePosition.x;
            }

            //  Top (to) section, integer positions
            currentY = SPACING2 + m_toHalfButtons[0].relativePosition.y;
            currentX = 175f;
            for (int i = 0; i < N_POS_INT; i++)
            {
                m_toIntButtons[i] = AddUIComponent <UIButton>();
                m_toIntButtons[i].playAudioEvents  = true;
                m_toIntButtons[i].relativePosition = new Vector3(currentX + SPACING2, currentY);
                m_toIntButtons[i].atlas            = SpriteUtilities.GetAtlas(Loader.m_atlasName);
                m_toIntButtons[i].normalBgSprite   = labelsInt[i] + ((i < CENTER) ? "_L" : (i > CENTER) ? "_R" : "_C");
                m_toIntButtons[i].size             = new Vector2(BTN_SIZE, BTN_SIZE);
                m_toIntButtons[i].zOrder           = 11;
                m_toIntButtons[i].stringUserData   = $"ToLanePos_{2 * i}";
                m_toIntButtons[i].eventClick      += delegate(UIComponent component, UIMouseEventParameter eventParam)
                {
                    ClickToLaneButton(System.Convert.ToByte(component.stringUserData.Substring(10)));
                };
                currentX = m_toIntButtons[i].relativePosition.x;
            }

            // Bottom (from) section, integer positions
            currentX = m_toIntButtons[0].relativePosition.x - SPACING2;
            currentY = m_toIntButtons[0].relativePosition.y + 90f;
            for (int i = 0; i < N_POS_INT; i++)
            {
                m_fromIntButtons[i] = AddUIComponent <UIButton>();
                m_fromIntButtons[i].playAudioEvents  = true;
                m_fromIntButtons[i].relativePosition = new Vector3(currentX + SPACING2, currentY);
                m_fromIntButtons[i].atlas            = SpriteUtilities.GetAtlas(Loader.m_atlasName);
                m_fromIntButtons[i].normalBgSprite   = labelsInt[i] + ((i < CENTER) ? "_L" : (i > CENTER) ? "_R" : "_C");
                m_fromIntButtons[i].size             = new Vector2(BTN_SIZE, BTN_SIZE);
                m_fromIntButtons[i].zOrder           = 11;
                m_fromIntButtons[i].stringUserData   = $"FromLanePos_{2 * i}";
                m_fromIntButtons[i].eventClick      += delegate(UIComponent component, UIMouseEventParameter eventParam)
                {
                    ClickFromLaneButton(System.Convert.ToByte(component.stringUserData.Substring(12)));
                };
                currentX = m_fromIntButtons[i].relativePosition.x;
            }


            // Bottom (from) section, half positions
            currentX = m_toHalfButtons[0].relativePosition.x - SPACING2;
            currentY = m_toHalfButtons[0].relativePosition.y + 160f;
            for (int i = 0; i < N_POS_INT - 1; i++)
            {
                m_fromHalfButtons[i] = AddUIComponent <UIButton>();
                m_fromHalfButtons[i].playAudioEvents  = true;
                m_fromHalfButtons[i].relativePosition = new Vector3(currentX + SPACING2, currentY);
                m_fromHalfButtons[i].atlas            = SpriteUtilities.GetAtlas(Loader.m_atlasName);
                m_fromHalfButtons[i].normalBgSprite   = labelsHalf[i] + ((i < CENTER) ? "_L" : "_R");
                m_fromHalfButtons[i].size             = new Vector2(BTN_SIZE, BTN_SIZE);
                m_fromHalfButtons[i].zOrder           = 11;
                m_fromHalfButtons[i].stringUserData   = $"FromLanePos_{2 * i + 1}";
                m_fromHalfButtons[i].eventClick      += delegate(UIComponent component, UIMouseEventParameter eventParam)
                {
                    ClickFromLaneButton(System.Convert.ToByte(component.stringUserData.Substring(12)));
                };
                currentX = m_fromHalfButtons[i].relativePosition.x;
            }

            m_copyButton                  = AddUIComponent <UIButton>();
            m_copyButton.atlas            = SpriteUtilities.GetAtlas(Loader.m_atlasName1);
            m_copyButton.normalBgSprite   = "COPY";
            m_copyButton.hoveredBgSprite  = "COPY_S";
            m_copyButton.playAudioEvents  = true;
            m_copyButton.size             = new Vector2(BTN_SIZE, BTN_SIZE);
            m_copyButton.relativePosition = new Vector3(m_toIntButtons[3].relativePosition.x + 10f,
                                                        m_toIntButtons[3].relativePosition.y + 47f);
            m_copyButton.autoSize    = true;
            m_copyButton.eventClick += delegate(UIComponent component, UIMouseEventParameter eventParam)
            {
                copyButton_OnCheckChanged();
            };

            m_swapButton                  = AddUIComponent <UIButton>();
            m_swapButton.atlas            = SpriteUtilities.GetAtlas(Loader.m_atlasName1);
            m_swapButton.normalBgSprite   = "SWAP";
            m_swapButton.hoveredBgSprite  = "SWAP_S";
            m_swapButton.playAudioEvents  = true;
            m_swapButton.size             = new Vector2(BTN_SIZE, BTN_SIZE);
            m_swapButton.relativePosition = new Vector3(m_copyButton.relativePosition.x + 50f, m_copyButton.relativePosition.y);
            m_swapButton.eventClick      += delegate(UIComponent component, UIMouseEventParameter eventParam)
            {
                swapButton_OnCheckChanged();
            };

            m_symButton                  = AddUIComponent <UIButton>();
            m_symButton.atlas            = SpriteUtilities.GetAtlas(Loader.m_atlasName1);
            m_symButton.normalBgSprite   = "0_S";
            m_symButton.playAudioEvents  = true;
            m_symButton.size             = new Vector2(BTN_SIZE, BTN_SIZE);
            m_symButton.relativePosition = new Vector3(35f, m_fromHalfButtons[0].relativePosition.y);
            m_symButton.eventClick      += delegate(UIComponent component, UIMouseEventParameter eventParam)
            {
                symButton_OnCheckChanged();
                refreshOnce = true;
            };

            m_hasSideWalkButton                  = AddUIComponent <UIButton>();
            m_hasSideWalkButton.atlas            = SpriteUtilities.GetAtlas(Loader.m_atlasName1);
            m_hasSideWalkButton.normalBgSprite   = "BIKE";
            m_hasSideWalkButton.playAudioEvents  = true;
            m_hasSideWalkButton.size             = new Vector2(BTN_SIZE, BTN_SIZE);
            m_hasSideWalkButton.relativePosition = new Vector3(m_symButton.relativePosition.x + SPACING2 + 45f, m_fromHalfButtons[0].relativePosition.y);
            m_hasSideWalkButton.eventClick      += delegate(UIComponent component, UIMouseEventParameter eventParam)
            {
                hasSideWalkButton_OnCheckChanged();
                refreshOnce = true;
            };

            m_fromLabel                  = AddUIComponent <UILabel>();
            m_fromLabel.text             = Localization.Get("From");
            m_fromLabel.textScale        = 1f;
            m_fromLabel.textColor        = new Color32(54, 54, 54, 54);
            m_fromLabel.relativePosition = new Vector3(m_toIntButtons[0].relativePosition.x, m_toIntButtons[0].relativePosition.y + 60f);
            m_fromLabel.autoSize         = true;

            m_toLabel                  = AddUIComponent <UILabel>();
            m_toLabel.text             = Localization.Get("To");
            m_toLabel.textScale        = 1f;
            m_toLabel.textColor        = new Color32(54, 54, 54, 54);
            m_toLabel.relativePosition = new Vector3(m_toIntButtons[9].relativePosition.x, m_toIntButtons[9].relativePosition.y + 40f);

            m_clearButton                  = AddUIComponent <UIButton>();
            m_clearButton.atlas            = SpriteUtilities.GetAtlas(Loader.m_atlasName1);
            m_clearButton.normalBgSprite   = "CLEAR";
            m_clearButton.hoveredBgSprite  = "CLEAR_S";
            m_clearButton.playAudioEvents  = true;
            m_clearButton.size             = new Vector2(BTN_SIZE, BTN_SIZE);
            m_clearButton.relativePosition = new Vector3(m_swapButton.relativePosition.x + 45f, m_swapButton.relativePosition.y);
            m_clearButton.eventClick      += delegate(UIComponent component, UIMouseEventParameter eventParam)
            {
                clearButton_OnCheckChanged();
            };
        }
Example #24
0
        public override void Start()
        {
            name = "MainButton";
            Vector2 resolution = UIView.GetAView().GetScreenResolution();
            var     pos        = new Vector2((resolution.x - 70f), (resolution.y * 3f / 4f));
            Rect    rect       = new Rect(pos.x, pos.y, 60, 50);

            ClampRectToScreen(ref rect, resolution);
            DebugLog.LogToFileOnly($"Setting main menu button position to [{pos.x},{pos.y}]");
            absolutePosition = rect.position;
            Invalidate();
            //relativePosition = new Vector3((Loader.parentGuiView.fixedWidth - 70f), (Loader.parentGuiView.fixedHeight / 2 + 100f));
            playAudioEvents = true;
            tmpX            = base.relativePosition.x;
            tmpY            = base.relativePosition.y;
            atlas           = SpriteUtilities.GetAtlas(Loader.m_atlasName2);
            normalBgSprite  = "CSUR_BUTTON";
            hoveredBgSprite = "CSUR_BUTTON_S";
            focusedBgSprite = "CSUR_BUTTON_S";
            pressedBgSprite = "CSUR_BUTTON_S";
            //UISprite internalSprite = AddUIComponent<UISprite>();
            //internalSprite.atlas = SpriteUtilities.GetAtlas(Loader.m_atlasName);
            //internalSprite.spriteName = "RcButton";
            //internalSprite.relativePosition = new Vector3(0, 0);
            //internalSprite.width = 50f;
            //internalSprite.height = 50f;
            size                           = new Vector2(60f, 50f);
            zOrder                         = 11;
            m_DragHandler                  = AddUIComponent <UIDragHandle>();
            m_DragHandler.target           = this;
            m_DragHandler.relativePosition = Vector2.zero;
            m_DragHandler.width            = 60;
            m_DragHandler.height           = 50;
            m_DragHandler.zOrder           = 10;
            m_DragHandler.Start();
            m_DragHandler.enabled = true;
            eventClick           += delegate(UIComponent component, UIMouseEventParameter eventParam)
            {
                if (tmpX == base.relativePosition.x && tmpY == base.relativePosition.y)
                {
                    MainUIToggle();
                }
                tmpX = base.relativePosition.x;
                tmpY = base.relativePosition.y;
            };
            //MainUITrigger_chirper = UIView.Find<UIPanel>("ChirperPanel");
            MainUITrigger_esc = UIView.Find <UIButton>("Esc");
            //MainUITrigger_infopanel = UIView.Find<UIPanel>("InfoPanel");
            //MainUITrigger_bottombars = UIView.Find<UISlicedSprite>("TSBar");
            MainUITrigger_paneltime = UIView.Find <UIPanel>("PanelTime");

            /*if (MainUITrigger_chirper != null && MainUITrigger_paneltime != null)
             * {
             *  MainUITrigger_chirper.eventClick += delegate (UIComponent component, UIMouseEventParameter eventParam)
             *  {
             *      MainUIOff();
             *  };
             * }*/
            if (MainUITrigger_esc != null && MainUITrigger_paneltime != null)
            {
                MainUITrigger_esc.eventClick += delegate(UIComponent component, UIMouseEventParameter eventParam)
                {
                    MainUIOff();
                };
            }

            /*if (MainUITrigger_infopanel != null && MainUITrigger_paneltime != null)
             * {
             *  MainUITrigger_infopanel.eventClick += delegate (UIComponent component, UIMouseEventParameter eventParam)
             *  {
             *      MainUIOff();
             *  };
             * }
             * if (MainUITrigger_bottombars != null && MainUITrigger_paneltime != null)
             * {
             *  MainUITrigger_bottombars.eventClick += delegate (UIComponent component, UIMouseEventParameter eventParam)
             *  {
             *      MainUIOff();
             *  };
             * }*/
        }
Example #25
0
        public override void OnLevelLoaded(LoadMode mode)
        {
            if (NetPickerTool.instance == null)
            {
                ToolController toolController = GameObject.FindObjectOfType <ToolController>();
                NetPickerTool.instance         = toolController.gameObject.AddComponent <NetPickerTool>();
                NetPickerTool.instance.enabled = false;
            }

            if (!config.HasSeenHowToDragTheStupidIcon)
            {
                NetPickerTool.instance.ThrowError("Double-click the Elektrix's Mods icon to move it.");
                config.HasSeenHowToDragTheStupidIcon = true;
                Configuration <ElektrixModsConfiguration> .Save();
            }

            // Load Sprites
            LoadSprites();

            // Initiate UI
            // 1.1 - modular?
            UIPanel modsPanel = (UIPanel)UIView.Find("ElektrixModsPanel");

            if (modsPanel == null)
            {
                UIComponent TSBar = UIView.Find("TSBar");
                UIPanel     elektrixModsBackground = TSBar.AddUIComponent <UIPanel>();
                elektrixModsBackground.name             = "ElektrixMB";
                elektrixModsBackground.absolutePosition = new Vector2(config.PanelX, config.PanelY);
                elektrixModsBackground.width            = 60f;
                elektrixModsBackground.height           = 60f;
                elektrixModsBackground.zOrder           = 1;

                UIButton doneButton = elektrixModsBackground.AddUIComponent <UIButton>();
                doneButton.normalBgSprite   = "GenericPanel";
                doneButton.width            = 100f;
                doneButton.height           = 50f;
                doneButton.relativePosition = new Vector2(70f, 5f);
                doneButton.text             = "Done";
                doneButton.hoveredTextColor = new Color32(0, 255, 255, 1);
                doneButton.Hide();
                doneButton.zOrder = 99;

                UIDragHandle handle = elektrixModsBackground.AddUIComponent <UIDragHandle>();
                handle.name             = "ElektrixDragHandle";
                handle.relativePosition = Vector2.zero;
                handle.width            = elektrixModsBackground.width - 5;
                handle.height           = elektrixModsBackground.height - 5;
                handle.zOrder           = 0;
                handle.target           = elektrixModsBackground;
                handle.Start();
                handle.enabled = false;

                elektrixModsBackground.zOrder = 9;
                handle.zOrder = 10;

                elektrixModsBackground.eventDoubleClick += (component, ms) =>
                {
                    handle.zOrder = 13;
                    doneButton.Show();
                    handle.enabled = true;
                };

                /*
                 * elektrixModsBackground.eventMouseMove += (component, ms) =>
                 * {
                 *  if (ms.buttons.IsFlagSet(UIMouseButton.Right))
                 *  {
                 *      Vector3 mousePos = Input.mousePosition;
                 *      mousePos.y = UIView.GetAView().fixedHeight - mousePos.y;
                 *      elektrixModsBackground.absolutePosition = mousePos + m_deltaPos;
                 *
                 *      Debug.Log(mousePos + ", " + Input.mousePosition);
                 *      config.PanelX = (int)elektrixModsBackground.absolutePosition.x;
                 *      config.PanelY = (int)elektrixModsBackground.absolutePosition.y;
                 *      Configuration<ElektrixModsConfiguration>.Save();
                 *  }
                 * };*/
                /*
                 * elektrixModsBackground.eventMouseDown += (component, ms) =>
                 * {
                 *  if (ms.buttons.IsFlagSet(UIMouseButton.Right))
                 *  {
                 *      Vector3 mousePos = Input.mousePosition;
                 *      mousePos.y = UIView.GetAView().fixedHeight - mousePos.y;
                 *      m_deltaPos = elektrixModsBackground.absolutePosition - mousePos;
                 *      elektrixModsBackground.absolutePosition = mousePos + m_deltaPos;
                 *
                 *
                 *      config.PanelX = (int)elektrixModsBackground.absolutePosition.x;
                 *      config.PanelY = (int)elektrixModsBackground.absolutePosition.y;
                 *      Configuration<ElektrixModsConfiguration>.Save();
                 *  }
                 * };*/

                doneButton.eventClick += (component, ms) =>
                {
                    doneButton.Hide();
                    handle.zOrder  = 10;
                    handle.enabled = false;

                    config.PanelX = (int)elektrixModsBackground.absolutePosition.x;
                    config.PanelY = (int)elektrixModsBackground.absolutePosition.y;
                    Configuration <ElektrixModsConfiguration> .Save();
                };

                if (m_atlasLoaded)
                {
                    elektrixModsBackground.atlas            = SpriteUtilities.GetAtlas(m_atlasName);
                    elektrixModsBackground.backgroundSprite = "Blank";
                }
                else
                {
                    elektrixModsBackground.backgroundSprite = "GenericPanelLight";
                }


                elektrixModsBackground.color = new Color32(96, 96, 96, 255);

                UIButton elektrixModsToggle = elektrixModsBackground.AddUIComponent <UIButton>();
                elektrixModsToggle.disabledTextColor = new Color32(128, 128, 128, 255);
                ElektrixUI.SetupButtonStateSprites(ref elektrixModsToggle, "ToolbarIconGroup1");
                elektrixModsToggle.relativePosition = new Vector3(5f, 0f);
                elektrixModsToggle.size             = new Vector2(45f, 50f);
                elektrixModsToggle.name             = "ElektrixModsButton";
                elektrixModsToggle.zOrder           = 11;
                if (m_atlasLoaded)
                {
                    UISprite internalSprite = elektrixModsToggle.AddUIComponent <UISprite>();
                    internalSprite.atlas            = SpriteUtilities.GetAtlas(m_atlasName);
                    internalSprite.spriteName       = "Elektrix";
                    internalSprite.relativePosition = new Vector3(-3, 0);
                    internalSprite.width            = internalSprite.height = 50f;
                }
                else
                {
                    elektrixModsToggle.text = "E";
                }
                elektrixModsToggle.textScale               = 1.3f;
                elektrixModsToggle.textVerticalAlignment   = UIVerticalAlignment.Middle;
                elektrixModsToggle.textHorizontalAlignment = UIHorizontalAlignment.Center;

                modsPanel = elektrixModsBackground.AddUIComponent <UIPanel>();
                modsPanel.backgroundSprite = "MenuPanel2";
                modsPanel.name             = "ElektrixModsPanel";
                modsPanel.width            = 0;
                modsPanel.relativePosition = new Vector3(0, -modsPanel.height - 7);
                modsPanel.Hide();

                UILabel panelLabel = modsPanel.AddUIComponent <UILabel>();
                panelLabel.text             = "Elektrix's Mods";
                panelLabel.name             = "EL";
                panelLabel.relativePosition = new Vector3(12f, 15f);

                elektrixModsToggle.eventClicked += (component, click) =>
                {
                    if (!modsPanel.isVisible)
                    {
                        elektrixModsToggle.Focus();
                        modsPanel.Show();
                    }
                    else
                    {
                        elektrixModsToggle.Unfocus();
                        modsPanel.Hide();
                    }
                };
            }

            modsPanel = (UIPanel)UIView.Find("ElektrixModsPanel");

            UIPanel backgroundPanel = modsPanel.AddUIComponent <UIPanel>();

            backgroundPanel.backgroundSprite = "GenericPanelWhite";
            backgroundPanel.name             = "E2";
            backgroundPanel.height           = 70f;
            backgroundPanel.width            = 135f;
            backgroundPanel.relativePosition = new Vector3(10f, 0f);
            backgroundPanel.color            = new Color32(91, 97, 106, 255);

            UILabel title = backgroundPanel.AddUIComponent <UILabel>();

            title.text             = "Net Picker";
            title.name             = "E2L";
            title.textScale        = 0.9f;
            title.relativePosition = new Vector3(7f, 7f);

            UIButton netPickerTool = backgroundPanel.AddUIComponent <UIButton>();
            int      netClicks     = 0;

            ElektrixUI.SetupButtonStateSprites(ref netPickerTool, "OptionBase", true);
            netPickerTool.size             = new Vector2(45f, 45f);
            netPickerTool.relativePosition = new Vector3(5f, 22f);
            netPickerTool.name             = "E2A";
            netPickerTool.tooltip          = "Click a road to select it in the roads panel.";
            if (m_atlasLoaded)
            {
                UISprite internalSprite = netPickerTool.AddUIComponent <UISprite>();
                internalSprite.atlas            = SpriteUtilities.GetAtlas(m_atlasName);
                internalSprite.spriteName       = "NetTool";
                internalSprite.relativePosition = Vector3.zero;
                internalSprite.width            = internalSprite.height = 50f;
            }
            else
            {
                netPickerTool.text = "P";
            }
            netPickerTool.textScale = 1.3f;

            UIButton openDescription = backgroundPanel.AddUIComponent <UIButton>();

            openDescription.relativePosition = new Vector3(backgroundPanel.width - 20, 5);
            openDescription.size             = new Vector3(15, 15);
            openDescription.normalFgSprite   = "ToolbarIconHelp";
            openDescription.name             = "E2H";
            openDescription.tooltip          = "Open in Steam Workshop";
            ElektrixUI.SetupButtonStateSprites(ref openDescription, "OptionBase", true);
            if (!PlatformService.IsOverlayEnabled())
            {
                openDescription.isVisible = false;
                openDescription.isEnabled = false;
            }
            openDescription.eventClicked += (component, click) => {
                if (PlatformService.IsOverlayEnabled() && toolID != PublishedFileId.invalid)
                {
                    PlatformService.ActivateGameOverlayToWorkshopItem(toolID);
                }
                openDescription.Unfocus();
            };

            // Final overrides
            //UIPanel modsPanel = (UIPanel) UIView.Find("ElektrixModsPanel");
            IList <UIComponent> panels = modsPanel.components;
            float longestPanelWidth    = 0;

            for (int i = 0; i < panels.Count; i++)
            {
                if (!(panels[i] is UIPanel))
                {
                    continue;
                }
                panels[i].relativePosition = new Vector3(panels[i].relativePosition.x, 50 + (80 * (i - 1)));
                if (panels[i].width > longestPanelWidth)
                {
                    longestPanelWidth = panels[i].width;
                }
            }

            modsPanel.height           = 50f + (modsPanel.childCount - 1) * 80f;
            modsPanel.width            = 20f + longestPanelWidth;
            modsPanel.relativePosition = new Vector3(0, -modsPanel.height - 7);

            // Events
            netPickerTool.eventClicked += (component, click) =>
            {
                if (!NetPickerTool.instance.enabled)
                {
                    netClicks = 0;
                }

                netClicks++;
                if (netClicks == 1)
                {
                    netPickerTool.Focus();
                    NetPickerTool.instance.enabled = true;
                }
                else
                {
                    netPickerTool.Unfocus();
                    netClicks = 0;
                    NetPickerTool.instance.enabled = false;
                    ToolsModifierControl.SetTool <DefaultTool>();
                }
            };
        }
Example #26
0
        private static void LoadSprites()
        {
            if (SpriteUtilities.GetAtlas(m_atlasName) != null)
            {
                return;
            }
            var modPath = PluginManager.instance.FindPluginInfo(Assembly.GetExecutingAssembly()).modPath;

            m_atlasLoaded  = SpriteUtilities.InitialiseAtlas(Path.Combine(modPath, "Resources/CSUR.png"), m_atlasName);
            m_atlasLoaded &= SpriteUtilities.InitialiseAtlas(Path.Combine(modPath, "Resources/CSUR1.png"), m_atlasName1);
            m_atlasLoaded &= SpriteUtilities.InitialiseAtlas(Path.Combine(modPath, "Resources/CSUR2.png"), m_atlasName2);
            m_atlasLoaded &= SpriteUtilities.InitialiseAtlas(Path.Combine(modPath, "Resources/UIBG.png"), m_atlasNameBg);
            m_atlasLoaded &= SpriteUtilities.InitialiseAtlas(Path.Combine(modPath, "Resources/UITOP.png"), m_atlasNameHeader);
            m_atlasLoaded &= SpriteUtilities.InitialiseAtlas(Path.Combine(modPath, "Resources/Notfound.png"), m_atlasNameNoAsset);
            if (m_atlasLoaded)
            {
                var spriteSuccess = true;
                spriteSuccess = SpriteUtilities.AddSpriteToAtlas(new Rect(new Vector2(2, 2), new Vector2(30, 30)), "0P_R", m_atlasName) &&
                                SpriteUtilities.AddSpriteToAtlas(new Rect(new Vector2(34, 2), new Vector2(30, 30)), "0P_L", m_atlasName) &&
                                SpriteUtilities.AddSpriteToAtlas(new Rect(new Vector2(66, 2), new Vector2(30, 30)), "0P_S", m_atlasName) &&
                                SpriteUtilities.AddSpriteToAtlas(new Rect(new Vector2(98, 2), new Vector2(30, 30)), "1_R", m_atlasName) &&
                                SpriteUtilities.AddSpriteToAtlas(new Rect(new Vector2(130, 2), new Vector2(30, 30)), "1_L", m_atlasName) &&
                                SpriteUtilities.AddSpriteToAtlas(new Rect(new Vector2(162, 2), new Vector2(30, 30)), "1_S", m_atlasName) &&
                                SpriteUtilities.AddSpriteToAtlas(new Rect(new Vector2(194, 2), new Vector2(30, 30)), "1P_R", m_atlasName) &&
                                SpriteUtilities.AddSpriteToAtlas(new Rect(new Vector2(226, 2), new Vector2(30, 30)), "1P_L", m_atlasName) &&
                                SpriteUtilities.AddSpriteToAtlas(new Rect(new Vector2(258, 2), new Vector2(30, 30)), "1P_S", m_atlasName) &&
                                SpriteUtilities.AddSpriteToAtlas(new Rect(new Vector2(290, 2), new Vector2(30, 30)), "2_R", m_atlasName) &&
                                SpriteUtilities.AddSpriteToAtlas(new Rect(new Vector2(322, 2), new Vector2(30, 30)), "2_L", m_atlasName) &&
                                SpriteUtilities.AddSpriteToAtlas(new Rect(new Vector2(354, 2), new Vector2(30, 30)), "2_S", m_atlasName) &&
                                SpriteUtilities.AddSpriteToAtlas(new Rect(new Vector2(386, 2), new Vector2(30, 30)), "2P_R", m_atlasName) &&
                                SpriteUtilities.AddSpriteToAtlas(new Rect(new Vector2(418, 2), new Vector2(30, 30)), "2P_S", m_atlasName) &&
                                SpriteUtilities.AddSpriteToAtlas(new Rect(new Vector2(452, 2), new Vector2(30, 30)), "3_R", m_atlasName) &&
                                SpriteUtilities.AddSpriteToAtlas(new Rect(new Vector2(482, 2), new Vector2(30, 30)), "3_S", m_atlasName) &&
                                SpriteUtilities.AddSpriteToAtlas(new Rect(new Vector2(514, 2), new Vector2(30, 30)), "3P_R", m_atlasName) &&
                                SpriteUtilities.AddSpriteToAtlas(new Rect(new Vector2(546, 2), new Vector2(30, 30)), "3P_S", m_atlasName) &&
                                SpriteUtilities.AddSpriteToAtlas(new Rect(new Vector2(578, 2), new Vector2(30, 30)), "4_R", m_atlasName) &&
                                SpriteUtilities.AddSpriteToAtlas(new Rect(new Vector2(610, 2), new Vector2(30, 30)), "4_S", m_atlasName) &&
                                SpriteUtilities.AddSpriteToAtlas(new Rect(new Vector2(642, 2), new Vector2(30, 30)), "4P_R", m_atlasName) &&
                                SpriteUtilities.AddSpriteToAtlas(new Rect(new Vector2(674, 2), new Vector2(30, 30)), "4P_S", m_atlasName) &&
                                SpriteUtilities.AddSpriteToAtlas(new Rect(new Vector2(706, 2), new Vector2(30, 30)), "5_R", m_atlasName) &&
                                SpriteUtilities.AddSpriteToAtlas(new Rect(new Vector2(738, 2), new Vector2(30, 30)), "5_S", m_atlasName) &&
                                SpriteUtilities.AddSpriteToAtlas(new Rect(new Vector2(770, 2), new Vector2(30, 30)), "5P_R", m_atlasName) &&
                                SpriteUtilities.AddSpriteToAtlas(new Rect(new Vector2(802, 2), new Vector2(30, 30)), "5P_S", m_atlasName) &&
                                SpriteUtilities.AddSpriteToAtlas(new Rect(new Vector2(834, 2), new Vector2(30, 30)), "6_R", m_atlasName) &&
                                SpriteUtilities.AddSpriteToAtlas(new Rect(new Vector2(866, 2), new Vector2(30, 30)), "6_S", m_atlasName) &&
                                SpriteUtilities.AddSpriteToAtlas(new Rect(new Vector2(898, 2), new Vector2(30, 30)), "6P_R", m_atlasName) &&
                                SpriteUtilities.AddSpriteToAtlas(new Rect(new Vector2(930, 2), new Vector2(30, 30)), "6P_S", m_atlasName) &&
                                SpriteUtilities.AddSpriteToAtlas(new Rect(new Vector2(962, 2), new Vector2(30, 30)), "7_R", m_atlasName) &&
                                SpriteUtilities.AddSpriteToAtlas(new Rect(new Vector2(994, 2), new Vector2(30, 30)), "7_S", m_atlasName) &&
                                SpriteUtilities.AddSpriteToAtlas(new Rect(new Vector2(1026, 2), new Vector2(30, 30)), "C_C", m_atlasName) &&
                                SpriteUtilities.AddSpriteToAtlas(new Rect(new Vector2(1058, 2), new Vector2(30, 30)), "C_S", m_atlasName) &&
                                spriteSuccess;
                spriteSuccess = SpriteUtilities.AddSpriteToAtlas(new Rect(new Vector2(2, 2), new Vector2(30, 30)), "+0", m_atlasName1) &&
                                SpriteUtilities.AddSpriteToAtlas(new Rect(new Vector2(34, 2), new Vector2(30, 30)), "+1", m_atlasName1) &&
                                SpriteUtilities.AddSpriteToAtlas(new Rect(new Vector2(66, 2), new Vector2(30, 30)), "+2", m_atlasName1) &&
                                SpriteUtilities.AddSpriteToAtlas(new Rect(new Vector2(98, 2), new Vector2(30, 30)), "SWAP", m_atlasName1) &&
                                SpriteUtilities.AddSpriteToAtlas(new Rect(new Vector2(130, 2), new Vector2(30, 30)), "SWAP_S", m_atlasName1) &&
                                SpriteUtilities.AddSpriteToAtlas(new Rect(new Vector2(162, 2), new Vector2(30, 30)), "SIDEWALK", m_atlasName1) &&
                                SpriteUtilities.AddSpriteToAtlas(new Rect(new Vector2(194, 2), new Vector2(30, 30)), "0_S", m_atlasName1) &&
                                SpriteUtilities.AddSpriteToAtlas(new Rect(new Vector2(226, 2), new Vector2(30, 30)), "0", m_atlasName1) &&
                                SpriteUtilities.AddSpriteToAtlas(new Rect(new Vector2(258, 2), new Vector2(30, 30)), "COPY", m_atlasName1) &&
                                SpriteUtilities.AddSpriteToAtlas(new Rect(new Vector2(290, 2), new Vector2(30, 30)), "COPY_S", m_atlasName1) &&
                                SpriteUtilities.AddSpriteToAtlas(new Rect(new Vector2(322, 2), new Vector2(30, 30)), "UTURN", m_atlasName1) &&
                                SpriteUtilities.AddSpriteToAtlas(new Rect(new Vector2(354, 2), new Vector2(30, 30)), "UTURN_S", m_atlasName1) &&
                                SpriteUtilities.AddSpriteToAtlas(new Rect(new Vector2(386, 2), new Vector2(30, 30)), "NOSIDEWALK", m_atlasName1) &&
                                SpriteUtilities.AddSpriteToAtlas(new Rect(new Vector2(418, 2), new Vector2(30, 30)), "CLEAR", m_atlasName1) &&
                                SpriteUtilities.AddSpriteToAtlas(new Rect(new Vector2(450, 2), new Vector2(30, 30)), "CLEAR_S", m_atlasName1) &&
                                SpriteUtilities.AddSpriteToAtlas(new Rect(new Vector2(482, 2), new Vector2(30, 30)), "BIKE", m_atlasName1) &&
                                spriteSuccess;
                spriteSuccess = SpriteUtilities.AddSpriteToAtlas(new Rect(new Vector2(2, 2), new Vector2(60, 50)), "CSUR_BUTTON_S", m_atlasName2) &&
                                SpriteUtilities.AddSpriteToAtlas(new Rect(new Vector2(64, 2), new Vector2(60, 50)), "CSUR_BUTTON", m_atlasName2) &&
                                spriteSuccess;
                spriteSuccess &= SpriteUtilities.AddSpriteToAtlas(new Rect(new Vector2(0, 0), new Vector2(566, 210)), "UIBG", m_atlasNameBg);
                spriteSuccess &= SpriteUtilities.AddSpriteToAtlas(new Rect(new Vector2(0, 0), new Vector2(565, 35)), "UITOP", m_atlasNameHeader);
                spriteSuccess &= SpriteUtilities.AddSpriteToAtlas(new Rect(new Vector2(0, 0), new Vector2(150, 150)), "NOASSET", m_atlasNameNoAsset);
                if (!spriteSuccess)
                {
                    DebugLog.LogToFileOnly("Error: Some sprites haven't been loaded. This is abnormal; you should probably report this to the mod creator.");
                }
            }
            else
            {
                DebugLog.LogToFileOnly("Error: The texture atlas (provides custom icons) has not loaded. All icons have reverted to text prompts.");
            }
        }
Example #27
0
        public override void Start()
        {
            name             = "EcButton";
            relativePosition = new Vector3((Loader.parentGuiView.fixedWidth / 2 - 350f), 35f);
            normalBgSprite   = "ToolbarIconGroup1Nomarl";
            hoveredBgSprite  = "ToolbarIconGroup1Hovered";
            focusedBgSprite  = "ToolbarIconGroup1Focused";
            pressedBgSprite  = "ToolbarIconGroup1Pressed";
            playAudioEvents  = true;
            UISprite internalSprite = AddUIComponent <UISprite>();

            internalSprite.atlas            = SpriteUtilities.GetAtlas(Loader.m_atlasName);
            internalSprite.spriteName       = "EcButton";
            internalSprite.relativePosition = new Vector3(0, 0);
            internalSprite.width            = 50f;
            internalSprite.height           = 50f;
            size                           = new Vector2(50f, 50f);
            zOrder                         = 11;
            m_DragHandler                  = AddUIComponent <UIDragHandle>();
            m_DragHandler.target           = this;
            m_DragHandler.relativePosition = Vector2.zero;
            m_DragHandler.width            = 50;
            m_DragHandler.height           = 50;
            m_DragHandler.zOrder           = 10;
            m_DragHandler.Start();
            m_DragHandler.enabled = true;
            tmpX        = relativePosition.x;
            tmpY        = relativePosition.y;
            eventClick += delegate(UIComponent component, UIMouseEventParameter eventParam) {
                if (tmpX == relativePosition.x && tmpY == relativePosition.y)
                {
                    MoreeconomicUIToggle();
                }
                tmpX = relativePosition.x;
                tmpY = relativePosition.y;
            };
            MoreeconomicUITrigger_chirper    = UIView.Find <UIPanel>("ChirperPanel");
            MoreeconomicUITrigger_esc        = UIView.Find <UIButton>("Esc");
            MoreeconomicUITrigger_infopanel  = UIView.Find <UIPanel>("InfoPanel");
            MoreeconomicUITrigger_bottombars = UIView.Find <UISlicedSprite>("TSBar");
            MoreeconomicUITrigger_paneltime  = UIView.Find <UIPanel>("PanelTime");
            if (MoreeconomicUITrigger_chirper != null && MoreeconomicUITrigger_paneltime != null)
            {
                MoreeconomicUITrigger_chirper.eventClick += delegate(UIComponent component, UIMouseEventParameter eventParam) {
                    MoreeconomicUIOff();
                };
            }
            if (MoreeconomicUITrigger_esc != null && MoreeconomicUITrigger_paneltime != null)
            {
                MoreeconomicUITrigger_esc.eventClick += delegate(UIComponent component, UIMouseEventParameter eventParam) {
                    MoreeconomicUIOff();
                };
            }
            if (MoreeconomicUITrigger_infopanel != null && MoreeconomicUITrigger_paneltime != null)
            {
                MoreeconomicUITrigger_infopanel.eventClick += delegate(UIComponent component, UIMouseEventParameter eventParam) {
                    MoreeconomicUIOff();
                };
            }
            if (MoreeconomicUITrigger_bottombars != null && MoreeconomicUITrigger_paneltime != null)
            {
                MoreeconomicUITrigger_bottombars.eventClick += delegate(UIComponent component, UIMouseEventParameter eventParam) {
                    MoreeconomicUIOff();
                };
            }
        }
Example #28
0
        public override void OnLevelLoaded(LoadMode mode)
        {
            if (ResolveOverlapsTool.instance == null)
            {
                ToolController toolController = GameObject.FindObjectOfType <ToolController>();
                ResolveOverlapsTool.instance         = toolController.gameObject.AddComponent <ResolveOverlapsTool>();
                ResolveOverlapsTool.instance.enabled = false;
            }

            // Load Sprites
            LoadSprites();

            // Initiate UI
            // 1.1 - modular?
            UIPanel modsPanel    = (UIPanel)UIView.Find("ElektrixModsPanel");
            int     toggleClicks = 0;

            if (modsPanel == null)
            {
                UIComponent TSBar = UIView.Find("TSBar");
                UIPanel     elektrixModsBackground = TSBar.AddUIComponent <UIPanel>();
                elektrixModsBackground.name             = "ElektrixMB";
                elektrixModsBackground.absolutePosition = new Vector2(config.PanelX, config.PanelY);
                elektrixModsBackground.width            = 60f;
                elektrixModsBackground.height           = 60f;
                elektrixModsBackground.zOrder           = 1;

                UIButton doneButton = elektrixModsBackground.AddUIComponent <UIButton>();
                doneButton.normalBgSprite   = "GenericPanel";
                doneButton.width            = 100f;
                doneButton.height           = 50f;
                doneButton.relativePosition = new Vector2(70f, 5f);
                doneButton.text             = "Done";
                doneButton.hoveredTextColor = new Color32(0, 255, 255, 1);
                doneButton.Hide();
                doneButton.zOrder = 99;

                UIDragHandle handle = elektrixModsBackground.AddUIComponent <UIDragHandle>();
                handle.name             = "ElektrixDragHandle";
                handle.relativePosition = Vector2.zero;
                handle.width            = elektrixModsBackground.width - 5;
                handle.height           = elektrixModsBackground.height - 5;
                handle.zOrder           = 0;
                handle.target           = elektrixModsBackground;
                handle.Start();
                handle.enabled = false;

                elektrixModsBackground.zOrder = 9;
                handle.zOrder = 10;

                elektrixModsBackground.eventDoubleClick += (component, ms) =>
                {
                    handle.zOrder = 13;
                    doneButton.Show();
                    handle.enabled = true;
                };

                doneButton.eventClick += (component, ms) =>
                {
                    doneButton.Hide();
                    handle.zOrder  = 10;
                    handle.enabled = false;

                    config.PanelX = (int)elektrixModsBackground.absolutePosition.x;
                    config.PanelY = (int)elektrixModsBackground.absolutePosition.y;
                    Configuration <ElektrixModsConfiguration> .Save();
                };

                if (m_atlasLoaded)
                {
                    elektrixModsBackground.atlas            = SpriteUtilities.GetAtlas(m_atlasName);
                    elektrixModsBackground.backgroundSprite = "Blank";
                }
                else
                {
                    elektrixModsBackground.backgroundSprite = "GenericPanelLight";
                }


                elektrixModsBackground.color = new Color32(96, 96, 96, 255);

                UIButton elektrixModsToggle = elektrixModsBackground.AddUIComponent <UIButton>();
                elektrixModsToggle.disabledTextColor = new Color32(128, 128, 128, 255);
                ElektrixUI.SetupButtonStateSprites(ref elektrixModsToggle, "ToolbarIconGroup1");
                elektrixModsToggle.relativePosition = new Vector3(5f, 0f);
                elektrixModsToggle.size             = new Vector2(45f, 50f);
                elektrixModsToggle.name             = "ElektrixModsButton";
                elektrixModsToggle.zOrder           = 11;
                if (m_atlasLoaded)
                {
                    UISprite internalSprite = elektrixModsToggle.AddUIComponent <UISprite>();
                    internalSprite.atlas            = SpriteUtilities.GetAtlas(m_atlasName);
                    internalSprite.spriteName       = "Elektrix";
                    internalSprite.relativePosition = new Vector3(-3, 0);
                    internalSprite.width            = internalSprite.height = 50f;
                }
                else
                {
                    elektrixModsToggle.text = "E";
                }
                elektrixModsToggle.textScale               = 1.3f;
                elektrixModsToggle.textVerticalAlignment   = UIVerticalAlignment.Middle;
                elektrixModsToggle.textHorizontalAlignment = UIHorizontalAlignment.Center;

                modsPanel = elektrixModsBackground.AddUIComponent <UIPanel>();
                modsPanel.backgroundSprite = "GenericPanelLight";
                modsPanel.color            = new Color32(96, 96, 96, 255);
                modsPanel.name             = "ElektrixModsPanel";
                modsPanel.width            = 0;
                modsPanel.relativePosition = new Vector3(0, -modsPanel.height - 7);
                modsPanel.Hide();

                UILabel panelLabel = modsPanel.AddUIComponent <UILabel>();
                panelLabel.text             = "Elektrix's Mods";
                panelLabel.relativePosition = new Vector3(12f, 12f);

                elektrixModsToggle.eventClicked += (component, click) =>
                {
                    toggleClicks++;
                    if (toggleClicks == 1)
                    {
                        elektrixModsToggle.Focus();
                        modsPanel.Show();
                    }
                    else
                    {
                        elektrixModsToggle.Unfocus();
                        toggleClicks = 0;
                        modsPanel.Hide();
                    }
                };
            }

            modsPanel = (UIPanel)UIView.Find("ElektrixModsPanel");

            UIPanel backgroundPanel = modsPanel.AddUIComponent <UIPanel>();

            backgroundPanel.backgroundSprite = "GenericPanelLight";
            backgroundPanel.name             = "E3";
            backgroundPanel.height           = 50f;
            backgroundPanel.width            = 135f;
            backgroundPanel.relativePosition = new Vector3(10f, 40f + 70f);

            UIButton resolveOverlapsTool = backgroundPanel.AddUIComponent <UIButton>();
            int      buttonClicks        = 0;

            ElektrixUI.SetupButtonStateSprites(ref resolveOverlapsTool, "OptionBase", true);
            resolveOverlapsTool.size             = new Vector2(45f, 45f);
            resolveOverlapsTool.relativePosition = new Vector3(5f, 2.5f);
            resolveOverlapsTool.name             = "E3A";
            if (m_atlasLoaded)
            {
                UISprite internalSprite = resolveOverlapsTool.AddUIComponent <UISprite>();
                internalSprite.atlas            = SpriteUtilities.GetAtlas(m_atlasName);
                internalSprite.spriteName       = "ResolveOverlaps";
                internalSprite.relativePosition = Vector3.zero;
                internalSprite.width            = internalSprite.height = 50f;
            }
            else
            {
                resolveOverlapsTool.text = "R";
            }
            resolveOverlapsTool.textScale = 1.3f;

            UIButton addNodeTool   = backgroundPanel.AddUIComponent <UIButton>();
            int      button2Clicks = 0;

            ElektrixUI.SetupButtonStateSprites(ref addNodeTool, "OptionBase", true);
            addNodeTool.size             = new Vector2(45f, 45f);
            addNodeTool.relativePosition = new Vector3(55f, 2.5f);
            addNodeTool.name             = "E3B";
            if (m_atlasLoaded)
            {
                UISprite internalSprite2 = addNodeTool.AddUIComponent <UISprite>();
                internalSprite2.atlas            = SpriteUtilities.GetAtlas(m_atlasName);
                internalSprite2.spriteName       = "AddNode";
                internalSprite2.relativePosition = Vector3.zero;
                internalSprite2.width            = internalSprite2.height = 50f;
            }
            else
            {
                resolveOverlapsTool.text = "A";
            }
            resolveOverlapsTool.textScale = 1.3f;

            // Final overrides
            //UIPanel modsPanel = (UIPanel) UIView.Find("ElektrixModsPanel");
            IList <UIComponent> panels = modsPanel.components;
            float longestPanelWidth    = 0;

            for (int i = 0; i < panels.Count; i++)
            {
                if (!(panels[i] is UIPanel))
                {
                    continue;
                }
                panels[i].relativePosition = new Vector3(panels[i].relativePosition.x, 35 + (60 * (i - 1)));
                if (panels[i].width > longestPanelWidth)
                {
                    longestPanelWidth = panels[i].width;
                }
            }

            modsPanel.height           = 40f + (modsPanel.childCount - 1) * 60f;
            modsPanel.width            = 20f + longestPanelWidth;
            modsPanel.relativePosition = new Vector3(0, -modsPanel.height - 7);

            // Events
            resolveOverlapsTool.eventClicked += (component, click) =>
            {
                if (!ResolveOverlapsTool.instance.enabled)
                {
                    buttonClicks = 0;
                }

                buttonClicks++;
                if (buttonClicks == 1)
                {
                    resolveOverlapsTool.Focus();
                    ResolveOverlapsTool.instance.enabled = true;
                    ResolveOverlapsTool.instance.mode    = 0;
                }
                else
                {
                    resolveOverlapsTool.Unfocus();
                    buttonClicks = 0;
                    ResolveOverlapsTool.instance.enabled = false;
                    ResolveOverlapsTool.instance.mode    = 0;
                    ToolsModifierControl.SetTool <DefaultTool>();
                }
            };

            addNodeTool.eventClicked += (component, click) =>
            {
                if (!ResolveOverlapsTool.instance.enabled)
                {
                    button2Clicks = 0;
                }

                button2Clicks++;
                if (button2Clicks == 1)
                {
                    addNodeTool.Focus();
                    ResolveOverlapsTool.instance.enabled = true;
                    ResolveOverlapsTool.instance.mode    = 1;
                }
                else
                {
                    addNodeTool.Unfocus();
                    button2Clicks = 0;
                    ResolveOverlapsTool.instance.enabled = false;
                    ResolveOverlapsTool.instance.mode    = 0;
                    ToolsModifierControl.SetTool <DefaultTool>();
                }
            };
        }