1
1
mirror of https://github.com/OpenDiablo2/OpenDiablo2 synced 2024-06-16 12:35:22 +00:00

Character selection scene skeleton (#27)

* Fix issue with typing char name with no hero selected
* Character Selection begin...
* Add buttons and wire up Character selection scene
This commit is contained in:
Mike Bundy 2018-11-29 03:25:08 +00:00 committed by Tim Sarbin
parent 4021fc9793
commit 403864fdd1
6 changed files with 100 additions and 18 deletions

View File

@ -6,15 +6,16 @@
Medium,
Narrow,
Cancel,
Tall,
// Game UI
Run,
Menu,
MinipanelCharacter,
MinipanelInventory,
MinipanelSkill,
MinipanelAutomap,
MinipanelMessage,
MinipanelQuest,
MinipanelMenu
Menu,
MinipanelCharacter,
MinipanelInventory,
MinipanelSkill,
MinipanelAutomap,
MinipanelMessage,
MinipanelQuest,
MinipanelMenu
}
}

View File

@ -20,16 +20,17 @@ namespace OpenDiablo2.Common.Models
{eButtonType.Wide, new ButtonLayout { XSegments = 2, ResourceName = ResourcePaths.WideButtonBlank, PaletteName = Palettes.Units } },
{eButtonType.Medium, new ButtonLayout{ XSegments = 1, ResourceName=ResourcePaths.MediumButtonBlank, PaletteName = Palettes.Units } },
{eButtonType.Narrow, new ButtonLayout {XSegments = 1, ResourceName = ResourcePaths.NarrowButtonBlank,PaletteName = Palettes.Units } },
{eButtonType.Tall, new ButtonLayout {XSegments = 1, ResourceName = ResourcePaths.TallButtonBlank, PaletteName = Palettes.Units } },
{eButtonType.Cancel, new ButtonLayout {XSegments = 1, ResourceName = ResourcePaths.CancelButton,PaletteName = Palettes.Units } },
// Minipanel
{eButtonType.MinipanelCharacter, new ButtonLayout {XSegments = 1, ResourceName = ResourcePaths.MinipanelButton,PaletteName = Palettes.Units, BaseFrame = 0 } },
{eButtonType.MinipanelInventory, new ButtonLayout {XSegments = 1, ResourceName = ResourcePaths.MinipanelButton,PaletteName = Palettes.Units, BaseFrame = 2 } },
{eButtonType.MinipanelSkill, new ButtonLayout {XSegments = 1, ResourceName = ResourcePaths.MinipanelButton,PaletteName = Palettes.Units, BaseFrame = 4 } },
{eButtonType.MinipanelAutomap, new ButtonLayout {XSegments = 1, ResourceName = ResourcePaths.MinipanelButton,PaletteName = Palettes.Units, BaseFrame = 8 } },
{eButtonType.MinipanelMessage, new ButtonLayout {XSegments = 1, ResourceName = ResourcePaths.MinipanelButton,PaletteName = Palettes.Units, BaseFrame = 10 } },
{eButtonType.MinipanelQuest, new ButtonLayout {XSegments = 1, ResourceName = ResourcePaths.MinipanelButton,PaletteName = Palettes.Units, BaseFrame = 12 } },
{eButtonType.MinipanelMenu, new ButtonLayout {XSegments = 1, ResourceName = ResourcePaths.MinipanelButton,PaletteName = Palettes.Units, BaseFrame = 14 } },
{eButtonType.MinipanelCharacter, new ButtonLayout {XSegments = 1, ResourceName = ResourcePaths.MinipanelButton,PaletteName = Palettes.Units, BaseFrame = 0 } },
{eButtonType.MinipanelInventory, new ButtonLayout {XSegments = 1, ResourceName = ResourcePaths.MinipanelButton,PaletteName = Palettes.Units, BaseFrame = 2 } },
{eButtonType.MinipanelSkill, new ButtonLayout {XSegments = 1, ResourceName = ResourcePaths.MinipanelButton,PaletteName = Palettes.Units, BaseFrame = 4 } },
{eButtonType.MinipanelAutomap, new ButtonLayout {XSegments = 1, ResourceName = ResourcePaths.MinipanelButton,PaletteName = Palettes.Units, BaseFrame = 8 } },
{eButtonType.MinipanelMessage, new ButtonLayout {XSegments = 1, ResourceName = ResourcePaths.MinipanelButton,PaletteName = Palettes.Units, BaseFrame = 10 } },
{eButtonType.MinipanelQuest, new ButtonLayout {XSegments = 1, ResourceName = ResourcePaths.MinipanelButton,PaletteName = Palettes.Units, BaseFrame = 12 } },
{eButtonType.MinipanelMenu, new ButtonLayout {XSegments = 1, ResourceName = ResourcePaths.MinipanelButton,PaletteName = Palettes.Units, BaseFrame = 14 } },
{eButtonType.Run, new ButtonLayout {XSegments = 1, ResourceName = ResourcePaths.RunButton,PaletteName = Palettes.Units, Toggleable = true } },
{eButtonType.Menu, new ButtonLayout {XSegments = 1, ResourceName = ResourcePaths.MenuButton,PaletteName = Palettes.Units, Toggleable = true } },
};

View File

@ -74,6 +74,9 @@ namespace OpenDiablo2.Common
public static string CharacterSelectDruidForwardWalk = "data\\global\\ui\\FrontEnd\\druid\\DZFW.DC6";
public static string CharacterSelectDruidBackWalk = "data\\global\\ui\\FrontEnd\\druid\\DZBW.DC6";
// -- Character Selection
public static string CharacterSelectionBackground = "data\\global\\ui\\CharSelect\\characterselectscreenEXP.dc6";
// --- Game ---
public static string GamePanels = "data\\global\\ui\\PANEL\\800ctrlpnl7.dc6";
public static string GameGlobeOverlap = "data\\global\\ui\\PANEL\\overlap.DC6";
@ -102,6 +105,7 @@ namespace OpenDiablo2.Common
public static string CancelButton = "data\\global\\ui\\FrontEnd\\CancelButtonBlank.dc6";
public static string NarrowButtonBlank = "data\\global\\ui\\FrontEnd\\NarrowButtonBlank.dc6";
public static string TextBox2 = "data\\global\\ui\\FrontEnd\\textbox2.dc6";
public static string TallButtonBlank = "data\\global\\ui\\CharSelect\\TallButtonBlank.dc6";
// --- GAME UI ---
public static string MinipanelSmall = "data\\global\\ui\\PANEL\\minipanel_s.dc6";

View File

@ -0,0 +1,75 @@
using System;
using System.Drawing;
using OpenDiablo2.Common;
using OpenDiablo2.Common.Attributes;
using OpenDiablo2.Common.Enums;
using OpenDiablo2.Common.Interfaces;
namespace OpenDiablo2.Scenes
{
[Scene("Select Character")]
public sealed class CharacterSelection : IScene
{
static readonly log4net.ILog log =
log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
private readonly IRenderWindow renderWindow;
private readonly ISprite backgroundSprite;
private readonly IButton createNewCharacterButton, deleteCharacterButton, exitButton, okButton;
public CharacterSelection(IRenderWindow renderWindow,
ISceneManager sceneManager, ITextDictionary textDictionary, Func<eButtonType, IButton> createButton)
{
this.renderWindow = renderWindow;
backgroundSprite = renderWindow.LoadSprite(ResourcePaths.CharacterSelectionBackground, Palettes.Sky);
createNewCharacterButton = createButton(eButtonType.Tall);
// TODO: use strCreateNewCharacter -- need to get the text to split after 10 chars though.
createNewCharacterButton.Text = "Create New".ToUpper();
createNewCharacterButton.Location = new Point(33, 467);
createNewCharacterButton.OnActivate = () => sceneManager.ChangeScene("Select Hero Class");
deleteCharacterButton = createButton(eButtonType.Tall);
deleteCharacterButton.Text = textDictionary.Translate("strDelete");
deleteCharacterButton.Location = new Point(433, 467);
exitButton = createButton(eButtonType.Medium);
exitButton.Text = textDictionary.Translate("strExit");
exitButton.Location = new Point(33, 540);
exitButton.OnActivate = () => sceneManager.ChangeScene("Main Menu");
okButton = createButton(eButtonType.Medium);
okButton.Text = textDictionary.Translate("strOk");
okButton.Location = new Point(630, 540);
okButton.Enabled = false;
}
public void Update(long ms)
{
createNewCharacterButton.Update();
deleteCharacterButton.Update();
exitButton.Update();
okButton.Update();
}
public void Render()
{
renderWindow.Draw(backgroundSprite, 4, 3, 0);
createNewCharacterButton.Render();
deleteCharacterButton.Render();
exitButton.Render();
okButton.Render();
}
public void Dispose()
{
backgroundSprite.Dispose();
createNewCharacterButton.Dispose();
deleteCharacterButton.Dispose();
exitButton.Dispose();
okButton.Dispose();
}
}
}

View File

@ -53,6 +53,7 @@
<Compile Include="Game.cs" />
<Compile Include="MainMenu.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="CharacterSelection.cs" />
<Compile Include="SelectHeroClass.cs" />
</ItemGroup>
<ItemGroup>

View File

@ -211,7 +211,7 @@ namespace OpenDiablo2.Scenes
exitButton = createButton(eButtonType.Medium);
exitButton.Text = textDictionary.Translate("strExit");
exitButton.Location = new Point(30, 540);
exitButton.Location = new Point(33, 540);
exitButton.OnActivate = OnExitClicked;
okButton = createButton(eButtonType.Medium);
@ -245,7 +245,7 @@ namespace OpenDiablo2.Scenes
okButton.Enabled = false;
selectedHero = null;
sceneManager.ChangeScene("Main Menu");
sceneManager.ChangeScene("Select Character");
}
public void Render()