public void SetEntity(Entity entity) { MyEntity = entity; if (MyEntity != null) { SetupEntityElements(); UpdateSpellStatus(); if (EntityType == EntityTypes.Event) { EventDesc.ClearText(); EventDesc.AddText(((Event)MyEntity).Desc, Color.White); EventDesc.SizeToChildren(false, true); } } }
public static WindowControl Error(ControlBase parent, GLWindow game, string text, string title) { var wc = new WindowControl(parent, title, false); wc.MakeModal(true); wc.Width = 200; RichLabel l = new RichLabel(wc); // Align.StretchHorizontally(l); l.Dock = Pos.Top; l.Width = wc.Width; l.AddText(text, parent.Skin.Colors.Label.Default, parent.Skin.DefaultFont); wc.Layout(); l.SizeToChildren(false, true); wc.Height = 65 + l.Height; Align.CenterHorizontally(l); Button btn = new Button(wc); btn.Name = "Okay"; btn.Text = "Okay"; btn.Height = 20; btn.Y = l.Y + l.Height + 10; btn.Width = 100; btn.Clicked += (o, e) => { ((WindowControl)o.Parent).Close(); }; Align.AlignLeft(l); wc.Show(); wc.SetPosition((game.RenderSize.Width / 2) - (wc.Width / 2), (game.RenderSize.Height / 2) - (wc.Height / 2)); wc.DisableResizing(); return(wc); }
public void Update(QuestBase quest) { if (quest == null) { Hide(); } else { Show(); mQuestTitle.Text = quest.Name; if (mQuestOfferText != quest.StartDescription) { mQuestPromptLabel.ClearText(); mQuestPromptLabel.Width = mQuestPromptArea.Width - mQuestPromptArea.GetVerticalScrollBar().Width; mQuestPromptLabel.AddText( quest.StartDescription, mQuestPromptTemplate.TextColor, mQuestPromptTemplate.CurAlignments.Count > 0 ? mQuestPromptTemplate.CurAlignments[0] : Alignments.Left, mQuestPromptTemplate.Font ); mQuestPromptLabel.SizeToChildren(false, true); mQuestOfferText = quest.StartDescription; } } }
protected override void Layout(GwenSkin.Base skin) { base.Layout(skin); if (!mLayoutRequired) { return; } mLayoutRequired = false; if (LabelColor.HasValue) { mLabel.AddText(LabelText, LabelColor.Value); } else { mLabel.AddText(LabelText, SystemDrawing.Color.Black); } if (!WordWrapLabel) { var measure = mLabel.Skin.Renderer.MeasureText(LabelFont, LabelText); mLabel.SetSize(measure.X, measure.Y); //Function.Log(String.Format("WordWrap disabled {0} {1} {2} {3} {4} {5}", measure.X, measure.Y, LabelColor.HasValue ? LabelColor.Value.ToString() : "none", LabelFont.FaceName, LabelFont.Size, LabelText)); } else { mLabel.SizeToChildren(); } //if (WordWrapLabel) //{ // mLabel.SizeWidthWith(this); // mLabel.SizeToChildren(false, true); //} //else // mLabel.SizeToChildren(true, true); switch (LabelPosition) { case RelationalPosition.LEFT: Component.PlaceRightOf(mLabel, mSpaceBetweenLabelAndComponent); break; case RelationalPosition.RIGHT: mLabel.PlaceRightOf(Component, mSpaceBetweenLabelAndComponent); break; case RelationalPosition.TOP: Component.PlaceBelowOf(mLabel, mSpaceBetweenLabelAndComponent); break; case RelationalPosition.BOTTOM: mLabel.PlaceBelowOf(Component, mSpaceBetweenLabelAndComponent); break; } mLabel.LogPositionAndSize(); Component.LogPositionAndSize(); this.SizeToChildren(); }
public void Show() { mCreditsWindow.IsHidden = false; mRichLabel.ClearText(); var credits = new Credits(); var creditsFile = Path.Combine("resources", "credits.json"); if (File.Exists(creditsFile)) { credits = JsonConvert.DeserializeObject <Credits>(File.ReadAllText(creditsFile)); } else { var line = new Credits.CreditsLine(); line.Text = "Insert your credits here!"; line.Alignment = "center"; line.Size = 12; line.Clr = Intersect.Color.White; line.Font = "sourcesansproblack"; credits.Lines.Add(line); } File.WriteAllText(creditsFile, JsonConvert.SerializeObject(credits, Formatting.Indented)); foreach (var line in credits.Lines) { if (line.Text.Trim().Length == 0) { mRichLabel.AddLineBreak(); } else { mRichLabel.AddText( line.Text, new Color(line.Clr.A, line.Clr.R, line.Clr.G, line.Clr.B), line.GetAlignment(), GameContentManager.Current.GetFont(line.Font, line.Size) ); mRichLabel.AddLineBreak(); } } mRichLabel.SizeToChildren(false, true); }
public static WindowControl Create(ControlBase parent, GLWindow game, string text, string title, bool ok, bool cancel) { var wc = new WindowControl(parent, title, false); wc.MakeModal(true); wc.Width = 200; RichLabel l = new RichLabel(wc); // Align.StretchHorizontally(l); l.Dock = Pos.Top; l.Width = wc.Width; l.AddText(text, parent.Skin.Colors.Label.Default, parent.Skin.DefaultFont); wc.Layout(); l.SizeToChildren(false, true); wc.Height = 65 + l.Height; Align.CenterHorizontally(l); if (ok) { Button btn = new Button(wc); btn.Name = "Okay"; btn.Text = "Okay"; btn.Height = 20; btn.Y = l.Y + l.Height + 10; btn.Width = 100; Align.AlignLeft(l); } if (cancel) { Button btn = new Button(wc); btn.Name = "Cancel"; btn.Text = "Cancel"; btn.SizeToContents(); btn.Height = 20; btn.Width = 70; btn.Y = l.Y + l.Height + 10; btn.X = (wc.Width - 12) - btn.Width; } wc.Show(); wc.SetPosition((game.RenderSize.Width / 2) - (wc.Width / 2), (game.RenderSize.Height / 2) - (wc.Height / 2)); wc.DisableResizing(); return(wc); }
private void UpdateSelectedQuest() { if (mSelectedQuest == null) { mQuestList.Show(); mQuestTitle.Hide(); mQuestDescArea.Hide(); mQuestStatus.Hide(); mBackButton.Hide(); mQuitButton.Hide(); } else { mQuestDescLabel.ClearText(); mQuitButton.IsDisabled = true; ListBoxRow rw; string[] myText = null; var taskString = new List <string>(); if (Globals.Me.QuestProgress.ContainsKey(mSelectedQuest.Id)) { if (Globals.Me.QuestProgress[mSelectedQuest.Id].TaskId != Guid.Empty) { //In Progress mQuestStatus.SetText(Strings.QuestLog.inprogress); mQuestStatus.SetTextColor(Color.Yellow, Label.ControlState.Normal); if (mSelectedQuest.InProgressDescription.Length > 0) { mQuestDescLabel.AddText( mSelectedQuest.InProgressDescription, Color.White, Alignments.Left, mQuestDescTemplateLabel.Font ); mQuestDescLabel.AddLineBreak(); mQuestDescLabel.AddLineBreak(); } mQuestDescLabel.AddText( Strings.QuestLog.currenttask, Color.White, Alignments.Left, mQuestDescTemplateLabel.Font ); mQuestDescLabel.AddLineBreak(); for (var i = 0; i < mSelectedQuest.Tasks.Count; i++) { if (mSelectedQuest.Tasks[i].Id == Globals.Me.QuestProgress[mSelectedQuest.Id].TaskId) { if (mSelectedQuest.Tasks[i].Description.Length > 0) { mQuestDescLabel.AddText( mSelectedQuest.Tasks[i].Description, Color.White, Alignments.Left, mQuestDescTemplateLabel.Font ); mQuestDescLabel.AddLineBreak(); mQuestDescLabel.AddLineBreak(); } if (mSelectedQuest.Tasks[i].Objective == QuestObjective.GatherItems) //Gather Items { mQuestDescLabel.AddText( Strings.QuestLog.taskitem.ToString( Globals.Me.QuestProgress[mSelectedQuest.Id].TaskProgress, mSelectedQuest.Tasks[i].Quantity, ItemBase.GetName(mSelectedQuest.Tasks[i].TargetId) ), Color.White, Alignments.Left, mQuestDescTemplateLabel.Font ); } else if (mSelectedQuest.Tasks[i].Objective == QuestObjective.KillNpcs) //Kill Npcs { mQuestDescLabel.AddText( Strings.QuestLog.tasknpc.ToString( Globals.Me.QuestProgress[mSelectedQuest.Id].TaskProgress, mSelectedQuest.Tasks[i].Quantity, NpcBase.GetName(mSelectedQuest.Tasks[i].TargetId) ), Color.White, Alignments.Left, mQuestDescTemplateLabel.Font ); } } } mQuitButton.IsDisabled = !mSelectedQuest.Quitable; } else { if (Globals.Me.QuestProgress[mSelectedQuest.Id].Completed) { //Completed if (mSelectedQuest.LogAfterComplete) { mQuestStatus.SetText(Strings.QuestLog.completed); mQuestStatus.SetTextColor(Color.Green, Label.ControlState.Normal); mQuestDescLabel.AddText( mSelectedQuest.EndDescription, Color.White, Alignments.Left, mQuestDescTemplateLabel.Font ); } } else { //Not Started if (mSelectedQuest.LogBeforeOffer) { mQuestStatus.SetText(Strings.QuestLog.notstarted); mQuestStatus.SetTextColor(Color.Red, Label.ControlState.Normal); mQuestDescLabel.AddText( mSelectedQuest.BeforeDescription, Color.White, Alignments.Left, mQuestDescTemplateLabel.Font ); mQuitButton?.Hide(); } } } } else { //Not Started if (mSelectedQuest.LogBeforeOffer) { mQuestStatus.SetText(Strings.QuestLog.notstarted); mQuestStatus.SetTextColor(Color.Red, Label.ControlState.Normal); mQuestDescLabel.AddText( mSelectedQuest.BeforeDescription, Color.White, Alignments.Left, mQuestDescTemplateLabel.Font ); } } mQuestList.Hide(); mQuestTitle.IsHidden = false; mQuestTitle.Text = mSelectedQuest.Name; mQuestDescArea.IsHidden = false; mQuestDescLabel.Width = mQuestDescArea.Width - mQuestDescArea.GetVerticalScrollBar().Width; mQuestDescLabel.SizeToChildren(false, true); mQuestStatus.Show(); mBackButton.Show(); mQuitButton.Show(); } }
//Update public void Update() { if (mEventDialogWindow.IsHidden) { Interface.InputBlockingElements.Remove(this); } else { if (!Interface.InputBlockingElements.Contains(this)) { Interface.InputBlockingElements.Add(this); } } if (Globals.EventDialogs.Count > 0) { if (mEventDialogWindow.IsHidden) { base.Show(); mEventDialogWindow.Show(); mEventDialogWindow.MakeModal(); mEventDialogArea.ScrollToTop(); mEventDialogWindow.BringToFront(); var faceTex = Globals.ContentManager.GetTexture( GameContentManager.TextureType.Face, Globals.EventDialogs[0].Face ); var responseCount = 0; var maxResponse = 1; if (Globals.EventDialogs[0].Opt1.Length > 0) { responseCount++; } if (Globals.EventDialogs[0].Opt2.Length > 0) { responseCount++; maxResponse = 2; } if (Globals.EventDialogs[0].Opt3.Length > 0) { responseCount++; maxResponse = 3; } if (Globals.EventDialogs[0].Opt4.Length > 0) { responseCount++; maxResponse = 4; } mEventResponse1.Name = ""; mEventResponse2.Name = ""; mEventResponse3.Name = ""; mEventResponse4.Name = ""; switch (maxResponse) { case 1: mEventDialogWindow.Name = "EventDialogWindow_1Response"; mEventResponse1.Name = "Response1Button"; break; case 2: mEventDialogWindow.Name = "EventDialogWindow_2Responses"; mEventResponse1.Name = "Response1Button"; mEventResponse2.Name = "Response2Button"; break; case 3: mEventDialogWindow.Name = "EventDialogWindow_3Responses"; mEventResponse1.Name = "Response1Button"; mEventResponse2.Name = "Response2Button"; mEventResponse3.Name = "Response3Button"; break; case 4: mEventDialogWindow.Name = "EventDialogWindow_4Responses"; mEventResponse1.Name = "Response1Button"; mEventResponse2.Name = "Response2Button"; mEventResponse3.Name = "Response3Button"; mEventResponse4.Name = "Response4Button"; break; } mEventDialogWindow.LoadJsonUi( GameContentManager.UI.InGame, Graphics.Renderer.GetResolutionString() ); if (faceTex != null) { mEventFace.Show(); mEventFace.Texture = faceTex; mEventDialogArea.Show(); mEventDialogAreaNoFace.Hide(); } else { mEventFace.Hide(); mEventDialogArea.Hide(); mEventDialogAreaNoFace.Show(); } if (responseCount == 0) { mEventResponse1.Show(); mEventResponse1.SetText(Strings.EventWindow.Continue); mEventResponse2.Hide(); mEventResponse3.Hide(); mEventResponse4.Hide(); } else { if (Globals.EventDialogs[0].Opt1 != "") { mEventResponse1.Show(); mEventResponse1.SetText(Globals.EventDialogs[0].Opt1); } else { mEventResponse1.Hide(); } if (Globals.EventDialogs[0].Opt2 != "") { mEventResponse2.Show(); mEventResponse2.SetText(Globals.EventDialogs[0].Opt2); } else { mEventResponse2.Hide(); } if (Globals.EventDialogs[0].Opt3 != "") { mEventResponse3.Show(); mEventResponse3.SetText(Globals.EventDialogs[0].Opt3); } else { mEventResponse3.Hide(); } if (Globals.EventDialogs[0].Opt4 != "") { mEventResponse4.Show(); mEventResponse4.SetText(Globals.EventDialogs[0].Opt4); } else { mEventResponse4.Hide(); } } mEventDialogWindow.SetSize( mEventDialogWindow.Texture.GetWidth(), mEventDialogWindow.Texture.GetHeight() ); if (faceTex != null) { mEventDialogLabel.ClearText(); mEventDialogLabel.Width = mEventDialogArea.Width - mEventDialogArea.GetVerticalScrollBar().Width; mEventDialogLabel.AddText( Globals.EventDialogs[0].Prompt, mEventDialogLabelTemplate.TextColor, mEventDialogLabelTemplate.CurAlignments.Count > 0 ? mEventDialogLabelTemplate.CurAlignments[0] : Alignments.Left, mEventDialogLabelTemplate.Font ); mEventDialogLabel.SizeToChildren(false, true); mEventDialogArea.ScrollToTop(); } else { mEventDialogLabelNoFace.ClearText(); mEventDialogLabelNoFace.Width = mEventDialogAreaNoFace.Width - mEventDialogAreaNoFace.GetVerticalScrollBar().Width; mEventDialogLabelNoFace.AddText( Globals.EventDialogs[0].Prompt, mEventDialogLabelNoFaceTemplate.TextColor, mEventDialogLabelNoFaceTemplate.CurAlignments.Count > 0 ? mEventDialogLabelNoFaceTemplate.CurAlignments[0] : Alignments.Left, mEventDialogLabelNoFaceTemplate.Font ); mEventDialogLabelNoFace.SizeToChildren(false, true); mEventDialogAreaNoFace.ScrollToTop(); } } } }
//Update public void Update() { if (MyEntity == null) { if (!EntityWindow.IsHidden) { EntityWindow.Hide(); } return; } if (EntityWindow.IsHidden) { EntityWindow.Show(); } if (MyEntity.IsDisposed()) { Dispose(); } if (!mInitialized) { SetupEntityElements(); UpdateSpellStatus(); if (EntityType == EntityTypes.Event) { EventDesc.AddText(((Event)MyEntity).Desc, Color.White); EventDesc.SizeToChildren(false, true); } mInitialized = true; } //Time since this window was last updated (for bar animations) var elapsedTime = (Globals.System.GetTimeMs() - mLastUpdateTime) / 1000.0f; //Update the event/entity face. UpdateImage(); IsHidden = true; if (EntityType != EntityTypes.Event) { UpdateLevel(); UpdateMap(); UpdateHpBar(elapsedTime); UpdateMpBar(elapsedTime); IsHidden = false; } else { if (!EntityNameAndLevel.IsHidden) { EntityNameAndLevel.Text = MyEntity.Name; } } //If player draw exp bar if (MyEntity == Globals.Me) { UpdateXpBar(elapsedTime); } if (UpdateStatuses) { UpdateSpellStatus(); UpdateStatuses = false; } foreach (var itm in mActiveStatuses) { itm.Value.Update(); } mLastUpdateTime = Globals.System.GetTimeMs(); }
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); } } }
public ExportVideoWindow(Gwen.Controls.ControlBase parent, GLWindow game) : base(parent, "Export Video") { game.Track.Stop(); var openwindows = game.Canvas.GetOpenWindows(); foreach (var v in openwindows) { if (v is WindowControl) { ((WindowControl)v).Close(); } } MakeModal(true); Width = 400; Height = 280; ControlBase bottom = new ControlBase(this); bottom.Height = 150; bottom.Width = 400 - 13; Align.AlignBottom(bottom); var buttonok = new Button(bottom); buttonok.Name = "Okay"; buttonok.Text = "Record"; buttonok.Height = 20; buttonok.Y = 80; buttonok.Width = 100; if (!Drawing.SafeFrameBuffer.CanRecord) { buttonok.IsHidden = true; } buttonok.Clicked += (o, e) => { var wnd = ((WindowControl)o.Parent.Parent); wnd.Close(); if (game.Track.GetFlag() == null) { var pop = PopupWindow.Create(parent, game, "No flag detected, place one at the end of the track so the recorder knows where to stop.", "Error", true, false); pop.FindChildByName("Okay", true).Clicked += (o1, e1) => { pop.Close(); }; } else { var radiogrp = (RadioButtonGroup)this.FindChildByName("qualityselector", true); bool is1080p = radiogrp.Selected.Text == "1080p"; TrackFiles.TrackRecorder.RecordTrack(game, is1080p); } }; Align.AlignLeft(buttonok); var buttoncancel = new Button(bottom); buttoncancel.Name = "Cancel"; buttoncancel.Text = "Cancel"; buttoncancel.Height = 20; buttoncancel.Y = 80; buttoncancel.Width = 100; buttoncancel.Clicked += (o, e) => { this.Close(); }; Align.AlignRight(buttoncancel); var label = new RichLabel(this); label.Dock = Pos.Top; label.Width = this.Width; if (Drawing.SafeFrameBuffer.CanRecord) { label.AddText("You are about to export your track as a video file. Make sure the end of the track is marked by a flag. It will be located in the same folder as linerider.exe. Please allow some minutes depending on your computer speed. The window will become unresponsive during this time." + Environment.NewLine + Environment.NewLine + "After recording, a console window will open to encode the video. Closing it will cancel the process and all progress will be lost.", parent.Skin.Colors.Label.Default, parent.Skin.DefaultFont); } else { label.AddText("Video export is not supported on this machine." + Environment.NewLine + "Sorry.", parent.Skin.Colors.Label.Default, parent.Skin.DefaultFont); } label.SizeToChildren(false, true); var radio = new RadioButtonGroup(bottom); radio.Name = "qualityselector"; radio.AddOption("720p").Select(); radio.AddOption("1080p"); Align.AlignLeft(radio); radio.Y += 20; if (!Drawing.SafeFrameBuffer.CanRecord) { radio.IsHidden = true; } DisableResizing(); }
public SpellDescWindow(Guid spellId, int x, int y, bool centerHorizontally = false) { var spell = SpellBase.Get(spellId); if (spell == null) { return; } mDescWindow = new ImagePanel(Interface.GameUi.GameCanvas, "SpellDescWindowExpanded"); var icon = new ImagePanel(mDescWindow, "SpellIcon"); var spellName = new Label(mDescWindow, "SpellName"); spellName.Text = spell.Name; var spellType = new Label(mDescWindow, "SpellType"); spellType.Text = Strings.SpellDesc.spelltypes[(int)spell.SpellType]; var spellDesc = new RichLabel(mDescWindow, "SpellDesc"); var spellStats = new RichLabel(mDescWindow, "SpellStats"); var spellDescText = new Label(mDescWindow, "SpellDescText"); spellDescText.Font = spellDescText.Parent.Skin.DefaultFont; var spellStatsText = new Label(mDescWindow, "SpellStatsText"); spellStatsText.Font = spellStatsText.Parent.Skin.DefaultFont; spellDescText.IsHidden = true; spellStatsText.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 (spell.Description.Length > 0) { spellDesc.AddText( Strings.SpellDesc.desc.ToString(spell.Description), spellDesc.RenderColor, spellDescText.CurAlignments.Count > 0 ? spellDescText.CurAlignments[0] : Alignments.Left, spellDescText.Font ); spellDesc.AddLineBreak(); spellDesc.AddLineBreak(); } if (spell.SpellType == (int)SpellTypes.CombatSpell) { if (spell.Combat.TargetType == SpellTargetTypes.Projectile) { var proj = ProjectileBase.Get(spell.Combat.ProjectileId); spellType.Text = Strings.SpellDesc.targettypes[(int)spell.Combat.TargetType] .ToString(proj?.Range ?? 0, spell.Combat.HitRadius); } else { spellType.Text = Strings.SpellDesc.targettypes[(int)spell.Combat.TargetType] .ToString(spell.Combat.CastRange, spell.Combat.HitRadius); } } if (spell.SpellType == (int)SpellTypes.CombatSpell && (spell.Combat.TargetType == SpellTargetTypes.AoE || spell.Combat.TargetType == SpellTargetTypes.Single) && spell.Combat.HitRadius > 0) { spellStats.AddText( Strings.SpellDesc.radius.ToString(spell.Combat.HitRadius), spellStats.RenderColor, spellStatsText.CurAlignments.Count > 0 ? spellStatsText.CurAlignments[0] : Alignments.Left, spellStatsText.Font ); spellStats.AddLineBreak(); spellStats.AddLineBreak(); } if (spell.CastDuration > 0) { var castDuration = (float)spell.CastDuration / 1000f; spellStats.AddText( Strings.SpellDesc.casttime.ToString(castDuration), spellStats.RenderColor, spellStatsText.CurAlignments.Count > 0 ? spellStatsText.CurAlignments[0] : Alignments.Left, spellStatsText.Font ); spellStats.AddLineBreak(); if (spell.CooldownDuration <= 0) { spellStats.AddLineBreak(); } } if (spell.CooldownDuration > 0) { var cdr = 1 - Globals.Me.GetCooldownReduction() / 100; var cd = (float)(spell.CooldownDuration * cdr) / 1000f; spellStats.AddText( Strings.SpellDesc.cooldowntime.ToString(cd), spellStats.RenderColor, spellStatsText.CurAlignments.Count > 0 ? spellStatsText.CurAlignments[0] : Alignments.Left, spellStatsText.Font ); spellStats.AddLineBreak(); spellStats.AddLineBreak(); } var requirements = spell.VitalCost[(int)Vitals.Health] > 0 || spell.VitalCost[(int)Vitals.Mana] > 0; if (requirements == true) { spellStats.AddText( Strings.SpellDesc.prereqs, spellStats.RenderColor, spellStatsText.CurAlignments.Count > 0 ? spellStatsText.CurAlignments[0] : Alignments.Left, spellStatsText.Font ); spellStats.AddLineBreak(); if (spell.VitalCost[(int)Vitals.Health] > 0) { spellStats.AddText( Strings.SpellDesc.vitalcosts[(int)Vitals.Health] .ToString(spell.VitalCost[(int)Vitals.Health]), spellStats.RenderColor, spellStatsText.CurAlignments.Count > 0 ? spellStatsText.CurAlignments[0] : Alignments.Left, spellStatsText.Font ); spellStats.AddLineBreak(); } if (spell.VitalCost[(int)Vitals.Mana] > 0) { spellStats.AddText( Strings.SpellDesc.vitalcosts[(int)Vitals.Mana].ToString(spell.VitalCost[(int)Vitals.Mana]), spellStats.RenderColor, spellStatsText.CurAlignments.Count > 0 ? spellStatsText.CurAlignments[0] : Alignments.Left, spellStatsText.Font ); spellStats.AddLineBreak(); } spellStats.AddLineBreak(); } var stats = ""; if (spell.SpellType == (int)SpellTypes.CombatSpell) { stats = Strings.SpellDesc.effects; spellStats.AddText( stats, spellStats.RenderColor, spellStatsText.CurAlignments.Count > 0 ? spellStatsText.CurAlignments[0] : Alignments.Left, spellStatsText.Font ); spellStats.AddLineBreak(); if (spell.Combat.Effect > 0) { spellStats.AddText( Strings.SpellDesc.effectlist[(int)spell.Combat.Effect], spellStats.RenderColor, spellStatsText.CurAlignments.Count > 0 ? spellStatsText.CurAlignments[0] : Alignments.Left, spellStatsText.Font ); spellStats.AddLineBreak(); } for (var i = 0; i < (int)Vitals.VitalCount; i++) { var vitalDiff = spell.Combat.VitalDiff?[i] ?? 0; if (vitalDiff == 0) { continue; } var vitalSymbol = vitalDiff < 0 ? Strings.SpellDesc.addsymbol : Strings.SpellDesc.removesymbol; if (spell.Combat.Effect == StatusTypes.Shield) { stats = Strings.SpellDesc.shield.ToString(Math.Abs(vitalDiff)); } else { stats = Strings.SpellDesc.vitals[i].ToString(vitalSymbol, Math.Abs(vitalDiff)); } spellStats.AddText( stats, spellStats.RenderColor, spellStatsText.CurAlignments.Count > 0 ? spellStatsText.CurAlignments[0] : Alignments.Left, spellStatsText.Font ); spellStats.AddLineBreak(); } if (spell.Combat.Duration > 0) { for (var i = 0; i < (int)Stats.StatCount; i++) { if (spell.Combat.StatDiff[i] != 0) { spellStats.AddText( Strings.SpellDesc.stats[i] .ToString( (spell.Combat.StatDiff[i] > 0 ? Strings.SpellDesc.addsymbol.ToString() : Strings.SpellDesc.removesymbol.ToString()) + Math.Abs(spell.Combat.StatDiff[i]) ), spellStats.RenderColor, spellStatsText.CurAlignments.Count > 0 ? spellStatsText.CurAlignments[0] : Alignments.Left, spellStatsText.Font ); spellStats.AddLineBreak(); } } var duration = (float)spell.Combat.Duration / 1000f; spellStats.AddText( Strings.SpellDesc.duration.ToString(duration), spellStats.RenderColor, spellStatsText.CurAlignments.Count > 0 ? spellStatsText.CurAlignments[0] : Alignments.Left, spellStatsText.Font ); spellStats.AddLineBreak(); } } spellStats.SizeToChildren(false, true); if (spellStats.Children.Count == 0) { mDescWindow.Name = "SpellDescWindow"; spellStats.Name = ""; spellStatsText.Name = ""; } //Load Again for positioning purposes. mDescWindow.LoadJsonUi(GameContentManager.UI.InGame, Graphics.Renderer.GetResolutionString()); spellDescText.IsHidden = true; spellStatsText.IsHidden = true; icon.Texture = Globals.ContentManager.GetTexture(GameContentManager.TextureType.Spell, spell.Icon); spellStats.SizeToChildren(false, 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); } }