private void PositionElement(HudElement element, CameraProperties cameraProperties)
    {
        var viewportRect = GuiPlacement.CameraViewportRectangle(cameraProperties, distance: element.ViewportPoint.z);
        var guiTransform = GuiPlacement.ProjectPointOnPlane(viewportRect, element.ViewportPoint);

        guiTransform = guiTransform.Rotate(element.RotationOffset);

        if (element.AdjustToFieldOfView)
        {
            guiTransform = guiTransform.UpdateScale(element.Scale * GuiPlacement.FocalLength(cameraProperties.FieldOfView));
        }
        else
        {
            guiTransform = guiTransform.UpdateScale(element.Scale);
        }
        // Make everything smaller when VR is enabled
        if (_settingsProvider.ActiveVrMode != VrMode.None)
        {
            guiTransform = guiTransform.Scale(Vector3.one / _vrShrinkFactor);
        }

        var scale = guiTransform.Scale;

        scale.z      = 1;
        guiTransform = guiTransform.UpdateScale(scale);

        element.transform.SetLocal(guiTransform);
    }
        public void LoadContent(ContentManager content)
        {
            // Loading background picture
            mBackground    = content.Load <Texture2D>("Menus/OptionsAndStatisticsMenu");
            mAnimalsBought = new HudElement(new Point(470, 100), new Point(150, 30));
            mAnimalsMax    = new HudElement(new Point(470, 200), new Point(150, 30));
            mGametime      = new HudElement(new Point(470, 300), new Point(150, 30));
            mMaxGold       = new HudElement(new Point(470, 400), new Point(150, 30));
            mZombiesKilled = new HudElement(new Point(470, 500), new Point(150, 30));
            mWon           = new HudElement(new Point(470, 600), new Point(150, 30));
            mLost          = new HudElement(new Point(470, 700), new Point(150, 30));
            mPoints        = new HudElement(new Point(470, 800), new Point(150, 30));


            mFont = content.Load <SpriteFont>("File");

            mHighScoreTexture = content.Load <Texture2D>("Textures\\highscore");

            mAnimalsBought.LoadContent(content);
            mAnimalsMax.LoadContent(content);
            mGametime.LoadContent(content);
            mMaxGold.LoadContent(content);
            mZombiesKilled.LoadContent(content);
            mWon.LoadContent(content);
            mLost.LoadContent(content);
            mPoints.LoadContent(content);
        }
Exemplo n.º 3
0
        public void LoadContent(ContentManager content)
        {
            mLiveBox  = new HudElement(new Point(48, 5), new Point(100, 30));
            mMoneyBox = new HudElement(new Point(189, 5), new Point(100, 30));

            mHealth = TextureManager.GetTexture("icons", 32, 32, 25);
            mCoin   = TextureManager.GetTexture("icons", 32, 32, 24);
            mSeed1  = TextureManager.GetTexture("wheat", 32, 32, 3);
            mSeed2  = TextureManager.GetTexture("wheat2", 32, 32, 3);
            mSeed3  = TextureManager.GetTexture("icons", 32, 32, 2);

            mCoinSpin = AnimationManager.GetAnimation(AnimationManager.CoinSpin, this);

            mSeedBox1 = new HudElement(new Point(330, 5), new Point(60, 30));
            mSeedBox2 = new HudElement(new Point(431, 5), new Point(60, 30));
            mSeedBox3 = new HudElement(new Point(532, 5), new Point(60, 30));

            mPoints = new HudElement(new Point(mScreenWidth - 205, 5), new Point(100, 30));
            mTime   = new HudElement(new Point(mScreenWidth - 100, 5), new Point(100, 30));

            mFps = new HudElement(new Point(48, 30), new Point(100, 30));

            mLiveBox.LoadContent(content);
            mMoneyBox.LoadContent(content);


            mSeedBox1.LoadContent(content);
            mSeedBox2.LoadContent(content);
            mSeedBox3.LoadContent(content);
            mPoints.LoadContent(content);
            mTime.LoadContent(content);
            mFps.LoadContent(content);
        }
Exemplo n.º 4
0
            public TexturedBox(HudElement Parent = null, Color color = default(Color), MyStringId material = default(MyStringId))
            {
                this.color  = color;
                this.Parent = Parent;

                if (material == default(MyStringId))
                {
                    this.material = MyStringId.GetOrCompute("Square");
                }
                else
                {
                    this.material = material;
                }
            }
Exemplo n.º 5
0
        public static void updateHudElementTransparency(HudElement hudElement)
        {
            float lerpedAlpha;

            lerpedAlpha = Mathf.Lerp(hudElement.lastSetAlpha, hudElement.targetAlpha, hudElement.timeFade / hudFadeDuration.Value);

            if (hudElement.elementName == "MiniMap")
            {
                hudElement.element.GetComponent <Minimap>().m_mapImageSmall.CrossFadeAlpha(hudElement.targetAlpha, hudElement.timeFade, false);
            }

            hudElement.lastSetAlpha = lerpedAlpha;
            hudElement.element.GetComponent <CanvasGroup>().alpha = lerpedAlpha;
        }
Exemplo n.º 6
0
        public void LoadContent(ContentManager content)
        {
            // Loading background picture
            mBackground             = content.Load <Texture2D>("Menus/OptionsAndStatisticsMenu");
            mErsteGeburt            = new HudElement(new Point(400, 100), new Point(150, 30));
            mWahrerFarmer           = new HudElement(new Point(400, 200), new Point(150, 30));
            mFarmingSimulator       = new HudElement(new Point(400, 300), new Point(150, 30));
            mDerAnfangVomEnde       = new HudElement(new Point(400, 400), new Point(150, 30));
            mVomGejagtenZumJäger    = new HudElement(new Point(400, 500), new Point(150, 30));
            mGehirnlos              = new HudElement(new Point(400, 600), new Point(150, 30));
            mObdachlos              = new HudElement(new Point(400, 700), new Point(150, 30));
            mDasWarErstDerAnfang    = new HudElement(new Point(400, 800), new Point(150, 30));
            mDieLangeNacht          = new HudElement(new Point(400, 900), new Point(150, 30));
            mDieApokalypseIstVorbei = new HudElement(new Point(400, 1000), new Point(150, 30));
            mSieHattenKeineChance   = new HudElement(new Point(400, 1100), new Point(150, 30));


            mFont = content.Load <SpriteFont>("File");


            mErsteGeburt.LoadContent(content);
            mWahrerFarmer.LoadContent(content);
            mFarmingSimulator.LoadContent(content);
            mDerAnfangVomEnde.LoadContent(content);
            mVomGejagtenZumJäger.LoadContent(content);
            mGehirnlos.LoadContent(content);
            mObdachlos.LoadContent(content);
            mDasWarErstDerAnfang.LoadContent(content);
            mDieLangeNacht.LoadContent(content);
            mDieApokalypseIstVorbei.LoadContent(content);
            mSieHattenKeineChance.LoadContent(content);
            mErsteGeburt.ChangeText("To Do!");
            mWahrerFarmer.ChangeText("To Do!");
            mFarmingSimulator.ChangeText("To Do!");
            mDerAnfangVomEnde.ChangeText("To Do!");
            mVomGejagtenZumJäger.ChangeText("To Do!");
            mGehirnlos.ChangeText("To Do!");
            mObdachlos.ChangeText("To Do!");
            mDasWarErstDerAnfang.ChangeText("To Do!");
            mDieLangeNacht.ChangeText("To Do!");
            mDieApokalypseIstVorbei.ChangeText("To Do!");
            mSieHattenKeineChance.ChangeText("To Do!");
        }
Exemplo n.º 7
0
		// load hud
		internal static void LoadHUD() {
			CultureInfo Culture = CultureInfo.InvariantCulture;
			string Folder = Program.FileSystem.GetDataFolder("In-game", CurrentOptions.UserInterfaceFolder);
			string File = OpenBveApi.Path.CombineFile(Folder, "interface.cfg");
			CurrentHudElements = new HudElement[16];
			int Length = 0;
			if (System.IO.File.Exists(File)) {
				string[] Lines = System.IO.File.ReadAllLines(File, new System.Text.UTF8Encoding());
				for (int i = 0; i < Lines.Length; i++) {
					int j = Lines[i].IndexOf(';');
					if (j >= 0) {
						Lines[i] = Lines[i].Substring(0, j).Trim();
					} else {
						Lines[i] = Lines[i].Trim();
					}
					if (Lines[i].Length != 0) {
						if (!Lines[i].StartsWith(";", StringComparison.Ordinal)) {
							if (Lines[i].Equals("[element]", StringComparison.OrdinalIgnoreCase)) {
								Length++;
								if (Length > CurrentHudElements.Length) {
									Array.Resize<HudElement>(ref CurrentHudElements, CurrentHudElements.Length << 1);
								}
								CurrentHudElements[Length - 1] = new HudElement();
							} else if (Length == 0) {
								System.Windows.Forms.MessageBox.Show("Line outside of [element] structure encountered at line " + (i + 1).ToString(Culture) + " in " + File);
							} else {
								j = Lines[i].IndexOf("=", StringComparison.Ordinal);
								if (j >= 0) {
									string Command = Lines[i].Substring(0, j).TrimEnd();
									string[] Arguments = Lines[i].Substring(j + 1).TrimStart().Split(new char[] { ',' }, StringSplitOptions.None);
									for (j = 0; j < Arguments.Length; j++) {
										Arguments[j] = Arguments[j].Trim();
									}
									switch (Command.ToLowerInvariant()) {
										case "subject":
											if (Arguments.Length == 1) {
												CurrentHudElements[Length - 1].Subject = Arguments[0];
											} else {
												System.Windows.Forms.MessageBox.Show("Incorrect number of arguments supplied in " + Command + " at line " + (i + 1).ToString(Culture) + " in " + File);
											} break;
										case "position":
											if (Arguments.Length == 2) {
												float x, y;
												if (!float.TryParse(Arguments[0], NumberStyles.Float, Culture, out x)) {
													System.Windows.Forms.MessageBox.Show("X is invalid in " + Command + " at line " + (i + 1).ToString(Culture) + " in " + File);
												} else if (!float.TryParse(Arguments[1], NumberStyles.Float, Culture, out y)) {
													System.Windows.Forms.MessageBox.Show("Y is invalid in " + Command + " at line " + (i + 1).ToString(Culture) + " in " + File);
												} else {
													CurrentHudElements[Length - 1].Position.X = x;
													CurrentHudElements[Length - 1].Position.Y = y;
												}
											} else {
												System.Windows.Forms.MessageBox.Show("Incorrect number of arguments supplied in " + Command + " at line " + (i + 1).ToString(Culture) + " in " + File);
											} break;
										case "alignment":
											if (Arguments.Length == 2) {
												int x, y;
												if (!int.TryParse(Arguments[0], NumberStyles.Integer, Culture, out x)) {
													System.Windows.Forms.MessageBox.Show("X is invalid in " + Command + " at line " + (i + 1).ToString(Culture) + " in " + File);
												} else if (!int.TryParse(Arguments[1], NumberStyles.Integer, Culture, out y)) {
													System.Windows.Forms.MessageBox.Show("Y is invalid in " + Command + " at line " + (i + 1).ToString(Culture) + " in " + File);
												} else {
													CurrentHudElements[Length - 1].Alignment.X = Math.Sign(x);
													CurrentHudElements[Length - 1].Alignment.Y = Math.Sign(y);
												}
											} else {
												System.Windows.Forms.MessageBox.Show("Incorrect number of arguments supplied in " + Command + " at line " + (i + 1).ToString(Culture) + " in " + File);
											} break;
										case "topleft":
											if (Arguments.Length == 2) {
												if (Arguments[0].Length != 0 & !Arguments[0].Equals("null", StringComparison.OrdinalIgnoreCase)) {
													Textures.RegisterTexture(OpenBveApi.Path.CombineFile(Folder, Arguments[0]), out CurrentHudElements[Length - 1].TopLeft.BackgroundTexture);
												}
												if (Arguments[1].Length != 0 & !Arguments[1].Equals("null", StringComparison.OrdinalIgnoreCase)) {
													Textures.RegisterTexture(OpenBveApi.Path.CombineFile(Folder, Arguments[1]), out CurrentHudElements[Length - 1].TopLeft.OverlayTexture);
												}
											} else {
												System.Windows.Forms.MessageBox.Show("Incorrect number of arguments supplied in " + Command + " at line " + (i + 1).ToString(Culture) + " in " + File);
											} break;
										case "topmiddle":
											if (Arguments.Length == 2) {
												if (Arguments[0].Length != 0 & !Arguments[0].Equals("null", StringComparison.OrdinalIgnoreCase)) {
													Textures.RegisterTexture(OpenBveApi.Path.CombineFile(Folder, Arguments[0]), out CurrentHudElements[Length - 1].TopMiddle.BackgroundTexture);
												}
												if (Arguments[1].Length != 0 & !Arguments[1].Equals("null", StringComparison.OrdinalIgnoreCase)) {
													Textures.RegisterTexture(OpenBveApi.Path.CombineFile(Folder, Arguments[1]), out CurrentHudElements[Length - 1].TopMiddle.OverlayTexture);
												}
											} else {
												System.Windows.Forms.MessageBox.Show("Incorrect number of arguments supplied in " + Command + " at line " + (i + 1).ToString(Culture) + " in " + File);
											} break;
										case "topright":
											if (Arguments.Length == 2) {
												if (Arguments[0].Length != 0 & !Arguments[0].Equals("null", StringComparison.OrdinalIgnoreCase)) {
													Textures.RegisterTexture(OpenBveApi.Path.CombineFile(Folder, Arguments[0]), out CurrentHudElements[Length - 1].TopRight.BackgroundTexture);
												}
												if (Arguments[1].Length != 0 & !Arguments[1].Equals("null", StringComparison.OrdinalIgnoreCase)) {
													Textures.RegisterTexture(OpenBveApi.Path.CombineFile(Folder, Arguments[1]), out CurrentHudElements[Length - 1].TopRight.OverlayTexture);
												}
											} else {
												System.Windows.Forms.MessageBox.Show("Incorrect number of arguments supplied in " + Command + " at line " + (i + 1).ToString(Culture) + " in " + File);
											} break;
										case "centerleft":
											if (Arguments.Length == 2) {
												if (Arguments[0].Length != 0 & !Arguments[0].Equals("null", StringComparison.OrdinalIgnoreCase)) {
													Textures.RegisterTexture(OpenBveApi.Path.CombineFile(Folder, Arguments[0]), out CurrentHudElements[Length - 1].CenterLeft.BackgroundTexture);
												}
												if (Arguments[1].Length != 0 & !Arguments[1].Equals("null", StringComparison.OrdinalIgnoreCase)) {
													Textures.RegisterTexture(OpenBveApi.Path.CombineFile(Folder, Arguments[1]), out CurrentHudElements[Length - 1].CenterLeft.OverlayTexture);
												}
											} else {
												System.Windows.Forms.MessageBox.Show("Incorrect number of arguments supplied in " + Command + " at line " + (i + 1).ToString(Culture) + " in " + File);
											} break;
										case "centermiddle":
											if (Arguments.Length == 2) {
												if (Arguments[0].Length != 0 & !Arguments[0].Equals("null", StringComparison.OrdinalIgnoreCase)) {
													Textures.RegisterTexture(OpenBveApi.Path.CombineFile(Folder, Arguments[0]), out CurrentHudElements[Length - 1].CenterMiddle.BackgroundTexture);
												}
												if (Arguments[1].Length != 0 & !Arguments[1].Equals("null", StringComparison.OrdinalIgnoreCase)) {
													Textures.RegisterTexture(OpenBveApi.Path.CombineFile(Folder, Arguments[1]), out CurrentHudElements[Length - 1].CenterMiddle.OverlayTexture);
												}
											} else {
												System.Windows.Forms.MessageBox.Show("Incorrect number of arguments supplied in " + Command + " at line " + (i + 1).ToString(Culture) + " in " + File);
											} break;
										case "centerright":
											if (Arguments.Length == 2) {
												if (Arguments[0].Length != 0 & !Arguments[0].Equals("null", StringComparison.OrdinalIgnoreCase)) {
													Textures.RegisterTexture(OpenBveApi.Path.CombineFile(Folder, Arguments[0]), out CurrentHudElements[Length - 1].CenterRight.BackgroundTexture);
												}
												if (Arguments[1].Length != 0 & !Arguments[1].Equals("null", StringComparison.OrdinalIgnoreCase)) {
													Textures.RegisterTexture(OpenBveApi.Path.CombineFile(Folder, Arguments[1]), out CurrentHudElements[Length - 1].CenterRight.OverlayTexture);
												}
											} else {
												System.Windows.Forms.MessageBox.Show("Incorrect number of arguments supplied in " + Command + " at line " + (i + 1).ToString(Culture) + " in " + File);
											} break;
										case "bottomleft":
											if (Arguments.Length == 2) {
												if (Arguments[0].Length != 0 & !Arguments[0].Equals("null", StringComparison.OrdinalIgnoreCase)) {
													Textures.RegisterTexture(OpenBveApi.Path.CombineFile(Folder, Arguments[0]), out CurrentHudElements[Length - 1].BottomLeft.BackgroundTexture);
												}
												if (Arguments[1].Length != 0 & !Arguments[1].Equals("null", StringComparison.OrdinalIgnoreCase)) {
													Textures.RegisterTexture(OpenBveApi.Path.CombineFile(Folder, Arguments[1]), out CurrentHudElements[Length - 1].BottomLeft.OverlayTexture);
												}
											} else {
												System.Windows.Forms.MessageBox.Show("Incorrect number of arguments supplied in " + Command + " at line " + (i + 1).ToString(Culture) + " in " + File);
											} break;
										case "bottommiddle":
											if (Arguments.Length == 2) {
												if (Arguments[0].Length != 0 & !Arguments[0].Equals("null", StringComparison.OrdinalIgnoreCase)) {
													Textures.RegisterTexture(OpenBveApi.Path.CombineFile(Folder, Arguments[0]), out CurrentHudElements[Length - 1].BottomMiddle.BackgroundTexture);
												}
												if (Arguments[1].Length != 0 & !Arguments[1].Equals("null", StringComparison.OrdinalIgnoreCase)) {
													Textures.RegisterTexture(OpenBveApi.Path.CombineFile(Folder, Arguments[1]), out CurrentHudElements[Length - 1].BottomMiddle.OverlayTexture);
												}
											} else {
												System.Windows.Forms.MessageBox.Show("Incorrect number of arguments supplied in " + Command + " at line " + (i + 1).ToString(Culture) + " in " + File);
											} break;
										case "bottomright":
											if (Arguments.Length == 2) {
												if (Arguments[0].Length != 0 & !Arguments[0].Equals("null", StringComparison.OrdinalIgnoreCase)) {
													Textures.RegisterTexture(OpenBveApi.Path.CombineFile(Folder, Arguments[0]), out CurrentHudElements[Length - 1].BottomRight.BackgroundTexture);
												}
												if (Arguments[1].Length != 0 & !Arguments[1].Equals("null", StringComparison.OrdinalIgnoreCase)) {
													Textures.RegisterTexture(OpenBveApi.Path.CombineFile(Folder, Arguments[1]), out CurrentHudElements[Length - 1].BottomRight.OverlayTexture);
												}
											} else {
												System.Windows.Forms.MessageBox.Show("Incorrect number of arguments supplied in " + Command + " at line " + (i + 1).ToString(Culture) + " in " + File);
											} break;
										case "backcolor":
											if (Arguments.Length == 4) {
												int r, g, b, a;
												if (!int.TryParse(Arguments[0], NumberStyles.Integer, Culture, out r)) {
													System.Windows.Forms.MessageBox.Show("R is invalid in " + Command + " at line " + (i + 1).ToString(Culture) + " in " + File);
												} else if (!int.TryParse(Arguments[1], NumberStyles.Integer, Culture, out g)) {
													System.Windows.Forms.MessageBox.Show("G is invalid in " + Command + " at line " + (i + 1).ToString(Culture) + " in " + File);
												} else if (!int.TryParse(Arguments[2], NumberStyles.Integer, Culture, out b)) {
													System.Windows.Forms.MessageBox.Show("B is invalid in " + Command + " at line " + (i + 1).ToString(Culture) + " in " + File);
												} else if (!int.TryParse(Arguments[3], NumberStyles.Integer, Culture, out a)) {
													System.Windows.Forms.MessageBox.Show("A is invalid in " + Command + " at line " + (i + 1).ToString(Culture) + " in " + File);
												} else {
													r = r < 0 ? 0 : r > 255 ? 255 : r;
													g = g < 0 ? 0 : g > 255 ? 255 : g;
													b = b < 0 ? 0 : b > 255 ? 255 : b;
													a = a < 0 ? 0 : a > 255 ? 255 : a;
													CurrentHudElements[Length - 1].BackgroundColor = new Color32((byte)r, (byte)g, (byte)b, (byte)a);
												} break;
											} else {
												System.Windows.Forms.MessageBox.Show("Incorrect number of arguments supplied in " + Command + " at line " + (i + 1).ToString(Culture) + " in " + File);
											} break;
										case "overlaycolor":
											if (Arguments.Length == 4) {
												int r, g, b, a;
												if (!int.TryParse(Arguments[0], NumberStyles.Integer, Culture, out r)) {
													System.Windows.Forms.MessageBox.Show("R is invalid in " + Command + " at line " + (i + 1).ToString(Culture) + " in " + File);
												} else if (!int.TryParse(Arguments[1], NumberStyles.Integer, Culture, out g)) {
													System.Windows.Forms.MessageBox.Show("G is invalid in " + Command + " at line " + (i + 1).ToString(Culture) + " in " + File);
												} else if (!int.TryParse(Arguments[2], NumberStyles.Integer, Culture, out b)) {
													System.Windows.Forms.MessageBox.Show("B is invalid in " + Command + " at line " + (i + 1).ToString(Culture) + " in " + File);
												} else if (!int.TryParse(Arguments[3], NumberStyles.Integer, Culture, out a)) {
													System.Windows.Forms.MessageBox.Show("A is invalid in " + Command + " at line " + (i + 1).ToString(Culture) + " in " + File);
												} else {
													r = r < 0 ? 0 : r > 255 ? 255 : r;
													g = g < 0 ? 0 : g > 255 ? 255 : g;
													b = b < 0 ? 0 : b > 255 ? 255 : b;
													a = a < 0 ? 0 : a > 255 ? 255 : a;
													CurrentHudElements[Length - 1].OverlayColor = new Color32((byte)r, (byte)g, (byte)b, (byte)a);
												} break;
											} else {
												System.Windows.Forms.MessageBox.Show("Incorrect number of arguments supplied in " + Command + " at line " + (i + 1).ToString(Culture) + " in " + File);
											} break;
										case "textcolor":
											if (Arguments.Length == 4) {
												int r, g, b, a;
												if (!int.TryParse(Arguments[0], NumberStyles.Integer, Culture, out r)) {
													System.Windows.Forms.MessageBox.Show("R is invalid in " + Command + " at line " + (i + 1).ToString(Culture) + " in " + File);
												} else if (!int.TryParse(Arguments[1], NumberStyles.Integer, Culture, out g)) {
													System.Windows.Forms.MessageBox.Show("G is invalid in " + Command + " at line " + (i + 1).ToString(Culture) + " in " + File);
												} else if (!int.TryParse(Arguments[2], NumberStyles.Integer, Culture, out b)) {
													System.Windows.Forms.MessageBox.Show("B is invalid in " + Command + " at line " + (i + 1).ToString(Culture) + " in " + File);
												} else if (!int.TryParse(Arguments[3], NumberStyles.Integer, Culture, out a)) {
													System.Windows.Forms.MessageBox.Show("A is invalid in " + Command + " at line " + (i + 1).ToString(Culture) + " in " + File);
												} else {
													r = r < 0 ? 0 : r > 255 ? 255 : r;
													g = g < 0 ? 0 : g > 255 ? 255 : g;
													b = b < 0 ? 0 : b > 255 ? 255 : b;
													a = a < 0 ? 0 : a > 255 ? 255 : a;
													CurrentHudElements[Length - 1].TextColor = new Color32((byte)r, (byte)g, (byte)b, (byte)a);
												} break;
											} else {
												System.Windows.Forms.MessageBox.Show("Incorrect number of arguments supplied in " + Command + " at line " + (i + 1).ToString(Culture) + " in " + File);
											} break;
										case "textposition":
											if (Arguments.Length == 2) {
												float x, y;
												if (!float.TryParse(Arguments[0], NumberStyles.Float, Culture, out x)) {
													System.Windows.Forms.MessageBox.Show("X is invalid in " + Command + " at line " + (i + 1).ToString(Culture) + " in " + File);
												} else if (!float.TryParse(Arguments[1], NumberStyles.Float, Culture, out y)) {
													System.Windows.Forms.MessageBox.Show("Y is invalid in " + Command + " at line " + (i + 1).ToString(Culture) + " in " + File);
												} else {
													CurrentHudElements[Length - 1].TextPosition.X = x;
													CurrentHudElements[Length - 1].TextPosition.Y = y;
												}
											} else {
												System.Windows.Forms.MessageBox.Show("Incorrect number of arguments supplied in " + Command + " at line " + (i + 1).ToString(Culture) + " in " + File);
											} break;
										case "textalignment":
											if (Arguments.Length == 2) {
												int x, y;
												if (!int.TryParse(Arguments[0], NumberStyles.Integer, Culture, out x)) {
													System.Windows.Forms.MessageBox.Show("X is invalid in " + Command + " at line " + (i + 1).ToString(Culture) + " in " + File);
												} else if (!int.TryParse(Arguments[1], NumberStyles.Integer, Culture, out y)) {
													System.Windows.Forms.MessageBox.Show("Y is invalid in " + Command + " at line " + (i + 1).ToString(Culture) + " in " + File);
												} else {
													CurrentHudElements[Length - 1].TextAlignment.X = Math.Sign(x);
													CurrentHudElements[Length - 1].TextAlignment.Y = Math.Sign(y);
												}
											} else {
												System.Windows.Forms.MessageBox.Show("Incorrect number of arguments supplied in " + Command + " at line " + (i + 1).ToString(Culture) + " in " + File);
											} break;
										case "textsize":
											if (Arguments.Length == 1) {
												int s;
												if (!int.TryParse(Arguments[0], NumberStyles.Integer, Culture, out s)) {
													System.Windows.Forms.MessageBox.Show("SIZE is invalid in " + Command + " at line " + (i + 1).ToString(Culture) + " in " + File);
												} else {
													switch (s) {
															case 0: CurrentHudElements[Length - 1].Font = Fonts.VerySmallFont; break;
															case 1: CurrentHudElements[Length - 1].Font = Fonts.SmallFont; break;
															case 2: CurrentHudElements[Length - 1].Font = Fonts.NormalFont; break;
															case 3: CurrentHudElements[Length - 1].Font = Fonts.LargeFont; break;
															case 4: CurrentHudElements[Length - 1].Font = Fonts.VeryLargeFont; break;
															default: CurrentHudElements[Length - 1].Font = Fonts.NormalFont; break;
													}
												}
											} else {
												System.Windows.Forms.MessageBox.Show("Incorrect number of arguments supplied in " + Command + " at line " + (i + 1).ToString(Culture) + " in " + File);
											} break;
										case "textshadow":
											if (Arguments.Length == 1) {
												int s;
												if (!int.TryParse(Arguments[0], NumberStyles.Integer, Culture, out s)) {
													System.Windows.Forms.MessageBox.Show("SHADOW is invalid in " + Command + " at line " + (i + 1).ToString(Culture) + " in " + File);
												} else {
													CurrentHudElements[Length - 1].TextShadow = s != 0;
												}
											} else {
												System.Windows.Forms.MessageBox.Show("Incorrect number of arguments supplied in " + Command + " at line " + (i + 1).ToString(Culture) + " in " + File);
											} break;
										case "text":
											if (Arguments.Length == 1) {
												CurrentHudElements[Length - 1].Text = Arguments[0];
											} else {
												System.Windows.Forms.MessageBox.Show("Incorrect number of arguments supplied in " + Command + " at line " + (i + 1).ToString(Culture) + " in " + File);
											} break;
										case "value":
											if (Arguments.Length == 1) {
												int n;
												if (!int.TryParse(Arguments[0], NumberStyles.Integer, Culture, out n)) {
													System.Windows.Forms.MessageBox.Show("VALUE1 is invalid in " + Command + " at line " + (i + 1).ToString(Culture) + " in " + File);
												} else {
													CurrentHudElements[Length - 1].Value1 = n;
												}
											} else if (Arguments.Length == 2) {
												float a, b;
												if (!float.TryParse(Arguments[0], NumberStyles.Float, Culture, out a)) {
													System.Windows.Forms.MessageBox.Show("VALUE1 is invalid in " + Command + " at line " + (i + 1).ToString(Culture) + " in " + File);
												} else if (!float.TryParse(Arguments[1], NumberStyles.Float, Culture, out b)) {
													System.Windows.Forms.MessageBox.Show("VALUE2 is invalid in " + Command + " at line " + (i + 1).ToString(Culture) + " in " + File);
												} else {
													CurrentHudElements[Length - 1].Value1 = a;
													CurrentHudElements[Length - 1].Value2 = b;
												}
											} else {
												System.Windows.Forms.MessageBox.Show("Incorrect number of arguments supplied in " + Command + " at line " + (i + 1).ToString(Culture) + " in " + File);
											} break;
										case "transition":
											if (Arguments.Length == 1) {
												int n;
												if (!int.TryParse(Arguments[0], NumberStyles.Integer, Culture, out n)) {
													System.Windows.Forms.MessageBox.Show("TRANSITION is invalid in " + Command + " at line " + (i + 1).ToString(Culture) + " in " + File);
												} else {
													CurrentHudElements[Length - 1].Transition = (HudTransition)n;
												}
											} else {
												System.Windows.Forms.MessageBox.Show("Incorrect number of arguments supplied in " + Command + " at line " + (i + 1).ToString(Culture) + " in " + File);
											} break;
										case "transitionvector":
											if (Arguments.Length == 2) {
												float x, y;
												if (!float.TryParse(Arguments[0], NumberStyles.Float, Culture, out x)) {
													System.Windows.Forms.MessageBox.Show("X is invalid in " + Command + " at line " + (i + 1).ToString(Culture) + " in " + File);
												} else if (!float.TryParse(Arguments[1], NumberStyles.Float, Culture, out y)) {
													System.Windows.Forms.MessageBox.Show("Y is invalid in " + Command + " at line " + (i + 1).ToString(Culture) + " in " + File);
												} else {
													CurrentHudElements[Length - 1].TransitionVector.X = x;
													CurrentHudElements[Length - 1].TransitionVector.Y = y;
												}
											} else {
												System.Windows.Forms.MessageBox.Show("Incorrect number of arguments supplied in " + Command + " at line " + (i + 1).ToString(Culture) + " in " + File);
											} break;
										default:
											System.Windows.Forms.MessageBox.Show("Invalid command encountered at line " + (i + 1).ToString(Culture) + " in " + File);
											break;
									}
								} else {
									System.Windows.Forms.MessageBox.Show("Invalid statement encountered at line " + (i + 1).ToString(Culture) + " in " + File);
								}
							}
						}
					}
				}
			}
			Array.Resize<HudElement>(ref CurrentHudElements, Length);
		}
Exemplo n.º 8
0
        /// <summary>
        /// Update the whole user interface.
        /// </summary>
        private void UpdateUI()
        {
            // Don't update if the player didn't selected a building.
            if (CurrentSelectedBuilding == null)
            {
                return;
            }

            BuildingNameText.text = CurrentSelectedBuilding.GetData.Name;
            BuildingImage.sprite  = CurrentSelectedBuilding.GetData.BuldingTexture;

            BuildingNameText2.text = CurrentSelectedBuilding.GetData.Name;
            BuildingImage2.sprite  = CurrentSelectedBuilding.GetData.BuldingTexture;
            UpdateLevel();

            if (!CurrentSelectedBuilding.IsBuiltHandler)
            {
                foreach (UISlot slot in BuildingSlots)
                {
                    slot.SetDefaultSprite();
                    slot.RemoveUnit();
                }

                for (int i = 0; i < CurrentSelectedBuilding.GetUnitIDs.Count; i++)
                {
                    BuildingSlots[i].Init(Unit.Units[CurrentSelectedBuilding.GetUnitIDs[i]].GetUnitData.Icon, CurrentSelectedBuilding.GetUnitIDs[i]);
                }
            }

            UpdateLifeBar();


            foreach (var HudElement in UIBuildingElements)
            {
                HudElement.SetActive(false);
            }


            if (!CurrentSelectedBuilding.IsBuiltHandler)
            {
                return;
            }

            if (CurrentSelectedBuilding is Storage)
            {
                UIBuildingElements[(int)EBuilding.Storage].SetActive(true);
            }
            if (CurrentSelectedBuilding is Farm)
            {
                UIBuildingElements[(int)EBuilding.Farm].SetActive(true);
                UIBuildingElements[(int)EBuilding.Farm].GetComponent <UIFarm>().UpdateUI(CurrentSelectedBuilding as Farm);
            }
            if (CurrentSelectedBuilding is Base)
            {
                UIBuildingElements[(int)EBuilding.Base].SetActive(true);
                UIBuildingElements[(int)EBuilding.Base].GetComponent <UIBase>().SetSlotEntrance(MapGenerator.GetGroundFromGlobalPosition(CurrentSelectedBuilding.GetEntrancePoss()));
            }

            if (CurrentSelectedBuilding is Scrap)
            {
                UIBuildingElements[(int)EBuilding.Scrap].SetActive(true);
                UIBuildingElements[(int)EBuilding.Scrap].GetComponent <UIScrap>().UpdateUI(CurrentSelectedBuilding as Scrap);
            }

            if (CurrentSelectedBuilding is House)
            {
                UIBuildingElements[(int)EBuilding.House].SetActive(true);
                UIBuildingElements[(int)EBuilding.House].GetComponent <UIHouse>().UpdateUI(CurrentSelectedBuilding as House);
            }

            if (CurrentSelectedBuilding is Hospital)
            {
                UIBuildingElements[(int)EBuilding.Hospital].SetActive(true);
                UIBuildingElements[(int)EBuilding.Hospital].GetComponent <UIHospital>().UpdateUI(CurrentSelectedBuilding as Hospital);
            }
        }
Exemplo n.º 9
0
 public void AddHudElement(HudElement hudElement)
 {
     hudElements.Add(hudElement);
 }
 public void DestroyHud() => hudElements = null;
 public void SetUpHud(HudElement hudElement) => hudElements = hudElement;
Exemplo n.º 12
0
 public void AddHudElement(HudElement element)
 {
     _elements.Add(element);
 }
Exemplo n.º 13
0
 public TextHudMessage(HudElement Parent = null, TextAlignment alignment = TextAlignment.Center)
 {
     this.Parent    = Parent;
     this.alignment = alignment;
 }
Exemplo n.º 14
0
        // load hud
        internal static void LoadHUD()
        {
            CultureInfo Culture = CultureInfo.InvariantCulture;
            string      Folder  = Program.FileSystem.GetDataFolder("In-game", Options.Current.UserInterfaceFolder);
            string      File    = OpenBveApi.Path.CombineFile(Folder, "interface.cfg");

            CurrentHudElements = new HudElement[16];
            int Length = 0;

            if (System.IO.File.Exists(File))
            {
                string[] Lines = System.IO.File.ReadAllLines(File, new System.Text.UTF8Encoding());
                for (int i = 0; i < Lines.Length; i++)
                {
                    int j = Lines[i].IndexOf(';');
                    if (j >= 0)
                    {
                        Lines[i] = Lines[i].Substring(0, j).Trim();
                    }
                    else
                    {
                        Lines[i] = Lines[i].Trim();
                    }
                    if (Lines[i].Length != 0)
                    {
                        if (!Lines[i].StartsWith(";", StringComparison.Ordinal))
                        {
                            if (Lines[i].Equals("[element]", StringComparison.OrdinalIgnoreCase))
                            {
                                Length++;
                                if (Length > CurrentHudElements.Length)
                                {
                                    Array.Resize <HudElement>(ref CurrentHudElements, CurrentHudElements.Length << 1);
                                }
                                CurrentHudElements[Length - 1] = new HudElement();
                            }
                            else if (Length == 0)
                            {
                                System.Windows.Forms.MessageBox.Show("Line outside of [element] structure encountered at line " + (i + 1).ToString(Culture) + " in " + File);
                            }
                            else
                            {
                                j = Lines[i].IndexOf("=", StringComparison.Ordinal);
                                if (j >= 0)
                                {
                                    string   Command   = Lines[i].Substring(0, j).TrimEnd();
                                    string[] Arguments = Lines[i].Substring(j + 1).TrimStart().Split(new char[] { ',' }, StringSplitOptions.None);
                                    for (j = 0; j < Arguments.Length; j++)
                                    {
                                        Arguments[j] = Arguments[j].Trim();
                                    }
                                    switch (Command.ToLowerInvariant())
                                    {
                                    case "subject":
                                        if (Arguments.Length == 1)
                                        {
                                            CurrentHudElements[Length - 1].Subject = Arguments[0];
                                        }
                                        else
                                        {
                                            System.Windows.Forms.MessageBox.Show("Incorrect number of arguments supplied in " + Command + " at line " + (i + 1).ToString(Culture) + " in " + File);
                                        } break;

                                    case "position":
                                        if (Arguments.Length == 2)
                                        {
                                            float x, y;
                                            if (!float.TryParse(Arguments[0], NumberStyles.Float, Culture, out x))
                                            {
                                                System.Windows.Forms.MessageBox.Show("X is invalid in " + Command + " at line " + (i + 1).ToString(Culture) + " in " + File);
                                            }
                                            else if (!float.TryParse(Arguments[1], NumberStyles.Float, Culture, out y))
                                            {
                                                System.Windows.Forms.MessageBox.Show("Y is invalid in " + Command + " at line " + (i + 1).ToString(Culture) + " in " + File);
                                            }
                                            else
                                            {
                                                CurrentHudElements[Length - 1].Position.X = x;
                                                CurrentHudElements[Length - 1].Position.Y = y;
                                            }
                                        }
                                        else
                                        {
                                            System.Windows.Forms.MessageBox.Show("Incorrect number of arguments supplied in " + Command + " at line " + (i + 1).ToString(Culture) + " in " + File);
                                        } break;

                                    case "alignment":
                                        if (Arguments.Length == 2)
                                        {
                                            int x, y;
                                            if (!int.TryParse(Arguments[0], NumberStyles.Integer, Culture, out x))
                                            {
                                                System.Windows.Forms.MessageBox.Show("X is invalid in " + Command + " at line " + (i + 1).ToString(Culture) + " in " + File);
                                            }
                                            else if (!int.TryParse(Arguments[1], NumberStyles.Integer, Culture, out y))
                                            {
                                                System.Windows.Forms.MessageBox.Show("Y is invalid in " + Command + " at line " + (i + 1).ToString(Culture) + " in " + File);
                                            }
                                            else
                                            {
                                                CurrentHudElements[Length - 1].Alignment.X = Math.Sign(x);
                                                CurrentHudElements[Length - 1].Alignment.Y = Math.Sign(y);
                                            }
                                        }
                                        else
                                        {
                                            System.Windows.Forms.MessageBox.Show("Incorrect number of arguments supplied in " + Command + " at line " + (i + 1).ToString(Culture) + " in " + File);
                                        } break;

                                    case "topleft":
                                        if (Arguments.Length == 2)
                                        {
                                            if (Arguments[0].Length != 0 & !Arguments[0].Equals("null", StringComparison.OrdinalIgnoreCase))
                                            {
                                                Textures.RegisterTexture(OpenBveApi.Path.CombineFile(Folder, Arguments[0]), out CurrentHudElements[Length - 1].TopLeft.BackgroundTexture);
                                            }
                                            if (Arguments[1].Length != 0 & !Arguments[1].Equals("null", StringComparison.OrdinalIgnoreCase))
                                            {
                                                Textures.RegisterTexture(OpenBveApi.Path.CombineFile(Folder, Arguments[1]), out CurrentHudElements[Length - 1].TopLeft.OverlayTexture);
                                            }
                                        }
                                        else
                                        {
                                            System.Windows.Forms.MessageBox.Show("Incorrect number of arguments supplied in " + Command + " at line " + (i + 1).ToString(Culture) + " in " + File);
                                        } break;

                                    case "topmiddle":
                                        if (Arguments.Length == 2)
                                        {
                                            if (Arguments[0].Length != 0 & !Arguments[0].Equals("null", StringComparison.OrdinalIgnoreCase))
                                            {
                                                Textures.RegisterTexture(OpenBveApi.Path.CombineFile(Folder, Arguments[0]), out CurrentHudElements[Length - 1].TopMiddle.BackgroundTexture);
                                            }
                                            if (Arguments[1].Length != 0 & !Arguments[1].Equals("null", StringComparison.OrdinalIgnoreCase))
                                            {
                                                Textures.RegisterTexture(OpenBveApi.Path.CombineFile(Folder, Arguments[1]), out CurrentHudElements[Length - 1].TopMiddle.OverlayTexture);
                                            }
                                        }
                                        else
                                        {
                                            System.Windows.Forms.MessageBox.Show("Incorrect number of arguments supplied in " + Command + " at line " + (i + 1).ToString(Culture) + " in " + File);
                                        } break;

                                    case "topright":
                                        if (Arguments.Length == 2)
                                        {
                                            if (Arguments[0].Length != 0 & !Arguments[0].Equals("null", StringComparison.OrdinalIgnoreCase))
                                            {
                                                Textures.RegisterTexture(OpenBveApi.Path.CombineFile(Folder, Arguments[0]), out CurrentHudElements[Length - 1].TopRight.BackgroundTexture);
                                            }
                                            if (Arguments[1].Length != 0 & !Arguments[1].Equals("null", StringComparison.OrdinalIgnoreCase))
                                            {
                                                Textures.RegisterTexture(OpenBveApi.Path.CombineFile(Folder, Arguments[1]), out CurrentHudElements[Length - 1].TopRight.OverlayTexture);
                                            }
                                        }
                                        else
                                        {
                                            System.Windows.Forms.MessageBox.Show("Incorrect number of arguments supplied in " + Command + " at line " + (i + 1).ToString(Culture) + " in " + File);
                                        } break;

                                    case "centerleft":
                                        if (Arguments.Length == 2)
                                        {
                                            if (Arguments[0].Length != 0 & !Arguments[0].Equals("null", StringComparison.OrdinalIgnoreCase))
                                            {
                                                Textures.RegisterTexture(OpenBveApi.Path.CombineFile(Folder, Arguments[0]), out CurrentHudElements[Length - 1].CenterLeft.BackgroundTexture);
                                            }
                                            if (Arguments[1].Length != 0 & !Arguments[1].Equals("null", StringComparison.OrdinalIgnoreCase))
                                            {
                                                Textures.RegisterTexture(OpenBveApi.Path.CombineFile(Folder, Arguments[1]), out CurrentHudElements[Length - 1].CenterLeft.OverlayTexture);
                                            }
                                        }
                                        else
                                        {
                                            System.Windows.Forms.MessageBox.Show("Incorrect number of arguments supplied in " + Command + " at line " + (i + 1).ToString(Culture) + " in " + File);
                                        } break;

                                    case "centermiddle":
                                        if (Arguments.Length == 2)
                                        {
                                            if (Arguments[0].Length != 0 & !Arguments[0].Equals("null", StringComparison.OrdinalIgnoreCase))
                                            {
                                                Textures.RegisterTexture(OpenBveApi.Path.CombineFile(Folder, Arguments[0]), out CurrentHudElements[Length - 1].CenterMiddle.BackgroundTexture);
                                            }
                                            if (Arguments[1].Length != 0 & !Arguments[1].Equals("null", StringComparison.OrdinalIgnoreCase))
                                            {
                                                Textures.RegisterTexture(OpenBveApi.Path.CombineFile(Folder, Arguments[1]), out CurrentHudElements[Length - 1].CenterMiddle.OverlayTexture);
                                            }
                                        }
                                        else
                                        {
                                            System.Windows.Forms.MessageBox.Show("Incorrect number of arguments supplied in " + Command + " at line " + (i + 1).ToString(Culture) + " in " + File);
                                        } break;

                                    case "centerright":
                                        if (Arguments.Length == 2)
                                        {
                                            if (Arguments[0].Length != 0 & !Arguments[0].Equals("null", StringComparison.OrdinalIgnoreCase))
                                            {
                                                Textures.RegisterTexture(OpenBveApi.Path.CombineFile(Folder, Arguments[0]), out CurrentHudElements[Length - 1].CenterRight.BackgroundTexture);
                                            }
                                            if (Arguments[1].Length != 0 & !Arguments[1].Equals("null", StringComparison.OrdinalIgnoreCase))
                                            {
                                                Textures.RegisterTexture(OpenBveApi.Path.CombineFile(Folder, Arguments[1]), out CurrentHudElements[Length - 1].CenterRight.OverlayTexture);
                                            }
                                        }
                                        else
                                        {
                                            System.Windows.Forms.MessageBox.Show("Incorrect number of arguments supplied in " + Command + " at line " + (i + 1).ToString(Culture) + " in " + File);
                                        } break;

                                    case "bottomleft":
                                        if (Arguments.Length == 2)
                                        {
                                            if (Arguments[0].Length != 0 & !Arguments[0].Equals("null", StringComparison.OrdinalIgnoreCase))
                                            {
                                                Textures.RegisterTexture(OpenBveApi.Path.CombineFile(Folder, Arguments[0]), out CurrentHudElements[Length - 1].BottomLeft.BackgroundTexture);
                                            }
                                            if (Arguments[1].Length != 0 & !Arguments[1].Equals("null", StringComparison.OrdinalIgnoreCase))
                                            {
                                                Textures.RegisterTexture(OpenBveApi.Path.CombineFile(Folder, Arguments[1]), out CurrentHudElements[Length - 1].BottomLeft.OverlayTexture);
                                            }
                                        }
                                        else
                                        {
                                            System.Windows.Forms.MessageBox.Show("Incorrect number of arguments supplied in " + Command + " at line " + (i + 1).ToString(Culture) + " in " + File);
                                        } break;

                                    case "bottommiddle":
                                        if (Arguments.Length == 2)
                                        {
                                            if (Arguments[0].Length != 0 & !Arguments[0].Equals("null", StringComparison.OrdinalIgnoreCase))
                                            {
                                                Textures.RegisterTexture(OpenBveApi.Path.CombineFile(Folder, Arguments[0]), out CurrentHudElements[Length - 1].BottomMiddle.BackgroundTexture);
                                            }
                                            if (Arguments[1].Length != 0 & !Arguments[1].Equals("null", StringComparison.OrdinalIgnoreCase))
                                            {
                                                Textures.RegisterTexture(OpenBveApi.Path.CombineFile(Folder, Arguments[1]), out CurrentHudElements[Length - 1].BottomMiddle.OverlayTexture);
                                            }
                                        }
                                        else
                                        {
                                            System.Windows.Forms.MessageBox.Show("Incorrect number of arguments supplied in " + Command + " at line " + (i + 1).ToString(Culture) + " in " + File);
                                        } break;

                                    case "bottomright":
                                        if (Arguments.Length == 2)
                                        {
                                            if (Arguments[0].Length != 0 & !Arguments[0].Equals("null", StringComparison.OrdinalIgnoreCase))
                                            {
                                                Textures.RegisterTexture(OpenBveApi.Path.CombineFile(Folder, Arguments[0]), out CurrentHudElements[Length - 1].BottomRight.BackgroundTexture);
                                            }
                                            if (Arguments[1].Length != 0 & !Arguments[1].Equals("null", StringComparison.OrdinalIgnoreCase))
                                            {
                                                Textures.RegisterTexture(OpenBveApi.Path.CombineFile(Folder, Arguments[1]), out CurrentHudElements[Length - 1].BottomRight.OverlayTexture);
                                            }
                                        }
                                        else
                                        {
                                            System.Windows.Forms.MessageBox.Show("Incorrect number of arguments supplied in " + Command + " at line " + (i + 1).ToString(Culture) + " in " + File);
                                        } break;

                                    case "backcolor":
                                        if (Arguments.Length == 4)
                                        {
                                            int r, g, b, a;
                                            if (!int.TryParse(Arguments[0], NumberStyles.Integer, Culture, out r))
                                            {
                                                System.Windows.Forms.MessageBox.Show("R is invalid in " + Command + " at line " + (i + 1).ToString(Culture) + " in " + File);
                                            }
                                            else if (!int.TryParse(Arguments[1], NumberStyles.Integer, Culture, out g))
                                            {
                                                System.Windows.Forms.MessageBox.Show("G is invalid in " + Command + " at line " + (i + 1).ToString(Culture) + " in " + File);
                                            }
                                            else if (!int.TryParse(Arguments[2], NumberStyles.Integer, Culture, out b))
                                            {
                                                System.Windows.Forms.MessageBox.Show("B is invalid in " + Command + " at line " + (i + 1).ToString(Culture) + " in " + File);
                                            }
                                            else if (!int.TryParse(Arguments[3], NumberStyles.Integer, Culture, out a))
                                            {
                                                System.Windows.Forms.MessageBox.Show("A is invalid in " + Command + " at line " + (i + 1).ToString(Culture) + " in " + File);
                                            }
                                            else
                                            {
                                                r = r < 0 ? 0 : r > 255 ? 255 : r;
                                                g = g < 0 ? 0 : g > 255 ? 255 : g;
                                                b = b < 0 ? 0 : b > 255 ? 255 : b;
                                                a = a < 0 ? 0 : a > 255 ? 255 : a;
                                                CurrentHudElements[Length - 1].BackgroundColor = new Color32((byte)r, (byte)g, (byte)b, (byte)a);
                                            }
                                            break;
                                        }
                                        System.Windows.Forms.MessageBox.Show("Incorrect number of arguments supplied in " + Command + " at line " + (i + 1).ToString(Culture) + " in " + File);
                                        break;

                                    case "overlaycolor":
                                        if (Arguments.Length == 4)
                                        {
                                            int r, g, b, a;
                                            if (!int.TryParse(Arguments[0], NumberStyles.Integer, Culture, out r))
                                            {
                                                System.Windows.Forms.MessageBox.Show("R is invalid in " + Command + " at line " + (i + 1).ToString(Culture) + " in " + File);
                                            }
                                            else if (!int.TryParse(Arguments[1], NumberStyles.Integer, Culture, out g))
                                            {
                                                System.Windows.Forms.MessageBox.Show("G is invalid in " + Command + " at line " + (i + 1).ToString(Culture) + " in " + File);
                                            }
                                            else if (!int.TryParse(Arguments[2], NumberStyles.Integer, Culture, out b))
                                            {
                                                System.Windows.Forms.MessageBox.Show("B is invalid in " + Command + " at line " + (i + 1).ToString(Culture) + " in " + File);
                                            }
                                            else if (!int.TryParse(Arguments[3], NumberStyles.Integer, Culture, out a))
                                            {
                                                System.Windows.Forms.MessageBox.Show("A is invalid in " + Command + " at line " + (i + 1).ToString(Culture) + " in " + File);
                                            }
                                            else
                                            {
                                                r = r < 0 ? 0 : r > 255 ? 255 : r;
                                                g = g < 0 ? 0 : g > 255 ? 255 : g;
                                                b = b < 0 ? 0 : b > 255 ? 255 : b;
                                                a = a < 0 ? 0 : a > 255 ? 255 : a;
                                                CurrentHudElements[Length - 1].OverlayColor = new Color32((byte)r, (byte)g, (byte)b, (byte)a);
                                            }
                                            break;
                                        }
                                        System.Windows.Forms.MessageBox.Show("Incorrect number of arguments supplied in " + Command + " at line " + (i + 1).ToString(Culture) + " in " + File);
                                        break;

                                    case "textcolor":
                                        if (Arguments.Length == 4)
                                        {
                                            int r, g, b, a;
                                            if (!int.TryParse(Arguments[0], NumberStyles.Integer, Culture, out r))
                                            {
                                                System.Windows.Forms.MessageBox.Show("R is invalid in " + Command + " at line " + (i + 1).ToString(Culture) + " in " + File);
                                            }
                                            else if (!int.TryParse(Arguments[1], NumberStyles.Integer, Culture, out g))
                                            {
                                                System.Windows.Forms.MessageBox.Show("G is invalid in " + Command + " at line " + (i + 1).ToString(Culture) + " in " + File);
                                            }
                                            else if (!int.TryParse(Arguments[2], NumberStyles.Integer, Culture, out b))
                                            {
                                                System.Windows.Forms.MessageBox.Show("B is invalid in " + Command + " at line " + (i + 1).ToString(Culture) + " in " + File);
                                            }
                                            else if (!int.TryParse(Arguments[3], NumberStyles.Integer, Culture, out a))
                                            {
                                                System.Windows.Forms.MessageBox.Show("A is invalid in " + Command + " at line " + (i + 1).ToString(Culture) + " in " + File);
                                            }
                                            else
                                            {
                                                r = r < 0 ? 0 : r > 255 ? 255 : r;
                                                g = g < 0 ? 0 : g > 255 ? 255 : g;
                                                b = b < 0 ? 0 : b > 255 ? 255 : b;
                                                a = a < 0 ? 0 : a > 255 ? 255 : a;
                                                CurrentHudElements[Length - 1].TextColor = new Color32((byte)r, (byte)g, (byte)b, (byte)a);
                                            }
                                            break;
                                        }
                                        System.Windows.Forms.MessageBox.Show("Incorrect number of arguments supplied in " + Command + " at line " + (i + 1).ToString(Culture) + " in " + File);
                                        break;

                                    case "textposition":
                                        if (Arguments.Length == 2)
                                        {
                                            float x, y;
                                            if (!float.TryParse(Arguments[0], NumberStyles.Float, Culture, out x))
                                            {
                                                System.Windows.Forms.MessageBox.Show("X is invalid in " + Command + " at line " + (i + 1).ToString(Culture) + " in " + File);
                                            }
                                            else if (!float.TryParse(Arguments[1], NumberStyles.Float, Culture, out y))
                                            {
                                                System.Windows.Forms.MessageBox.Show("Y is invalid in " + Command + " at line " + (i + 1).ToString(Culture) + " in " + File);
                                            }
                                            else
                                            {
                                                CurrentHudElements[Length - 1].TextPosition.X = x;
                                                CurrentHudElements[Length - 1].TextPosition.Y = y;
                                            }
                                        }
                                        else
                                        {
                                            System.Windows.Forms.MessageBox.Show("Incorrect number of arguments supplied in " + Command + " at line " + (i + 1).ToString(Culture) + " in " + File);
                                        } break;

                                    case "textalignment":
                                        if (Arguments.Length == 2)
                                        {
                                            int x, y;
                                            if (!int.TryParse(Arguments[0], NumberStyles.Integer, Culture, out x))
                                            {
                                                System.Windows.Forms.MessageBox.Show("X is invalid in " + Command + " at line " + (i + 1).ToString(Culture) + " in " + File);
                                            }
                                            else if (!int.TryParse(Arguments[1], NumberStyles.Integer, Culture, out y))
                                            {
                                                System.Windows.Forms.MessageBox.Show("Y is invalid in " + Command + " at line " + (i + 1).ToString(Culture) + " in " + File);
                                            }
                                            else
                                            {
                                                CurrentHudElements[Length - 1].TextAlignment.X = Math.Sign(x);
                                                CurrentHudElements[Length - 1].TextAlignment.Y = Math.Sign(y);
                                            }
                                        }
                                        else
                                        {
                                            System.Windows.Forms.MessageBox.Show("Incorrect number of arguments supplied in " + Command + " at line " + (i + 1).ToString(Culture) + " in " + File);
                                        } break;

                                    case "textsize":
                                        if (Arguments.Length == 1)
                                        {
                                            int s;
                                            if (!int.TryParse(Arguments[0], NumberStyles.Integer, Culture, out s))
                                            {
                                                System.Windows.Forms.MessageBox.Show("SIZE is invalid in " + Command + " at line " + (i + 1).ToString(Culture) + " in " + File);
                                            }
                                            else
                                            {
                                                switch (s)
                                                {
                                                case 0: CurrentHudElements[Length - 1].Font = Fonts.VerySmallFont; break;

                                                case 1: CurrentHudElements[Length - 1].Font = Fonts.SmallFont; break;

                                                case 2: CurrentHudElements[Length - 1].Font = Fonts.NormalFont; break;

                                                case 3: CurrentHudElements[Length - 1].Font = Fonts.LargeFont; break;

                                                case 4: CurrentHudElements[Length - 1].Font = Fonts.VeryLargeFont; break;

                                                default: CurrentHudElements[Length - 1].Font = Fonts.NormalFont; break;
                                                }
                                            }
                                        }
                                        else
                                        {
                                            System.Windows.Forms.MessageBox.Show("Incorrect number of arguments supplied in " + Command + " at line " + (i + 1).ToString(Culture) + " in " + File);
                                        } break;

                                    case "textshadow":
                                        if (Arguments.Length == 1)
                                        {
                                            int s;
                                            if (!int.TryParse(Arguments[0], NumberStyles.Integer, Culture, out s))
                                            {
                                                System.Windows.Forms.MessageBox.Show("SHADOW is invalid in " + Command + " at line " + (i + 1).ToString(Culture) + " in " + File);
                                            }
                                            else
                                            {
                                                CurrentHudElements[Length - 1].TextShadow = s != 0;
                                            }
                                        }
                                        else
                                        {
                                            System.Windows.Forms.MessageBox.Show("Incorrect number of arguments supplied in " + Command + " at line " + (i + 1).ToString(Culture) + " in " + File);
                                        } break;

                                    case "text":
                                        if (Arguments.Length == 1)
                                        {
                                            CurrentHudElements[Length - 1].Text = Arguments[0];
                                        }
                                        else
                                        {
                                            System.Windows.Forms.MessageBox.Show("Incorrect number of arguments supplied in " + Command + " at line " + (i + 1).ToString(Culture) + " in " + File);
                                        } break;

                                    case "value":
                                        if (Arguments.Length == 1)
                                        {
                                            int n;
                                            if (!int.TryParse(Arguments[0], NumberStyles.Integer, Culture, out n))
                                            {
                                                System.Windows.Forms.MessageBox.Show("VALUE1 is invalid in " + Command + " at line " + (i + 1).ToString(Culture) + " in " + File);
                                            }
                                            else
                                            {
                                                CurrentHudElements[Length - 1].Value1 = n;
                                            }
                                        }
                                        else if (Arguments.Length == 2)
                                        {
                                            float a, b;
                                            if (!float.TryParse(Arguments[0], NumberStyles.Float, Culture, out a))
                                            {
                                                System.Windows.Forms.MessageBox.Show("VALUE1 is invalid in " + Command + " at line " + (i + 1).ToString(Culture) + " in " + File);
                                            }
                                            else if (!float.TryParse(Arguments[1], NumberStyles.Float, Culture, out b))
                                            {
                                                System.Windows.Forms.MessageBox.Show("VALUE2 is invalid in " + Command + " at line " + (i + 1).ToString(Culture) + " in " + File);
                                            }
                                            else
                                            {
                                                CurrentHudElements[Length - 1].Value1 = a;
                                                CurrentHudElements[Length - 1].Value2 = b;
                                            }
                                        }
                                        else
                                        {
                                            System.Windows.Forms.MessageBox.Show("Incorrect number of arguments supplied in " + Command + " at line " + (i + 1).ToString(Culture) + " in " + File);
                                        } break;

                                    case "transition":
                                        if (Arguments.Length == 1)
                                        {
                                            int n;
                                            if (!int.TryParse(Arguments[0], NumberStyles.Integer, Culture, out n))
                                            {
                                                System.Windows.Forms.MessageBox.Show("TRANSITION is invalid in " + Command + " at line " + (i + 1).ToString(Culture) + " in " + File);
                                            }
                                            else
                                            {
                                                CurrentHudElements[Length - 1].Transition = (HudTransition)n;
                                            }
                                        }
                                        else
                                        {
                                            System.Windows.Forms.MessageBox.Show("Incorrect number of arguments supplied in " + Command + " at line " + (i + 1).ToString(Culture) + " in " + File);
                                        } break;

                                    case "transitionvector":
                                        if (Arguments.Length == 2)
                                        {
                                            float x, y;
                                            if (!float.TryParse(Arguments[0], NumberStyles.Float, Culture, out x))
                                            {
                                                System.Windows.Forms.MessageBox.Show("X is invalid in " + Command + " at line " + (i + 1).ToString(Culture) + " in " + File);
                                            }
                                            else if (!float.TryParse(Arguments[1], NumberStyles.Float, Culture, out y))
                                            {
                                                System.Windows.Forms.MessageBox.Show("Y is invalid in " + Command + " at line " + (i + 1).ToString(Culture) + " in " + File);
                                            }
                                            else
                                            {
                                                CurrentHudElements[Length - 1].TransitionVector.X = x;
                                                CurrentHudElements[Length - 1].TransitionVector.Y = y;
                                            }
                                        }
                                        else
                                        {
                                            System.Windows.Forms.MessageBox.Show("Incorrect number of arguments supplied in " + Command + " at line " + (i + 1).ToString(Culture) + " in " + File);
                                        } break;

                                    default:
                                        System.Windows.Forms.MessageBox.Show("Invalid command encountered at line " + (i + 1).ToString(Culture) + " in " + File);
                                        break;
                                    }
                                }
                                else
                                {
                                    System.Windows.Forms.MessageBox.Show("Invalid statement encountered at line " + (i + 1).ToString(Culture) + " in " + File);
                                }
                            }
                        }
                    }
                }
            }
            Array.Resize <HudElement>(ref CurrentHudElements, Length);
        }