//Init public MainMenu(Canvas menuCanvas) { mMenuCanvas = menuCanvas; var logo = new ImagePanel(menuCanvas, "Logo"); logo.LoadJsonUi(GameContentManager.UI.Menu, Graphics.Renderer.GetResolutionString()); //Main Menu Window mMenuWindow = new ImagePanel(menuCanvas, "MenuWindow"); mServerStatusLabel = new Label(mMenuWindow, "ServerStatusLabel") { AutoSizeToContents = true, ShouldDrawBackground = true, Text = Strings.Server.StatusLabel.ToString(ActiveNetworkStatus.ToLocalizedString()), }; mServerStatusLabel.SetTextColor(Color.White, Label.ControlState.Normal); mServerStatusLabel.AddAlignment(Alignments.Bottom); mServerStatusLabel.AddAlignment(Alignments.Left); mServerStatusLabel.ProcessAlignments(); NetworkStatusChanged += HandleNetworkStatusChanged; //Menu Header mMenuHeader = new Label(mMenuWindow, "Title"); mMenuHeader.SetText(Strings.MainMenu.title); //Login Button mLoginButton = new Button(mMenuWindow, "LoginButton"); mLoginButton.SetText(Strings.MainMenu.login); mLoginButton.Clicked += LoginButton_Clicked; //Register Button mRegisterButton = new Button(mMenuWindow, "RegisterButton"); mRegisterButton.SetText(Strings.MainMenu.register); mRegisterButton.Clicked += RegisterButton_Clicked; //Credits Button mCreditsButton = new Button(mMenuWindow, "CreditsButton"); mCreditsButton.SetText(Strings.MainMenu.credits); mCreditsButton.Clicked += CreditsButton_Clicked; //Exit Button mExitButton = new Button(mMenuWindow, "ExitButton"); mExitButton.SetText(Strings.MainMenu.exit); mExitButton.Clicked += ExitButton_Clicked; //Options Button mOptionsButton = new Button(mMenuWindow, "OptionsButton"); mOptionsButton.Clicked += OptionsButton_Clicked; mOptionsButton.SetText(Strings.MainMenu.options); if (!string.IsNullOrEmpty(Strings.MainMenu.optionstooltip)) { mOptionsButton.SetToolTipText(Strings.MainMenu.optionstooltip); } mMenuWindow.LoadJsonUi(GameContentManager.UI.Menu, Graphics.Renderer.GetResolutionString()); //Options Controls mOptionsWindow = new OptionsWindow(menuCanvas, this, mMenuWindow); //Login Controls mLoginWindow = new LoginWindow(menuCanvas, this, mMenuWindow); //Register Controls mRegisterWindow = new RegisterWindow(menuCanvas, this, mMenuWindow); //Forgot Password Controls mForgotPasswordWindow = new ForgotPasswordWindow(menuCanvas, this, mMenuWindow); //Reset Password Controls mResetPasswordWindow = new ResetPasswordWindow(menuCanvas, this, mMenuWindow); //Character Selection Controls mSelectCharacterWindow = new SelectCharacterWindow(mMenuCanvas, this, mMenuWindow); //Character Creation Controls mCreateCharacterWindow = new CreateCharacterWindow(mMenuCanvas, this, mMenuWindow, mSelectCharacterWindow); //Credits Controls mCreditsWindow = new CreditsWindow(mMenuCanvas, this); UpdateDisabled(); }
public ItemDescWindow( ItemBase item, int amount, int x, int y, int[] statBuffs, string titleOverride = "", string valueLabel = "", bool centerHorizontally = false ) { var title = titleOverride; if (string.IsNullOrWhiteSpace(title)) { title = item.Name; } mDescWindow = new ImagePanel(Interface.GameUi.GameCanvas, "ItemDescWindow"); if (item != null && item.ItemType == ItemTypes.Equipment) { mDescWindow.Name = "ItemDescWindowExpanded"; } if (item != null) { var icon = new ImagePanel(mDescWindow, "ItemIcon"); var itemName = new Label(mDescWindow, "ItemNameLabel"); itemName.Text = title; var itemQuantity = new Label(mDescWindow, "ItemQuantityLabel"); if (amount > 1) { itemQuantity.Text += amount.ToString("N0").Replace(",", Strings.Numbers.comma); } itemName.AddAlignment(Alignments.CenterH); var itemType = new Label(mDescWindow, "ItemTypeLabel"); var itemValue = new Label(mDescWindow, "ItemValueLabel"); itemType.Text = Strings.ItemDesc.itemtypes[(int)item.ItemType]; itemValue.SetText(valueLabel); if (item.ItemType == ItemTypes.Equipment && item.EquipmentSlot >= 0 && item.EquipmentSlot < Options.EquipmentSlots.Count) { itemType.Text = Options.EquipmentSlots[item.EquipmentSlot]; if (item.EquipmentSlot == Options.WeaponIndex && item.TwoHanded) { itemType.Text += " - " + Strings.ItemDesc.twohand; } } if (item.Rarity > 0) { itemType.Text += " - " + Strings.ItemDesc.rarity[item.Rarity]; var rarity = CustomColors.Items.Rarities.ContainsKey(item.Rarity) ? CustomColors.Items.Rarities[item.Rarity] : Color.White; itemType.TextColorOverride.R = rarity.R; itemType.TextColorOverride.G = rarity.G; itemType.TextColorOverride.B = rarity.B; itemType.TextColorOverride.A = rarity.A; } var itemDesc = new RichLabel(mDescWindow, "ItemDescription"); var itemDescText = new Label(mDescWindow, "ItemDescText"); itemDescText.Font = itemDescText.Parent.Skin.DefaultFont; var itemStatsText = new Label(mDescWindow, item.ItemType == ItemTypes.Equipment ? "ItemStatsText" : ""); itemStatsText.Font = itemStatsText.Parent.Skin.DefaultFont; var itemStats = new RichLabel(mDescWindow, item.ItemType == ItemTypes.Equipment ? "ItemStats" : ""); itemDescText.IsHidden = true; itemStatsText.IsHidden = true; //Load this up now so we know what color to make the text when filling out the desc mDescWindow.LoadJsonUi(GameContentManager.UI.InGame, Graphics.Renderer.GetResolutionString()); if (item.Description.Length > 0) { itemDesc.AddText( Strings.ItemDesc.desc.ToString(item.Description), itemDesc.RenderColor, itemDescText.CurAlignments.Count > 0 ? itemDescText.CurAlignments[0] : Alignments.Left, itemDescText.Font ); itemDesc.AddLineBreak(); itemDesc.AddLineBreak(); } var stats = ""; if (item.ItemType == ItemTypes.Equipment) { stats = Strings.ItemDesc.bonuses; itemStats.AddText( stats, itemStats.RenderColor, itemStatsText.CurAlignments.Count > 0 ? itemStatsText.CurAlignments[0] : Alignments.Left, itemDescText.Font ); itemStats.AddLineBreak(); if (item.ItemType == ItemTypes.Equipment && item.EquipmentSlot == Options.WeaponIndex) { stats = Strings.ItemDesc.damage.ToString(item.Damage); itemStats.AddText( stats, itemStats.RenderColor, itemStatsText.CurAlignments.Count > 0 ? itemStatsText.CurAlignments[0] : Alignments.Left, itemDescText.Font ); itemStats.AddLineBreak(); } for (var i = 0; i < (int)Vitals.VitalCount; i++) { var bonus = item.VitalsGiven[i].ToString(); if (item.PercentageVitalsGiven[i] > 0) { if (item.VitalsGiven[i] > 0) { bonus += " + "; } else { bonus = ""; } bonus += item.PercentageVitalsGiven[i] + "%"; } var vitals = Strings.ItemDesc.vitals[i].ToString(bonus); itemStats.AddText( vitals, itemStats.RenderColor, itemStatsText.CurAlignments.Count > 0 ? itemStatsText.CurAlignments[0] : Alignments.Left, itemDescText.Font ); itemStats.AddLineBreak(); } if (statBuffs != null) { for (var i = 0; i < (int)Stats.StatCount; i++) { var flatStat = item.StatsGiven[i] + statBuffs[i]; var bonus = flatStat.ToString(); if (item.PercentageStatsGiven[i] > 0) { if (flatStat > 0) { bonus += " + "; } else { bonus = ""; } bonus += item.PercentageStatsGiven[i] + "%"; } stats = Strings.ItemDesc.stats[i].ToString(bonus); itemStats.AddText( stats, itemStats.RenderColor, itemStatsText.CurAlignments.Count > 0 ? itemStatsText.CurAlignments[0] : Alignments.Left, itemDescText.Font ); itemStats.AddLineBreak(); } } } if (item.ItemType == ItemTypes.Equipment && item.Effect.Type != EffectType.None && item.Effect.Percentage > 0) { itemStats.AddText( Strings.ItemDesc.effect.ToString( item.Effect.Percentage, Strings.ItemDesc.effects[(int)item.Effect.Type - 1] ), itemStats.RenderColor, itemStatsText.CurAlignments.Count > 0 ? itemStatsText.CurAlignments[0] : Alignments.Left, itemDescText.Font ); } //Load Again for positioning purposes. mDescWindow.LoadJsonUi(GameContentManager.UI.InGame, Graphics.Renderer.GetResolutionString()); var itemTex = Globals.ContentManager.GetTexture(GameContentManager.TextureType.Item, item.Icon); if (itemTex != null) { icon.Texture = itemTex; icon.RenderColor = item.Color; } itemDesc.SizeToChildren(false, true); itemStats.SizeToChildren(false, true); itemDescText.IsHidden = true; itemStatsText.IsHidden = true; if (centerHorizontally) { mDescWindow.MoveTo(x - mDescWindow.Width / 2, y + mDescWindow.Padding.Top); } else { mDescWindow.MoveTo(x - mDescWindow.Width - mDescWindow.Padding.Right, y + mDescWindow.Padding.Top); } } }