From ea5bd372799c00195bc7ff8e65b4556766e4d498 Mon Sep 17 00:00:00 2001 From: Joyce Date: Thu, 9 Apr 2020 12:31:32 +0200 Subject: [PATCH] Updated the hair patch for 6.2 Made some methods more generic as well, so they can be re-used by future custom layers! --- Intersect (Core)/Config/EquipmentOptions.cs | 2 + Intersect (Core)/Enums/CustomSpriteLayers.cs | 11 + Intersect (Core)/GameObjects/ClassBase.cs | 30 + .../Events/Commands/EventCommands.cs | 9 + Intersect (Core)/GameObjects/Events/Enums.cs | 3 + Intersect (Core)/Intersect (Core).csproj | 2 + .../Packets/Client/CreateCharacterPacket.cs | 5 +- .../Network/Packets/Server/CharacterPacket.cs | 6 +- .../Server/CustomSpriteLayersPacket.cs | 19 + Intersect (Core)/Utilities/DatabaseUtils.cs | 31 + .../File Management/GameContentManager.cs | 14 + Intersect.Client/Entities/Entity.cs | 8 + Intersect.Client/Entities/Player.cs | 157 + .../Game/Character/CharacterWindow.cs | 11 +- .../Interface/Game/EntityPanel/EntityBox.cs | 9 +- .../Interface/Menu/CreateCharacterWindow.cs | 212 +- .../Interface/Menu/SelectCharacterWindow.cs | 28 +- .../File Management/MonoContentManager.cs | 5 + Intersect.Client/Networking/PacketHandler.cs | 15 +- Intersect.Client/Networking/PacketSender.cs | 4 +- Intersect.Editor/Content/ContentManager.cs | 18 + .../Forms/Editors/Events/CommandPrinter.cs | 5 + .../EventCommand_ChangeHair.Designer.cs | 142 + .../Event Commands/EventCommand_ChangeHair.cs | 87 + .../EventCommand_ChangeHair.resx | 128 + .../Forms/Editors/Events/frmEvent.Designer.cs | 2389 +++--- .../Forms/Editors/Events/frmEvent.cs | 8 + .../Forms/Editors/frmClass.Designer.cs | 372 +- Intersect.Editor/Forms/Editors/frmClass.cs | 145 +- Intersect.Editor/Forms/Editors/frmClass.resx | 93 +- Intersect.Editor/Intersect.Editor.csproj | 9 + Intersect.Editor/Localization/Strings.cs | 20 + .../Entities/Events/CommandProcessing.cs | 13 + Intersect.Server/Entities/Player.cs | 10 + Intersect.Server/Intersect.Server.csproj | 8 + ...2160828_PlayerHair_PlayerEdits.Designer.cs | 513 ++ .../20200402160828_PlayerHair_PlayerEdits.cs | 22 + ...2173703_PlayerHair_PlayerEdits.Designer.cs | 514 ++ .../20200402173703_PlayerHair_PlayerEdits.cs | 22 + ...02142818_PlayerHair_ClassEdits.Designer.cs | 1039 +++ .../20200402142818_PlayerHair_ClassEdits.cs | 22 + .../Game/GameContextModelSnapshot.cs | 3 + .../Migrations/PlayerContextModelSnapshot.cs | 3 + Intersect.Server/Networking/PacketHandler.cs | 6 + Intersect.Server/Networking/PacketSender.cs | 37 +- hair.patch | 7355 +++++++++++++++++ 46 files changed, 12211 insertions(+), 1353 deletions(-) create mode 100644 Intersect (Core)/Enums/CustomSpriteLayers.cs create mode 100644 Intersect (Core)/Network/Packets/Server/CustomSpriteLayersPacket.cs create mode 100644 Intersect.Editor/Forms/Editors/Events/Event Commands/EventCommand_ChangeHair.Designer.cs create mode 100644 Intersect.Editor/Forms/Editors/Events/Event Commands/EventCommand_ChangeHair.cs create mode 100644 Intersect.Editor/Forms/Editors/Events/Event Commands/EventCommand_ChangeHair.resx create mode 100644 Intersect.Server/Migrations/20200402160828_PlayerHair_PlayerEdits.Designer.cs create mode 100644 Intersect.Server/Migrations/20200402160828_PlayerHair_PlayerEdits.cs create mode 100644 Intersect.Server/Migrations/20200402173703_PlayerHair_PlayerEdits.Designer.cs create mode 100644 Intersect.Server/Migrations/20200402173703_PlayerHair_PlayerEdits.cs create mode 100644 Intersect.Server/Migrations/Game/20200402142818_PlayerHair_ClassEdits.Designer.cs create mode 100644 Intersect.Server/Migrations/Game/20200402142818_PlayerHair_ClassEdits.cs create mode 100644 hair.patch diff --git a/Intersect (Core)/Config/EquipmentOptions.cs b/Intersect (Core)/Config/EquipmentOptions.cs index 91ae727a..73375713 100644 --- a/Intersect (Core)/Config/EquipmentOptions.cs +++ b/Intersect (Core)/Config/EquipmentOptions.cs @@ -22,6 +22,8 @@ public class EquipmentOptions "Boots", }; + public string HairSlot { get; set; } = "Helmet"; + public List ToolTypes = new List() { "Axe", diff --git a/Intersect (Core)/Enums/CustomSpriteLayers.cs b/Intersect (Core)/Enums/CustomSpriteLayers.cs new file mode 100644 index 00000000..f93b624b --- /dev/null +++ b/Intersect (Core)/Enums/CustomSpriteLayers.cs @@ -0,0 +1,11 @@ +namespace Intersect.Enums { + + public enum CustomSpriteLayers { + + Hair = 0, + + CustomCount + + } + +} diff --git a/Intersect (Core)/GameObjects/ClassBase.cs b/Intersect (Core)/GameObjects/ClassBase.cs index 3301f59c..d0c9b7ea 100644 --- a/Intersect (Core)/GameObjects/ClassBase.cs +++ b/Intersect (Core)/GameObjects/ClassBase.cs @@ -38,6 +38,8 @@ public class ClassBase : DatabaseObject, IFolderable [NotMapped] public List Sprites = new List(); + [NotMapped] public Dictionary> CustomSpriteLayers = new Dictionary>(); + [NotMapped] public int[] StatIncrease = new int[(int) Stats.StatCount]; [NotMapped] public int[] VitalIncrease = new int[(int) Vitals.VitalCount]; @@ -53,6 +55,12 @@ public ClassBase(Guid id) : base(id) ExperienceCurve.Calculate(1); BaseExp = DEFAULT_BASE_EXPERIENCE; ExpIncrease = DEFAULT_EXPERIENCE_INCREASE; + + // Init the empty lists, stop getting null references. + for (int i = 0; i < (int)Enums.CustomSpriteLayers.CustomCount; i++) + { + CustomSpriteLayers[(Enums.CustomSpriteLayers)i] = new List(); + } } //Parameterless constructor for EF @@ -64,6 +72,12 @@ public ClassBase() ExperienceCurve.Calculate(1); BaseExp = DEFAULT_BASE_EXPERIENCE; ExpIncrease = DEFAULT_EXPERIENCE_INCREASE; + + // Init the empty lists, stop gettng null references. + for (int i = 0; i < (int)Enums.CustomSpriteLayers.CustomCount; i++) + { + CustomSpriteLayers[(Enums.CustomSpriteLayers)i] = new List(); + } } [Column("AttackAnimation")] @@ -194,6 +208,15 @@ public string JsonSprites protected set => Sprites = JsonConvert.DeserializeObject>(value); } + //Sprites + [JsonIgnore] + [Column("CustomSpriteLayers")] + public string JsonCustomSpriteLayers + { + get => JsonConvert.SerializeObject(CustomSpriteLayers); + protected set => CustomSpriteLayers = value != null ? JsonConvert.DeserializeObject>>(value) : CustomSpriteLayers; // Because a migrated database doesn't have this, set to default value if no data exists. + } + //Stat Increases (per level) [JsonIgnore] [Column("StatIncreases")] @@ -293,4 +316,11 @@ public class ClassSprite } + public class CustomSpriteLayer + { + public string Texture = ""; + + public Gender Gender; + } + } diff --git a/Intersect (Core)/GameObjects/Events/Commands/EventCommands.cs b/Intersect (Core)/GameObjects/Events/Commands/EventCommands.cs index e1d5e334..d126eab7 100644 --- a/Intersect (Core)/GameObjects/Events/Commands/EventCommands.cs +++ b/Intersect (Core)/GameObjects/Events/Commands/EventCommands.cs @@ -518,6 +518,15 @@ public class ChangeFaceCommand : EventCommand } + public class ChangeHairCommand : EventCommand + { + + public override EventCommandType Type { get; } = EventCommandType.ChangeHair; + + public string Hair { get; set; } = ""; + + } + public class ChangeGenderCommand : EventCommand { diff --git a/Intersect (Core)/GameObjects/Events/Enums.cs b/Intersect (Core)/GameObjects/Events/Enums.cs index a5d59d83..302965da 100644 --- a/Intersect (Core)/GameObjects/Events/Enums.cs +++ b/Intersect (Core)/GameObjects/Events/Enums.cs @@ -215,6 +215,9 @@ public enum EventCommandType //Player Label PlayerLabel, + //Change Hair + ChangeHair, + } } diff --git a/Intersect (Core)/Intersect (Core).csproj b/Intersect (Core)/Intersect (Core).csproj index faa4aba3..a44c0712 100644 --- a/Intersect (Core)/Intersect (Core).csproj +++ b/Intersect (Core)/Intersect (Core).csproj @@ -221,6 +221,7 @@ + @@ -328,6 +329,7 @@ + diff --git a/Intersect (Core)/Network/Packets/Client/CreateCharacterPacket.cs b/Intersect (Core)/Network/Packets/Client/CreateCharacterPacket.cs index 2e76ead6..fbe211dd 100644 --- a/Intersect (Core)/Network/Packets/Client/CreateCharacterPacket.cs +++ b/Intersect (Core)/Network/Packets/Client/CreateCharacterPacket.cs @@ -10,11 +10,12 @@ namespace Intersect.Network.Packets.Client public class CreateCharacterPacket : CerasPacket { - public CreateCharacterPacket(string name, Guid classId, int sprite) + public CreateCharacterPacket(string name, Guid classId, int sprite, int[] customSpriteLayers) { Name = name; ClassId = classId; Sprite = sprite; + CustomSpriteLayers = customSpriteLayers; } public string Name { get; set; } @@ -23,6 +24,8 @@ public CreateCharacterPacket(string name, Guid classId, int sprite) public int Sprite { get; set; } + public int[] CustomSpriteLayers { get; set; } + public override Dictionary> Sanitize() { base.Sanitize(); diff --git a/Intersect (Core)/Network/Packets/Server/CharacterPacket.cs b/Intersect (Core)/Network/Packets/Server/CharacterPacket.cs index 44286440..4f0a60a1 100644 --- a/Intersect (Core)/Network/Packets/Server/CharacterPacket.cs +++ b/Intersect (Core)/Network/Packets/Server/CharacterPacket.cs @@ -13,7 +13,8 @@ public class CharacterPacket : CerasPacket string face, int level, string className, - string[] equipment + string[] equipment, + string[] customspritelayers ) { Id = id; @@ -23,6 +24,7 @@ string[] equipment Level = level; ClassName = className; Equipment = equipment; + CustomSpriteLayers = customspritelayers; } public Guid Id { get; set; } @@ -39,6 +41,8 @@ string[] equipment public string[] Equipment { get; set; } + public string[] CustomSpriteLayers { get; set; } + } } diff --git a/Intersect (Core)/Network/Packets/Server/CustomSpriteLayersPacket.cs b/Intersect (Core)/Network/Packets/Server/CustomSpriteLayersPacket.cs new file mode 100644 index 00000000..7715c3de --- /dev/null +++ b/Intersect (Core)/Network/Packets/Server/CustomSpriteLayersPacket.cs @@ -0,0 +1,19 @@ +using System; + +namespace Intersect.Network.Packets.Server +{ + + public class CustomSpriteLayersPacket : CerasPacket + { + + public CustomSpriteLayersPacket(Guid entityId, string[] customSpriteLayers) + { + EntityId = entityId; + CustomSpriteLayers = customSpriteLayers; + } + + public string[] CustomSpriteLayers { get; set; } + + public Guid EntityId { get; set; } + } +} diff --git a/Intersect (Core)/Utilities/DatabaseUtils.cs b/Intersect (Core)/Utilities/DatabaseUtils.cs index 32db6e37..ac362d37 100644 --- a/Intersect (Core)/Utilities/DatabaseUtils.cs +++ b/Intersect (Core)/Utilities/DatabaseUtils.cs @@ -25,6 +25,20 @@ public static int[] LoadIntArray(string json, int arrayLen) return output; } + public static string[] LoadStringArray(string json, int arrayLen) { + var output = new string[arrayLen]; + var jsonList = new List(); + if (json != null) { + jsonList = JsonConvert.DeserializeObject>(json); + } + + for (var i = 0; i < arrayLen && i < jsonList.Count; i++) { + output[i] = jsonList[i]; + } + + return output; + } + public static void LoadIntArray(ref int[] output, string json, int arrayLen) { var jsonList = JsonConvert.DeserializeObject>(json); @@ -57,6 +71,23 @@ public static string SaveIntArray(int[] array, int arrayLen) return JsonConvert.SerializeObject(output); } + public static string SaveStringArray(string[] array, int arrayLen) { + if (array == null) { + array = new string[arrayLen]; + } + + var output = new List(); + for (var i = 0; i < arrayLen; i++) { + if (i < array.Length) { + output.Add(array[i]); + } else { + output.Add(string.Empty); + } + } + + return JsonConvert.SerializeObject(output); + } + public static string SaveColor(Color color) { if (color == null) diff --git a/Intersect.Client.Framework/File Management/GameContentManager.cs b/Intersect.Client.Framework/File Management/GameContentManager.cs index ffdc0f98..3f120208 100644 --- a/Intersect.Client.Framework/File Management/GameContentManager.cs +++ b/Intersect.Client.Framework/File Management/GameContentManager.cs @@ -40,6 +40,8 @@ public enum TextureType Misc, + Hair + } public enum UI @@ -57,6 +59,8 @@ public enum UI protected Dictionary mEntityDict = new Dictionary(); + protected Dictionary mHairDict = new Dictionary(); + protected Dictionary mFaceDict = new Dictionary(); protected Dictionary mFogDict = new Dictionary(); @@ -100,6 +104,7 @@ public void LoadAll() { LoadTexturePacks(); LoadEntities(); + LoadHairs(); LoadItems(); LoadAnimations(); LoadSpells(); @@ -122,6 +127,8 @@ public void LoadAll() public abstract void LoadEntities(); + public abstract void LoadHairs(); + public abstract void LoadSpells(); public abstract void LoadAnimations(); @@ -194,6 +201,8 @@ public string[] GetTextureNames(TextureType type) return mGuiDict.Keys.ToArray(); case TextureType.Misc: return mMiscDict.Keys.ToArray(); + case TextureType.Hair: + return mHairDict.Keys.ToArray(); } return null; @@ -257,6 +266,11 @@ public virtual GameTexture GetTexture(TextureType type, string name) case TextureType.Misc: textureDict = mMiscDict; + break; + + case TextureType.Hair: + textureDict = mHairDict; + break; default: return null; diff --git a/Intersect.Client/Entities/Entity.cs b/Intersect.Client/Entities/Entity.cs index 1ad7b70f..f8e9a897 100644 --- a/Intersect.Client/Entities/Entity.cs +++ b/Intersect.Client/Entities/Entity.cs @@ -979,6 +979,14 @@ public virtual void Draw() DrawEquipment(item.FemalePaperdoll, alpha); } } + else + { + // Render a hairstyle here if we're currently rendering the desired hair slot without any equipment in it. + if (this is Player && paperdoll == Options.EquipmentSlots[Options.EquipmentSlots.IndexOf(Options.Equipment.HairSlot)]) + { + ((Player)this).DrawCustomSpriteLayer(CustomSpriteLayers.Hair, GameContentManager.TextureType.Hair, alpha); + } + } } } } diff --git a/Intersect.Client/Entities/Player.cs b/Intersect.Client/Entities/Player.cs index e7af06e0..a7a4e40a 100644 --- a/Intersect.Client/Entities/Player.cs +++ b/Intersect.Client/Entities/Player.cs @@ -5,6 +5,9 @@ using Intersect.Client.Core.Controls; using Intersect.Client.Entities.Events; using Intersect.Client.Entities.Projectiles; +using Intersect.Client.Framework.File_Management; +using Intersect.Client.Framework.GenericClasses; +using Intersect.Client.Framework.Graphics; using Intersect.Client.General; using Intersect.Client.Interface.Game; using Intersect.Client.Interface.Game.EntityPanel; @@ -57,6 +60,11 @@ public class Player : Entity public Guid TargetIndex; public int TargetType; + + protected string[] mMyCustomSpriteLayers { get; set; } = new string[(int)Enums.CustomSpriteLayers.CustomCount]; + + public GameTexture[] CustomSpriteLayersTexture { get; set; } = new GameTexture[(int)Enums.CustomSpriteLayers.CustomCount]; + public Dictionary CustomSpriteLayersAnimationTexture { get; set; } = new Dictionary(); public Player(Guid id, PlayerEntityPacket packet) : base(id, packet) { @@ -65,6 +73,11 @@ public Player(Guid id, PlayerEntityPacket packet) : base(id, packet) Hotbar[i] = new HotbarInstance(); } + for (var i = 0; i <= (int)SpriteAnimations.Weapon; i++) + { + CustomSpriteLayersAnimationTexture[(SpriteAnimations)i] = new GameTexture[(int)Enums.CustomSpriteLayers.CustomCount]; + } + mRenderPriority = 2; } @@ -83,6 +96,33 @@ public List Party } } + public virtual string[] CustomSpriteLayers + { + get => mMyCustomSpriteLayers; + set + { + mMyCustomSpriteLayers = value; + CustomSpriteLayersTexture = GetCustomSpriteTextures(value); + } + } + + private GameTexture[] GetCustomSpriteTextures(string[] customSpriteLayers) + { + var textures = new GameTexture[(int)Enums.CustomSpriteLayers.CustomCount]; + for (int i=0; i < (int)Enums.CustomSpriteLayers.CustomCount; i++) + { + switch (i) + { + case (int)Enums.CustomSpriteLayers.Hair: + textures[i] = Globals.ContentManager.GetTexture(GameContentManager.TextureType.Hair, customSpriteLayers[i]); + LoadCustomSpriteLayerAnimationTextures(customSpriteLayers[i], Enums.CustomSpriteLayers.Hair, GameContentManager.TextureType.Hair); + break; + } + } + + return textures; + } + public override Guid CurrentMap { get => base.CurrentMap; @@ -1873,6 +1913,123 @@ public void DrawTargets() } } + public void LoadCustomSpriteLayerAnimationTextures(string tex, CustomSpriteLayers layer, GameContentManager.TextureType textype) + { + var file = System.IO.Path.GetFileNameWithoutExtension(tex); + var ext = System.IO.Path.GetExtension(tex); + + foreach (var anim in Enum.GetValues(typeof(SpriteAnimations))) + { + CustomSpriteLayersAnimationTexture[(SpriteAnimations)anim][(int)layer] = Globals.ContentManager.GetTexture(textype, $@"{file}_{anim}{ext}"); + } + } + + public virtual void DrawCustomSpriteLayer(CustomSpriteLayers layer, GameContentManager.TextureType textype, int alpha) + { + var map = MapInstance.Get(CurrentMap); + if (map == null) + { + return; + } + + if (CustomSpriteLayersAnimationTexture[SpriteAnimation][(int)layer] == null && CustomSpriteLayersTexture[(int)layer] == null) + { + return; + } + + var srcRectangle = new FloatRect(); + var destRectangle = new FloatRect(); + var d = 0; + + var texture = CustomSpriteLayersAnimationTexture[SpriteAnimation][(int)layer] ?? CustomSpriteLayersTexture[(int)layer]; + + if (texture != null) + { + if (texture.GetHeight() / 4 > Options.TileHeight) + { + destRectangle.X = map.GetX() + X * Options.TileWidth + OffsetX + Options.TileWidth / 2; + destRectangle.Y = GetCenterPos().Y - texture.GetHeight() / 8; + } + else + { + destRectangle.X = map.GetX() + X * Options.TileWidth + OffsetX + Options.TileWidth / 2; + destRectangle.Y = map.GetY() + Y * Options.TileHeight + OffsetY; + } + + destRectangle.X -= texture.GetWidth() / 8; + switch (Dir) + { + case 0: + d = 3; + + break; + case 1: + d = 0; + + break; + case 2: + d = 1; + + break; + case 3: + d = 2; + + break; + default: + Dir = 0; + d = 3; + + break; + } + + destRectangle.X = (int)Math.Ceiling(destRectangle.X); + destRectangle.Y = (int)Math.Ceiling(destRectangle.Y); + if (Options.AnimatedSprites.Contains(CustomSpriteLayers[(int)layer].ToLower())) + { + srcRectangle = new FloatRect( + AnimationFrame * (int)texture.GetWidth() / 4, d * (int)texture.GetHeight() / 4, + (int)texture.GetWidth() / 4, (int)texture.GetHeight() / 4 + ); + } + else + { + if (SpriteAnimation == SpriteAnimations.Normal) + { + var attackTime = CalculateAttackTime(); + if (AttackTimer - CalculateAttackTime() / 2 > Globals.System.GetTimeMs() || Blocking) + { + srcRectangle = new FloatRect( + 3 * (int)texture.GetWidth() / 4, d * (int)texture.GetHeight() / 4, + (int)texture.GetWidth() / 4, (int)texture.GetHeight() / 4 + ); + } + else + { + //Restore Original Attacking/Blocking Code + srcRectangle = new FloatRect( + WalkFrame * (int)texture.GetWidth() / 4, d * (int)texture.GetHeight() / 4, + (int)texture.GetWidth() / 4, (int)texture.GetHeight() / 4 + ); + } + } + else + { + srcRectangle = new FloatRect( + SpriteFrame * (int)texture.GetWidth() / 4, d * (int)texture.GetHeight() / 4, + (int)texture.GetWidth() / 4, (int)texture.GetHeight() / 4 + ); + } + } + + destRectangle.Width = srcRectangle.Width; + destRectangle.Height = srcRectangle.Height; + + Graphics.DrawGameTexture( + texture, srcRectangle, destRectangle, new Color(alpha, 255, 255, 255) + ); + } + } + } public class FriendInstance diff --git a/Intersect.Client/Interface/Game/Character/CharacterWindow.cs b/Intersect.Client/Interface/Game/Character/CharacterWindow.cs index ce0cf2ee..26765ad2 100644 --- a/Intersect.Client/Interface/Game/Character/CharacterWindow.cs +++ b/Intersect.Client/Interface/Game/Character/CharacterWindow.cs @@ -197,6 +197,7 @@ public void Update() for (var z = 0; z < Options.PaperdollOrder[1].Count; z++) { var paperdoll = ""; + var type = GameContentManager.TextureType.Paperdoll; if (Options.EquipmentSlots.IndexOf(Options.PaperdollOrder[1][z]) > -1) { var equipment = Globals.Me.MyEquipment; @@ -231,6 +232,12 @@ public void Update() Align.Center(PaperdollPanels[z]); } + if (paperdoll == "" && Options.PaperdollOrder[1][z] == Options.Equipment.HairSlot) + { + paperdoll = Globals.Me.CustomSpriteLayers[(int)Enums.CustomSpriteLayers.Hair]; + type = GameContentManager.TextureType.Hair; + } + if (string.IsNullOrWhiteSpace(paperdoll) && !string.IsNullOrWhiteSpace(PaperdollTextures[z]) && Options.PaperdollOrder[1][z] != "Player") { PaperdollPanels[z].Texture = null; @@ -240,7 +247,7 @@ public void Update() else if (paperdoll != "" && paperdoll != PaperdollTextures[z]) { var paperdollTex = Globals.ContentManager.GetTexture( - GameContentManager.TextureType.Paperdoll, paperdoll + type, paperdoll ); PaperdollPanels[z].Texture = paperdollTex; @@ -267,7 +274,7 @@ public void Update() PaperdollPanels[z].Show(); PaperdollTextures[z] = paperdoll; - } + } } } else if (Globals.Me.MySprite != mCurrentSprite && Globals.Me.Face != mCurrentSprite) diff --git a/Intersect.Client/Interface/Game/EntityPanel/EntityBox.cs b/Intersect.Client/Interface/Game/EntityPanel/EntityBox.cs index 1e2cd8db..eee8814b 100644 --- a/Intersect.Client/Interface/Game/EntityPanel/EntityBox.cs +++ b/Intersect.Client/Interface/Game/EntityPanel/EntityBox.cs @@ -747,6 +747,7 @@ private void UpdateImage() for (var z = 0; z < Options.PaperdollOrder[1].Count; z++) { var paperdoll = ""; + var type = GameContentManager.TextureType.Paperdoll; if (Options.EquipmentSlots.IndexOf(Options.PaperdollOrder[1][z]) > -1 && equipment.Length == Options.EquipmentSlots.Count) { @@ -774,6 +775,12 @@ private void UpdateImage() continue; } + if (MyEntity is Player && paperdoll == "" && Options.PaperdollOrder[1][z] == Options.Equipment.HairSlot) + { + paperdoll = ((Player)MyEntity).CustomSpriteLayers[(int)Enums.CustomSpriteLayers.Hair]; + type = GameContentManager.TextureType.Hair; + } + if (paperdoll == "" && PaperdollTextures[n] != "") { PaperdollPanels[n].Texture = null; @@ -783,7 +790,7 @@ private void UpdateImage() else if (paperdoll != "" && paperdoll != PaperdollTextures[n]) { var paperdollTex = Globals.ContentManager.GetTexture( - GameContentManager.TextureType.Paperdoll, paperdoll + type, paperdoll ); PaperdollPanels[n].Texture = paperdollTex; diff --git a/Intersect.Client/Interface/Menu/CreateCharacterWindow.cs b/Intersect.Client/Interface/Menu/CreateCharacterWindow.cs index 43b8750b..6bdaf0b7 100644 --- a/Intersect.Client/Interface/Menu/CreateCharacterWindow.cs +++ b/Intersect.Client/Interface/Menu/CreateCharacterWindow.cs @@ -26,6 +26,8 @@ public class CreateCharacterWindow private ImagePanel mCharacterPortrait; + private ImagePanel mCharacterHair; + //Image private string mCharacterPortraitImg = ""; @@ -48,6 +50,8 @@ public class CreateCharacterWindow private int mDisplaySpriteIndex = -1; + private int[] mDisplayCustomSpriteLayerIndex = new int[(int)Enums.CustomSpriteLayers.CustomCount]; + private LabeledCheckBox mFemaleChk; private List> mFemaleSprites = new List>(); @@ -68,10 +72,19 @@ public class CreateCharacterWindow //Class Info private List> mMaleSprites = new List>(); + private Dictionary>> mMaleCustomSpriteLayers = new Dictionary>>(); + + private Dictionary>> mFemaleCustomSpriteLayers = new Dictionary>>(); + private Button mNextSpriteButton; private Button mPrevSpriteButton; + private Button mNextHairButton; + + private Button mPrevHairButton; + + private SelectCharacterWindow mSelectCharacterWindow; //Init @@ -133,6 +146,10 @@ SelectCharacterWindow selectCharacterWindow mCharacterPortrait = new ImagePanel(mCharacterContainer, "CharacterPortait"); mCharacterPortrait.SetSize(48, 48); + // Hair Sprite + mCharacterHair = new ImagePanel(mCharacterContainer, "CharacterHair"); + mCharacterHair.SetSize(48, 48); + //Next Sprite Button mNextSpriteButton = new Button(mCharacterContainer, "NextSpriteButton"); mNextSpriteButton.Clicked += _nextSpriteButton_Clicked; @@ -141,6 +158,14 @@ SelectCharacterWindow selectCharacterWindow mPrevSpriteButton = new Button(mCharacterContainer, "PreviousSpriteButton"); mPrevSpriteButton.Clicked += _prevSpriteButton_Clicked; + //Next Hair Button + mNextHairButton = new Button(mCharacterContainer, "NextHairButton"); + mNextHairButton.Clicked += _nextHairButton_Clicked; + + //Prev Hair Button + mPrevHairButton = new Button(mCharacterContainer, "PreviousHairButton"); + mPrevHairButton.Clicked += _prevHairButton_Clicked; + //Class Background mGenderBackground = new ImagePanel(mCharCreationPanel, "GenderPanel"); @@ -218,6 +243,7 @@ private void UpdateDisplay() if (GetClass() != null && mDisplaySpriteIndex != -1) { mCharacterPortrait.IsHidden = false; + mCharacterHair.IsHidden = false; if (GetClass().Sprites.Count > 0) { if (mMaleChk.IsChecked) @@ -232,6 +258,17 @@ private void UpdateDisplay() GameContentManager.TextureType.Entity, mMaleSprites[mDisplaySpriteIndex].Value.Sprite ); + if (mDisplayCustomSpriteLayerIndex[(int)Enums.CustomSpriteLayers.Hair] != -1) + { + mCharacterHair.Texture = Globals.ContentManager.GetTexture( + GameContentManager.TextureType.Hair, mMaleCustomSpriteLayers[Enums.CustomSpriteLayers.Hair][mDisplayCustomSpriteLayerIndex[(int)Enums.CustomSpriteLayers.Hair]].Value.Texture + ); + } + else + { + mCharacterHair.Texture = null; + } + isFace = false; } } @@ -247,6 +284,17 @@ private void UpdateDisplay() GameContentManager.TextureType.Entity, mFemaleSprites[mDisplaySpriteIndex].Value.Sprite ); + if (mDisplayCustomSpriteLayerIndex[(int)Enums.CustomSpriteLayers.Hair] != -1) + { + mCharacterHair.Texture = Globals.ContentManager.GetTexture( + GameContentManager.TextureType.Hair, mFemaleCustomSpriteLayers[Enums.CustomSpriteLayers.Hair][mDisplayCustomSpriteLayerIndex[(int)Enums.CustomSpriteLayers.Hair]].Value.Texture + ); + } + else + { + mCharacterHair.Texture = null; + } + isFace = false; } } @@ -281,14 +329,28 @@ private void UpdateDisplay() mCharacterPortrait.Texture.GetHeight() / 4 ); + if (mCharacterHair.Texture != null) mCharacterHair.SetTextureRect( + 0, 0, mCharacterHair.Texture.GetWidth() / 4, + mCharacterHair.Texture.GetHeight() / 4 + ); + mCharacterPortrait.SetSize( mCharacterPortrait.Texture.GetWidth() / 4, mCharacterPortrait.Texture.GetHeight() / 4 ); + if (mCharacterHair.Texture != null) mCharacterHair.SetSize( + mCharacterHair.Texture.GetWidth() / 4, mCharacterHair.Texture.GetHeight() / 4 + ); + mCharacterPortrait.SetPosition( mCharacterContainer.Width / 2 - mCharacterPortrait.Width / 2, mCharacterContainer.Height / 2 - mCharacterPortrait.Height / 2 ); + + if (mCharacterHair.Texture != null) mCharacterHair.SetPosition( + mCharacterContainer.Width / 2 - mCharacterHair.Width / 2, + mCharacterContainer.Height / 2 - mCharacterHair.Height / 2 + ); } } } @@ -296,6 +358,7 @@ private void UpdateDisplay() else { mCharacterPortrait.IsHidden = true; + mCharacterHair.IsHidden = true; } } @@ -333,6 +396,12 @@ private void LoadClass() mMaleSprites.Clear(); mFemaleSprites.Clear(); mDisplaySpriteIndex = -1; + + for (var i = 0; i < (int)Enums.CustomSpriteLayers.CustomCount; i++) + { + mDisplayCustomSpriteLayerIndex[i] = -1; + } + if (cls != null) { for (var i = 0; i < cls.Sprites.Count; i++) @@ -346,6 +415,28 @@ private void LoadClass() mFemaleSprites.Add(new KeyValuePair(i, cls.Sprites[i])); } } + + // Clear our custom sprite layers if they exist, and fill them again. + mMaleCustomSpriteLayers.Clear(); + mFemaleCustomSpriteLayers.Clear(); + for (var i = 0; i < (int)Enums.CustomSpriteLayers.CustomCount; i++) + { + var layer = (Enums.CustomSpriteLayers)i; + mMaleCustomSpriteLayers.Add(layer, new List>()); + mFemaleCustomSpriteLayers.Add(layer, new List>()); + for (var n = 0; n < cls.CustomSpriteLayers[layer].Count; n++) + { + if (cls.CustomSpriteLayers[layer][n].Gender == 0) + { + mMaleCustomSpriteLayers[layer].Add(new KeyValuePair(n, cls.CustomSpriteLayers[layer][n])); + } + else + { + mFemaleCustomSpriteLayers[layer].Add(new KeyValuePair(n, cls.CustomSpriteLayers[layer][n])); + } + } + } + } ResetSprite(); @@ -355,8 +446,11 @@ private void ResetSprite() { mNextSpriteButton.IsHidden = true; mPrevSpriteButton.IsHidden = true; + mNextHairButton.IsHidden = true; + mPrevHairButton.IsHidden = true; if (mMaleChk.IsChecked) { + // Sprite if (mMaleSprites.Count > 0) { mDisplaySpriteIndex = 0; @@ -370,9 +464,25 @@ private void ResetSprite() { mDisplaySpriteIndex = -1; } + + // Hair + if (mMaleCustomSpriteLayers[Enums.CustomSpriteLayers.Hair].Count > 0) + { + mDisplayCustomSpriteLayerIndex[(int)Enums.CustomSpriteLayers.Hair] = 0; + if (mMaleCustomSpriteLayers[Enums.CustomSpriteLayers.Hair].Count > 1) + { + mNextHairButton.IsHidden = false; + mPrevHairButton.IsHidden = false; + } + } + else + { + mDisplayCustomSpriteLayerIndex[(int)Enums.CustomSpriteLayers.Hair] = -1; + } } else { + // Sprite if (mFemaleSprites.Count > 0) { mDisplaySpriteIndex = 0; @@ -386,6 +496,20 @@ private void ResetSprite() { mDisplaySpriteIndex = -1; } + // Hair + if (mFemaleCustomSpriteLayers[Enums.CustomSpriteLayers.Hair].Count > 0) + { + mDisplayCustomSpriteLayerIndex[(int)Enums.CustomSpriteLayers.Hair] = 0; + if (mFemaleCustomSpriteLayers[Enums.CustomSpriteLayers.Hair].Count > 1) + { + mNextHairButton.IsHidden = false; + mPrevHairButton.IsHidden = false; + } + } + else + { + mDisplayCustomSpriteLayerIndex[(int)Enums.CustomSpriteLayers.Hair] = -1; + } } } @@ -459,6 +583,75 @@ private void _nextSpriteButton_Clicked(Base sender, ClickedEventArgs arguments) UpdateDisplay(); } + private void _prevHairButton_Clicked(Base sender, ClickedEventArgs arguments) + { + mDisplayCustomSpriteLayerIndex[(int)Enums.CustomSpriteLayers.Hair]--; + if (mMaleChk.IsChecked) + { + if (mMaleCustomSpriteLayers[Enums.CustomSpriteLayers.Hair].Count > 0) + { + if (mDisplayCustomSpriteLayerIndex[(int)Enums.CustomSpriteLayers.Hair] == -1) + { + mDisplayCustomSpriteLayerIndex[(int)Enums.CustomSpriteLayers.Hair] = mMaleCustomSpriteLayers[Enums.CustomSpriteLayers.Hair].Count - 1; + } + } + else + { + mDisplayCustomSpriteLayerIndex[(int)Enums.CustomSpriteLayers.Hair] = -1; + } + } + else + { + if (mFemaleCustomSpriteLayers[Enums.CustomSpriteLayers.Hair].Count > 0) + { + if (mDisplayCustomSpriteLayerIndex[(int)Enums.CustomSpriteLayers.Hair] == -1) + { + mDisplayCustomSpriteLayerIndex[(int)Enums.CustomSpriteLayers.Hair] = mFemaleCustomSpriteLayers[Enums.CustomSpriteLayers.Hair].Count - 1; + } + } + else + { + mDisplayCustomSpriteLayerIndex[(int)Enums.CustomSpriteLayers.Hair] = -1; + } + } + + UpdateDisplay(); + } + + private void _nextHairButton_Clicked(Base sender, ClickedEventArgs arguments) { + mDisplayCustomSpriteLayerIndex[(int)Enums.CustomSpriteLayers.Hair]++; + if (mMaleChk.IsChecked) + { + if (mMaleCustomSpriteLayers[Enums.CustomSpriteLayers.Hair].Count > 0) + { + if (mDisplayCustomSpriteLayerIndex[(int)Enums.CustomSpriteLayers.Hair] >= mMaleCustomSpriteLayers[Enums.CustomSpriteLayers.Hair].Count) + { + mDisplayCustomSpriteLayerIndex[(int)Enums.CustomSpriteLayers.Hair] = 0; + } + } + else + { + mDisplayCustomSpriteLayerIndex[(int)Enums.CustomSpriteLayers.Hair] = -1; + } + } + else + { + if (mFemaleCustomSpriteLayers[Enums.CustomSpriteLayers.Hair].Count > 0) + { + if (mDisplayCustomSpriteLayerIndex[(int)Enums.CustomSpriteLayers.Hair] >= mFemaleCustomSpriteLayers[Enums.CustomSpriteLayers.Hair].Count) + { + mDisplayCustomSpriteLayerIndex[(int)Enums.CustomSpriteLayers.Hair] = 0; + } + } + else + { + mDisplayCustomSpriteLayerIndex[(int)Enums.CustomSpriteLayers.Hair] = -1; + } + } + + UpdateDisplay(); + } + void TryCreateCharacter(int gender) { if (Globals.WaitingOnServer || mDisplaySpriteIndex == -1) @@ -468,16 +661,31 @@ void TryCreateCharacter(int gender) if (FieldChecking.IsValidUsername(mCharnameTextbox.Text, Strings.Regex.username)) { + var customSpriteLayers = new int[(int)Enums.CustomSpriteLayers.CustomCount]; if (mMaleChk.IsChecked) { + // Add our custom layers to the packet. + for (var i = 0; i < (int)Enums.CustomSpriteLayers.CustomCount; i++) + { + var layer = (Enums.CustomSpriteLayers)i; + customSpriteLayers[i] = mDisplayCustomSpriteLayerIndex[i] != -1 ? mMaleCustomSpriteLayers[layer][mDisplayCustomSpriteLayerIndex[i]].Key : -1; + } + PacketSender.SendCreateCharacter( - mCharnameTextbox.Text, GetClass().Id, mMaleSprites[mDisplaySpriteIndex].Key + mCharnameTextbox.Text, GetClass().Id, mMaleSprites[mDisplaySpriteIndex].Key, customSpriteLayers ); } else { + // Add our custom layers to the packet. + for (var i = 0; i < (int)Enums.CustomSpriteLayers.CustomCount; i++) + { + var layer = (Enums.CustomSpriteLayers)i; + customSpriteLayers[i] = mDisplayCustomSpriteLayerIndex[i] != -1 ? mFemaleCustomSpriteLayers[layer][mDisplayCustomSpriteLayerIndex[i]].Key : -1; + } + PacketSender.SendCreateCharacter( - mCharnameTextbox.Text, GetClass().Id, mFemaleSprites[mDisplaySpriteIndex].Key + mCharnameTextbox.Text, GetClass().Id, mFemaleSprites[mDisplaySpriteIndex].Key, customSpriteLayers ); } diff --git a/Intersect.Client/Interface/Menu/SelectCharacterWindow.cs b/Intersect.Client/Interface/Menu/SelectCharacterWindow.cs index d22ba2f5..903ecb09 100644 --- a/Intersect.Client/Interface/Menu/SelectCharacterWindow.cs +++ b/Intersect.Client/Interface/Menu/SelectCharacterWindow.cs @@ -244,8 +244,28 @@ private void UpdateDisplay() { if (mPaperdollPortraits[i] != mCharacterPortrait) { + var texture = String.Empty; + GameContentManager.TextureType type; + if (Options.EquipmentSlots.IndexOf(Options.PaperdollOrder[1][i]) == Options.EquipmentSlots.IndexOf(Options.Equipment.HairSlot)) + { + if (Characters[mSelectedChar].Equipment[i] != String.Empty && Characters[mSelectedChar].Equipment[i] != null) + { + texture = Characters[mSelectedChar].Equipment[i]; + type = GameContentManager.TextureType.Paperdoll; + } + else + { + texture = Characters[mSelectedChar].CustomSpriteLayers[(int)Enums.CustomSpriteLayers.Hair]; + type = GameContentManager.TextureType.Hair; + } + } + else + { + texture = Characters[mSelectedChar].Equipment[i]; + type = GameContentManager.TextureType.Paperdoll; + } mPaperdollPortraits[i].Texture = Globals.ContentManager.GetTexture( - GameContentManager.TextureType.Paperdoll, Characters[mSelectedChar].Equipment[i] + type, texture ); if (mPaperdollPortraits[i].Texture != null) @@ -370,6 +390,8 @@ public class Character public string[] Equipment = new string[Options.EquipmentSlots.Count + 1]; + public string[] CustomSpriteLayers = new string[(int)Enums.CustomSpriteLayers.CustomCount]; + public bool Exists = false; public string Face = ""; @@ -394,9 +416,11 @@ public Character(Guid id) string face, int level, string charClass, - string[] equipment + string[] equipment, + string[] customspritelayers ) { + CustomSpriteLayers = customspritelayers; Equipment = equipment; Id = id; Name = name; diff --git a/Intersect.Client/MonoGame/File Management/MonoContentManager.cs b/Intersect.Client/MonoGame/File Management/MonoContentManager.cs index dc725cf6..77654bb6 100644 --- a/Intersect.Client/MonoGame/File Management/MonoContentManager.cs +++ b/Intersect.Client/MonoGame/File Management/MonoContentManager.cs @@ -139,6 +139,11 @@ public override void LoadEntities() LoadTextureGroup("entities", mEntityDict); } + public override void LoadHairs() + { + LoadTextureGroup("hairs", mHairDict); + } + public override void LoadSpells() { LoadTextureGroup("spells", mSpellDict); diff --git a/Intersect.Client/Networking/PacketHandler.cs b/Intersect.Client/Networking/PacketHandler.cs index c69ec70d..d38a9c1d 100644 --- a/Intersect.Client/Networking/PacketHandler.cs +++ b/Intersect.Client/Networking/PacketHandler.cs @@ -890,6 +890,19 @@ private static void HandlePacket(EquipmentPacket packet) } } + private static void HandlePacket(CustomSpriteLayersPacket packet) + { + var entityId = packet.EntityId; + if (Globals.Entities.ContainsKey(entityId)) + { + var entity = Globals.Entities[entityId]; + if (entity != null) + { + ((Player)entity).CustomSpriteLayers = packet.CustomSpriteLayers; + } + } + } + //StatPointsPacket private static void HandlePacket(StatPointsPacket packet) { @@ -1602,7 +1615,7 @@ private static void HandlePacket(CharactersPacket packet) foreach (var chr in packet.Characters) { characters.Add( - new Character(chr.Id, chr.Name, chr.Sprite, chr.Face, chr.Level, chr.ClassName, chr.Equipment) + new Character(chr.Id, chr.Name, chr.Sprite, chr.Face, chr.Level, chr.ClassName, chr.Equipment, chr.CustomSpriteLayers) ); } diff --git a/Intersect.Client/Networking/PacketSender.cs b/Intersect.Client/Networking/PacketSender.cs index 41082f45..c6bc88c7 100644 --- a/Intersect.Client/Networking/PacketSender.cs +++ b/Intersect.Client/Networking/PacketSender.cs @@ -106,9 +106,9 @@ public static void SendCreateAccount(string username, string password, string em Network.SendPacket(new CreateAccountPacket(username.Trim(), password.Trim(), email.Trim())); } - public static void SendCreateCharacter(string name, Guid classId, int sprite) + public static void SendCreateCharacter(string name, Guid classId, int sprite, int[] customSpriteLayers) { - Network.SendPacket(new CreateCharacterPacket(name, classId, sprite)); + Network.SendPacket(new CreateCharacterPacket(name, classId, sprite, customSpriteLayers)); } public static void SendPickupItem(int index) diff --git a/Intersect.Editor/Content/ContentManager.cs b/Intersect.Editor/Content/ContentManager.cs index 433f0c77..32792d6d 100644 --- a/Intersect.Editor/Content/ContentManager.cs +++ b/Intersect.Editor/Content/ContentManager.cs @@ -48,6 +48,8 @@ public enum TextureType Misc, + Hairs + } //Game Content @@ -90,6 +92,8 @@ public enum TextureType static IDictionary sTilesetDict = new Dictionary(); + static IDictionary sHairsDict = new Dictionary(); + public static List TilesetTextures = new List(); public static string[] MusicNames => sMusicDict?.Keys.ToArray(); @@ -135,6 +139,7 @@ public static void LoadEditorContent() LoadFaces(); LoadItems(); LoadMisc(); + LoadHairs(); LoadShaders(); LoadSounds(); LoadMusic(); @@ -323,6 +328,10 @@ private static void LoadMisc() LoadTextureGroup("misc", sMiscDict); } + private static void LoadHairs() { + LoadTextureGroup("hairs", sHairsDict); + } + public static void LoadShaders() { sShaderDict.Clear(); @@ -443,6 +452,10 @@ public static Texture2D GetTexture(TextureType type, string name) case TextureType.Misc: textureDict = sMiscDict; + break; + case TextureType.Hairs: + textureDict = sHairsDict; + break; default: return null; @@ -571,6 +584,11 @@ public static string[] GetTextureNames(TextureType type) case TextureType.Misc: textureDict = sMiscDict; + break; + + case TextureType.Hairs: + textureDict = sHairsDict; + break; default: return null; diff --git a/Intersect.Editor/Forms/Editors/Events/CommandPrinter.cs b/Intersect.Editor/Forms/Editors/Events/CommandPrinter.cs index 61371483..66754813 100644 --- a/Intersect.Editor/Forms/Editors/Events/CommandPrinter.cs +++ b/Intersect.Editor/Forms/Editors/Events/CommandPrinter.cs @@ -635,6 +635,11 @@ private static string GetCommandText(ChangeFaceCommand command, MapInstance map) return Strings.EventCommandList.setface.ToString(command.Face); } + private static string GetCommandText(ChangeHairCommand command, MapInstance map) + { + return Strings.EventCommandList.sethair.ToString(command.Hair); + } + private static string GetCommandText(ChangeNameColorCommand command, MapInstance map) { if (command.Remove) diff --git a/Intersect.Editor/Forms/Editors/Events/Event Commands/EventCommand_ChangeHair.Designer.cs b/Intersect.Editor/Forms/Editors/Events/Event Commands/EventCommand_ChangeHair.Designer.cs new file mode 100644 index 00000000..aa8444c2 --- /dev/null +++ b/Intersect.Editor/Forms/Editors/Events/Event Commands/EventCommand_ChangeHair.Designer.cs @@ -0,0 +1,142 @@ +using DarkUI.Controls; + +namespace Intersect.Editor.Forms.Editors.Events.Event_Commands +{ + partial class EventCommandChangeHair + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Component Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(EventCommandChangeHair)); + this.grpChangeHair = new DarkUI.Controls.DarkGroupBox(); + this.pnlPreview = new System.Windows.Forms.Panel(); + this.cmbHair = new DarkUI.Controls.DarkComboBox(); + this.lblHair = new System.Windows.Forms.Label(); + this.btnCancel = new DarkUI.Controls.DarkButton(); + this.btnSave = new DarkUI.Controls.DarkButton(); + this.grpChangeHair.SuspendLayout(); + this.SuspendLayout(); + // + // grpChangeHair + // + this.grpChangeHair.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(63)))), ((int)(((byte)(65))))); + this.grpChangeHair.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(90)))), ((int)(((byte)(90)))), ((int)(((byte)(90))))); + this.grpChangeHair.Controls.Add(this.pnlPreview); + this.grpChangeHair.Controls.Add(this.cmbHair); + this.grpChangeHair.Controls.Add(this.lblHair); + this.grpChangeHair.Controls.Add(this.btnCancel); + this.grpChangeHair.Controls.Add(this.btnSave); + this.grpChangeHair.ForeColor = System.Drawing.Color.Gainsboro; + this.grpChangeHair.Location = new System.Drawing.Point(3, 3); + this.grpChangeHair.Name = "grpChangeHair"; + this.grpChangeHair.Size = new System.Drawing.Size(259, 126); + this.grpChangeHair.TabIndex = 17; + this.grpChangeHair.TabStop = false; + this.grpChangeHair.Text = "Change Hair:"; + // + // pnlPreview + // + this.pnlPreview.Location = new System.Drawing.Point(170, 19); + this.pnlPreview.Name = "pnlPreview"; + this.pnlPreview.Size = new System.Drawing.Size(83, 101); + this.pnlPreview.TabIndex = 23; + // + // cmbHair + // + this.cmbHair.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(69)))), ((int)(((byte)(73)))), ((int)(((byte)(74))))); + this.cmbHair.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(90)))), ((int)(((byte)(90)))), ((int)(((byte)(90))))); + this.cmbHair.BorderStyle = System.Windows.Forms.ButtonBorderStyle.Solid; + this.cmbHair.ButtonColor = System.Drawing.Color.FromArgb(((int)(((byte)(43)))), ((int)(((byte)(43)))), ((int)(((byte)(43))))); + this.cmbHair.ButtonIcon = ((System.Drawing.Bitmap)(resources.GetObject("cmbHair.ButtonIcon"))); + this.cmbHair.DrawDropdownHoverOutline = false; + this.cmbHair.DrawFocusRectangle = false; + this.cmbHair.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed; + this.cmbHair.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.cmbHair.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.cmbHair.ForeColor = System.Drawing.Color.Gainsboro; + this.cmbHair.FormattingEnabled = true; + this.cmbHair.Location = new System.Drawing.Point(47, 19); + this.cmbHair.Name = "cmbHair"; + this.cmbHair.Size = new System.Drawing.Size(117, 21); + this.cmbHair.TabIndex = 22; + this.cmbHair.Text = null; + this.cmbHair.TextPadding = new System.Windows.Forms.Padding(2); + this.cmbHair.SelectedIndexChanged += new System.EventHandler(this.cmbSprite_SelectedIndexChanged); + // + // lblHair + // + this.lblHair.AutoSize = true; + this.lblHair.Location = new System.Drawing.Point(4, 22); + this.lblHair.Name = "lblHair"; + this.lblHair.Size = new System.Drawing.Size(29, 13); + this.lblHair.TabIndex = 21; + this.lblHair.Text = "Hair:"; + // + // btnCancel + // + this.btnCancel.Location = new System.Drawing.Point(89, 97); + this.btnCancel.Name = "btnCancel"; + this.btnCancel.Padding = new System.Windows.Forms.Padding(5); + this.btnCancel.Size = new System.Drawing.Size(75, 23); + this.btnCancel.TabIndex = 20; + this.btnCancel.Text = "Cancel"; + this.btnCancel.Click += new System.EventHandler(this.btnCancel_Click); + // + // btnSave + // + this.btnSave.Location = new System.Drawing.Point(7, 97); + this.btnSave.Name = "btnSave"; + this.btnSave.Padding = new System.Windows.Forms.Padding(5); + this.btnSave.Size = new System.Drawing.Size(75, 23); + this.btnSave.TabIndex = 19; + this.btnSave.Text = "Ok"; + this.btnSave.Click += new System.EventHandler(this.btnSave_Click); + // + // EventCommandChangeHair + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.AutoSize = true; + this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(48))))); + this.Controls.Add(this.grpChangeHair); + this.Name = "EventCommandChangeHair"; + this.Size = new System.Drawing.Size(268, 132); + this.grpChangeHair.ResumeLayout(false); + this.grpChangeHair.PerformLayout(); + this.ResumeLayout(false); + + } + + #endregion + + private DarkGroupBox grpChangeHair; + private DarkButton btnCancel; + private DarkButton btnSave; + private System.Windows.Forms.Label lblHair; + private DarkComboBox cmbHair; + private System.Windows.Forms.Panel pnlPreview; + } +} diff --git a/Intersect.Editor/Forms/Editors/Events/Event Commands/EventCommand_ChangeHair.cs b/Intersect.Editor/Forms/Editors/Events/Event Commands/EventCommand_ChangeHair.cs new file mode 100644 index 00000000..51f9180f --- /dev/null +++ b/Intersect.Editor/Forms/Editors/Events/Event Commands/EventCommand_ChangeHair.cs @@ -0,0 +1,87 @@ +using System; +using System.Drawing; +using System.IO; +using System.Windows.Forms; + +using Intersect.Editor.Content; +using Intersect.Editor.Localization; +using Intersect.GameObjects.Events.Commands; + +namespace Intersect.Editor.Forms.Editors.Events.Event_Commands +{ + + public partial class EventCommandChangeHair : UserControl + { + + private readonly FrmEvent mEventEditor; + + private ChangeHairCommand mMyCommand; + + public EventCommandChangeHair(ChangeHairCommand refCommand, FrmEvent editor) + { + InitializeComponent(); + mMyCommand = refCommand; + mEventEditor = editor; + cmbHair.Items.Clear(); + cmbHair.Items.AddRange(GameContentManager.GetSmartSortedTextureNames(GameContentManager.TextureType.Hairs)); + if (cmbHair.Items.IndexOf(mMyCommand.Hair) > -1) + { + cmbHair.SelectedIndex = cmbHair.Items.IndexOf(mMyCommand.Hair); + } + else + { + cmbHair.SelectedIndex = 0; + } + + UpdatePreview(); + InitLocalization(); + } + + private void InitLocalization() + { + grpChangeHair.Text = Strings.EventChangeHair.title; + lblHair.Text = Strings.EventChangeHair.label; + btnSave.Text = Strings.EventChangeHair.okay; + btnCancel.Text = Strings.EventChangeHair.cancel; + } + + private void UpdatePreview() + { + var destBitmap = new Bitmap(pnlPreview.Width, pnlPreview.Height); + var g = Graphics.FromImage(destBitmap); + g.Clear(System.Drawing.Color.Black); + if (File.Exists("resources/hairs/" + cmbHair.Text)) + { + var sourceBitmap = new Bitmap("resources/hairs/" + cmbHair.Text); + g.DrawImage( + sourceBitmap, + new Rectangle( + pnlPreview.Width / 2 - sourceBitmap.Width / 8, pnlPreview.Height / 2 - sourceBitmap.Height / 8, + sourceBitmap.Width / 4, sourceBitmap.Height / 4 + ), new Rectangle(0, 0, sourceBitmap.Width / 4, sourceBitmap.Height / 4), GraphicsUnit.Pixel + ); + } + + g.Dispose(); + pnlPreview.BackgroundImage = destBitmap; + } + + private void btnSave_Click(object sender, EventArgs e) + { + mMyCommand.Hair = cmbHair.Text; + mEventEditor.FinishCommandEdit(); + } + + private void btnCancel_Click(object sender, EventArgs e) + { + mEventEditor.CancelCommandEdit(); + } + + private void cmbSprite_SelectedIndexChanged(object sender, EventArgs e) + { + UpdatePreview(); + } + + } + +} diff --git a/Intersect.Editor/Forms/Editors/Events/Event Commands/EventCommand_ChangeHair.resx b/Intersect.Editor/Forms/Editors/Events/Event Commands/EventCommand_ChangeHair.resx new file mode 100644 index 00000000..7b5aa913 --- /dev/null +++ b/Intersect.Editor/Forms/Editors/Events/Event Commands/EventCommand_ChangeHair.resx @@ -0,0 +1,128 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + + + iVBORw0KGgoAAAANSUhEUgAAAAkAAAAFCAYAAACXU8ZrAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1 + MAAA6mAAADqYAAAXb5JfxUYAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAAvSURBVBhXY4iJiflPCDP8//8f + r0KQPFgRLoUwObgiEMamAIRRFIEwuoL///8zAAC5cW+geGnZqAAAAABJRU5ErkJggg== + + + \ No newline at end of file diff --git a/Intersect.Editor/Forms/Editors/Events/frmEvent.Designer.cs b/Intersect.Editor/Forms/Editors/Events/frmEvent.Designer.cs index e9223a50..66f976e9 100644 --- a/Intersect.Editor/Forms/Editors/Events/frmEvent.Designer.cs +++ b/Intersect.Editor/Forms/Editors/Events/frmEvent.Designer.cs @@ -32,25 +32,25 @@ protected override void Dispose(bool disposing) /// private void InitializeComponent() { - this.components = new System.ComponentModel.Container(); - System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FrmEvent)); - System.Windows.Forms.TreeNode treeNode1 = new System.Windows.Forms.TreeNode("Show Text"); - System.Windows.Forms.TreeNode treeNode2 = new System.Windows.Forms.TreeNode("Show Options"); - System.Windows.Forms.TreeNode treeNode3 = new System.Windows.Forms.TreeNode("Input Variable"); - System.Windows.Forms.TreeNode treeNode4 = new System.Windows.Forms.TreeNode("Add Chatbox Text"); - System.Windows.Forms.TreeNode treeNode5 = new System.Windows.Forms.TreeNode("Dialogue", new System.Windows.Forms.TreeNode[] { + this.components = new System.ComponentModel.Container(); + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FrmEvent)); + System.Windows.Forms.TreeNode treeNode1 = new System.Windows.Forms.TreeNode("Show Text"); + System.Windows.Forms.TreeNode treeNode2 = new System.Windows.Forms.TreeNode("Show Options"); + System.Windows.Forms.TreeNode treeNode3 = new System.Windows.Forms.TreeNode("Input Variable"); + System.Windows.Forms.TreeNode treeNode4 = new System.Windows.Forms.TreeNode("Add Chatbox Text"); + System.Windows.Forms.TreeNode treeNode5 = new System.Windows.Forms.TreeNode("Dialogue", new System.Windows.Forms.TreeNode[] { treeNode1, treeNode2, treeNode3, treeNode4}); - System.Windows.Forms.TreeNode treeNode6 = new System.Windows.Forms.TreeNode("Set Variable"); - System.Windows.Forms.TreeNode treeNode7 = new System.Windows.Forms.TreeNode("Set Self Switch"); - System.Windows.Forms.TreeNode treeNode8 = new System.Windows.Forms.TreeNode("Conditional Branch"); - System.Windows.Forms.TreeNode treeNode9 = new System.Windows.Forms.TreeNode("Exit Event Process"); - System.Windows.Forms.TreeNode treeNode10 = new System.Windows.Forms.TreeNode("Label"); - System.Windows.Forms.TreeNode treeNode11 = new System.Windows.Forms.TreeNode("Go To Label"); - System.Windows.Forms.TreeNode treeNode12 = new System.Windows.Forms.TreeNode("Start Common Event"); - System.Windows.Forms.TreeNode treeNode13 = new System.Windows.Forms.TreeNode("Logic Flow", new System.Windows.Forms.TreeNode[] { + System.Windows.Forms.TreeNode treeNode6 = new System.Windows.Forms.TreeNode("Set Variable"); + System.Windows.Forms.TreeNode treeNode7 = new System.Windows.Forms.TreeNode("Set Self Switch"); + System.Windows.Forms.TreeNode treeNode8 = new System.Windows.Forms.TreeNode("Conditional Branch"); + System.Windows.Forms.TreeNode treeNode9 = new System.Windows.Forms.TreeNode("Exit Event Process"); + System.Windows.Forms.TreeNode treeNode10 = new System.Windows.Forms.TreeNode("Label"); + System.Windows.Forms.TreeNode treeNode11 = new System.Windows.Forms.TreeNode("Go To Label"); + System.Windows.Forms.TreeNode treeNode12 = new System.Windows.Forms.TreeNode("Start Common Event"); + System.Windows.Forms.TreeNode treeNode13 = new System.Windows.Forms.TreeNode("Logic Flow", new System.Windows.Forms.TreeNode[] { treeNode6, treeNode7, treeNode8, @@ -58,22 +58,23 @@ private void InitializeComponent() treeNode10, treeNode11, treeNode12}); - System.Windows.Forms.TreeNode treeNode14 = new System.Windows.Forms.TreeNode("Restore HP"); - System.Windows.Forms.TreeNode treeNode15 = new System.Windows.Forms.TreeNode("Restore MP"); - System.Windows.Forms.TreeNode treeNode16 = new System.Windows.Forms.TreeNode("Level Up"); - System.Windows.Forms.TreeNode treeNode17 = new System.Windows.Forms.TreeNode("Give Experience"); - System.Windows.Forms.TreeNode treeNode18 = new System.Windows.Forms.TreeNode("Change Level"); - System.Windows.Forms.TreeNode treeNode19 = new System.Windows.Forms.TreeNode("Change Spells"); - System.Windows.Forms.TreeNode treeNode20 = new System.Windows.Forms.TreeNode("Change Items"); - System.Windows.Forms.TreeNode treeNode21 = new System.Windows.Forms.TreeNode("Change Sprite"); - System.Windows.Forms.TreeNode treeNode22 = new System.Windows.Forms.TreeNode("Change Face"); - System.Windows.Forms.TreeNode treeNode23 = new System.Windows.Forms.TreeNode("Change Gender"); - System.Windows.Forms.TreeNode treeNode24 = new System.Windows.Forms.TreeNode("Set Access"); - System.Windows.Forms.TreeNode treeNode25 = new System.Windows.Forms.TreeNode("Change Class"); - System.Windows.Forms.TreeNode treeNode26 = new System.Windows.Forms.TreeNode("Equip Item"); - System.Windows.Forms.TreeNode treeNode27 = new System.Windows.Forms.TreeNode("Change Name Color"); - System.Windows.Forms.TreeNode treeNode28 = new System.Windows.Forms.TreeNode("Change Player Label"); - System.Windows.Forms.TreeNode treeNode29 = new System.Windows.Forms.TreeNode("Player Control", new System.Windows.Forms.TreeNode[] { + System.Windows.Forms.TreeNode treeNode14 = new System.Windows.Forms.TreeNode("Restore HP"); + System.Windows.Forms.TreeNode treeNode15 = new System.Windows.Forms.TreeNode("Restore MP"); + System.Windows.Forms.TreeNode treeNode16 = new System.Windows.Forms.TreeNode("Level Up"); + System.Windows.Forms.TreeNode treeNode17 = new System.Windows.Forms.TreeNode("Give Experience"); + System.Windows.Forms.TreeNode treeNode18 = new System.Windows.Forms.TreeNode("Change Level"); + System.Windows.Forms.TreeNode treeNode19 = new System.Windows.Forms.TreeNode("Change Spells"); + System.Windows.Forms.TreeNode treeNode20 = new System.Windows.Forms.TreeNode("Change Items"); + System.Windows.Forms.TreeNode treeNode21 = new System.Windows.Forms.TreeNode("Change Sprite"); + System.Windows.Forms.TreeNode treeNode22 = new System.Windows.Forms.TreeNode("Change Face"); + System.Windows.Forms.TreeNode treeNode23 = new System.Windows.Forms.TreeNode("Change Hair"); + System.Windows.Forms.TreeNode treeNode24 = new System.Windows.Forms.TreeNode("Change Gender"); + System.Windows.Forms.TreeNode treeNode25 = new System.Windows.Forms.TreeNode("Set Access"); + System.Windows.Forms.TreeNode treeNode26 = new System.Windows.Forms.TreeNode("Change Class"); + System.Windows.Forms.TreeNode treeNode27 = new System.Windows.Forms.TreeNode("Equip Item"); + System.Windows.Forms.TreeNode treeNode28 = new System.Windows.Forms.TreeNode("Change Name Color"); + System.Windows.Forms.TreeNode treeNode29 = new System.Windows.Forms.TreeNode("Change Player Label"); + System.Windows.Forms.TreeNode treeNode30 = new System.Windows.Forms.TreeNode("Player Control", new System.Windows.Forms.TreeNode[] { treeNode14, treeNode15, treeNode16, @@ -88,18 +89,18 @@ private void InitializeComponent() treeNode25, treeNode26, treeNode27, - treeNode28}); - System.Windows.Forms.TreeNode treeNode30 = new System.Windows.Forms.TreeNode("Warp Player"); - System.Windows.Forms.TreeNode treeNode31 = new System.Windows.Forms.TreeNode("Set Move Route"); - System.Windows.Forms.TreeNode treeNode32 = new System.Windows.Forms.TreeNode("Wait for Route Completion"); - System.Windows.Forms.TreeNode treeNode33 = new System.Windows.Forms.TreeNode("Hold Player"); - System.Windows.Forms.TreeNode treeNode34 = new System.Windows.Forms.TreeNode("Release Player"); - System.Windows.Forms.TreeNode treeNode35 = new System.Windows.Forms.TreeNode("Spawn NPC"); - System.Windows.Forms.TreeNode treeNode36 = new System.Windows.Forms.TreeNode("Despawn NPC"); - System.Windows.Forms.TreeNode treeNode37 = new System.Windows.Forms.TreeNode("Hide Player"); - System.Windows.Forms.TreeNode treeNode38 = new System.Windows.Forms.TreeNode("Show Player"); - System.Windows.Forms.TreeNode treeNode39 = new System.Windows.Forms.TreeNode("Movement", new System.Windows.Forms.TreeNode[] { - treeNode30, + treeNode28, + treeNode29}); + System.Windows.Forms.TreeNode treeNode31 = new System.Windows.Forms.TreeNode("Warp Player"); + System.Windows.Forms.TreeNode treeNode32 = new System.Windows.Forms.TreeNode("Set Move Route"); + System.Windows.Forms.TreeNode treeNode33 = new System.Windows.Forms.TreeNode("Wait for Route Completion"); + System.Windows.Forms.TreeNode treeNode34 = new System.Windows.Forms.TreeNode("Hold Player"); + System.Windows.Forms.TreeNode treeNode35 = new System.Windows.Forms.TreeNode("Release Player"); + System.Windows.Forms.TreeNode treeNode36 = new System.Windows.Forms.TreeNode("Spawn NPC"); + System.Windows.Forms.TreeNode treeNode37 = new System.Windows.Forms.TreeNode("Despawn NPC"); + System.Windows.Forms.TreeNode treeNode38 = new System.Windows.Forms.TreeNode("Hide Player"); + System.Windows.Forms.TreeNode treeNode39 = new System.Windows.Forms.TreeNode("Show Player"); + System.Windows.Forms.TreeNode treeNode40 = new System.Windows.Forms.TreeNode("Movement", new System.Windows.Forms.TreeNode[] { treeNode31, treeNode32, treeNode33, @@ -107,1192 +108,1196 @@ private void InitializeComponent() treeNode35, treeNode36, treeNode37, - treeNode38}); - System.Windows.Forms.TreeNode treeNode40 = new System.Windows.Forms.TreeNode("Play Animation"); - System.Windows.Forms.TreeNode treeNode41 = new System.Windows.Forms.TreeNode("Play BGM"); - System.Windows.Forms.TreeNode treeNode42 = new System.Windows.Forms.TreeNode("Fadeout BGM"); - System.Windows.Forms.TreeNode treeNode43 = new System.Windows.Forms.TreeNode("Play Sound"); - System.Windows.Forms.TreeNode treeNode44 = new System.Windows.Forms.TreeNode("Stop Sounds"); - System.Windows.Forms.TreeNode treeNode45 = new System.Windows.Forms.TreeNode("Show Picture"); - System.Windows.Forms.TreeNode treeNode46 = new System.Windows.Forms.TreeNode("Hide Picture"); - System.Windows.Forms.TreeNode treeNode47 = new System.Windows.Forms.TreeNode("Special Effects", new System.Windows.Forms.TreeNode[] { - treeNode40, + treeNode38, + treeNode39}); + System.Windows.Forms.TreeNode treeNode41 = new System.Windows.Forms.TreeNode("Play Animation"); + System.Windows.Forms.TreeNode treeNode42 = new System.Windows.Forms.TreeNode("Play BGM"); + System.Windows.Forms.TreeNode treeNode43 = new System.Windows.Forms.TreeNode("Fadeout BGM"); + System.Windows.Forms.TreeNode treeNode44 = new System.Windows.Forms.TreeNode("Play Sound"); + System.Windows.Forms.TreeNode treeNode45 = new System.Windows.Forms.TreeNode("Stop Sounds"); + System.Windows.Forms.TreeNode treeNode46 = new System.Windows.Forms.TreeNode("Show Picture"); + System.Windows.Forms.TreeNode treeNode47 = new System.Windows.Forms.TreeNode("Hide Picture"); + System.Windows.Forms.TreeNode treeNode48 = new System.Windows.Forms.TreeNode("Special Effects", new System.Windows.Forms.TreeNode[] { treeNode41, treeNode42, treeNode43, treeNode44, treeNode45, - treeNode46}); - System.Windows.Forms.TreeNode treeNode48 = new System.Windows.Forms.TreeNode("Start Quest"); - System.Windows.Forms.TreeNode treeNode49 = new System.Windows.Forms.TreeNode("Complete Quest Task"); - System.Windows.Forms.TreeNode treeNode50 = new System.Windows.Forms.TreeNode("End Quest"); - System.Windows.Forms.TreeNode treeNode51 = new System.Windows.Forms.TreeNode("Quest Control", new System.Windows.Forms.TreeNode[] { - treeNode48, + treeNode46, + treeNode47}); + System.Windows.Forms.TreeNode treeNode49 = new System.Windows.Forms.TreeNode("Start Quest"); + System.Windows.Forms.TreeNode treeNode50 = new System.Windows.Forms.TreeNode("Complete Quest Task"); + System.Windows.Forms.TreeNode treeNode51 = new System.Windows.Forms.TreeNode("End Quest"); + System.Windows.Forms.TreeNode treeNode52 = new System.Windows.Forms.TreeNode("Quest Control", new System.Windows.Forms.TreeNode[] { treeNode49, - treeNode50}); - System.Windows.Forms.TreeNode treeNode52 = new System.Windows.Forms.TreeNode("Wait..."); - System.Windows.Forms.TreeNode treeNode53 = new System.Windows.Forms.TreeNode("Etc", new System.Windows.Forms.TreeNode[] { - treeNode52}); - System.Windows.Forms.TreeNode treeNode54 = new System.Windows.Forms.TreeNode("Open Bank"); - System.Windows.Forms.TreeNode treeNode55 = new System.Windows.Forms.TreeNode("Open Shop"); - System.Windows.Forms.TreeNode treeNode56 = new System.Windows.Forms.TreeNode("Open Crafting Station"); - System.Windows.Forms.TreeNode treeNode57 = new System.Windows.Forms.TreeNode("Shop and Bank", new System.Windows.Forms.TreeNode[] { - treeNode54, + treeNode50, + treeNode51}); + System.Windows.Forms.TreeNode treeNode53 = new System.Windows.Forms.TreeNode("Wait..."); + System.Windows.Forms.TreeNode treeNode54 = new System.Windows.Forms.TreeNode("Etc", new System.Windows.Forms.TreeNode[] { + treeNode53}); + System.Windows.Forms.TreeNode treeNode55 = new System.Windows.Forms.TreeNode("Open Bank"); + System.Windows.Forms.TreeNode treeNode56 = new System.Windows.Forms.TreeNode("Open Shop"); + System.Windows.Forms.TreeNode treeNode57 = new System.Windows.Forms.TreeNode("Open Crafting Station"); + System.Windows.Forms.TreeNode treeNode58 = new System.Windows.Forms.TreeNode("Shop and Bank", new System.Windows.Forms.TreeNode[] { treeNode55, - treeNode56}); - this.lblName = new System.Windows.Forms.Label(); - this.txtEventname = new DarkUI.Controls.DarkTextBox(); - this.grpEntityOptions = new DarkUI.Controls.DarkGroupBox(); - this.grpExtra = new DarkUI.Controls.DarkGroupBox(); - this.chkInteractionFreeze = new DarkUI.Controls.DarkCheckBox(); - this.chkWalkingAnimation = new DarkUI.Controls.DarkCheckBox(); - this.chkDirectionFix = new DarkUI.Controls.DarkCheckBox(); - this.chkHideName = new DarkUI.Controls.DarkCheckBox(); - this.chkWalkThrough = new DarkUI.Controls.DarkCheckBox(); - this.grpInspector = new DarkUI.Controls.DarkGroupBox(); - this.pnlFacePreview = new System.Windows.Forms.Panel(); - this.lblInspectorDesc = new System.Windows.Forms.Label(); - this.txtDesc = new DarkUI.Controls.DarkTextBox(); - this.chkDisableInspector = new DarkUI.Controls.DarkCheckBox(); - this.cmbPreviewFace = new DarkUI.Controls.DarkComboBox(); - this.lblFace = new System.Windows.Forms.Label(); - this.grpPreview = new DarkUI.Controls.DarkGroupBox(); - this.lblAnimation = new System.Windows.Forms.Label(); - this.cmbAnimation = new DarkUI.Controls.DarkComboBox(); - this.pnlPreview = new System.Windows.Forms.Panel(); - this.grpMovement = new DarkUI.Controls.DarkGroupBox(); - this.lblLayer = new System.Windows.Forms.Label(); - this.cmbLayering = new DarkUI.Controls.DarkComboBox(); - this.cmbEventFreq = new DarkUI.Controls.DarkComboBox(); - this.cmbEventSpeed = new DarkUI.Controls.DarkComboBox(); - this.lblFreq = new System.Windows.Forms.Label(); - this.lblSpeed = new System.Windows.Forms.Label(); - this.btnSetRoute = new DarkUI.Controls.DarkButton(); - this.lblType = new System.Windows.Forms.Label(); - this.cmbMoveType = new DarkUI.Controls.DarkComboBox(); - this.grpTriggers = new DarkUI.Controls.DarkGroupBox(); - this.txtCommand = new DarkUI.Controls.DarkTextBox(); - this.lblCommand = new System.Windows.Forms.Label(); - this.lblTriggerVal = new System.Windows.Forms.Label(); - this.cmbTriggerVal = new DarkUI.Controls.DarkComboBox(); - this.cmbTrigger = new DarkUI.Controls.DarkComboBox(); - this.grpEventConditions = new DarkUI.Controls.DarkGroupBox(); - this.btnEditConditions = new DarkUI.Controls.DarkButton(); - this.grpNewCommands = new DarkUI.Controls.DarkGroupBox(); - this.lblCloseCommands = new System.Windows.Forms.Label(); - this.lstCommands = new System.Windows.Forms.TreeView(); - this.grpEventCommands = new DarkUI.Controls.DarkGroupBox(); - this.lstEventCommands = new System.Windows.Forms.ListBox(); - this.grpCreateCommands = new DarkUI.Controls.DarkGroupBox(); - this.btnSave = new DarkUI.Controls.DarkButton(); - this.btnCancel = new DarkUI.Controls.DarkButton(); - this.commandMenu = new System.Windows.Forms.ContextMenuStrip(this.components); - this.btnInsert = new System.Windows.Forms.ToolStripMenuItem(); - this.btnEdit = new System.Windows.Forms.ToolStripMenuItem(); - this.btnCut = new System.Windows.Forms.ToolStripMenuItem(); - this.btnCopy = new System.Windows.Forms.ToolStripMenuItem(); - this.btnPaste = new System.Windows.Forms.ToolStripMenuItem(); - this.btnDelete = new System.Windows.Forms.ToolStripMenuItem(); - this.grpPageOptions = new DarkUI.Controls.DarkGroupBox(); - this.btnClearPage = new DarkUI.Controls.DarkButton(); - this.btnDeletePage = new DarkUI.Controls.DarkButton(); - this.btnPastePage = new DarkUI.Controls.DarkButton(); - this.btnCopyPage = new DarkUI.Controls.DarkButton(); - this.btnNewPage = new DarkUI.Controls.DarkButton(); - this.grpGeneral = new DarkUI.Controls.DarkGroupBox(); - this.chkIsGlobal = new DarkUI.Controls.DarkCheckBox(); - this.pnlTabsContainer = new System.Windows.Forms.Panel(); - this.pnlTabs = new System.Windows.Forms.Panel(); - this.btnTabsRight = new DarkUI.Controls.DarkButton(); - this.btnTabsLeft = new DarkUI.Controls.DarkButton(); - this.panel1 = new System.Windows.Forms.Panel(); - this.grpEntityOptions.SuspendLayout(); - this.grpExtra.SuspendLayout(); - this.grpInspector.SuspendLayout(); - this.grpPreview.SuspendLayout(); - this.grpMovement.SuspendLayout(); - this.grpTriggers.SuspendLayout(); - this.grpEventConditions.SuspendLayout(); - this.grpNewCommands.SuspendLayout(); - this.grpEventCommands.SuspendLayout(); - this.commandMenu.SuspendLayout(); - this.grpPageOptions.SuspendLayout(); - this.grpGeneral.SuspendLayout(); - this.pnlTabsContainer.SuspendLayout(); - this.SuspendLayout(); - // - // lblName - // - this.lblName.AutoSize = true; - this.lblName.Location = new System.Drawing.Point(6, 22); - this.lblName.Name = "lblName"; - this.lblName.Size = new System.Drawing.Size(38, 13); - this.lblName.TabIndex = 1; - this.lblName.Text = "Name:"; - // - // txtEventname - // - this.txtEventname.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(69)))), ((int)(((byte)(73)))), ((int)(((byte)(74))))); - this.txtEventname.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; - this.txtEventname.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(220)))), ((int)(((byte)(220)))), ((int)(((byte)(220))))); - this.txtEventname.Location = new System.Drawing.Point(48, 19); - this.txtEventname.Name = "txtEventname"; - this.txtEventname.Size = new System.Drawing.Size(124, 20); - this.txtEventname.TabIndex = 2; - this.txtEventname.TextChanged += new System.EventHandler(this.txtEventname_TextChanged); - // - // grpEntityOptions - // - this.grpEntityOptions.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(48))))); - this.grpEntityOptions.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(90)))), ((int)(((byte)(90)))), ((int)(((byte)(90))))); - this.grpEntityOptions.Controls.Add(this.grpExtra); - this.grpEntityOptions.Controls.Add(this.grpInspector); - this.grpEntityOptions.Controls.Add(this.grpPreview); - this.grpEntityOptions.Controls.Add(this.grpMovement); - this.grpEntityOptions.ForeColor = System.Drawing.Color.Gainsboro; - this.grpEntityOptions.Location = new System.Drawing.Point(21, 150); - this.grpEntityOptions.Name = "grpEntityOptions"; - this.grpEntityOptions.Size = new System.Drawing.Size(326, 423); - this.grpEntityOptions.TabIndex = 12; - this.grpEntityOptions.TabStop = false; - this.grpEntityOptions.Text = "Entity Options"; - // - // grpExtra - // - this.grpExtra.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(48))))); - this.grpExtra.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(90)))), ((int)(((byte)(90)))), ((int)(((byte)(90))))); - this.grpExtra.Controls.Add(this.chkInteractionFreeze); - this.grpExtra.Controls.Add(this.chkWalkingAnimation); - this.grpExtra.Controls.Add(this.chkDirectionFix); - this.grpExtra.Controls.Add(this.chkHideName); - this.grpExtra.Controls.Add(this.chkWalkThrough); - this.grpExtra.ForeColor = System.Drawing.Color.Gainsboro; - this.grpExtra.Location = new System.Drawing.Point(6, 297); - this.grpExtra.Name = "grpExtra"; - this.grpExtra.Size = new System.Drawing.Size(315, 64); - this.grpExtra.TabIndex = 9; - this.grpExtra.TabStop = false; - this.grpExtra.Text = "Extra"; - // - // chkInteractionFreeze - // - this.chkInteractionFreeze.AutoSize = true; - this.chkInteractionFreeze.Location = new System.Drawing.Point(6, 41); - this.chkInteractionFreeze.Name = "chkInteractionFreeze"; - this.chkInteractionFreeze.Size = new System.Drawing.Size(111, 17); - this.chkInteractionFreeze.TabIndex = 6; - this.chkInteractionFreeze.Text = "Interaction Freeze"; - this.chkInteractionFreeze.CheckedChanged += new System.EventHandler(this.chkInteractionFreeze_CheckedChanged); - // - // chkWalkingAnimation - // - this.chkWalkingAnimation.AutoSize = true; - this.chkWalkingAnimation.Location = new System.Drawing.Point(214, 19); - this.chkWalkingAnimation.Name = "chkWalkingAnimation"; - this.chkWalkingAnimation.Size = new System.Drawing.Size(91, 17); - this.chkWalkingAnimation.TabIndex = 5; - this.chkWalkingAnimation.Text = "Walking Anim"; - this.chkWalkingAnimation.CheckedChanged += new System.EventHandler(this.chkWalkingAnimation_CheckedChanged); - // - // chkDirectionFix - // - this.chkDirectionFix.AutoSize = true; - this.chkDirectionFix.Location = new System.Drawing.Point(156, 19); - this.chkDirectionFix.Name = "chkDirectionFix"; - this.chkDirectionFix.Size = new System.Drawing.Size(55, 17); - this.chkDirectionFix.TabIndex = 4; - this.chkDirectionFix.Text = "Dir Fix"; - this.chkDirectionFix.CheckedChanged += new System.EventHandler(this.chkDirectionFix_CheckedChanged); - // - // chkHideName - // - this.chkHideName.AutoSize = true; - this.chkHideName.Location = new System.Drawing.Point(75, 19); - this.chkHideName.Name = "chkHideName"; - this.chkHideName.Size = new System.Drawing.Size(79, 17); - this.chkHideName.TabIndex = 3; - this.chkHideName.Text = "Hide Name"; - this.chkHideName.CheckedChanged += new System.EventHandler(this.chkHideName_CheckedChanged); - // - // chkWalkThrough - // - this.chkWalkThrough.AutoSize = true; - this.chkWalkThrough.Location = new System.Drawing.Point(6, 19); - this.chkWalkThrough.Name = "chkWalkThrough"; - this.chkWalkThrough.Size = new System.Drawing.Size(69, 17); - this.chkWalkThrough.TabIndex = 2; - this.chkWalkThrough.Text = "Passable"; - this.chkWalkThrough.CheckedChanged += new System.EventHandler(this.chkWalkThrough_CheckedChanged); - // - // grpInspector - // - this.grpInspector.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(48))))); - this.grpInspector.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(90)))), ((int)(((byte)(90)))), ((int)(((byte)(90))))); - this.grpInspector.Controls.Add(this.pnlFacePreview); - this.grpInspector.Controls.Add(this.lblInspectorDesc); - this.grpInspector.Controls.Add(this.txtDesc); - this.grpInspector.Controls.Add(this.chkDisableInspector); - this.grpInspector.Controls.Add(this.cmbPreviewFace); - this.grpInspector.Controls.Add(this.lblFace); - this.grpInspector.ForeColor = System.Drawing.Color.Gainsboro; - this.grpInspector.Location = new System.Drawing.Point(6, 179); - this.grpInspector.Name = "grpInspector"; - this.grpInspector.Size = new System.Drawing.Size(316, 117); - this.grpInspector.TabIndex = 7; - this.grpInspector.TabStop = false; - this.grpInspector.Text = "Entity Inspector Options"; - // - // pnlFacePreview - // - this.pnlFacePreview.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch; - this.pnlFacePreview.Location = new System.Drawing.Point(9, 46); - this.pnlFacePreview.Name = "pnlFacePreview"; - this.pnlFacePreview.Size = new System.Drawing.Size(64, 64); - this.pnlFacePreview.TabIndex = 12; - // - // lblInspectorDesc - // - this.lblInspectorDesc.Location = new System.Drawing.Point(79, 42); - this.lblInspectorDesc.Name = "lblInspectorDesc"; - this.lblInspectorDesc.Size = new System.Drawing.Size(112, 19); - this.lblInspectorDesc.TabIndex = 11; - this.lblInspectorDesc.Text = "Inspector Description:"; - // - // txtDesc - // - this.txtDesc.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(69)))), ((int)(((byte)(73)))), ((int)(((byte)(74))))); - this.txtDesc.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; - this.txtDesc.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(220)))), ((int)(((byte)(220)))), ((int)(((byte)(220))))); - this.txtDesc.Location = new System.Drawing.Point(79, 61); - this.txtDesc.Multiline = true; - this.txtDesc.Name = "txtDesc"; - this.txtDesc.Size = new System.Drawing.Size(231, 50); - this.txtDesc.TabIndex = 0; - this.txtDesc.TextChanged += new System.EventHandler(this.txtDesc_TextChanged); - // - // chkDisableInspector - // - this.chkDisableInspector.Location = new System.Drawing.Point(204, 15); - this.chkDisableInspector.Name = "chkDisableInspector"; - this.chkDisableInspector.Size = new System.Drawing.Size(107, 21); - this.chkDisableInspector.TabIndex = 4; - this.chkDisableInspector.Text = "Disable Inspector"; - this.chkDisableInspector.CheckedChanged += new System.EventHandler(this.chkDisablePreview_CheckedChanged); - // - // cmbPreviewFace - // - this.cmbPreviewFace.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(69)))), ((int)(((byte)(73)))), ((int)(((byte)(74))))); - this.cmbPreviewFace.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(90)))), ((int)(((byte)(90)))), ((int)(((byte)(90))))); - this.cmbPreviewFace.BorderStyle = System.Windows.Forms.ButtonBorderStyle.Solid; - this.cmbPreviewFace.ButtonColor = System.Drawing.Color.FromArgb(((int)(((byte)(43)))), ((int)(((byte)(43)))), ((int)(((byte)(43))))); - this.cmbPreviewFace.ButtonIcon = ((System.Drawing.Bitmap)(resources.GetObject("cmbPreviewFace.ButtonIcon"))); - this.cmbPreviewFace.DrawDropdownHoverOutline = false; - this.cmbPreviewFace.DrawFocusRectangle = false; - this.cmbPreviewFace.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed; - this.cmbPreviewFace.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; - this.cmbPreviewFace.FlatStyle = System.Windows.Forms.FlatStyle.Flat; - this.cmbPreviewFace.ForeColor = System.Drawing.Color.Gainsboro; - this.cmbPreviewFace.FormattingEnabled = true; - this.cmbPreviewFace.Location = new System.Drawing.Point(46, 15); - this.cmbPreviewFace.Name = "cmbPreviewFace"; - this.cmbPreviewFace.Size = new System.Drawing.Size(114, 21); - this.cmbPreviewFace.TabIndex = 10; - this.cmbPreviewFace.Text = null; - this.cmbPreviewFace.TextPadding = new System.Windows.Forms.Padding(2); - this.cmbPreviewFace.SelectedIndexChanged += new System.EventHandler(this.cmbPreviewFace_SelectedIndexChanged); - // - // lblFace - // - this.lblFace.AutoSize = true; - this.lblFace.Location = new System.Drawing.Point(6, 18); - this.lblFace.Name = "lblFace"; - this.lblFace.Size = new System.Drawing.Size(34, 13); - this.lblFace.TabIndex = 9; - this.lblFace.Text = "Face:"; - // - // grpPreview - // - this.grpPreview.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(48))))); - this.grpPreview.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(90)))), ((int)(((byte)(90)))), ((int)(((byte)(90))))); - this.grpPreview.Controls.Add(this.lblAnimation); - this.grpPreview.Controls.Add(this.cmbAnimation); - this.grpPreview.Controls.Add(this.pnlPreview); - this.grpPreview.ForeColor = System.Drawing.Color.Gainsboro; - this.grpPreview.Location = new System.Drawing.Point(6, 13); - this.grpPreview.Name = "grpPreview"; - this.grpPreview.Size = new System.Drawing.Size(160, 163); - this.grpPreview.TabIndex = 10; - this.grpPreview.TabStop = false; - this.grpPreview.Text = "Preview"; - // - // lblAnimation - // - this.lblAnimation.AutoSize = true; - this.lblAnimation.Location = new System.Drawing.Point(4, 116); - this.lblAnimation.Name = "lblAnimation"; - this.lblAnimation.Size = new System.Drawing.Size(56, 13); - this.lblAnimation.TabIndex = 2; - this.lblAnimation.Text = "Animation:"; - // - // cmbAnimation - // - this.cmbAnimation.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(69)))), ((int)(((byte)(73)))), ((int)(((byte)(74))))); - this.cmbAnimation.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(90)))), ((int)(((byte)(90)))), ((int)(((byte)(90))))); - this.cmbAnimation.BorderStyle = System.Windows.Forms.ButtonBorderStyle.Solid; - this.cmbAnimation.ButtonColor = System.Drawing.Color.FromArgb(((int)(((byte)(43)))), ((int)(((byte)(43)))), ((int)(((byte)(43))))); - this.cmbAnimation.ButtonIcon = ((System.Drawing.Bitmap)(resources.GetObject("cmbAnimation.ButtonIcon"))); - this.cmbAnimation.DrawDropdownHoverOutline = false; - this.cmbAnimation.DrawFocusRectangle = false; - this.cmbAnimation.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed; - this.cmbAnimation.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; - this.cmbAnimation.FlatStyle = System.Windows.Forms.FlatStyle.Flat; - this.cmbAnimation.ForeColor = System.Drawing.Color.Gainsboro; - this.cmbAnimation.FormattingEnabled = true; - this.cmbAnimation.Location = new System.Drawing.Point(20, 132); - this.cmbAnimation.Name = "cmbAnimation"; - this.cmbAnimation.Size = new System.Drawing.Size(125, 21); - this.cmbAnimation.TabIndex = 1; - this.cmbAnimation.Text = null; - this.cmbAnimation.TextPadding = new System.Windows.Forms.Padding(2); - this.cmbAnimation.SelectedIndexChanged += new System.EventHandler(this.cmbAnimation_SelectedIndexChanged); - // - // pnlPreview - // - this.pnlPreview.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(63)))), ((int)(((byte)(65))))); - this.pnlPreview.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; - this.pnlPreview.Location = new System.Drawing.Point(33, 14); - this.pnlPreview.Name = "pnlPreview"; - this.pnlPreview.Size = new System.Drawing.Size(96, 96); - this.pnlPreview.TabIndex = 0; - this.pnlPreview.DoubleClick += new System.EventHandler(this.pnlPreview_DoubleClick); - // - // grpMovement - // - this.grpMovement.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(48))))); - this.grpMovement.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(90)))), ((int)(((byte)(90)))), ((int)(((byte)(90))))); - this.grpMovement.Controls.Add(this.lblLayer); - this.grpMovement.Controls.Add(this.cmbLayering); - this.grpMovement.Controls.Add(this.cmbEventFreq); - this.grpMovement.Controls.Add(this.cmbEventSpeed); - this.grpMovement.Controls.Add(this.lblFreq); - this.grpMovement.Controls.Add(this.lblSpeed); - this.grpMovement.Controls.Add(this.btnSetRoute); - this.grpMovement.Controls.Add(this.lblType); - this.grpMovement.Controls.Add(this.cmbMoveType); - this.grpMovement.ForeColor = System.Drawing.Color.Gainsboro; - this.grpMovement.Location = new System.Drawing.Point(169, 13); - this.grpMovement.Name = "grpMovement"; - this.grpMovement.Size = new System.Drawing.Size(154, 163); - this.grpMovement.TabIndex = 8; - this.grpMovement.TabStop = false; - this.grpMovement.Text = "Movement"; - // - // lblLayer - // - this.lblLayer.AutoSize = true; - this.lblLayer.Location = new System.Drawing.Point(6, 134); - this.lblLayer.Name = "lblLayer"; - this.lblLayer.Size = new System.Drawing.Size(36, 13); - this.lblLayer.TabIndex = 7; - this.lblLayer.Text = "Layer:"; - // - // cmbLayering - // - this.cmbLayering.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(69)))), ((int)(((byte)(73)))), ((int)(((byte)(74))))); - this.cmbLayering.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(90)))), ((int)(((byte)(90)))), ((int)(((byte)(90))))); - this.cmbLayering.BorderStyle = System.Windows.Forms.ButtonBorderStyle.Solid; - this.cmbLayering.ButtonColor = System.Drawing.Color.FromArgb(((int)(((byte)(43)))), ((int)(((byte)(43)))), ((int)(((byte)(43))))); - this.cmbLayering.ButtonIcon = ((System.Drawing.Bitmap)(resources.GetObject("cmbLayering.ButtonIcon"))); - this.cmbLayering.DrawDropdownHoverOutline = false; - this.cmbLayering.DrawFocusRectangle = false; - this.cmbLayering.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed; - this.cmbLayering.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; - this.cmbLayering.FlatStyle = System.Windows.Forms.FlatStyle.Flat; - this.cmbLayering.ForeColor = System.Drawing.Color.Gainsboro; - this.cmbLayering.FormattingEnabled = true; - this.cmbLayering.Items.AddRange(new object[] { + treeNode56, + treeNode57}); + this.lblName = new System.Windows.Forms.Label(); + this.txtEventname = new DarkUI.Controls.DarkTextBox(); + this.grpEntityOptions = new DarkUI.Controls.DarkGroupBox(); + this.grpExtra = new DarkUI.Controls.DarkGroupBox(); + this.chkInteractionFreeze = new DarkUI.Controls.DarkCheckBox(); + this.chkWalkingAnimation = new DarkUI.Controls.DarkCheckBox(); + this.chkDirectionFix = new DarkUI.Controls.DarkCheckBox(); + this.chkHideName = new DarkUI.Controls.DarkCheckBox(); + this.chkWalkThrough = new DarkUI.Controls.DarkCheckBox(); + this.grpInspector = new DarkUI.Controls.DarkGroupBox(); + this.pnlFacePreview = new System.Windows.Forms.Panel(); + this.lblInspectorDesc = new System.Windows.Forms.Label(); + this.txtDesc = new DarkUI.Controls.DarkTextBox(); + this.chkDisableInspector = new DarkUI.Controls.DarkCheckBox(); + this.cmbPreviewFace = new DarkUI.Controls.DarkComboBox(); + this.lblFace = new System.Windows.Forms.Label(); + this.grpPreview = new DarkUI.Controls.DarkGroupBox(); + this.lblAnimation = new System.Windows.Forms.Label(); + this.cmbAnimation = new DarkUI.Controls.DarkComboBox(); + this.pnlPreview = new System.Windows.Forms.Panel(); + this.grpMovement = new DarkUI.Controls.DarkGroupBox(); + this.lblLayer = new System.Windows.Forms.Label(); + this.cmbLayering = new DarkUI.Controls.DarkComboBox(); + this.cmbEventFreq = new DarkUI.Controls.DarkComboBox(); + this.cmbEventSpeed = new DarkUI.Controls.DarkComboBox(); + this.lblFreq = new System.Windows.Forms.Label(); + this.lblSpeed = new System.Windows.Forms.Label(); + this.btnSetRoute = new DarkUI.Controls.DarkButton(); + this.lblType = new System.Windows.Forms.Label(); + this.cmbMoveType = new DarkUI.Controls.DarkComboBox(); + this.grpTriggers = new DarkUI.Controls.DarkGroupBox(); + this.txtCommand = new DarkUI.Controls.DarkTextBox(); + this.lblCommand = new System.Windows.Forms.Label(); + this.lblTriggerVal = new System.Windows.Forms.Label(); + this.cmbTriggerVal = new DarkUI.Controls.DarkComboBox(); + this.cmbTrigger = new DarkUI.Controls.DarkComboBox(); + this.grpEventConditions = new DarkUI.Controls.DarkGroupBox(); + this.btnEditConditions = new DarkUI.Controls.DarkButton(); + this.grpNewCommands = new DarkUI.Controls.DarkGroupBox(); + this.lblCloseCommands = new System.Windows.Forms.Label(); + this.lstCommands = new System.Windows.Forms.TreeView(); + this.grpEventCommands = new DarkUI.Controls.DarkGroupBox(); + this.lstEventCommands = new System.Windows.Forms.ListBox(); + this.grpCreateCommands = new DarkUI.Controls.DarkGroupBox(); + this.btnSave = new DarkUI.Controls.DarkButton(); + this.btnCancel = new DarkUI.Controls.DarkButton(); + this.commandMenu = new System.Windows.Forms.ContextMenuStrip(this.components); + this.btnInsert = new System.Windows.Forms.ToolStripMenuItem(); + this.btnEdit = new System.Windows.Forms.ToolStripMenuItem(); + this.btnCut = new System.Windows.Forms.ToolStripMenuItem(); + this.btnCopy = new System.Windows.Forms.ToolStripMenuItem(); + this.btnPaste = new System.Windows.Forms.ToolStripMenuItem(); + this.btnDelete = new System.Windows.Forms.ToolStripMenuItem(); + this.grpPageOptions = new DarkUI.Controls.DarkGroupBox(); + this.btnClearPage = new DarkUI.Controls.DarkButton(); + this.btnDeletePage = new DarkUI.Controls.DarkButton(); + this.btnPastePage = new DarkUI.Controls.DarkButton(); + this.btnCopyPage = new DarkUI.Controls.DarkButton(); + this.btnNewPage = new DarkUI.Controls.DarkButton(); + this.grpGeneral = new DarkUI.Controls.DarkGroupBox(); + this.chkIsGlobal = new DarkUI.Controls.DarkCheckBox(); + this.pnlTabsContainer = new System.Windows.Forms.Panel(); + this.pnlTabs = new System.Windows.Forms.Panel(); + this.btnTabsRight = new DarkUI.Controls.DarkButton(); + this.btnTabsLeft = new DarkUI.Controls.DarkButton(); + this.panel1 = new System.Windows.Forms.Panel(); + this.grpEntityOptions.SuspendLayout(); + this.grpExtra.SuspendLayout(); + this.grpInspector.SuspendLayout(); + this.grpPreview.SuspendLayout(); + this.grpMovement.SuspendLayout(); + this.grpTriggers.SuspendLayout(); + this.grpEventConditions.SuspendLayout(); + this.grpNewCommands.SuspendLayout(); + this.grpEventCommands.SuspendLayout(); + this.commandMenu.SuspendLayout(); + this.grpPageOptions.SuspendLayout(); + this.grpGeneral.SuspendLayout(); + this.pnlTabsContainer.SuspendLayout(); + this.SuspendLayout(); + // + // lblName + // + this.lblName.AutoSize = true; + this.lblName.Location = new System.Drawing.Point(6, 22); + this.lblName.Name = "lblName"; + this.lblName.Size = new System.Drawing.Size(38, 13); + this.lblName.TabIndex = 1; + this.lblName.Text = "Name:"; + // + // txtEventname + // + this.txtEventname.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(69)))), ((int)(((byte)(73)))), ((int)(((byte)(74))))); + this.txtEventname.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.txtEventname.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(220)))), ((int)(((byte)(220)))), ((int)(((byte)(220))))); + this.txtEventname.Location = new System.Drawing.Point(48, 19); + this.txtEventname.Name = "txtEventname"; + this.txtEventname.Size = new System.Drawing.Size(124, 20); + this.txtEventname.TabIndex = 2; + this.txtEventname.TextChanged += new System.EventHandler(this.txtEventname_TextChanged); + // + // grpEntityOptions + // + this.grpEntityOptions.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(48))))); + this.grpEntityOptions.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(90)))), ((int)(((byte)(90)))), ((int)(((byte)(90))))); + this.grpEntityOptions.Controls.Add(this.grpExtra); + this.grpEntityOptions.Controls.Add(this.grpInspector); + this.grpEntityOptions.Controls.Add(this.grpPreview); + this.grpEntityOptions.Controls.Add(this.grpMovement); + this.grpEntityOptions.ForeColor = System.Drawing.Color.Gainsboro; + this.grpEntityOptions.Location = new System.Drawing.Point(21, 150); + this.grpEntityOptions.Name = "grpEntityOptions"; + this.grpEntityOptions.Size = new System.Drawing.Size(326, 423); + this.grpEntityOptions.TabIndex = 12; + this.grpEntityOptions.TabStop = false; + this.grpEntityOptions.Text = "Entity Options"; + // + // grpExtra + // + this.grpExtra.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(48))))); + this.grpExtra.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(90)))), ((int)(((byte)(90)))), ((int)(((byte)(90))))); + this.grpExtra.Controls.Add(this.chkInteractionFreeze); + this.grpExtra.Controls.Add(this.chkWalkingAnimation); + this.grpExtra.Controls.Add(this.chkDirectionFix); + this.grpExtra.Controls.Add(this.chkHideName); + this.grpExtra.Controls.Add(this.chkWalkThrough); + this.grpExtra.ForeColor = System.Drawing.Color.Gainsboro; + this.grpExtra.Location = new System.Drawing.Point(6, 297); + this.grpExtra.Name = "grpExtra"; + this.grpExtra.Size = new System.Drawing.Size(315, 64); + this.grpExtra.TabIndex = 9; + this.grpExtra.TabStop = false; + this.grpExtra.Text = "Extra"; + // + // chkInteractionFreeze + // + this.chkInteractionFreeze.AutoSize = true; + this.chkInteractionFreeze.Location = new System.Drawing.Point(6, 41); + this.chkInteractionFreeze.Name = "chkInteractionFreeze"; + this.chkInteractionFreeze.Size = new System.Drawing.Size(111, 17); + this.chkInteractionFreeze.TabIndex = 6; + this.chkInteractionFreeze.Text = "Interaction Freeze"; + this.chkInteractionFreeze.CheckedChanged += new System.EventHandler(this.chkInteractionFreeze_CheckedChanged); + // + // chkWalkingAnimation + // + this.chkWalkingAnimation.AutoSize = true; + this.chkWalkingAnimation.Location = new System.Drawing.Point(214, 19); + this.chkWalkingAnimation.Name = "chkWalkingAnimation"; + this.chkWalkingAnimation.Size = new System.Drawing.Size(91, 17); + this.chkWalkingAnimation.TabIndex = 5; + this.chkWalkingAnimation.Text = "Walking Anim"; + this.chkWalkingAnimation.CheckedChanged += new System.EventHandler(this.chkWalkingAnimation_CheckedChanged); + // + // chkDirectionFix + // + this.chkDirectionFix.AutoSize = true; + this.chkDirectionFix.Location = new System.Drawing.Point(156, 19); + this.chkDirectionFix.Name = "chkDirectionFix"; + this.chkDirectionFix.Size = new System.Drawing.Size(55, 17); + this.chkDirectionFix.TabIndex = 4; + this.chkDirectionFix.Text = "Dir Fix"; + this.chkDirectionFix.CheckedChanged += new System.EventHandler(this.chkDirectionFix_CheckedChanged); + // + // chkHideName + // + this.chkHideName.AutoSize = true; + this.chkHideName.Location = new System.Drawing.Point(75, 19); + this.chkHideName.Name = "chkHideName"; + this.chkHideName.Size = new System.Drawing.Size(79, 17); + this.chkHideName.TabIndex = 3; + this.chkHideName.Text = "Hide Name"; + this.chkHideName.CheckedChanged += new System.EventHandler(this.chkHideName_CheckedChanged); + // + // chkWalkThrough + // + this.chkWalkThrough.AutoSize = true; + this.chkWalkThrough.Location = new System.Drawing.Point(6, 19); + this.chkWalkThrough.Name = "chkWalkThrough"; + this.chkWalkThrough.Size = new System.Drawing.Size(69, 17); + this.chkWalkThrough.TabIndex = 2; + this.chkWalkThrough.Text = "Passable"; + this.chkWalkThrough.CheckedChanged += new System.EventHandler(this.chkWalkThrough_CheckedChanged); + // + // grpInspector + // + this.grpInspector.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(48))))); + this.grpInspector.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(90)))), ((int)(((byte)(90)))), ((int)(((byte)(90))))); + this.grpInspector.Controls.Add(this.pnlFacePreview); + this.grpInspector.Controls.Add(this.lblInspectorDesc); + this.grpInspector.Controls.Add(this.txtDesc); + this.grpInspector.Controls.Add(this.chkDisableInspector); + this.grpInspector.Controls.Add(this.cmbPreviewFace); + this.grpInspector.Controls.Add(this.lblFace); + this.grpInspector.ForeColor = System.Drawing.Color.Gainsboro; + this.grpInspector.Location = new System.Drawing.Point(6, 179); + this.grpInspector.Name = "grpInspector"; + this.grpInspector.Size = new System.Drawing.Size(316, 117); + this.grpInspector.TabIndex = 7; + this.grpInspector.TabStop = false; + this.grpInspector.Text = "Entity Inspector Options"; + // + // pnlFacePreview + // + this.pnlFacePreview.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch; + this.pnlFacePreview.Location = new System.Drawing.Point(9, 46); + this.pnlFacePreview.Name = "pnlFacePreview"; + this.pnlFacePreview.Size = new System.Drawing.Size(64, 64); + this.pnlFacePreview.TabIndex = 12; + // + // lblInspectorDesc + // + this.lblInspectorDesc.Location = new System.Drawing.Point(79, 42); + this.lblInspectorDesc.Name = "lblInspectorDesc"; + this.lblInspectorDesc.Size = new System.Drawing.Size(112, 19); + this.lblInspectorDesc.TabIndex = 11; + this.lblInspectorDesc.Text = "Inspector Description:"; + // + // txtDesc + // + this.txtDesc.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(69)))), ((int)(((byte)(73)))), ((int)(((byte)(74))))); + this.txtDesc.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.txtDesc.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(220)))), ((int)(((byte)(220)))), ((int)(((byte)(220))))); + this.txtDesc.Location = new System.Drawing.Point(79, 61); + this.txtDesc.Multiline = true; + this.txtDesc.Name = "txtDesc"; + this.txtDesc.Size = new System.Drawing.Size(231, 50); + this.txtDesc.TabIndex = 0; + this.txtDesc.TextChanged += new System.EventHandler(this.txtDesc_TextChanged); + // + // chkDisableInspector + // + this.chkDisableInspector.Location = new System.Drawing.Point(204, 15); + this.chkDisableInspector.Name = "chkDisableInspector"; + this.chkDisableInspector.Size = new System.Drawing.Size(107, 21); + this.chkDisableInspector.TabIndex = 4; + this.chkDisableInspector.Text = "Disable Inspector"; + this.chkDisableInspector.CheckedChanged += new System.EventHandler(this.chkDisablePreview_CheckedChanged); + // + // cmbPreviewFace + // + this.cmbPreviewFace.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(69)))), ((int)(((byte)(73)))), ((int)(((byte)(74))))); + this.cmbPreviewFace.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(90)))), ((int)(((byte)(90)))), ((int)(((byte)(90))))); + this.cmbPreviewFace.BorderStyle = System.Windows.Forms.ButtonBorderStyle.Solid; + this.cmbPreviewFace.ButtonColor = System.Drawing.Color.FromArgb(((int)(((byte)(43)))), ((int)(((byte)(43)))), ((int)(((byte)(43))))); + this.cmbPreviewFace.ButtonIcon = ((System.Drawing.Bitmap)(resources.GetObject("cmbPreviewFace.ButtonIcon"))); + this.cmbPreviewFace.DrawDropdownHoverOutline = false; + this.cmbPreviewFace.DrawFocusRectangle = false; + this.cmbPreviewFace.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed; + this.cmbPreviewFace.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.cmbPreviewFace.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.cmbPreviewFace.ForeColor = System.Drawing.Color.Gainsboro; + this.cmbPreviewFace.FormattingEnabled = true; + this.cmbPreviewFace.Location = new System.Drawing.Point(46, 15); + this.cmbPreviewFace.Name = "cmbPreviewFace"; + this.cmbPreviewFace.Size = new System.Drawing.Size(114, 21); + this.cmbPreviewFace.TabIndex = 10; + this.cmbPreviewFace.Text = null; + this.cmbPreviewFace.TextPadding = new System.Windows.Forms.Padding(2); + this.cmbPreviewFace.SelectedIndexChanged += new System.EventHandler(this.cmbPreviewFace_SelectedIndexChanged); + // + // lblFace + // + this.lblFace.AutoSize = true; + this.lblFace.Location = new System.Drawing.Point(6, 18); + this.lblFace.Name = "lblFace"; + this.lblFace.Size = new System.Drawing.Size(34, 13); + this.lblFace.TabIndex = 9; + this.lblFace.Text = "Face:"; + // + // grpPreview + // + this.grpPreview.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(48))))); + this.grpPreview.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(90)))), ((int)(((byte)(90)))), ((int)(((byte)(90))))); + this.grpPreview.Controls.Add(this.lblAnimation); + this.grpPreview.Controls.Add(this.cmbAnimation); + this.grpPreview.Controls.Add(this.pnlPreview); + this.grpPreview.ForeColor = System.Drawing.Color.Gainsboro; + this.grpPreview.Location = new System.Drawing.Point(6, 13); + this.grpPreview.Name = "grpPreview"; + this.grpPreview.Size = new System.Drawing.Size(160, 163); + this.grpPreview.TabIndex = 10; + this.grpPreview.TabStop = false; + this.grpPreview.Text = "Preview"; + // + // lblAnimation + // + this.lblAnimation.AutoSize = true; + this.lblAnimation.Location = new System.Drawing.Point(4, 116); + this.lblAnimation.Name = "lblAnimation"; + this.lblAnimation.Size = new System.Drawing.Size(56, 13); + this.lblAnimation.TabIndex = 2; + this.lblAnimation.Text = "Animation:"; + // + // cmbAnimation + // + this.cmbAnimation.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(69)))), ((int)(((byte)(73)))), ((int)(((byte)(74))))); + this.cmbAnimation.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(90)))), ((int)(((byte)(90)))), ((int)(((byte)(90))))); + this.cmbAnimation.BorderStyle = System.Windows.Forms.ButtonBorderStyle.Solid; + this.cmbAnimation.ButtonColor = System.Drawing.Color.FromArgb(((int)(((byte)(43)))), ((int)(((byte)(43)))), ((int)(((byte)(43))))); + this.cmbAnimation.ButtonIcon = ((System.Drawing.Bitmap)(resources.GetObject("cmbAnimation.ButtonIcon"))); + this.cmbAnimation.DrawDropdownHoverOutline = false; + this.cmbAnimation.DrawFocusRectangle = false; + this.cmbAnimation.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed; + this.cmbAnimation.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.cmbAnimation.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.cmbAnimation.ForeColor = System.Drawing.Color.Gainsboro; + this.cmbAnimation.FormattingEnabled = true; + this.cmbAnimation.Location = new System.Drawing.Point(20, 132); + this.cmbAnimation.Name = "cmbAnimation"; + this.cmbAnimation.Size = new System.Drawing.Size(125, 21); + this.cmbAnimation.TabIndex = 1; + this.cmbAnimation.Text = null; + this.cmbAnimation.TextPadding = new System.Windows.Forms.Padding(2); + this.cmbAnimation.SelectedIndexChanged += new System.EventHandler(this.cmbAnimation_SelectedIndexChanged); + // + // pnlPreview + // + this.pnlPreview.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(63)))), ((int)(((byte)(65))))); + this.pnlPreview.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.pnlPreview.Location = new System.Drawing.Point(33, 14); + this.pnlPreview.Name = "pnlPreview"; + this.pnlPreview.Size = new System.Drawing.Size(96, 96); + this.pnlPreview.TabIndex = 0; + this.pnlPreview.DoubleClick += new System.EventHandler(this.pnlPreview_DoubleClick); + // + // grpMovement + // + this.grpMovement.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(48))))); + this.grpMovement.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(90)))), ((int)(((byte)(90)))), ((int)(((byte)(90))))); + this.grpMovement.Controls.Add(this.lblLayer); + this.grpMovement.Controls.Add(this.cmbLayering); + this.grpMovement.Controls.Add(this.cmbEventFreq); + this.grpMovement.Controls.Add(this.cmbEventSpeed); + this.grpMovement.Controls.Add(this.lblFreq); + this.grpMovement.Controls.Add(this.lblSpeed); + this.grpMovement.Controls.Add(this.btnSetRoute); + this.grpMovement.Controls.Add(this.lblType); + this.grpMovement.Controls.Add(this.cmbMoveType); + this.grpMovement.ForeColor = System.Drawing.Color.Gainsboro; + this.grpMovement.Location = new System.Drawing.Point(169, 13); + this.grpMovement.Name = "grpMovement"; + this.grpMovement.Size = new System.Drawing.Size(154, 163); + this.grpMovement.TabIndex = 8; + this.grpMovement.TabStop = false; + this.grpMovement.Text = "Movement"; + // + // lblLayer + // + this.lblLayer.AutoSize = true; + this.lblLayer.Location = new System.Drawing.Point(6, 134); + this.lblLayer.Name = "lblLayer"; + this.lblLayer.Size = new System.Drawing.Size(36, 13); + this.lblLayer.TabIndex = 7; + this.lblLayer.Text = "Layer:"; + // + // cmbLayering + // + this.cmbLayering.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(69)))), ((int)(((byte)(73)))), ((int)(((byte)(74))))); + this.cmbLayering.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(90)))), ((int)(((byte)(90)))), ((int)(((byte)(90))))); + this.cmbLayering.BorderStyle = System.Windows.Forms.ButtonBorderStyle.Solid; + this.cmbLayering.ButtonColor = System.Drawing.Color.FromArgb(((int)(((byte)(43)))), ((int)(((byte)(43)))), ((int)(((byte)(43))))); + this.cmbLayering.ButtonIcon = ((System.Drawing.Bitmap)(resources.GetObject("cmbLayering.ButtonIcon"))); + this.cmbLayering.DrawDropdownHoverOutline = false; + this.cmbLayering.DrawFocusRectangle = false; + this.cmbLayering.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed; + this.cmbLayering.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.cmbLayering.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.cmbLayering.ForeColor = System.Drawing.Color.Gainsboro; + this.cmbLayering.FormattingEnabled = true; + this.cmbLayering.Items.AddRange(new object[] { "Below Player", "Same as Player", "Above Player"}); - this.cmbLayering.Location = new System.Drawing.Point(48, 131); - this.cmbLayering.Name = "cmbLayering"; - this.cmbLayering.Size = new System.Drawing.Size(101, 21); - this.cmbLayering.TabIndex = 1; - this.cmbLayering.Text = "Below Player"; - this.cmbLayering.TextPadding = new System.Windows.Forms.Padding(2); - this.cmbLayering.SelectedIndexChanged += new System.EventHandler(this.cmbLayering_SelectedIndexChanged); - // - // cmbEventFreq - // - this.cmbEventFreq.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(69)))), ((int)(((byte)(73)))), ((int)(((byte)(74))))); - this.cmbEventFreq.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(90)))), ((int)(((byte)(90)))), ((int)(((byte)(90))))); - this.cmbEventFreq.BorderStyle = System.Windows.Forms.ButtonBorderStyle.Solid; - this.cmbEventFreq.ButtonColor = System.Drawing.Color.FromArgb(((int)(((byte)(43)))), ((int)(((byte)(43)))), ((int)(((byte)(43))))); - this.cmbEventFreq.ButtonIcon = ((System.Drawing.Bitmap)(resources.GetObject("cmbEventFreq.ButtonIcon"))); - this.cmbEventFreq.DrawDropdownHoverOutline = false; - this.cmbEventFreq.DrawFocusRectangle = false; - this.cmbEventFreq.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed; - this.cmbEventFreq.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; - this.cmbEventFreq.FlatStyle = System.Windows.Forms.FlatStyle.Flat; - this.cmbEventFreq.ForeColor = System.Drawing.Color.Gainsboro; - this.cmbEventFreq.FormattingEnabled = true; - this.cmbEventFreq.Items.AddRange(new object[] { + this.cmbLayering.Location = new System.Drawing.Point(48, 131); + this.cmbLayering.Name = "cmbLayering"; + this.cmbLayering.Size = new System.Drawing.Size(101, 21); + this.cmbLayering.TabIndex = 1; + this.cmbLayering.Text = "Below Player"; + this.cmbLayering.TextPadding = new System.Windows.Forms.Padding(2); + this.cmbLayering.SelectedIndexChanged += new System.EventHandler(this.cmbLayering_SelectedIndexChanged); + // + // cmbEventFreq + // + this.cmbEventFreq.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(69)))), ((int)(((byte)(73)))), ((int)(((byte)(74))))); + this.cmbEventFreq.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(90)))), ((int)(((byte)(90)))), ((int)(((byte)(90))))); + this.cmbEventFreq.BorderStyle = System.Windows.Forms.ButtonBorderStyle.Solid; + this.cmbEventFreq.ButtonColor = System.Drawing.Color.FromArgb(((int)(((byte)(43)))), ((int)(((byte)(43)))), ((int)(((byte)(43))))); + this.cmbEventFreq.ButtonIcon = ((System.Drawing.Bitmap)(resources.GetObject("cmbEventFreq.ButtonIcon"))); + this.cmbEventFreq.DrawDropdownHoverOutline = false; + this.cmbEventFreq.DrawFocusRectangle = false; + this.cmbEventFreq.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed; + this.cmbEventFreq.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.cmbEventFreq.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.cmbEventFreq.ForeColor = System.Drawing.Color.Gainsboro; + this.cmbEventFreq.FormattingEnabled = true; + this.cmbEventFreq.Items.AddRange(new object[] { "Not Very Often", "Not Often", "Normal", "Often", "Very Often"}); - this.cmbEventFreq.Location = new System.Drawing.Point(48, 104); - this.cmbEventFreq.Name = "cmbEventFreq"; - this.cmbEventFreq.Size = new System.Drawing.Size(100, 21); - this.cmbEventFreq.TabIndex = 6; - this.cmbEventFreq.Text = "Not Very Often"; - this.cmbEventFreq.TextPadding = new System.Windows.Forms.Padding(2); - this.cmbEventFreq.SelectedIndexChanged += new System.EventHandler(this.cmbEventFreq_SelectedIndexChanged); - // - // cmbEventSpeed - // - this.cmbEventSpeed.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(69)))), ((int)(((byte)(73)))), ((int)(((byte)(74))))); - this.cmbEventSpeed.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(90)))), ((int)(((byte)(90)))), ((int)(((byte)(90))))); - this.cmbEventSpeed.BorderStyle = System.Windows.Forms.ButtonBorderStyle.Solid; - this.cmbEventSpeed.ButtonColor = System.Drawing.Color.FromArgb(((int)(((byte)(43)))), ((int)(((byte)(43)))), ((int)(((byte)(43))))); - this.cmbEventSpeed.ButtonIcon = ((System.Drawing.Bitmap)(resources.GetObject("cmbEventSpeed.ButtonIcon"))); - this.cmbEventSpeed.DrawDropdownHoverOutline = false; - this.cmbEventSpeed.DrawFocusRectangle = false; - this.cmbEventSpeed.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed; - this.cmbEventSpeed.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; - this.cmbEventSpeed.FlatStyle = System.Windows.Forms.FlatStyle.Flat; - this.cmbEventSpeed.ForeColor = System.Drawing.Color.Gainsboro; - this.cmbEventSpeed.FormattingEnabled = true; - this.cmbEventSpeed.Items.AddRange(new object[] { + this.cmbEventFreq.Location = new System.Drawing.Point(48, 104); + this.cmbEventFreq.Name = "cmbEventFreq"; + this.cmbEventFreq.Size = new System.Drawing.Size(100, 21); + this.cmbEventFreq.TabIndex = 6; + this.cmbEventFreq.Text = "Not Very Often"; + this.cmbEventFreq.TextPadding = new System.Windows.Forms.Padding(2); + this.cmbEventFreq.SelectedIndexChanged += new System.EventHandler(this.cmbEventFreq_SelectedIndexChanged); + // + // cmbEventSpeed + // + this.cmbEventSpeed.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(69)))), ((int)(((byte)(73)))), ((int)(((byte)(74))))); + this.cmbEventSpeed.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(90)))), ((int)(((byte)(90)))), ((int)(((byte)(90))))); + this.cmbEventSpeed.BorderStyle = System.Windows.Forms.ButtonBorderStyle.Solid; + this.cmbEventSpeed.ButtonColor = System.Drawing.Color.FromArgb(((int)(((byte)(43)))), ((int)(((byte)(43)))), ((int)(((byte)(43))))); + this.cmbEventSpeed.ButtonIcon = ((System.Drawing.Bitmap)(resources.GetObject("cmbEventSpeed.ButtonIcon"))); + this.cmbEventSpeed.DrawDropdownHoverOutline = false; + this.cmbEventSpeed.DrawFocusRectangle = false; + this.cmbEventSpeed.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed; + this.cmbEventSpeed.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.cmbEventSpeed.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.cmbEventSpeed.ForeColor = System.Drawing.Color.Gainsboro; + this.cmbEventSpeed.FormattingEnabled = true; + this.cmbEventSpeed.Items.AddRange(new object[] { "Slowest", "Slower", "Normal", "Faster", "Fastest"}); - this.cmbEventSpeed.Location = new System.Drawing.Point(48, 77); - this.cmbEventSpeed.Name = "cmbEventSpeed"; - this.cmbEventSpeed.Size = new System.Drawing.Size(100, 21); - this.cmbEventSpeed.TabIndex = 5; - this.cmbEventSpeed.Text = "Slowest"; - this.cmbEventSpeed.TextPadding = new System.Windows.Forms.Padding(2); - this.cmbEventSpeed.SelectedIndexChanged += new System.EventHandler(this.cmbEventSpeed_SelectedIndexChanged); - // - // lblFreq - // - this.lblFreq.AutoSize = true; - this.lblFreq.Location = new System.Drawing.Point(6, 107); - this.lblFreq.Name = "lblFreq"; - this.lblFreq.Size = new System.Drawing.Size(31, 13); - this.lblFreq.TabIndex = 4; - this.lblFreq.Text = "Freq:"; - // - // lblSpeed - // - this.lblSpeed.AutoSize = true; - this.lblSpeed.Location = new System.Drawing.Point(6, 80); - this.lblSpeed.Name = "lblSpeed"; - this.lblSpeed.Size = new System.Drawing.Size(41, 13); - this.lblSpeed.TabIndex = 3; - this.lblSpeed.Text = "Speed:"; - // - // btnSetRoute - // - this.btnSetRoute.Enabled = false; - this.btnSetRoute.Location = new System.Drawing.Point(73, 43); - this.btnSetRoute.Name = "btnSetRoute"; - this.btnSetRoute.Padding = new System.Windows.Forms.Padding(5); - this.btnSetRoute.Size = new System.Drawing.Size(75, 23); - this.btnSetRoute.TabIndex = 2; - this.btnSetRoute.Text = "Set Route...."; - this.btnSetRoute.Click += new System.EventHandler(this.btnSetRoute_Click); - // - // lblType - // - this.lblType.AutoSize = true; - this.lblType.Location = new System.Drawing.Point(6, 22); - this.lblType.Name = "lblType"; - this.lblType.Size = new System.Drawing.Size(34, 13); - this.lblType.TabIndex = 1; - this.lblType.Text = "Type:"; - // - // cmbMoveType - // - this.cmbMoveType.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(69)))), ((int)(((byte)(73)))), ((int)(((byte)(74))))); - this.cmbMoveType.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(90)))), ((int)(((byte)(90)))), ((int)(((byte)(90))))); - this.cmbMoveType.BorderStyle = System.Windows.Forms.ButtonBorderStyle.Solid; - this.cmbMoveType.ButtonColor = System.Drawing.Color.FromArgb(((int)(((byte)(43)))), ((int)(((byte)(43)))), ((int)(((byte)(43))))); - this.cmbMoveType.ButtonIcon = ((System.Drawing.Bitmap)(resources.GetObject("cmbMoveType.ButtonIcon"))); - this.cmbMoveType.DrawDropdownHoverOutline = false; - this.cmbMoveType.DrawFocusRectangle = false; - this.cmbMoveType.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed; - this.cmbMoveType.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; - this.cmbMoveType.FlatStyle = System.Windows.Forms.FlatStyle.Flat; - this.cmbMoveType.ForeColor = System.Drawing.Color.Gainsboro; - this.cmbMoveType.FormattingEnabled = true; - this.cmbMoveType.Items.AddRange(new object[] { + this.cmbEventSpeed.Location = new System.Drawing.Point(48, 77); + this.cmbEventSpeed.Name = "cmbEventSpeed"; + this.cmbEventSpeed.Size = new System.Drawing.Size(100, 21); + this.cmbEventSpeed.TabIndex = 5; + this.cmbEventSpeed.Text = "Slowest"; + this.cmbEventSpeed.TextPadding = new System.Windows.Forms.Padding(2); + this.cmbEventSpeed.SelectedIndexChanged += new System.EventHandler(this.cmbEventSpeed_SelectedIndexChanged); + // + // lblFreq + // + this.lblFreq.AutoSize = true; + this.lblFreq.Location = new System.Drawing.Point(6, 107); + this.lblFreq.Name = "lblFreq"; + this.lblFreq.Size = new System.Drawing.Size(31, 13); + this.lblFreq.TabIndex = 4; + this.lblFreq.Text = "Freq:"; + // + // lblSpeed + // + this.lblSpeed.AutoSize = true; + this.lblSpeed.Location = new System.Drawing.Point(6, 80); + this.lblSpeed.Name = "lblSpeed"; + this.lblSpeed.Size = new System.Drawing.Size(41, 13); + this.lblSpeed.TabIndex = 3; + this.lblSpeed.Text = "Speed:"; + // + // btnSetRoute + // + this.btnSetRoute.Enabled = false; + this.btnSetRoute.Location = new System.Drawing.Point(73, 43); + this.btnSetRoute.Name = "btnSetRoute"; + this.btnSetRoute.Padding = new System.Windows.Forms.Padding(5); + this.btnSetRoute.Size = new System.Drawing.Size(75, 23); + this.btnSetRoute.TabIndex = 2; + this.btnSetRoute.Text = "Set Route...."; + this.btnSetRoute.Click += new System.EventHandler(this.btnSetRoute_Click); + // + // lblType + // + this.lblType.AutoSize = true; + this.lblType.Location = new System.Drawing.Point(6, 22); + this.lblType.Name = "lblType"; + this.lblType.Size = new System.Drawing.Size(34, 13); + this.lblType.TabIndex = 1; + this.lblType.Text = "Type:"; + // + // cmbMoveType + // + this.cmbMoveType.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(69)))), ((int)(((byte)(73)))), ((int)(((byte)(74))))); + this.cmbMoveType.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(90)))), ((int)(((byte)(90)))), ((int)(((byte)(90))))); + this.cmbMoveType.BorderStyle = System.Windows.Forms.ButtonBorderStyle.Solid; + this.cmbMoveType.ButtonColor = System.Drawing.Color.FromArgb(((int)(((byte)(43)))), ((int)(((byte)(43)))), ((int)(((byte)(43))))); + this.cmbMoveType.ButtonIcon = ((System.Drawing.Bitmap)(resources.GetObject("cmbMoveType.ButtonIcon"))); + this.cmbMoveType.DrawDropdownHoverOutline = false; + this.cmbMoveType.DrawFocusRectangle = false; + this.cmbMoveType.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed; + this.cmbMoveType.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.cmbMoveType.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.cmbMoveType.ForeColor = System.Drawing.Color.Gainsboro; + this.cmbMoveType.FormattingEnabled = true; + this.cmbMoveType.Items.AddRange(new object[] { "None", "Random", "Move Route"}); - this.cmbMoveType.Location = new System.Drawing.Point(48, 19); - this.cmbMoveType.Name = "cmbMoveType"; - this.cmbMoveType.Size = new System.Drawing.Size(100, 21); - this.cmbMoveType.TabIndex = 0; - this.cmbMoveType.Text = "None"; - this.cmbMoveType.TextPadding = new System.Windows.Forms.Padding(2); - this.cmbMoveType.SelectedIndexChanged += new System.EventHandler(this.cmbMoveType_SelectedIndexChanged); - // - // grpTriggers - // - this.grpTriggers.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(48))))); - this.grpTriggers.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(90)))), ((int)(((byte)(90)))), ((int)(((byte)(90))))); - this.grpTriggers.Controls.Add(this.txtCommand); - this.grpTriggers.Controls.Add(this.lblCommand); - this.grpTriggers.Controls.Add(this.lblTriggerVal); - this.grpTriggers.Controls.Add(this.cmbTriggerVal); - this.grpTriggers.Controls.Add(this.cmbTrigger); - this.grpTriggers.ForeColor = System.Drawing.Color.Gainsboro; - this.grpTriggers.Location = new System.Drawing.Point(25, 517); - this.grpTriggers.Name = "grpTriggers"; - this.grpTriggers.Size = new System.Drawing.Size(317, 44); - this.grpTriggers.TabIndex = 21; - this.grpTriggers.TabStop = false; - this.grpTriggers.Text = "Trigger"; - // - // txtCommand - // - this.txtCommand.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(69)))), ((int)(((byte)(73)))), ((int)(((byte)(74))))); - this.txtCommand.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; - this.txtCommand.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(220)))), ((int)(((byte)(220)))), ((int)(((byte)(220))))); - this.txtCommand.Location = new System.Drawing.Point(181, 13); - this.txtCommand.Name = "txtCommand"; - this.txtCommand.Size = new System.Drawing.Size(130, 20); - this.txtCommand.TabIndex = 12; - this.txtCommand.Visible = false; - this.txtCommand.TextChanged += new System.EventHandler(this.txtCommand_TextChanged); - // - // lblCommand - // - this.lblCommand.AutoSize = true; - this.lblCommand.Location = new System.Drawing.Point(113, 17); - this.lblCommand.Name = "lblCommand"; - this.lblCommand.Size = new System.Drawing.Size(70, 13); - this.lblCommand.TabIndex = 11; - this.lblCommand.Text = "/Command: /"; - this.lblCommand.Visible = false; - // - // lblTriggerVal - // - this.lblTriggerVal.AutoSize = true; - this.lblTriggerVal.Location = new System.Drawing.Point(113, 17); - this.lblTriggerVal.Name = "lblTriggerVal"; - this.lblTriggerVal.Size = new System.Drawing.Size(53, 13); - this.lblTriggerVal.TabIndex = 10; - this.lblTriggerVal.Text = "Projectile:"; - this.lblTriggerVal.Visible = false; - // - // cmbTriggerVal - // - this.cmbTriggerVal.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(69)))), ((int)(((byte)(73)))), ((int)(((byte)(74))))); - this.cmbTriggerVal.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(90)))), ((int)(((byte)(90)))), ((int)(((byte)(90))))); - this.cmbTriggerVal.BorderStyle = System.Windows.Forms.ButtonBorderStyle.Solid; - this.cmbTriggerVal.ButtonColor = System.Drawing.Color.FromArgb(((int)(((byte)(43)))), ((int)(((byte)(43)))), ((int)(((byte)(43))))); - this.cmbTriggerVal.ButtonIcon = ((System.Drawing.Bitmap)(resources.GetObject("cmbTriggerVal.ButtonIcon"))); - this.cmbTriggerVal.DrawDropdownHoverOutline = false; - this.cmbTriggerVal.DrawFocusRectangle = false; - this.cmbTriggerVal.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed; - this.cmbTriggerVal.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; - this.cmbTriggerVal.FlatStyle = System.Windows.Forms.FlatStyle.Flat; - this.cmbTriggerVal.ForeColor = System.Drawing.Color.Gainsboro; - this.cmbTriggerVal.FormattingEnabled = true; - this.cmbTriggerVal.Items.AddRange(new object[] { + this.cmbMoveType.Location = new System.Drawing.Point(48, 19); + this.cmbMoveType.Name = "cmbMoveType"; + this.cmbMoveType.Size = new System.Drawing.Size(100, 21); + this.cmbMoveType.TabIndex = 0; + this.cmbMoveType.Text = "None"; + this.cmbMoveType.TextPadding = new System.Windows.Forms.Padding(2); + this.cmbMoveType.SelectedIndexChanged += new System.EventHandler(this.cmbMoveType_SelectedIndexChanged); + // + // grpTriggers + // + this.grpTriggers.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(48))))); + this.grpTriggers.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(90)))), ((int)(((byte)(90)))), ((int)(((byte)(90))))); + this.grpTriggers.Controls.Add(this.txtCommand); + this.grpTriggers.Controls.Add(this.lblCommand); + this.grpTriggers.Controls.Add(this.lblTriggerVal); + this.grpTriggers.Controls.Add(this.cmbTriggerVal); + this.grpTriggers.Controls.Add(this.cmbTrigger); + this.grpTriggers.ForeColor = System.Drawing.Color.Gainsboro; + this.grpTriggers.Location = new System.Drawing.Point(25, 517); + this.grpTriggers.Name = "grpTriggers"; + this.grpTriggers.Size = new System.Drawing.Size(317, 44); + this.grpTriggers.TabIndex = 21; + this.grpTriggers.TabStop = false; + this.grpTriggers.Text = "Trigger"; + // + // txtCommand + // + this.txtCommand.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(69)))), ((int)(((byte)(73)))), ((int)(((byte)(74))))); + this.txtCommand.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.txtCommand.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(220)))), ((int)(((byte)(220)))), ((int)(((byte)(220))))); + this.txtCommand.Location = new System.Drawing.Point(181, 13); + this.txtCommand.Name = "txtCommand"; + this.txtCommand.Size = new System.Drawing.Size(130, 20); + this.txtCommand.TabIndex = 12; + this.txtCommand.Visible = false; + this.txtCommand.TextChanged += new System.EventHandler(this.txtCommand_TextChanged); + // + // lblCommand + // + this.lblCommand.AutoSize = true; + this.lblCommand.Location = new System.Drawing.Point(113, 17); + this.lblCommand.Name = "lblCommand"; + this.lblCommand.Size = new System.Drawing.Size(70, 13); + this.lblCommand.TabIndex = 11; + this.lblCommand.Text = "/Command: /"; + this.lblCommand.Visible = false; + // + // lblTriggerVal + // + this.lblTriggerVal.AutoSize = true; + this.lblTriggerVal.Location = new System.Drawing.Point(113, 17); + this.lblTriggerVal.Name = "lblTriggerVal"; + this.lblTriggerVal.Size = new System.Drawing.Size(53, 13); + this.lblTriggerVal.TabIndex = 10; + this.lblTriggerVal.Text = "Projectile:"; + this.lblTriggerVal.Visible = false; + // + // cmbTriggerVal + // + this.cmbTriggerVal.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(69)))), ((int)(((byte)(73)))), ((int)(((byte)(74))))); + this.cmbTriggerVal.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(90)))), ((int)(((byte)(90)))), ((int)(((byte)(90))))); + this.cmbTriggerVal.BorderStyle = System.Windows.Forms.ButtonBorderStyle.Solid; + this.cmbTriggerVal.ButtonColor = System.Drawing.Color.FromArgb(((int)(((byte)(43)))), ((int)(((byte)(43)))), ((int)(((byte)(43))))); + this.cmbTriggerVal.ButtonIcon = ((System.Drawing.Bitmap)(resources.GetObject("cmbTriggerVal.ButtonIcon"))); + this.cmbTriggerVal.DrawDropdownHoverOutline = false; + this.cmbTriggerVal.DrawFocusRectangle = false; + this.cmbTriggerVal.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed; + this.cmbTriggerVal.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.cmbTriggerVal.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.cmbTriggerVal.ForeColor = System.Drawing.Color.Gainsboro; + this.cmbTriggerVal.FormattingEnabled = true; + this.cmbTriggerVal.Items.AddRange(new object[] { "None"}); - this.cmbTriggerVal.Location = new System.Drawing.Point(181, 13); - this.cmbTriggerVal.Name = "cmbTriggerVal"; - this.cmbTriggerVal.Size = new System.Drawing.Size(130, 21); - this.cmbTriggerVal.TabIndex = 9; - this.cmbTriggerVal.Text = "None"; - this.cmbTriggerVal.TextPadding = new System.Windows.Forms.Padding(2); - this.cmbTriggerVal.Visible = false; - // - // cmbTrigger - // - this.cmbTrigger.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(69)))), ((int)(((byte)(73)))), ((int)(((byte)(74))))); - this.cmbTrigger.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(90)))), ((int)(((byte)(90)))), ((int)(((byte)(90))))); - this.cmbTrigger.BorderStyle = System.Windows.Forms.ButtonBorderStyle.Solid; - this.cmbTrigger.ButtonColor = System.Drawing.Color.FromArgb(((int)(((byte)(43)))), ((int)(((byte)(43)))), ((int)(((byte)(43))))); - this.cmbTrigger.ButtonIcon = ((System.Drawing.Bitmap)(resources.GetObject("cmbTrigger.ButtonIcon"))); - this.cmbTrigger.DrawDropdownHoverOutline = false; - this.cmbTrigger.DrawFocusRectangle = false; - this.cmbTrigger.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed; - this.cmbTrigger.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; - this.cmbTrigger.FlatStyle = System.Windows.Forms.FlatStyle.Flat; - this.cmbTrigger.ForeColor = System.Drawing.Color.Gainsboro; - this.cmbTrigger.FormattingEnabled = true; - this.cmbTrigger.Items.AddRange(new object[] { + this.cmbTriggerVal.Location = new System.Drawing.Point(181, 13); + this.cmbTriggerVal.Name = "cmbTriggerVal"; + this.cmbTriggerVal.Size = new System.Drawing.Size(130, 21); + this.cmbTriggerVal.TabIndex = 9; + this.cmbTriggerVal.Text = "None"; + this.cmbTriggerVal.TextPadding = new System.Windows.Forms.Padding(2); + this.cmbTriggerVal.Visible = false; + // + // cmbTrigger + // + this.cmbTrigger.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(69)))), ((int)(((byte)(73)))), ((int)(((byte)(74))))); + this.cmbTrigger.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(90)))), ((int)(((byte)(90)))), ((int)(((byte)(90))))); + this.cmbTrigger.BorderStyle = System.Windows.Forms.ButtonBorderStyle.Solid; + this.cmbTrigger.ButtonColor = System.Drawing.Color.FromArgb(((int)(((byte)(43)))), ((int)(((byte)(43)))), ((int)(((byte)(43))))); + this.cmbTrigger.ButtonIcon = ((System.Drawing.Bitmap)(resources.GetObject("cmbTrigger.ButtonIcon"))); + this.cmbTrigger.DrawDropdownHoverOutline = false; + this.cmbTrigger.DrawFocusRectangle = false; + this.cmbTrigger.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed; + this.cmbTrigger.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.cmbTrigger.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.cmbTrigger.ForeColor = System.Drawing.Color.Gainsboro; + this.cmbTrigger.FormattingEnabled = true; + this.cmbTrigger.Items.AddRange(new object[] { "Action Button", "Player Touch", "Autorun", "Projectile Hit"}); - this.cmbTrigger.Location = new System.Drawing.Point(6, 13); - this.cmbTrigger.Name = "cmbTrigger"; - this.cmbTrigger.Size = new System.Drawing.Size(101, 21); - this.cmbTrigger.TabIndex = 2; - this.cmbTrigger.Text = "Action Button"; - this.cmbTrigger.TextPadding = new System.Windows.Forms.Padding(2); - this.cmbTrigger.SelectedIndexChanged += new System.EventHandler(this.cmbTrigger_SelectedIndexChanged); - // - // grpEventConditions - // - this.grpEventConditions.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(48))))); - this.grpEventConditions.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(90)))), ((int)(((byte)(90)))), ((int)(((byte)(90))))); - this.grpEventConditions.Controls.Add(this.btnEditConditions); - this.grpEventConditions.ForeColor = System.Drawing.Color.Gainsboro; - this.grpEventConditions.Location = new System.Drawing.Point(21, 89); - this.grpEventConditions.Name = "grpEventConditions"; - this.grpEventConditions.Size = new System.Drawing.Size(326, 55); - this.grpEventConditions.TabIndex = 5; - this.grpEventConditions.TabStop = false; - this.grpEventConditions.Text = "Conditions"; - // - // btnEditConditions - // - this.btnEditConditions.Location = new System.Drawing.Point(7, 20); - this.btnEditConditions.Name = "btnEditConditions"; - this.btnEditConditions.Padding = new System.Windows.Forms.Padding(5); - this.btnEditConditions.Size = new System.Drawing.Size(304, 23); - this.btnEditConditions.TabIndex = 0; - this.btnEditConditions.Text = "Spawn/Execution Conditions"; - this.btnEditConditions.Click += new System.EventHandler(this.btnEditConditions_Click); - // - // grpNewCommands - // - this.grpNewCommands.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(48))))); - this.grpNewCommands.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(90)))), ((int)(((byte)(90)))), ((int)(((byte)(90))))); - this.grpNewCommands.Controls.Add(this.lblCloseCommands); - this.grpNewCommands.Controls.Add(this.lstCommands); - this.grpNewCommands.ForeColor = System.Drawing.Color.Gainsboro; - this.grpNewCommands.Location = new System.Drawing.Point(353, 89); - this.grpNewCommands.Name = "grpNewCommands"; - this.grpNewCommands.Size = new System.Drawing.Size(457, 484); - this.grpNewCommands.TabIndex = 7; - this.grpNewCommands.TabStop = false; - this.grpNewCommands.Text = "Add Commands"; - this.grpNewCommands.Visible = false; - // - // lblCloseCommands - // - this.lblCloseCommands.AutoSize = true; - this.lblCloseCommands.Location = new System.Drawing.Point(437, 14); - this.lblCloseCommands.Name = "lblCloseCommands"; - this.lblCloseCommands.Size = new System.Drawing.Size(14, 13); - this.lblCloseCommands.TabIndex = 1; - this.lblCloseCommands.Text = "X"; - this.lblCloseCommands.Click += new System.EventHandler(this.lblCloseCommands_Click); - // - // lstCommands - // - this.lstCommands.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(63)))), ((int)(((byte)(65))))); - this.lstCommands.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; - this.lstCommands.ForeColor = System.Drawing.Color.Gainsboro; - this.lstCommands.LineColor = System.Drawing.Color.FromArgb(((int)(((byte)(150)))), ((int)(((byte)(150)))), ((int)(((byte)(150))))); - this.lstCommands.Location = new System.Drawing.Point(6, 32); - this.lstCommands.Name = "lstCommands"; - treeNode1.Name = "showtext"; - treeNode1.Tag = "1"; - treeNode1.Text = "Show Text"; - treeNode2.Name = "showoptions"; - treeNode2.Tag = "2"; - treeNode2.Text = "Show Options"; - treeNode3.Name = "inputvariable"; - treeNode3.Tag = "49"; - treeNode3.Text = "Input Variable"; - treeNode4.Name = "addchatboxtext"; - treeNode4.Tag = "3"; - treeNode4.Text = "Add Chatbox Text"; - treeNode5.Name = "dialogue"; - treeNode5.Text = "Dialogue"; - treeNode6.Name = "setvariable"; - treeNode6.Tag = "5"; - treeNode6.Text = "Set Variable"; - treeNode7.Name = "setselfswitch"; - treeNode7.Tag = "6"; - treeNode7.Text = "Set Self Switch"; - treeNode8.Name = "conditionalbranch"; - treeNode8.Tag = "7"; - treeNode8.Text = "Conditional Branch"; - treeNode9.Name = "exiteventprocess"; - treeNode9.Tag = "8"; - treeNode9.Text = "Exit Event Process"; - treeNode10.Name = "label"; - treeNode10.Tag = "9"; - treeNode10.Text = "Label"; - treeNode11.Name = "gotolabel"; - treeNode11.Tag = "10"; - treeNode11.Text = "Go To Label"; - treeNode12.Name = "startcommonevent"; - treeNode12.Tag = "11"; - treeNode12.Text = "Start Common Event"; - treeNode13.Name = "logicflow"; - treeNode13.Text = "Logic Flow"; - treeNode14.Name = "restorehp"; - treeNode14.Tag = "12"; - treeNode14.Text = "Restore HP"; - treeNode15.Name = "restoremp"; - treeNode15.Tag = "13"; - treeNode15.Text = "Restore MP"; - treeNode16.Name = "levelup"; - treeNode16.Tag = "14"; - treeNode16.Text = "Level Up"; - treeNode17.Name = "giveexperience"; - treeNode17.Tag = "15"; - treeNode17.Text = "Give Experience"; - treeNode18.Name = "changelevel"; - treeNode18.Tag = "16"; - treeNode18.Text = "Change Level"; - treeNode19.Name = "changespells"; - treeNode19.Tag = "17"; - treeNode19.Text = "Change Spells"; - treeNode20.Name = "changeitems"; - treeNode20.Tag = "18"; - treeNode20.Text = "Change Items"; - treeNode21.Name = "changesprite"; - treeNode21.Tag = "19"; - treeNode21.Text = "Change Sprite"; - treeNode22.Name = "changeface"; - treeNode22.Tag = "20"; - treeNode22.Text = "Change Face"; - treeNode23.Name = "changegender"; - treeNode23.Tag = "21"; - treeNode23.Text = "Change Gender"; - treeNode24.Name = "setaccess"; - treeNode24.Tag = "22"; - treeNode24.Text = "Set Access"; - treeNode25.Name = "changeclass"; - treeNode25.Tag = "38"; - treeNode25.Text = "Change Class"; - treeNode26.Name = "equipitem"; - treeNode26.Tag = "47"; - treeNode26.Text = "Equip Item"; - treeNode27.Name = "changenamecolor"; - treeNode27.Tag = "48"; - treeNode27.Text = "Change Name Color"; - treeNode28.Name = "changeplayerlabel"; - treeNode28.Tag = "50"; - treeNode28.Text = "Change Player Label"; - treeNode29.Name = "playercontrol"; - treeNode29.Text = "Player Control"; - treeNode30.Name = "warpplayer"; - treeNode30.Tag = "23"; - treeNode30.Text = "Warp Player"; - treeNode31.Name = "setmoveroute"; - treeNode31.Tag = "24"; - treeNode31.Text = "Set Move Route"; - treeNode32.Name = "waitmoveroute"; - treeNode32.Tag = "25"; - treeNode32.Text = "Wait for Route Completion"; - treeNode33.Name = "holdplayer"; - treeNode33.Tag = "26"; - treeNode33.Text = "Hold Player"; - treeNode34.Name = "releaseplayer"; - treeNode34.Tag = "27"; - treeNode34.Text = "Release Player"; - treeNode35.Name = "spawnnpc"; - treeNode35.Tag = "28"; - treeNode35.Text = "Spawn NPC"; - treeNode36.Name = "despawnnpcs"; - treeNode36.Tag = "39"; - treeNode36.Text = "Despawn NPC"; - treeNode37.Name = "hideplayer"; - treeNode37.Tag = "45"; - treeNode37.Text = "Hide Player"; - treeNode38.Name = "showplayer"; - treeNode38.Tag = "46"; - treeNode38.Text = "Show Player"; - treeNode39.Name = "movement"; - treeNode39.Text = "Movement"; - treeNode40.Name = "playanimation"; - treeNode40.Tag = "29"; - treeNode40.Text = "Play Animation"; - treeNode41.Name = "playbgm"; - treeNode41.Tag = "30"; - treeNode41.Text = "Play BGM"; - treeNode42.Name = "fadeoutbgm"; - treeNode42.Tag = "31"; - treeNode42.Text = "Fadeout BGM"; - treeNode43.Name = "playsound"; - treeNode43.Tag = "32"; - treeNode43.Text = "Play Sound"; - treeNode44.Name = "stopsounds"; - treeNode44.Tag = "33"; - treeNode44.Text = "Stop Sounds"; - treeNode45.Name = "showpicture"; - treeNode45.Tag = "43"; - treeNode45.Text = "Show Picture"; - treeNode46.Name = "hidepicture"; - treeNode46.Tag = "44"; - treeNode46.Text = "Hide Picture"; - treeNode47.Name = "specialeffects"; - treeNode47.Text = "Special Effects"; - treeNode48.Name = "startquest"; - treeNode48.Tag = "40"; - treeNode48.Text = "Start Quest"; - treeNode49.Name = "completequesttask"; - treeNode49.Tag = "41"; - treeNode49.Text = "Complete Quest Task"; - treeNode50.Name = "endquest"; - treeNode50.Tag = "42"; - treeNode50.Text = "End Quest"; - treeNode51.Name = "questcontrol"; - treeNode51.Text = "Quest Control"; - treeNode52.Name = "wait"; - treeNode52.Tag = "34"; - treeNode52.Text = "Wait..."; - treeNode53.Name = "etc"; - treeNode53.Text = "Etc"; - treeNode54.Name = "openbank"; - treeNode54.Tag = "35"; - treeNode54.Text = "Open Bank"; - treeNode55.Name = "openshop"; - treeNode55.Tag = "36"; - treeNode55.Text = "Open Shop"; - treeNode56.Name = "opencraftingstation"; - treeNode56.Tag = "37"; - treeNode56.Text = "Open Crafting Station"; - treeNode57.Name = "shopandbank"; - treeNode57.Text = "Shop and Bank"; - this.lstCommands.Nodes.AddRange(new System.Windows.Forms.TreeNode[] { + this.cmbTrigger.Location = new System.Drawing.Point(6, 13); + this.cmbTrigger.Name = "cmbTrigger"; + this.cmbTrigger.Size = new System.Drawing.Size(101, 21); + this.cmbTrigger.TabIndex = 2; + this.cmbTrigger.Text = "Action Button"; + this.cmbTrigger.TextPadding = new System.Windows.Forms.Padding(2); + this.cmbTrigger.SelectedIndexChanged += new System.EventHandler(this.cmbTrigger_SelectedIndexChanged); + // + // grpEventConditions + // + this.grpEventConditions.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(48))))); + this.grpEventConditions.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(90)))), ((int)(((byte)(90)))), ((int)(((byte)(90))))); + this.grpEventConditions.Controls.Add(this.btnEditConditions); + this.grpEventConditions.ForeColor = System.Drawing.Color.Gainsboro; + this.grpEventConditions.Location = new System.Drawing.Point(21, 89); + this.grpEventConditions.Name = "grpEventConditions"; + this.grpEventConditions.Size = new System.Drawing.Size(326, 55); + this.grpEventConditions.TabIndex = 5; + this.grpEventConditions.TabStop = false; + this.grpEventConditions.Text = "Conditions"; + // + // btnEditConditions + // + this.btnEditConditions.Location = new System.Drawing.Point(7, 20); + this.btnEditConditions.Name = "btnEditConditions"; + this.btnEditConditions.Padding = new System.Windows.Forms.Padding(5); + this.btnEditConditions.Size = new System.Drawing.Size(304, 23); + this.btnEditConditions.TabIndex = 0; + this.btnEditConditions.Text = "Spawn/Execution Conditions"; + this.btnEditConditions.Click += new System.EventHandler(this.btnEditConditions_Click); + // + // grpNewCommands + // + this.grpNewCommands.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(48))))); + this.grpNewCommands.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(90)))), ((int)(((byte)(90)))), ((int)(((byte)(90))))); + this.grpNewCommands.Controls.Add(this.lblCloseCommands); + this.grpNewCommands.Controls.Add(this.lstCommands); + this.grpNewCommands.ForeColor = System.Drawing.Color.Gainsboro; + this.grpNewCommands.Location = new System.Drawing.Point(353, 89); + this.grpNewCommands.Name = "grpNewCommands"; + this.grpNewCommands.Size = new System.Drawing.Size(457, 484); + this.grpNewCommands.TabIndex = 7; + this.grpNewCommands.TabStop = false; + this.grpNewCommands.Text = "Add Commands"; + this.grpNewCommands.Visible = false; + // + // lblCloseCommands + // + this.lblCloseCommands.AutoSize = true; + this.lblCloseCommands.Location = new System.Drawing.Point(437, 14); + this.lblCloseCommands.Name = "lblCloseCommands"; + this.lblCloseCommands.Size = new System.Drawing.Size(14, 13); + this.lblCloseCommands.TabIndex = 1; + this.lblCloseCommands.Text = "X"; + this.lblCloseCommands.Click += new System.EventHandler(this.lblCloseCommands_Click); + // + // lstCommands + // + this.lstCommands.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(63)))), ((int)(((byte)(65))))); + this.lstCommands.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lstCommands.ForeColor = System.Drawing.Color.Gainsboro; + this.lstCommands.LineColor = System.Drawing.Color.FromArgb(((int)(((byte)(150)))), ((int)(((byte)(150)))), ((int)(((byte)(150))))); + this.lstCommands.Location = new System.Drawing.Point(6, 32); + this.lstCommands.Name = "lstCommands"; + treeNode1.Name = "showtext"; + treeNode1.Tag = "1"; + treeNode1.Text = "Show Text"; + treeNode2.Name = "showoptions"; + treeNode2.Tag = "2"; + treeNode2.Text = "Show Options"; + treeNode3.Name = "inputvariable"; + treeNode3.Tag = "49"; + treeNode3.Text = "Input Variable"; + treeNode4.Name = "addchatboxtext"; + treeNode4.Tag = "3"; + treeNode4.Text = "Add Chatbox Text"; + treeNode5.Name = "dialogue"; + treeNode5.Text = "Dialogue"; + treeNode6.Name = "setvariable"; + treeNode6.Tag = "5"; + treeNode6.Text = "Set Variable"; + treeNode7.Name = "setselfswitch"; + treeNode7.Tag = "6"; + treeNode7.Text = "Set Self Switch"; + treeNode8.Name = "conditionalbranch"; + treeNode8.Tag = "7"; + treeNode8.Text = "Conditional Branch"; + treeNode9.Name = "exiteventprocess"; + treeNode9.Tag = "8"; + treeNode9.Text = "Exit Event Process"; + treeNode10.Name = "label"; + treeNode10.Tag = "9"; + treeNode10.Text = "Label"; + treeNode11.Name = "gotolabel"; + treeNode11.Tag = "10"; + treeNode11.Text = "Go To Label"; + treeNode12.Name = "startcommonevent"; + treeNode12.Tag = "11"; + treeNode12.Text = "Start Common Event"; + treeNode13.Name = "logicflow"; + treeNode13.Text = "Logic Flow"; + treeNode14.Name = "restorehp"; + treeNode14.Tag = "12"; + treeNode14.Text = "Restore HP"; + treeNode15.Name = "restoremp"; + treeNode15.Tag = "13"; + treeNode15.Text = "Restore MP"; + treeNode16.Name = "levelup"; + treeNode16.Tag = "14"; + treeNode16.Text = "Level Up"; + treeNode17.Name = "giveexperience"; + treeNode17.Tag = "15"; + treeNode17.Text = "Give Experience"; + treeNode18.Name = "changelevel"; + treeNode18.Tag = "16"; + treeNode18.Text = "Change Level"; + treeNode19.Name = "changespells"; + treeNode19.Tag = "17"; + treeNode19.Text = "Change Spells"; + treeNode20.Name = "changeitems"; + treeNode20.Tag = "18"; + treeNode20.Text = "Change Items"; + treeNode21.Name = "changesprite"; + treeNode21.Tag = "19"; + treeNode21.Text = "Change Sprite"; + treeNode22.Name = "changeface"; + treeNode22.Tag = "20"; + treeNode22.Text = "Change Face"; + treeNode23.Name = "changehair"; + treeNode23.Tag = "51"; + treeNode23.Text = "Change Hair"; + treeNode24.Name = "changegender"; + treeNode24.Tag = "21"; + treeNode24.Text = "Change Gender"; + treeNode25.Name = "setaccess"; + treeNode25.Tag = "22"; + treeNode25.Text = "Set Access"; + treeNode26.Name = "changeclass"; + treeNode26.Tag = "38"; + treeNode26.Text = "Change Class"; + treeNode27.Name = "equipitem"; + treeNode27.Tag = "47"; + treeNode27.Text = "Equip Item"; + treeNode28.Name = "changenamecolor"; + treeNode28.Tag = "48"; + treeNode28.Text = "Change Name Color"; + treeNode29.Name = "changeplayerlabel"; + treeNode29.Tag = "50"; + treeNode29.Text = "Change Player Label"; + treeNode30.Name = "playercontrol"; + treeNode30.Text = "Player Control"; + treeNode31.Name = "warpplayer"; + treeNode31.Tag = "23"; + treeNode31.Text = "Warp Player"; + treeNode32.Name = "setmoveroute"; + treeNode32.Tag = "24"; + treeNode32.Text = "Set Move Route"; + treeNode33.Name = "waitmoveroute"; + treeNode33.Tag = "25"; + treeNode33.Text = "Wait for Route Completion"; + treeNode34.Name = "holdplayer"; + treeNode34.Tag = "26"; + treeNode34.Text = "Hold Player"; + treeNode35.Name = "releaseplayer"; + treeNode35.Tag = "27"; + treeNode35.Text = "Release Player"; + treeNode36.Name = "spawnnpc"; + treeNode36.Tag = "28"; + treeNode36.Text = "Spawn NPC"; + treeNode37.Name = "despawnnpcs"; + treeNode37.Tag = "39"; + treeNode37.Text = "Despawn NPC"; + treeNode38.Name = "hideplayer"; + treeNode38.Tag = "45"; + treeNode38.Text = "Hide Player"; + treeNode39.Name = "showplayer"; + treeNode39.Tag = "46"; + treeNode39.Text = "Show Player"; + treeNode40.Name = "movement"; + treeNode40.Text = "Movement"; + treeNode41.Name = "playanimation"; + treeNode41.Tag = "29"; + treeNode41.Text = "Play Animation"; + treeNode42.Name = "playbgm"; + treeNode42.Tag = "30"; + treeNode42.Text = "Play BGM"; + treeNode43.Name = "fadeoutbgm"; + treeNode43.Tag = "31"; + treeNode43.Text = "Fadeout BGM"; + treeNode44.Name = "playsound"; + treeNode44.Tag = "32"; + treeNode44.Text = "Play Sound"; + treeNode45.Name = "stopsounds"; + treeNode45.Tag = "33"; + treeNode45.Text = "Stop Sounds"; + treeNode46.Name = "showpicture"; + treeNode46.Tag = "43"; + treeNode46.Text = "Show Picture"; + treeNode47.Name = "hidepicture"; + treeNode47.Tag = "44"; + treeNode47.Text = "Hide Picture"; + treeNode48.Name = "specialeffects"; + treeNode48.Text = "Special Effects"; + treeNode49.Name = "startquest"; + treeNode49.Tag = "40"; + treeNode49.Text = "Start Quest"; + treeNode50.Name = "completequesttask"; + treeNode50.Tag = "41"; + treeNode50.Text = "Complete Quest Task"; + treeNode51.Name = "endquest"; + treeNode51.Tag = "42"; + treeNode51.Text = "End Quest"; + treeNode52.Name = "questcontrol"; + treeNode52.Text = "Quest Control"; + treeNode53.Name = "wait"; + treeNode53.Tag = "34"; + treeNode53.Text = "Wait..."; + treeNode54.Name = "etc"; + treeNode54.Text = "Etc"; + treeNode55.Name = "openbank"; + treeNode55.Tag = "35"; + treeNode55.Text = "Open Bank"; + treeNode56.Name = "openshop"; + treeNode56.Tag = "36"; + treeNode56.Text = "Open Shop"; + treeNode57.Name = "opencraftingstation"; + treeNode57.Tag = "37"; + treeNode57.Text = "Open Crafting Station"; + treeNode58.Name = "shopandbank"; + treeNode58.Text = "Shop and Bank"; + this.lstCommands.Nodes.AddRange(new System.Windows.Forms.TreeNode[] { treeNode5, treeNode13, - treeNode29, - treeNode39, - treeNode47, - treeNode51, - treeNode53, - treeNode57}); - this.lstCommands.Size = new System.Drawing.Size(445, 440); - this.lstCommands.TabIndex = 2; - this.lstCommands.NodeMouseDoubleClick += new System.Windows.Forms.TreeNodeMouseClickEventHandler(this.lstCommands_NodeMouseDoubleClick); - // - // grpEventCommands - // - this.grpEventCommands.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(48))))); - this.grpEventCommands.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(90)))), ((int)(((byte)(90)))), ((int)(((byte)(90))))); - this.grpEventCommands.Controls.Add(this.lstEventCommands); - this.grpEventCommands.ForeColor = System.Drawing.Color.Gainsboro; - this.grpEventCommands.Location = new System.Drawing.Point(353, 89); - this.grpEventCommands.Name = "grpEventCommands"; - this.grpEventCommands.Size = new System.Drawing.Size(457, 484); - this.grpEventCommands.TabIndex = 6; - this.grpEventCommands.TabStop = false; - this.grpEventCommands.Text = "Commands"; - // - // lstEventCommands - // - this.lstEventCommands.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(63)))), ((int)(((byte)(65))))); - this.lstEventCommands.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; - this.lstEventCommands.ForeColor = System.Drawing.Color.Gainsboro; - this.lstEventCommands.FormattingEnabled = true; - this.lstEventCommands.HorizontalScrollbar = true; - this.lstEventCommands.Items.AddRange(new object[] { + treeNode30, + treeNode40, + treeNode48, + treeNode52, + treeNode54, + treeNode58}); + this.lstCommands.Size = new System.Drawing.Size(445, 440); + this.lstCommands.TabIndex = 2; + this.lstCommands.NodeMouseDoubleClick += new System.Windows.Forms.TreeNodeMouseClickEventHandler(this.lstCommands_NodeMouseDoubleClick); + // + // grpEventCommands + // + this.grpEventCommands.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(48))))); + this.grpEventCommands.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(90)))), ((int)(((byte)(90)))), ((int)(((byte)(90))))); + this.grpEventCommands.Controls.Add(this.lstEventCommands); + this.grpEventCommands.ForeColor = System.Drawing.Color.Gainsboro; + this.grpEventCommands.Location = new System.Drawing.Point(353, 89); + this.grpEventCommands.Name = "grpEventCommands"; + this.grpEventCommands.Size = new System.Drawing.Size(457, 484); + this.grpEventCommands.TabIndex = 6; + this.grpEventCommands.TabStop = false; + this.grpEventCommands.Text = "Commands"; + // + // lstEventCommands + // + this.lstEventCommands.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(63)))), ((int)(((byte)(65))))); + this.lstEventCommands.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lstEventCommands.ForeColor = System.Drawing.Color.Gainsboro; + this.lstEventCommands.FormattingEnabled = true; + this.lstEventCommands.HorizontalScrollbar = true; + this.lstEventCommands.Items.AddRange(new object[] { "@>"}); - this.lstEventCommands.Location = new System.Drawing.Point(6, 19); - this.lstEventCommands.Name = "lstEventCommands"; - this.lstEventCommands.Size = new System.Drawing.Size(445, 457); - this.lstEventCommands.TabIndex = 0; - this.lstEventCommands.SelectedIndexChanged += new System.EventHandler(this.lstEventCommands_SelectedIndexChanged); - this.lstEventCommands.DoubleClick += new System.EventHandler(this.lstEventCommands_DoubleClick); - this.lstEventCommands.KeyDown += new System.Windows.Forms.KeyEventHandler(this.lstEventCommands_KeyDown); - this.lstEventCommands.MouseDown += new System.Windows.Forms.MouseEventHandler(this.lstEventCommands_Click); - // - // grpCreateCommands - // - this.grpCreateCommands.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(48))))); - this.grpCreateCommands.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(90)))), ((int)(((byte)(90)))), ((int)(((byte)(90))))); - this.grpCreateCommands.ForeColor = System.Drawing.Color.Gainsboro; - this.grpCreateCommands.Location = new System.Drawing.Point(353, 89); - this.grpCreateCommands.Name = "grpCreateCommands"; - this.grpCreateCommands.Size = new System.Drawing.Size(457, 484); - this.grpCreateCommands.TabIndex = 8; - this.grpCreateCommands.TabStop = false; - this.grpCreateCommands.Visible = false; - // - // btnSave - // - this.btnSave.Location = new System.Drawing.Point(628, 586); - this.btnSave.Name = "btnSave"; - this.btnSave.Padding = new System.Windows.Forms.Padding(5); - this.btnSave.Size = new System.Drawing.Size(93, 30); - this.btnSave.TabIndex = 6; - this.btnSave.Text = "Save"; - this.btnSave.Click += new System.EventHandler(this.btnSave_Click); - // - // btnCancel - // - this.btnCancel.Location = new System.Drawing.Point(727, 586); - this.btnCancel.Name = "btnCancel"; - this.btnCancel.Padding = new System.Windows.Forms.Padding(5); - this.btnCancel.Size = new System.Drawing.Size(93, 30); - this.btnCancel.TabIndex = 7; - this.btnCancel.Text = "Cancel"; - this.btnCancel.Click += new System.EventHandler(this.btnCancel_Click); - // - // commandMenu - // - this.commandMenu.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(63)))), ((int)(((byte)(65))))); - this.commandMenu.ImageScalingSize = new System.Drawing.Size(24, 24); - this.commandMenu.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.lstEventCommands.Location = new System.Drawing.Point(6, 19); + this.lstEventCommands.Name = "lstEventCommands"; + this.lstEventCommands.Size = new System.Drawing.Size(445, 457); + this.lstEventCommands.TabIndex = 0; + this.lstEventCommands.SelectedIndexChanged += new System.EventHandler(this.lstEventCommands_SelectedIndexChanged); + this.lstEventCommands.DoubleClick += new System.EventHandler(this.lstEventCommands_DoubleClick); + this.lstEventCommands.KeyDown += new System.Windows.Forms.KeyEventHandler(this.lstEventCommands_KeyDown); + this.lstEventCommands.MouseDown += new System.Windows.Forms.MouseEventHandler(this.lstEventCommands_Click); + // + // grpCreateCommands + // + this.grpCreateCommands.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(48))))); + this.grpCreateCommands.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(90)))), ((int)(((byte)(90)))), ((int)(((byte)(90))))); + this.grpCreateCommands.ForeColor = System.Drawing.Color.Gainsboro; + this.grpCreateCommands.Location = new System.Drawing.Point(353, 89); + this.grpCreateCommands.Name = "grpCreateCommands"; + this.grpCreateCommands.Size = new System.Drawing.Size(457, 484); + this.grpCreateCommands.TabIndex = 8; + this.grpCreateCommands.TabStop = false; + this.grpCreateCommands.Visible = false; + // + // btnSave + // + this.btnSave.Location = new System.Drawing.Point(628, 586); + this.btnSave.Name = "btnSave"; + this.btnSave.Padding = new System.Windows.Forms.Padding(5); + this.btnSave.Size = new System.Drawing.Size(93, 30); + this.btnSave.TabIndex = 6; + this.btnSave.Text = "Save"; + this.btnSave.Click += new System.EventHandler(this.btnSave_Click); + // + // btnCancel + // + this.btnCancel.Location = new System.Drawing.Point(727, 586); + this.btnCancel.Name = "btnCancel"; + this.btnCancel.Padding = new System.Windows.Forms.Padding(5); + this.btnCancel.Size = new System.Drawing.Size(93, 30); + this.btnCancel.TabIndex = 7; + this.btnCancel.Text = "Cancel"; + this.btnCancel.Click += new System.EventHandler(this.btnCancel_Click); + // + // commandMenu + // + this.commandMenu.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(63)))), ((int)(((byte)(65))))); + this.commandMenu.ImageScalingSize = new System.Drawing.Size(24, 24); + this.commandMenu.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { this.btnInsert, this.btnEdit, this.btnCut, this.btnCopy, this.btnPaste, this.btnDelete}); - this.commandMenu.Name = "commandMenu"; - this.commandMenu.RenderMode = System.Windows.Forms.ToolStripRenderMode.System; - this.commandMenu.Size = new System.Drawing.Size(108, 136); - // - // btnInsert - // - this.btnInsert.ForeColor = System.Drawing.Color.Gainsboro; - this.btnInsert.Name = "btnInsert"; - this.btnInsert.Size = new System.Drawing.Size(107, 22); - this.btnInsert.Text = "Insert"; - this.btnInsert.Click += new System.EventHandler(this.btnInsert_Click); - // - // btnEdit - // - this.btnEdit.ForeColor = System.Drawing.Color.Gainsboro; - this.btnEdit.Name = "btnEdit"; - this.btnEdit.Size = new System.Drawing.Size(107, 22); - this.btnEdit.Text = "Edit"; - this.btnEdit.Click += new System.EventHandler(this.btnEdit_Click); - // - // btnCut - // - this.btnCut.ForeColor = System.Drawing.Color.Gainsboro; - this.btnCut.Name = "btnCut"; - this.btnCut.Size = new System.Drawing.Size(107, 22); - this.btnCut.Text = "Cut"; - this.btnCut.Click += new System.EventHandler(this.btnCut_Click); - // - // btnCopy - // - this.btnCopy.ForeColor = System.Drawing.Color.Gainsboro; - this.btnCopy.Name = "btnCopy"; - this.btnCopy.Size = new System.Drawing.Size(107, 22); - this.btnCopy.Text = "Copy"; - this.btnCopy.Click += new System.EventHandler(this.btnCopy_Click); - // - // btnPaste - // - this.btnPaste.ForeColor = System.Drawing.Color.Gainsboro; - this.btnPaste.Name = "btnPaste"; - this.btnPaste.Size = new System.Drawing.Size(107, 22); - this.btnPaste.Text = "Paste"; - this.btnPaste.Click += new System.EventHandler(this.btnPaste_Click); - // - // btnDelete - // - this.btnDelete.ForeColor = System.Drawing.Color.Gainsboro; - this.btnDelete.Name = "btnDelete"; - this.btnDelete.Size = new System.Drawing.Size(107, 22); - this.btnDelete.Text = "Delete"; - this.btnDelete.Click += new System.EventHandler(this.btnDelete_Click); - // - // grpPageOptions - // - this.grpPageOptions.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(48))))); - this.grpPageOptions.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(90)))), ((int)(((byte)(90)))), ((int)(((byte)(90))))); - this.grpPageOptions.Controls.Add(this.btnClearPage); - this.grpPageOptions.Controls.Add(this.btnDeletePage); - this.grpPageOptions.Controls.Add(this.btnPastePage); - this.grpPageOptions.Controls.Add(this.btnCopyPage); - this.grpPageOptions.Controls.Add(this.btnNewPage); - this.grpPageOptions.ForeColor = System.Drawing.Color.Gainsboro; - this.grpPageOptions.Location = new System.Drawing.Point(313, 5); - this.grpPageOptions.Name = "grpPageOptions"; - this.grpPageOptions.Size = new System.Drawing.Size(510, 50); - this.grpPageOptions.TabIndex = 13; - this.grpPageOptions.TabStop = false; - this.grpPageOptions.Text = "Page Options"; - // - // btnClearPage - // - this.btnClearPage.Location = new System.Drawing.Point(402, 16); - this.btnClearPage.Name = "btnClearPage"; - this.btnClearPage.Padding = new System.Windows.Forms.Padding(5); - this.btnClearPage.Size = new System.Drawing.Size(93, 30); - this.btnClearPage.TabIndex = 17; - this.btnClearPage.Text = "Clear Page"; - this.btnClearPage.Click += new System.EventHandler(this.btnClearPage_Click); - // - // btnDeletePage - // - this.btnDeletePage.Enabled = false; - this.btnDeletePage.Location = new System.Drawing.Point(303, 16); - this.btnDeletePage.Name = "btnDeletePage"; - this.btnDeletePage.Padding = new System.Windows.Forms.Padding(5); - this.btnDeletePage.Size = new System.Drawing.Size(93, 30); - this.btnDeletePage.TabIndex = 16; - this.btnDeletePage.Text = "Delete Page"; - this.btnDeletePage.Click += new System.EventHandler(this.btnDeletePage_Click); - // - // btnPastePage - // - this.btnPastePage.Location = new System.Drawing.Point(204, 16); - this.btnPastePage.Name = "btnPastePage"; - this.btnPastePage.Padding = new System.Windows.Forms.Padding(5); - this.btnPastePage.Size = new System.Drawing.Size(93, 30); - this.btnPastePage.TabIndex = 15; - this.btnPastePage.Text = "Paste Page"; - this.btnPastePage.Click += new System.EventHandler(this.btnPastePage_Click); - // - // btnCopyPage - // - this.btnCopyPage.Location = new System.Drawing.Point(105, 16); - this.btnCopyPage.Name = "btnCopyPage"; - this.btnCopyPage.Padding = new System.Windows.Forms.Padding(5); - this.btnCopyPage.Size = new System.Drawing.Size(93, 30); - this.btnCopyPage.TabIndex = 14; - this.btnCopyPage.Text = "Copy Page"; - this.btnCopyPage.Click += new System.EventHandler(this.btnCopyPage_Click); - // - // btnNewPage - // - this.btnNewPage.Location = new System.Drawing.Point(6, 16); - this.btnNewPage.Name = "btnNewPage"; - this.btnNewPage.Padding = new System.Windows.Forms.Padding(5); - this.btnNewPage.Size = new System.Drawing.Size(93, 30); - this.btnNewPage.TabIndex = 13; - this.btnNewPage.Text = "New Page"; - this.btnNewPage.Click += new System.EventHandler(this.btnNewPage_Click); - // - // grpGeneral - // - this.grpGeneral.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(48))))); - this.grpGeneral.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(90)))), ((int)(((byte)(90)))), ((int)(((byte)(90))))); - this.grpGeneral.Controls.Add(this.chkIsGlobal); - this.grpGeneral.Controls.Add(this.lblName); - this.grpGeneral.Controls.Add(this.txtEventname); - this.grpGeneral.ForeColor = System.Drawing.Color.Gainsboro; - this.grpGeneral.Location = new System.Drawing.Point(12, 5); - this.grpGeneral.Name = "grpGeneral"; - this.grpGeneral.Size = new System.Drawing.Size(295, 49); - this.grpGeneral.TabIndex = 18; - this.grpGeneral.TabStop = false; - this.grpGeneral.Text = "General"; - // - // chkIsGlobal - // - this.chkIsGlobal.AutoSize = true; - this.chkIsGlobal.Location = new System.Drawing.Point(202, 22); - this.chkIsGlobal.Name = "chkIsGlobal"; - this.chkIsGlobal.Size = new System.Drawing.Size(87, 17); - this.chkIsGlobal.TabIndex = 3; - this.chkIsGlobal.Text = "Global Event"; - this.chkIsGlobal.CheckedChanged += new System.EventHandler(this.chkIsGlobal_CheckedChanged); - // - // pnlTabsContainer - // - this.pnlTabsContainer.Controls.Add(this.pnlTabs); - this.pnlTabsContainer.Location = new System.Drawing.Point(12, 61); - this.pnlTabsContainer.Name = "pnlTabsContainer"; - this.pnlTabsContainer.Size = new System.Drawing.Size(811, 22); - this.pnlTabsContainer.TabIndex = 22; - // - // pnlTabs - // - this.pnlTabs.AutoSize = true; - this.pnlTabs.Location = new System.Drawing.Point(0, 0); - this.pnlTabs.Name = "pnlTabs"; - this.pnlTabs.Size = new System.Drawing.Size(811, 22); - this.pnlTabs.TabIndex = 23; - // - // btnTabsRight - // - this.btnTabsRight.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.btnTabsRight.Location = new System.Drawing.Point(773, 61); - this.btnTabsRight.Name = "btnTabsRight"; - this.btnTabsRight.Padding = new System.Windows.Forms.Padding(5); - this.btnTabsRight.Size = new System.Drawing.Size(50, 23); - this.btnTabsRight.TabIndex = 1; - this.btnTabsRight.Text = ">"; - this.btnTabsRight.Click += new System.EventHandler(this.btnTabsRight_Click); - // - // btnTabsLeft - // - this.btnTabsLeft.Location = new System.Drawing.Point(12, 61); - this.btnTabsLeft.Name = "btnTabsLeft"; - this.btnTabsLeft.Padding = new System.Windows.Forms.Padding(5); - this.btnTabsLeft.Size = new System.Drawing.Size(50, 23); - this.btnTabsLeft.TabIndex = 0; - this.btnTabsLeft.Text = "<"; - this.btnTabsLeft.Click += new System.EventHandler(this.btnTabsLeft_Click); - // - // panel1 - // - this.panel1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; - this.panel1.Location = new System.Drawing.Point(12, 83); - this.panel1.Name = "panel1"; - this.panel1.Size = new System.Drawing.Size(811, 498); - this.panel1.TabIndex = 23; - // - // FrmEvent - // - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.AutoSize = true; - this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(48))))); - this.ClientSize = new System.Drawing.Size(835, 622); - this.Controls.Add(this.grpNewCommands); - this.Controls.Add(this.grpTriggers); - this.Controls.Add(this.btnTabsRight); - this.Controls.Add(this.btnTabsLeft); - this.Controls.Add(this.grpEntityOptions); - this.Controls.Add(this.grpEventConditions); - this.Controls.Add(this.grpPageOptions); - this.Controls.Add(this.grpGeneral); - this.Controls.Add(this.btnCancel); - this.Controls.Add(this.btnSave); - this.Controls.Add(this.pnlTabsContainer); - this.Controls.Add(this.grpEventCommands); - this.Controls.Add(this.grpCreateCommands); - this.Controls.Add(this.panel1); - this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle; - this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); - this.KeyPreview = true; - this.MaximizeBox = false; - this.Name = "FrmEvent"; - this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; - this.Text = "Event Editor"; - this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.frmEvent_FormClosing); - this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.FrmEvent_FormClosed); - this.Load += new System.EventHandler(this.frmEvent_Load); - this.VisibleChanged += new System.EventHandler(this.FrmEvent_VisibleChanged); - this.KeyDown += new System.Windows.Forms.KeyEventHandler(this.FrmEvent_KeyDown); - this.grpEntityOptions.ResumeLayout(false); - this.grpExtra.ResumeLayout(false); - this.grpExtra.PerformLayout(); - this.grpInspector.ResumeLayout(false); - this.grpInspector.PerformLayout(); - this.grpPreview.ResumeLayout(false); - this.grpPreview.PerformLayout(); - this.grpMovement.ResumeLayout(false); - this.grpMovement.PerformLayout(); - this.grpTriggers.ResumeLayout(false); - this.grpTriggers.PerformLayout(); - this.grpEventConditions.ResumeLayout(false); - this.grpNewCommands.ResumeLayout(false); - this.grpNewCommands.PerformLayout(); - this.grpEventCommands.ResumeLayout(false); - this.commandMenu.ResumeLayout(false); - this.grpPageOptions.ResumeLayout(false); - this.grpGeneral.ResumeLayout(false); - this.grpGeneral.PerformLayout(); - this.pnlTabsContainer.ResumeLayout(false); - this.pnlTabsContainer.PerformLayout(); - this.ResumeLayout(false); + this.commandMenu.Name = "commandMenu"; + this.commandMenu.RenderMode = System.Windows.Forms.ToolStripRenderMode.System; + this.commandMenu.Size = new System.Drawing.Size(108, 136); + // + // btnInsert + // + this.btnInsert.ForeColor = System.Drawing.Color.Gainsboro; + this.btnInsert.Name = "btnInsert"; + this.btnInsert.Size = new System.Drawing.Size(107, 22); + this.btnInsert.Text = "Insert"; + this.btnInsert.Click += new System.EventHandler(this.btnInsert_Click); + // + // btnEdit + // + this.btnEdit.ForeColor = System.Drawing.Color.Gainsboro; + this.btnEdit.Name = "btnEdit"; + this.btnEdit.Size = new System.Drawing.Size(107, 22); + this.btnEdit.Text = "Edit"; + this.btnEdit.Click += new System.EventHandler(this.btnEdit_Click); + // + // btnCut + // + this.btnCut.ForeColor = System.Drawing.Color.Gainsboro; + this.btnCut.Name = "btnCut"; + this.btnCut.Size = new System.Drawing.Size(107, 22); + this.btnCut.Text = "Cut"; + this.btnCut.Click += new System.EventHandler(this.btnCut_Click); + // + // btnCopy + // + this.btnCopy.ForeColor = System.Drawing.Color.Gainsboro; + this.btnCopy.Name = "btnCopy"; + this.btnCopy.Size = new System.Drawing.Size(107, 22); + this.btnCopy.Text = "Copy"; + this.btnCopy.Click += new System.EventHandler(this.btnCopy_Click); + // + // btnPaste + // + this.btnPaste.ForeColor = System.Drawing.Color.Gainsboro; + this.btnPaste.Name = "btnPaste"; + this.btnPaste.Size = new System.Drawing.Size(107, 22); + this.btnPaste.Text = "Paste"; + this.btnPaste.Click += new System.EventHandler(this.btnPaste_Click); + // + // btnDelete + // + this.btnDelete.ForeColor = System.Drawing.Color.Gainsboro; + this.btnDelete.Name = "btnDelete"; + this.btnDelete.Size = new System.Drawing.Size(107, 22); + this.btnDelete.Text = "Delete"; + this.btnDelete.Click += new System.EventHandler(this.btnDelete_Click); + // + // grpPageOptions + // + this.grpPageOptions.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(48))))); + this.grpPageOptions.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(90)))), ((int)(((byte)(90)))), ((int)(((byte)(90))))); + this.grpPageOptions.Controls.Add(this.btnClearPage); + this.grpPageOptions.Controls.Add(this.btnDeletePage); + this.grpPageOptions.Controls.Add(this.btnPastePage); + this.grpPageOptions.Controls.Add(this.btnCopyPage); + this.grpPageOptions.Controls.Add(this.btnNewPage); + this.grpPageOptions.ForeColor = System.Drawing.Color.Gainsboro; + this.grpPageOptions.Location = new System.Drawing.Point(313, 5); + this.grpPageOptions.Name = "grpPageOptions"; + this.grpPageOptions.Size = new System.Drawing.Size(510, 50); + this.grpPageOptions.TabIndex = 13; + this.grpPageOptions.TabStop = false; + this.grpPageOptions.Text = "Page Options"; + // + // btnClearPage + // + this.btnClearPage.Location = new System.Drawing.Point(402, 16); + this.btnClearPage.Name = "btnClearPage"; + this.btnClearPage.Padding = new System.Windows.Forms.Padding(5); + this.btnClearPage.Size = new System.Drawing.Size(93, 30); + this.btnClearPage.TabIndex = 17; + this.btnClearPage.Text = "Clear Page"; + this.btnClearPage.Click += new System.EventHandler(this.btnClearPage_Click); + // + // btnDeletePage + // + this.btnDeletePage.Enabled = false; + this.btnDeletePage.Location = new System.Drawing.Point(303, 16); + this.btnDeletePage.Name = "btnDeletePage"; + this.btnDeletePage.Padding = new System.Windows.Forms.Padding(5); + this.btnDeletePage.Size = new System.Drawing.Size(93, 30); + this.btnDeletePage.TabIndex = 16; + this.btnDeletePage.Text = "Delete Page"; + this.btnDeletePage.Click += new System.EventHandler(this.btnDeletePage_Click); + // + // btnPastePage + // + this.btnPastePage.Location = new System.Drawing.Point(204, 16); + this.btnPastePage.Name = "btnPastePage"; + this.btnPastePage.Padding = new System.Windows.Forms.Padding(5); + this.btnPastePage.Size = new System.Drawing.Size(93, 30); + this.btnPastePage.TabIndex = 15; + this.btnPastePage.Text = "Paste Page"; + this.btnPastePage.Click += new System.EventHandler(this.btnPastePage_Click); + // + // btnCopyPage + // + this.btnCopyPage.Location = new System.Drawing.Point(105, 16); + this.btnCopyPage.Name = "btnCopyPage"; + this.btnCopyPage.Padding = new System.Windows.Forms.Padding(5); + this.btnCopyPage.Size = new System.Drawing.Size(93, 30); + this.btnCopyPage.TabIndex = 14; + this.btnCopyPage.Text = "Copy Page"; + this.btnCopyPage.Click += new System.EventHandler(this.btnCopyPage_Click); + // + // btnNewPage + // + this.btnNewPage.Location = new System.Drawing.Point(6, 16); + this.btnNewPage.Name = "btnNewPage"; + this.btnNewPage.Padding = new System.Windows.Forms.Padding(5); + this.btnNewPage.Size = new System.Drawing.Size(93, 30); + this.btnNewPage.TabIndex = 13; + this.btnNewPage.Text = "New Page"; + this.btnNewPage.Click += new System.EventHandler(this.btnNewPage_Click); + // + // grpGeneral + // + this.grpGeneral.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(48))))); + this.grpGeneral.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(90)))), ((int)(((byte)(90)))), ((int)(((byte)(90))))); + this.grpGeneral.Controls.Add(this.chkIsGlobal); + this.grpGeneral.Controls.Add(this.lblName); + this.grpGeneral.Controls.Add(this.txtEventname); + this.grpGeneral.ForeColor = System.Drawing.Color.Gainsboro; + this.grpGeneral.Location = new System.Drawing.Point(12, 5); + this.grpGeneral.Name = "grpGeneral"; + this.grpGeneral.Size = new System.Drawing.Size(295, 49); + this.grpGeneral.TabIndex = 18; + this.grpGeneral.TabStop = false; + this.grpGeneral.Text = "General"; + // + // chkIsGlobal + // + this.chkIsGlobal.AutoSize = true; + this.chkIsGlobal.Location = new System.Drawing.Point(202, 22); + this.chkIsGlobal.Name = "chkIsGlobal"; + this.chkIsGlobal.Size = new System.Drawing.Size(87, 17); + this.chkIsGlobal.TabIndex = 3; + this.chkIsGlobal.Text = "Global Event"; + this.chkIsGlobal.CheckedChanged += new System.EventHandler(this.chkIsGlobal_CheckedChanged); + // + // pnlTabsContainer + // + this.pnlTabsContainer.Controls.Add(this.pnlTabs); + this.pnlTabsContainer.Location = new System.Drawing.Point(12, 61); + this.pnlTabsContainer.Name = "pnlTabsContainer"; + this.pnlTabsContainer.Size = new System.Drawing.Size(811, 22); + this.pnlTabsContainer.TabIndex = 22; + // + // pnlTabs + // + this.pnlTabs.AutoSize = true; + this.pnlTabs.Location = new System.Drawing.Point(0, 0); + this.pnlTabs.Name = "pnlTabs"; + this.pnlTabs.Size = new System.Drawing.Size(811, 22); + this.pnlTabs.TabIndex = 23; + // + // btnTabsRight + // + this.btnTabsRight.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.btnTabsRight.Location = new System.Drawing.Point(773, 61); + this.btnTabsRight.Name = "btnTabsRight"; + this.btnTabsRight.Padding = new System.Windows.Forms.Padding(5); + this.btnTabsRight.Size = new System.Drawing.Size(50, 23); + this.btnTabsRight.TabIndex = 1; + this.btnTabsRight.Text = ">"; + this.btnTabsRight.Click += new System.EventHandler(this.btnTabsRight_Click); + // + // btnTabsLeft + // + this.btnTabsLeft.Location = new System.Drawing.Point(12, 61); + this.btnTabsLeft.Name = "btnTabsLeft"; + this.btnTabsLeft.Padding = new System.Windows.Forms.Padding(5); + this.btnTabsLeft.Size = new System.Drawing.Size(50, 23); + this.btnTabsLeft.TabIndex = 0; + this.btnTabsLeft.Text = "<"; + this.btnTabsLeft.Click += new System.EventHandler(this.btnTabsLeft_Click); + // + // panel1 + // + this.panel1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.panel1.Location = new System.Drawing.Point(12, 83); + this.panel1.Name = "panel1"; + this.panel1.Size = new System.Drawing.Size(811, 498); + this.panel1.TabIndex = 23; + // + // FrmEvent + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.AutoSize = true; + this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(48))))); + this.ClientSize = new System.Drawing.Size(835, 622); + this.Controls.Add(this.grpNewCommands); + this.Controls.Add(this.grpTriggers); + this.Controls.Add(this.btnTabsRight); + this.Controls.Add(this.btnTabsLeft); + this.Controls.Add(this.grpEntityOptions); + this.Controls.Add(this.grpEventConditions); + this.Controls.Add(this.grpPageOptions); + this.Controls.Add(this.grpGeneral); + this.Controls.Add(this.btnCancel); + this.Controls.Add(this.btnSave); + this.Controls.Add(this.pnlTabsContainer); + this.Controls.Add(this.grpEventCommands); + this.Controls.Add(this.grpCreateCommands); + this.Controls.Add(this.panel1); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle; + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.KeyPreview = true; + this.MaximizeBox = false; + this.Name = "FrmEvent"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; + this.Text = "Event Editor"; + this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.frmEvent_FormClosing); + this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.FrmEvent_FormClosed); + this.Load += new System.EventHandler(this.frmEvent_Load); + this.VisibleChanged += new System.EventHandler(this.FrmEvent_VisibleChanged); + this.KeyDown += new System.Windows.Forms.KeyEventHandler(this.FrmEvent_KeyDown); + this.grpEntityOptions.ResumeLayout(false); + this.grpExtra.ResumeLayout(false); + this.grpExtra.PerformLayout(); + this.grpInspector.ResumeLayout(false); + this.grpInspector.PerformLayout(); + this.grpPreview.ResumeLayout(false); + this.grpPreview.PerformLayout(); + this.grpMovement.ResumeLayout(false); + this.grpMovement.PerformLayout(); + this.grpTriggers.ResumeLayout(false); + this.grpTriggers.PerformLayout(); + this.grpEventConditions.ResumeLayout(false); + this.grpNewCommands.ResumeLayout(false); + this.grpNewCommands.PerformLayout(); + this.grpEventCommands.ResumeLayout(false); + this.commandMenu.ResumeLayout(false); + this.grpPageOptions.ResumeLayout(false); + this.grpGeneral.ResumeLayout(false); + this.grpGeneral.PerformLayout(); + this.pnlTabsContainer.ResumeLayout(false); + this.pnlTabsContainer.PerformLayout(); + this.ResumeLayout(false); } diff --git a/Intersect.Editor/Forms/Editors/Events/frmEvent.cs b/Intersect.Editor/Forms/Editors/Events/frmEvent.cs index c0dc7bc5..ee412fe6 100644 --- a/Intersect.Editor/Forms/Editors/Events/frmEvent.cs +++ b/Intersect.Editor/Forms/Editors/Events/frmEvent.cs @@ -598,6 +598,10 @@ private void lstCommands_NodeMouseDoubleClick(object sender, TreeNodeMouseClickE case EventCommandType.ChangeFace: tmpCommand = new ChangeFaceCommand(); + break; + case EventCommandType.ChangeHair: + tmpCommand = new ChangeHairCommand(); + break; case EventCommandType.ChangeGender: tmpCommand = new ChangeGenderCommand(); @@ -1174,6 +1178,10 @@ private void OpenEditCommand(EventCommand command) case EventCommandType.ChangeFace: cmdWindow = new EventCommandChangeFace((ChangeFaceCommand) command, this); + break; + case EventCommandType.ChangeHair: + cmdWindow = new EventCommandChangeHair((ChangeHairCommand) command, this); + break; case EventCommandType.ChangeGender: cmdWindow = new EventCommandChangeGender((ChangeGenderCommand) command, this); diff --git a/Intersect.Editor/Forms/Editors/frmClass.Designer.cs b/Intersect.Editor/Forms/Editors/frmClass.Designer.cs index 59bf59d4..2dc0ffa5 100644 --- a/Intersect.Editor/Forms/Editors/frmClass.Designer.cs +++ b/Intersect.Editor/Forms/Editors/frmClass.Designer.cs @@ -32,9 +32,9 @@ private void InitializeComponent() { this.components = new System.ComponentModel.Container(); System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FrmClass)); - System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle7 = new System.Windows.Forms.DataGridViewCellStyle(); - System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle8 = new System.Windows.Forms.DataGridViewCellStyle(); - System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle9 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle4 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle5 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle6 = new System.Windows.Forms.DataGridViewCellStyle(); this.grpClasses = new DarkUI.Controls.DarkGroupBox(); this.btnClearSearch = new DarkUI.Controls.DarkButton(); this.txtSearch = new DarkUI.Controls.DarkTextBox(); @@ -91,6 +91,16 @@ private void InitializeComponent() this.lblX = new System.Windows.Forms.Label(); this.lblMap = new System.Windows.Forms.Label(); this.pnlContainer = new System.Windows.Forms.Panel(); + this.grpHair = new DarkUI.Controls.DarkGroupBox(); + this.lblHair = new System.Windows.Forms.Label(); + this.picHair = new System.Windows.Forms.PictureBox(); + this.cmbHair = new DarkUI.Controls.DarkComboBox(); + this.grpGender2 = new DarkUI.Controls.DarkGroupBox(); + this.rbMale2 = new DarkUI.Controls.DarkRadioButton(); + this.rbFemale2 = new DarkUI.Controls.DarkRadioButton(); + this.BtnAddHair = new DarkUI.Controls.DarkButton(); + this.btnRemoveHair = new DarkUI.Controls.DarkButton(); + this.lstHair = new System.Windows.Forms.ListBox(); this.grpSpawnItems = new DarkUI.Controls.DarkGroupBox(); this.btnSpawnItemRemove = new DarkUI.Controls.DarkButton(); this.btnSpawnItemAdd = new DarkUI.Controls.DarkButton(); @@ -100,6 +110,11 @@ private void InitializeComponent() this.lblSpawnItemAmount = new System.Windows.Forms.Label(); this.lblSpawnItem = new System.Windows.Forms.Label(); this.grpCombat = new DarkUI.Controls.DarkGroupBox(); + this.grpAttackSpeed = new DarkUI.Controls.DarkGroupBox(); + this.nudAttackSpeedValue = new DarkUI.Controls.DarkNumericUpDown(); + this.lblAttackSpeedValue = new System.Windows.Forms.Label(); + this.cmbAttackSpeedModifier = new DarkUI.Controls.DarkComboBox(); + this.lblAttackSpeedModifier = new System.Windows.Forms.Label(); this.nudCritMultiplier = new DarkUI.Controls.DarkNumericUpDown(); this.lblCritMultiplier = new System.Windows.Forms.Label(); this.nudScaling = new DarkUI.Controls.DarkNumericUpDown(); @@ -170,11 +185,6 @@ private void InitializeComponent() this.toolStripItemUndo = new System.Windows.Forms.ToolStripButton(); this.mnuExpGrid = new System.Windows.Forms.ContextMenuStrip(this.components); this.btnExpPaste = new System.Windows.Forms.ToolStripMenuItem(); - this.grpAttackSpeed = new DarkUI.Controls.DarkGroupBox(); - this.nudAttackSpeedValue = new DarkUI.Controls.DarkNumericUpDown(); - this.lblAttackSpeedValue = new System.Windows.Forms.Label(); - this.cmbAttackSpeedModifier = new DarkUI.Controls.DarkComboBox(); - this.lblAttackSpeedModifier = new System.Windows.Forms.Label(); this.grpClasses.SuspendLayout(); this.grpBaseStats.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.nudBaseMana)).BeginInit(); @@ -193,9 +203,14 @@ private void InitializeComponent() ((System.ComponentModel.ISupportInitialize)(this.nudY)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.nudX)).BeginInit(); this.pnlContainer.SuspendLayout(); + this.grpHair.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.picHair)).BeginInit(); + this.grpGender2.SuspendLayout(); this.grpSpawnItems.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.nudSpawnItemAmount)).BeginInit(); this.grpCombat.SuspendLayout(); + this.grpAttackSpeed.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.nudAttackSpeedValue)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.nudCritMultiplier)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.nudScaling)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.nudCritChance)).BeginInit(); @@ -222,8 +237,6 @@ private void InitializeComponent() ((System.ComponentModel.ISupportInitialize)(this.nudStrengthIncrease)).BeginInit(); this.toolStrip.SuspendLayout(); this.mnuExpGrid.SuspendLayout(); - this.grpAttackSpeed.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.nudAttackSpeedValue)).BeginInit(); this.SuspendLayout(); // // grpClasses @@ -1036,6 +1049,7 @@ private void InitializeComponent() // pnlContainer // this.pnlContainer.AutoScroll = true; + this.pnlContainer.Controls.Add(this.grpHair); this.pnlContainer.Controls.Add(this.grpSpawnItems); this.pnlContainer.Controls.Add(this.grpCombat); this.pnlContainer.Controls.Add(this.grpRegen); @@ -1053,6 +1067,143 @@ private void InitializeComponent() this.pnlContainer.TabIndex = 28; this.pnlContainer.Visible = false; // + // grpHair + // + this.grpHair.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(48))))); + this.grpHair.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(90)))), ((int)(((byte)(90)))), ((int)(((byte)(90))))); + this.grpHair.Controls.Add(this.lblHair); + this.grpHair.Controls.Add(this.picHair); + this.grpHair.Controls.Add(this.cmbHair); + this.grpHair.Controls.Add(this.grpGender2); + this.grpHair.Controls.Add(this.BtnAddHair); + this.grpHair.Controls.Add(this.btnRemoveHair); + this.grpHair.Controls.Add(this.lstHair); + this.grpHair.ForeColor = System.Drawing.Color.Gainsboro; + this.grpHair.Location = new System.Drawing.Point(537, 167); + this.grpHair.Name = "grpHair"; + this.grpHair.Size = new System.Drawing.Size(223, 177); + this.grpHair.TabIndex = 38; + this.grpHair.TabStop = false; + this.grpHair.Text = "Hairstyles"; + // + // lblHair + // + this.lblHair.AutoSize = true; + this.lblHair.Location = new System.Drawing.Point(99, 78); + this.lblHair.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); + this.lblHair.Name = "lblHair"; + this.lblHair.Size = new System.Drawing.Size(29, 13); + this.lblHair.TabIndex = 27; + this.lblHair.Text = "Hair:"; + // + // picHair + // + this.picHair.BackColor = System.Drawing.Color.Black; + this.picHair.Location = new System.Drawing.Point(163, 118); + this.picHair.Margin = new System.Windows.Forms.Padding(2); + this.picHair.Name = "picHair"; + this.picHair.Size = new System.Drawing.Size(43, 42); + this.picHair.TabIndex = 25; + this.picHair.TabStop = false; + // + // cmbHair + // + this.cmbHair.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(69)))), ((int)(((byte)(73)))), ((int)(((byte)(74))))); + this.cmbHair.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(90)))), ((int)(((byte)(90)))), ((int)(((byte)(90))))); + this.cmbHair.BorderStyle = System.Windows.Forms.ButtonBorderStyle.Solid; + this.cmbHair.ButtonColor = System.Drawing.Color.FromArgb(((int)(((byte)(43)))), ((int)(((byte)(43)))), ((int)(((byte)(43))))); + this.cmbHair.ButtonIcon = ((System.Drawing.Bitmap)(resources.GetObject("cmbHair.ButtonIcon"))); + this.cmbHair.DrawDropdownHoverOutline = false; + this.cmbHair.DrawFocusRectangle = false; + this.cmbHair.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed; + this.cmbHair.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.cmbHair.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.cmbHair.ForeColor = System.Drawing.Color.Gainsboro; + this.cmbHair.FormattingEnabled = true; + this.cmbHair.Items.AddRange(new object[] { + "None"}); + this.cmbHair.Location = new System.Drawing.Point(102, 93); + this.cmbHair.Margin = new System.Windows.Forms.Padding(2); + this.cmbHair.Name = "cmbHair"; + this.cmbHair.Size = new System.Drawing.Size(104, 21); + this.cmbHair.TabIndex = 26; + this.cmbHair.Text = "None"; + this.cmbHair.TextPadding = new System.Windows.Forms.Padding(2); + this.cmbHair.SelectedIndexChanged += new System.EventHandler(this.cmbHair_SelectedIndexChanged); + // + // grpGender2 + // + this.grpGender2.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(48))))); + this.grpGender2.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(90)))), ((int)(((byte)(90)))), ((int)(((byte)(90))))); + this.grpGender2.Controls.Add(this.rbMale2); + this.grpGender2.Controls.Add(this.rbFemale2); + this.grpGender2.ForeColor = System.Drawing.Color.Gainsboro; + this.grpGender2.Location = new System.Drawing.Point(102, 11); + this.grpGender2.Name = "grpGender2"; + this.grpGender2.Size = new System.Drawing.Size(76, 62); + this.grpGender2.TabIndex = 24; + this.grpGender2.TabStop = false; + this.grpGender2.Text = "Gender"; + // + // rbMale2 + // + this.rbMale2.AutoSize = true; + this.rbMale2.Checked = true; + this.rbMale2.Location = new System.Drawing.Point(5, 18); + this.rbMale2.Margin = new System.Windows.Forms.Padding(2); + this.rbMale2.Name = "rbMale2"; + this.rbMale2.Size = new System.Drawing.Size(48, 17); + this.rbMale2.TabIndex = 18; + this.rbMale2.TabStop = true; + this.rbMale2.Text = "Male"; + this.rbMale2.Click += new System.EventHandler(this.rbMale2_Click); + // + // rbFemale2 + // + this.rbFemale2.AutoSize = true; + this.rbFemale2.Location = new System.Drawing.Point(5, 38); + this.rbFemale2.Margin = new System.Windows.Forms.Padding(2); + this.rbFemale2.Name = "rbFemale2"; + this.rbFemale2.Size = new System.Drawing.Size(59, 17); + this.rbFemale2.TabIndex = 19; + this.rbFemale2.Text = "Female"; + this.rbFemale2.Click += new System.EventHandler(this.rbFemale2_Click); + // + // BtnAddHair + // + this.BtnAddHair.Location = new System.Drawing.Point(53, 16); + this.BtnAddHair.Margin = new System.Windows.Forms.Padding(2); + this.BtnAddHair.Name = "BtnAddHair"; + this.BtnAddHair.Padding = new System.Windows.Forms.Padding(5); + this.BtnAddHair.Size = new System.Drawing.Size(44, 19); + this.BtnAddHair.TabIndex = 23; + this.BtnAddHair.Text = "+"; + this.BtnAddHair.Click += new System.EventHandler(this.BtnAddHair_Click); + // + // btnRemoveHair + // + this.btnRemoveHair.Location = new System.Drawing.Point(5, 16); + this.btnRemoveHair.Margin = new System.Windows.Forms.Padding(2); + this.btnRemoveHair.Name = "btnRemoveHair"; + this.btnRemoveHair.Padding = new System.Windows.Forms.Padding(5); + this.btnRemoveHair.Size = new System.Drawing.Size(44, 19); + this.btnRemoveHair.TabIndex = 22; + this.btnRemoveHair.Text = "-"; + this.btnRemoveHair.Click += new System.EventHandler(this.btnRemoveHair_Click); + // + // lstHair + // + this.lstHair.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(63)))), ((int)(((byte)(65))))); + this.lstHair.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.lstHair.ForeColor = System.Drawing.Color.Gainsboro; + this.lstHair.FormattingEnabled = true; + this.lstHair.Location = new System.Drawing.Point(5, 39); + this.lstHair.Margin = new System.Windows.Forms.Padding(2); + this.lstHair.Name = "lstHair"; + this.lstHair.Size = new System.Drawing.Size(91, 132); + this.lstHair.TabIndex = 18; + this.lstHair.Click += new System.EventHandler(this.lstHair_Click); + // // grpSpawnItems // this.grpSpawnItems.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(48))))); @@ -1184,13 +1335,89 @@ private void InitializeComponent() this.grpCombat.Controls.Add(this.lblAttackAnimation); this.grpCombat.Controls.Add(this.lblDamage); this.grpCombat.ForeColor = System.Drawing.Color.Gainsboro; - this.grpCombat.Location = new System.Drawing.Point(537, 169); + this.grpCombat.Location = new System.Drawing.Point(537, 348); this.grpCombat.Name = "grpCombat"; - this.grpCombat.Size = new System.Drawing.Size(226, 405); + this.grpCombat.Size = new System.Drawing.Size(223, 405); this.grpCombat.TabIndex = 30; this.grpCombat.TabStop = false; this.grpCombat.Text = "Combat (Unarmed)"; // + // grpAttackSpeed + // + this.grpAttackSpeed.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(48))))); + this.grpAttackSpeed.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(90)))), ((int)(((byte)(90)))), ((int)(((byte)(90))))); + this.grpAttackSpeed.Controls.Add(this.nudAttackSpeedValue); + this.grpAttackSpeed.Controls.Add(this.lblAttackSpeedValue); + this.grpAttackSpeed.Controls.Add(this.cmbAttackSpeedModifier); + this.grpAttackSpeed.Controls.Add(this.lblAttackSpeedModifier); + this.grpAttackSpeed.ForeColor = System.Drawing.Color.Gainsboro; + this.grpAttackSpeed.Location = new System.Drawing.Point(13, 309); + this.grpAttackSpeed.Name = "grpAttackSpeed"; + this.grpAttackSpeed.Size = new System.Drawing.Size(192, 86); + this.grpAttackSpeed.TabIndex = 66; + this.grpAttackSpeed.TabStop = false; + this.grpAttackSpeed.Text = "Attack Speed"; + // + // nudAttackSpeedValue + // + this.nudAttackSpeedValue.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(69)))), ((int)(((byte)(73)))), ((int)(((byte)(74))))); + this.nudAttackSpeedValue.ForeColor = System.Drawing.Color.Gainsboro; + this.nudAttackSpeedValue.Location = new System.Drawing.Point(60, 58); + this.nudAttackSpeedValue.Maximum = new decimal(new int[] { + 10000, + 0, + 0, + 0}); + this.nudAttackSpeedValue.Name = "nudAttackSpeedValue"; + this.nudAttackSpeedValue.Size = new System.Drawing.Size(114, 20); + this.nudAttackSpeedValue.TabIndex = 56; + this.nudAttackSpeedValue.Value = new decimal(new int[] { + 0, + 0, + 0, + 0}); + this.nudAttackSpeedValue.ValueChanged += new System.EventHandler(this.nudAttackSpeedValue_ValueChanged); + // + // lblAttackSpeedValue + // + this.lblAttackSpeedValue.AutoSize = true; + this.lblAttackSpeedValue.Location = new System.Drawing.Point(9, 60); + this.lblAttackSpeedValue.Name = "lblAttackSpeedValue"; + this.lblAttackSpeedValue.Size = new System.Drawing.Size(37, 13); + this.lblAttackSpeedValue.TabIndex = 29; + this.lblAttackSpeedValue.Text = "Value:"; + // + // cmbAttackSpeedModifier + // + this.cmbAttackSpeedModifier.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(69)))), ((int)(((byte)(73)))), ((int)(((byte)(74))))); + this.cmbAttackSpeedModifier.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(90)))), ((int)(((byte)(90)))), ((int)(((byte)(90))))); + this.cmbAttackSpeedModifier.BorderStyle = System.Windows.Forms.ButtonBorderStyle.Solid; + this.cmbAttackSpeedModifier.ButtonColor = System.Drawing.Color.FromArgb(((int)(((byte)(43)))), ((int)(((byte)(43)))), ((int)(((byte)(43))))); + this.cmbAttackSpeedModifier.ButtonIcon = ((System.Drawing.Bitmap)(resources.GetObject("cmbAttackSpeedModifier.ButtonIcon"))); + this.cmbAttackSpeedModifier.DrawDropdownHoverOutline = false; + this.cmbAttackSpeedModifier.DrawFocusRectangle = false; + this.cmbAttackSpeedModifier.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed; + this.cmbAttackSpeedModifier.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.cmbAttackSpeedModifier.FlatStyle = System.Windows.Forms.FlatStyle.Flat; + this.cmbAttackSpeedModifier.ForeColor = System.Drawing.Color.Gainsboro; + this.cmbAttackSpeedModifier.FormattingEnabled = true; + this.cmbAttackSpeedModifier.Location = new System.Drawing.Point(60, 24); + this.cmbAttackSpeedModifier.Name = "cmbAttackSpeedModifier"; + this.cmbAttackSpeedModifier.Size = new System.Drawing.Size(114, 21); + this.cmbAttackSpeedModifier.TabIndex = 28; + this.cmbAttackSpeedModifier.Text = null; + this.cmbAttackSpeedModifier.TextPadding = new System.Windows.Forms.Padding(2); + this.cmbAttackSpeedModifier.SelectedIndexChanged += new System.EventHandler(this.cmbAttackSpeedModifier_SelectedIndexChanged); + // + // lblAttackSpeedModifier + // + this.lblAttackSpeedModifier.AutoSize = true; + this.lblAttackSpeedModifier.Location = new System.Drawing.Point(9, 27); + this.lblAttackSpeedModifier.Name = "lblAttackSpeedModifier"; + this.lblAttackSpeedModifier.Size = new System.Drawing.Size(47, 13); + this.lblAttackSpeedModifier.TabIndex = 0; + this.lblAttackSpeedModifier.Text = "Modifier:"; + // // nudCritMultiplier // this.nudCritMultiplier.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(69)))), ((int)(((byte)(73)))), ((int)(((byte)(74))))); @@ -1612,21 +1839,21 @@ private void InitializeComponent() this.expGrid.AllowUserToDeleteRows = false; this.expGrid.AllowUserToResizeColumns = false; this.expGrid.AllowUserToResizeRows = false; - dataGridViewCellStyle7.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(53)))), ((int)(((byte)(55))))); - this.expGrid.AlternatingRowsDefaultCellStyle = dataGridViewCellStyle7; + dataGridViewCellStyle4.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(53)))), ((int)(((byte)(55))))); + this.expGrid.AlternatingRowsDefaultCellStyle = dataGridViewCellStyle4; this.expGrid.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.Fill; this.expGrid.BackgroundColor = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(48))))); this.expGrid.CellBorderStyle = System.Windows.Forms.DataGridViewCellBorderStyle.None; this.expGrid.ClipboardCopyMode = System.Windows.Forms.DataGridViewClipboardCopyMode.EnableWithoutHeaderText; this.expGrid.ColumnHeadersBorderStyle = System.Windows.Forms.DataGridViewHeaderBorderStyle.None; - dataGridViewCellStyle8.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; - dataGridViewCellStyle8.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(48))))); - dataGridViewCellStyle8.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - dataGridViewCellStyle8.ForeColor = System.Drawing.Color.Gainsboro; - dataGridViewCellStyle8.SelectionBackColor = System.Drawing.SystemColors.Highlight; - dataGridViewCellStyle8.SelectionForeColor = System.Drawing.SystemColors.HighlightText; - dataGridViewCellStyle8.WrapMode = System.Windows.Forms.DataGridViewTriState.True; - this.expGrid.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle8; + dataGridViewCellStyle5.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; + dataGridViewCellStyle5.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(48))))); + dataGridViewCellStyle5.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + dataGridViewCellStyle5.ForeColor = System.Drawing.Color.Gainsboro; + dataGridViewCellStyle5.SelectionBackColor = System.Drawing.SystemColors.Highlight; + dataGridViewCellStyle5.SelectionForeColor = System.Drawing.SystemColors.HighlightText; + dataGridViewCellStyle5.WrapMode = System.Windows.Forms.DataGridViewTriState.True; + this.expGrid.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle5; this.expGrid.ColumnHeadersHeight = 24; this.expGrid.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.DisableResizing; this.expGrid.EnableHeadersVisualStyles = false; @@ -1634,8 +1861,8 @@ private void InitializeComponent() this.expGrid.MultiSelect = false; this.expGrid.Name = "expGrid"; this.expGrid.RowHeadersVisible = false; - dataGridViewCellStyle9.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(63)))), ((int)(((byte)(65))))); - this.expGrid.RowsDefaultCellStyle = dataGridViewCellStyle9; + dataGridViewCellStyle6.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(63)))), ((int)(((byte)(65))))); + this.expGrid.RowsDefaultCellStyle = dataGridViewCellStyle6; this.expGrid.Size = new System.Drawing.Size(515, 125); this.expGrid.TabIndex = 0; this.expGrid.CellEndEdit += new System.Windows.Forms.DataGridViewCellEventHandler(this.expGrid_CellEndEdit); @@ -2188,82 +2415,6 @@ private void InitializeComponent() this.btnExpPaste.Text = "Paste"; this.btnExpPaste.Click += new System.EventHandler(this.btnPaste_Click); // - // grpAttackSpeed - // - this.grpAttackSpeed.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(48))))); - this.grpAttackSpeed.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(90)))), ((int)(((byte)(90)))), ((int)(((byte)(90))))); - this.grpAttackSpeed.Controls.Add(this.nudAttackSpeedValue); - this.grpAttackSpeed.Controls.Add(this.lblAttackSpeedValue); - this.grpAttackSpeed.Controls.Add(this.cmbAttackSpeedModifier); - this.grpAttackSpeed.Controls.Add(this.lblAttackSpeedModifier); - this.grpAttackSpeed.ForeColor = System.Drawing.Color.Gainsboro; - this.grpAttackSpeed.Location = new System.Drawing.Point(13, 309); - this.grpAttackSpeed.Name = "grpAttackSpeed"; - this.grpAttackSpeed.Size = new System.Drawing.Size(192, 86); - this.grpAttackSpeed.TabIndex = 66; - this.grpAttackSpeed.TabStop = false; - this.grpAttackSpeed.Text = "Attack Speed"; - // - // nudAttackSpeedValue - // - this.nudAttackSpeedValue.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(69)))), ((int)(((byte)(73)))), ((int)(((byte)(74))))); - this.nudAttackSpeedValue.ForeColor = System.Drawing.Color.Gainsboro; - this.nudAttackSpeedValue.Location = new System.Drawing.Point(60, 58); - this.nudAttackSpeedValue.Maximum = new decimal(new int[] { - 10000, - 0, - 0, - 0}); - this.nudAttackSpeedValue.Name = "nudAttackSpeedValue"; - this.nudAttackSpeedValue.Size = new System.Drawing.Size(114, 20); - this.nudAttackSpeedValue.TabIndex = 56; - this.nudAttackSpeedValue.Value = new decimal(new int[] { - 0, - 0, - 0, - 0}); - this.nudAttackSpeedValue.ValueChanged += new System.EventHandler(this.nudAttackSpeedValue_ValueChanged); - // - // lblAttackSpeedValue - // - this.lblAttackSpeedValue.AutoSize = true; - this.lblAttackSpeedValue.Location = new System.Drawing.Point(9, 60); - this.lblAttackSpeedValue.Name = "lblAttackSpeedValue"; - this.lblAttackSpeedValue.Size = new System.Drawing.Size(37, 13); - this.lblAttackSpeedValue.TabIndex = 29; - this.lblAttackSpeedValue.Text = "Value:"; - // - // cmbAttackSpeedModifier - // - this.cmbAttackSpeedModifier.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(69)))), ((int)(((byte)(73)))), ((int)(((byte)(74))))); - this.cmbAttackSpeedModifier.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(90)))), ((int)(((byte)(90)))), ((int)(((byte)(90))))); - this.cmbAttackSpeedModifier.BorderStyle = System.Windows.Forms.ButtonBorderStyle.Solid; - this.cmbAttackSpeedModifier.ButtonColor = System.Drawing.Color.FromArgb(((int)(((byte)(43)))), ((int)(((byte)(43)))), ((int)(((byte)(43))))); - this.cmbAttackSpeedModifier.ButtonIcon = ((System.Drawing.Bitmap)(resources.GetObject("cmbAttackSpeedModifier.ButtonIcon"))); - this.cmbAttackSpeedModifier.DrawDropdownHoverOutline = false; - this.cmbAttackSpeedModifier.DrawFocusRectangle = false; - this.cmbAttackSpeedModifier.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed; - this.cmbAttackSpeedModifier.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; - this.cmbAttackSpeedModifier.FlatStyle = System.Windows.Forms.FlatStyle.Flat; - this.cmbAttackSpeedModifier.ForeColor = System.Drawing.Color.Gainsboro; - this.cmbAttackSpeedModifier.FormattingEnabled = true; - this.cmbAttackSpeedModifier.Location = new System.Drawing.Point(60, 24); - this.cmbAttackSpeedModifier.Name = "cmbAttackSpeedModifier"; - this.cmbAttackSpeedModifier.Size = new System.Drawing.Size(114, 21); - this.cmbAttackSpeedModifier.TabIndex = 28; - this.cmbAttackSpeedModifier.Text = null; - this.cmbAttackSpeedModifier.TextPadding = new System.Windows.Forms.Padding(2); - this.cmbAttackSpeedModifier.SelectedIndexChanged += new System.EventHandler(this.cmbAttackSpeedModifier_SelectedIndexChanged); - // - // lblAttackSpeedModifier - // - this.lblAttackSpeedModifier.AutoSize = true; - this.lblAttackSpeedModifier.Location = new System.Drawing.Point(9, 27); - this.lblAttackSpeedModifier.Name = "lblAttackSpeedModifier"; - this.lblAttackSpeedModifier.Size = new System.Drawing.Size(47, 13); - this.lblAttackSpeedModifier.TabIndex = 0; - this.lblAttackSpeedModifier.Text = "Modifier:"; - // // FrmClass // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); @@ -2310,11 +2461,19 @@ private void InitializeComponent() ((System.ComponentModel.ISupportInitialize)(this.nudY)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.nudX)).EndInit(); this.pnlContainer.ResumeLayout(false); + this.grpHair.ResumeLayout(false); + this.grpHair.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.picHair)).EndInit(); + this.grpGender2.ResumeLayout(false); + this.grpGender2.PerformLayout(); this.grpSpawnItems.ResumeLayout(false); this.grpSpawnItems.PerformLayout(); ((System.ComponentModel.ISupportInitialize)(this.nudSpawnItemAmount)).EndInit(); this.grpCombat.ResumeLayout(false); this.grpCombat.PerformLayout(); + this.grpAttackSpeed.ResumeLayout(false); + this.grpAttackSpeed.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.nudAttackSpeedValue)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.nudCritMultiplier)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.nudScaling)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.nudCritChance)).EndInit(); @@ -2347,9 +2506,6 @@ private void InitializeComponent() this.toolStrip.ResumeLayout(false); this.toolStrip.PerformLayout(); this.mnuExpGrid.ResumeLayout(false); - this.grpAttackSpeed.ResumeLayout(false); - this.grpAttackSpeed.PerformLayout(); - ((System.ComponentModel.ISupportInitialize)(this.nudAttackSpeedValue)).EndInit(); this.ResumeLayout(false); } @@ -2496,5 +2652,15 @@ private void InitializeComponent() private System.Windows.Forms.Label lblAttackSpeedValue; private DarkComboBox cmbAttackSpeedModifier; private System.Windows.Forms.Label lblAttackSpeedModifier; + private DarkGroupBox grpHair; + private System.Windows.Forms.Label lblHair; + private System.Windows.Forms.PictureBox picHair; + private DarkComboBox cmbHair; + private DarkGroupBox grpGender2; + private DarkRadioButton rbMale2; + private DarkRadioButton rbFemale2; + private DarkButton BtnAddHair; + private DarkButton btnRemoveHair; + private System.Windows.Forms.ListBox lstHair; } } \ No newline at end of file diff --git a/Intersect.Editor/Forms/Editors/frmClass.cs b/Intersect.Editor/Forms/Editors/frmClass.cs index cb6156f3..7b3ce587 100644 --- a/Intersect.Editor/Forms/Editors/frmClass.cs +++ b/Intersect.Editor/Forms/Editors/frmClass.cs @@ -211,6 +211,7 @@ private void UpdateEditor() } RefreshSpriteList(false); + RefreshHairList(false); // Don't select if there are no Spells, to avoid crashes. if (lstSprites.Items.Count > 0) @@ -278,7 +279,16 @@ private void frmClass_Load(object sender, EventArgs e) cmbFace.Items.Clear(); cmbFace.Items.Add(Strings.General.none); - cmbFace.Items.AddRange(GameContentManager.GetSmartSortedTextureNames(GameContentManager.TextureType.Face)); + cmbFace.Items.AddRange( + GameContentManager.GetSmartSortedTextureNames(GameContentManager.TextureType.Face) + ); + + cmbHair.Items.Clear(); + cmbHair.Items.Add(Strings.General.none); + cmbHair.Items.AddRange( + GameContentManager.GetSmartSortedTextureNames(GameContentManager.TextureType.Hairs) + ); + cmbSpawnItem.Items.Clear(); cmbSpawnItem.Items.Add(Strings.General.none); cmbSpawnItem.Items.AddRange(ItemBase.Names); @@ -456,6 +466,12 @@ private void InitLocalization() expGrid.Columns.Add(tnlCol); expGrid.Columns.Add(totalCol); + grpHair.Text = Strings.ClassEditor.hairstyles; + grpGender2.Text = Strings.ClassEditor.gender; + rbMale2.Text = Strings.ClassEditor.male; + rbFemale2.Text = Strings.ClassEditor.female; + lblHair.Text = Strings.ClassEditor.hair; + //Searching/Sorting btnChronological.ToolTipText = Strings.ClassEditor.sortchronologically; txtSearch.Text = Strings.ClassEditor.searchplaceholder; @@ -600,7 +616,6 @@ private void rbMale_Click(object sender, EventArgs e) if (lstSprites.Items.Count > 0) { mEditorItem.Sprites[lstSprites.SelectedIndex].Gender = Gender.Male; - RefreshSpriteList(); } } @@ -658,6 +673,31 @@ private void RefreshSpriteList(bool saveSpot = true) } } + private void RefreshHairList(bool saveSpot = true) { + // Refresh List + var n = lstHair.SelectedIndex; + lstHair.Items.Clear(); + for (var i = 0; i < mEditorItem.CustomSpriteLayers[CustomSpriteLayers.Hair].Count; i++) { + if (mEditorItem.CustomSpriteLayers[CustomSpriteLayers.Hair][i].Gender == 0) { + lstHair.Items.Add( + Strings.ClassEditor.spriteitemmale.ToString( + i + 1, TextUtils.NullToNone(mEditorItem.CustomSpriteLayers[CustomSpriteLayers.Hair][i].Texture) + ) + ); + } else { + lstHair.Items.Add( + Strings.ClassEditor.spriteitemfemale.ToString( + i + 1, TextUtils.NullToNone(mEditorItem.CustomSpriteLayers[CustomSpriteLayers.Hair][i].Texture) + ) + ); + } + } + + if (saveSpot) { + lstHair.SelectedIndex = n; + } + } + private void btnAdd_Click(object sender, EventArgs e) { var n = new ClassSprite @@ -751,6 +791,26 @@ private void DrawSprite() picFace.BackgroundImage = picFaceBmp; } + private void DrawHair() { + var picSpriteBmp = new Bitmap(picHair.Width, picHair.Height); + var gfx = Graphics.FromImage(picSpriteBmp); + gfx.FillRectangle(Brushes.Black, new Rectangle(0, 0, picSprite.Width, picSprite.Height)); + if (cmbHair.SelectedIndex > 0) { + if (File.Exists("resources/hairs/" + cmbHair.Text)) { + var img = Image.FromFile("resources/hairs/" + cmbHair.Text); + gfx.DrawImage( + img, new Rectangle(0, 0, img.Width / 4, img.Height / 4), + new Rectangle(0, 0, img.Width / 4, img.Height / 4), GraphicsUnit.Pixel + ); + + img.Dispose(); + } + } + + gfx.Dispose(); + picHair.BackgroundImage = picSpriteBmp; + } + private void btnVisualMapSelector_Click(object sender, EventArgs e) { var frmWarpSelection = new FrmWarpSelection(); @@ -1284,6 +1344,85 @@ private void nudAttackSpeedValue_ValueChanged(object sender, EventArgs e) mEditorItem.AttackSpeedValue = (int) nudAttackSpeedValue.Value; } + private void cmbHair_SelectedIndexChanged(object sender, EventArgs e) { + if (lstHair.SelectedIndex >= 0) { + mEditorItem.CustomSpriteLayers[CustomSpriteLayers.Hair][lstHair.SelectedIndex].Texture = TextUtils.SanitizeNone(cmbHair?.Text); + + RefreshHairList(); + } + + DrawHair(); + } + + private void BtnAddHair_Click(object sender, EventArgs e) { + var n = new CustomSpriteLayer { + Texture = null, + Gender = 0 + }; + + mEditorItem.CustomSpriteLayers[CustomSpriteLayers.Hair].Add(n); + + if (n.Gender == 0) { + lstHair.Items.Add( + Strings.ClassEditor.spriteitemmale.ToString( + mEditorItem.CustomSpriteLayers[CustomSpriteLayers.Hair].Count, TextUtils.NullToNone(n.Texture) + ) + ); + } else { + lstHair.Items.Add( + Strings.ClassEditor.spriteitemfemale.ToString( + mEditorItem.CustomSpriteLayers[CustomSpriteLayers.Hair].Count, TextUtils.NullToNone(n.Texture) + ) + ); + } + + lstHair.SelectedIndex = lstHair.Items.Count - 1; + lstHair_Click(null, null); + } + + private void btnRemoveHair_Click(object sender, EventArgs e) { + if (lstHair.SelectedIndex == -1) { + return; + } + + mEditorItem.CustomSpriteLayers[CustomSpriteLayers.Hair].RemoveAt(lstHair.SelectedIndex); + lstHair.Items.RemoveAt(lstHair.SelectedIndex); + + RefreshSpriteList(false); + + if (lstHair.Items.Count > 0) { + lstHair.SelectedIndex = 0; + } + } + + private void lstHair_Click(object sender, EventArgs e) { + if (lstHair.Items.Count > 0) { + cmbHair.SelectedIndex = cmbHair.FindString( + TextUtils.NullToNone(mEditorItem.CustomSpriteLayers[CustomSpriteLayers.Hair][lstHair.SelectedIndex].Texture) + ); + + if (mEditorItem.CustomSpriteLayers[CustomSpriteLayers.Hair][lstHair.SelectedIndex].Gender == 0) { + rbMale2.Checked = true; + } else { + rbFemale2.Checked = true; + } + } + } + + private void rbMale2_Click(object sender, EventArgs e) { + if (lstHair.Items.Count > 0) { + mEditorItem.CustomSpriteLayers[CustomSpriteLayers.Hair][lstHair.SelectedIndex].Gender = Gender.Male; + RefreshHairList(); + } + } + + private void rbFemale2_Click(object sender, EventArgs e) { + if (lstHair.Items.Count > 0) { + mEditorItem.CustomSpriteLayers[CustomSpriteLayers.Hair][lstHair.SelectedIndex].Gender = Gender.Female; + RefreshHairList(); + } + } + #region "Exp Grid" private void btnExpGrid_Click(object sender, EventArgs e) @@ -1682,6 +1821,8 @@ private void txtSearch_Click(object sender, EventArgs e) } } + + #endregion } diff --git a/Intersect.Editor/Forms/Editors/frmClass.resx b/Intersect.Editor/Forms/Editors/frmClass.resx index 35e1308a..23e58675 100644 --- a/Intersect.Editor/Forms/Editors/frmClass.resx +++ b/Intersect.Editor/Forms/Editors/frmClass.resx @@ -125,51 +125,51 @@ AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAAY - CwAAAk1TRnQBSQFMAgEBAgEAAVgBAQFYAQEBEAEAARABAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAFA + CwAAAk1TRnQBSQFMAgEBAgEAAXgBAQF4AQEBEAEAARABAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAFA AwABEAMAAQEBAAEgBgABEFoAA/YB/wP2Af8D9gH/A/YB/wP2Af8D9gH/A/YB/wP2Af8D9gH/A/YB/wP2 Af8D9gH/A/YB/4wAAyEBMAMqAUADKgFAAyoBQAMqAUADKgFAAyoBQAMqAUADKgFAAyoBQAMqAUADKgFA - AyoBQAMqAUAIAAP2Af8DPQH/Az0B/wM9Af8DPQH/Az0B/wM9Af8DPQH/Az0B/wM9Af8DPQH/Az0B/wP2 + AyoBQAMqAUAIAAP2Af8DOQH/AzkB/wM5Af8DOQH/AzkB/wM5Af8DOQH/AzkB/wM5Af8DOQH/AzkB/wP2 Af+IAAMMARAB7gHyAfQB/wP2Af8D9gH/A/YB/wP2Af8D9gH/A/YB/wP2Af8D9gH/A/YB/wP2Af8D9gH/ - A/YB/wP2Af8IAAP2Af8DPQH/AfEB7wHwAf8B8QHvAfAB/wHxAe8B8AH/AfEB7wHwAf8B8QHvAfAB/wHx - Ae8B8AH/AfEB7wHwAf8B8QHvAfAB/wHxAe8B8AH/Az0B/wP2Af+IAANAAXAByAHeAewB/wFPAbYB3AH/ - AU8BtgHcAf8BTwG2AdwB/wFPAbYB3AH/AU8BtgHcAf8BTwG2AdwB/wFPAbYB3AH/AU8BtgHcAf8BTwG2 - AdwB/wFPAbYB3AH/AbYB0wHmAf8BTwG2AdwB/wP2Af8IAAP2Af8DPQH/AfEB7wHwAf8B8QHvAfAB/wHx - Ae8B8AH/AcUBxAHFAf8BhAKDAf8BxQHEAcUB/wHxAe8B8AH/AfEB7wHwAf8B8QHvAfAB/wM9Af8D9gH/ - iAADXAHfAZEBwgHhAf8BTwG2AdwB/wFPAbYB3AH/AU8BtgHcAf8BTwG2AdwB/wFPAbYB3AH/AU8BtgHc - Af8BTwG2AdwB/wFPAbYB3AH/AU8BtgHcAf8BiQG9Ad8B/wHxAe8B8AH/AU8BtgHcAf8D9gH/CAAD9gH/ - Az0B/wHxAe8B8AH/AdsB2QHaAf8BdAJzAf8BmgKZAf8DPQH/AZoCmQH/AXQCcwH/AdsB2QHaAf8B8QHv - AfAB/wM9Af8D9gH/hAADKgFAAd8B6gHxAf8BTwG2AdwB/wFPAbYB3AH/AU8BtgHcAf8BTwG2AdwB/wFP - AbYB3AH/AU8BtgHcAf8BTwG2AdwB/wFPAbYB3AH/AU8BtgHcAf8BTwG2AdwB/wHTAeEB6wH/AfEB7wHw - Af8BTwG2AdwB/wP2Af8IAAP2Af8DPQH/AfEB7wHwAf8DPQH/AdsB2QHaAf8B8QHvAfAB/wM9Af8B8QHv - AfAB/wHbAdkB2gH/Az0B/wHxAe8B8AH/Az0B/wP2Af+EAANRAZ8BqQHOAeYB/wFPAbYB3AH/AU8BtgHc - Af8BTwG2AdwB/wFPAbYB3AH/AU8BtgHcAf8BTwG2AdwB/wFPAbYB3AH/AU8BtgHcAf8BTwG2AdwB/wGf - AcgB4gH/AfEB7wHwAf8B8QHvAfAB/wFPAbYB3AH/A/YB/wgAA/YB/wM9Af8B8QHvAfAB/wM9Af8B8QHv - AfAB/wHxAe8B8AH/Az0B/wHxAe8B8AH/AfEB7wHwAf8DPQH/AfEB7wHwAf8DPQH/A/YB/4QAA/YB/wGC - AboB3gH/AU8BtgHcAf8BTwG2AdwB/wFPAbYB3AH/AU8BtgHcAf8BTwG2AdwB/wFPAbYB3AH/AU8BtgHc - Af8BTwG2AdwB/wFPAbYB3AH/AeIB6AHuAf8B8QHvAfAB/wHxAe8B8AH/AU8BtgHcAf8D9gH/CAAD9gH/ - Az0B/wHxAe8B8AH/Az0B/wHFAcQBxQH/AWkBaAFpAf8BmgKZAf8BaQFoAWkB/wHFAcQBxQH/Az0B/wHx - Ae8B8AH/Az0B/wP2Af+EAAP2Af8D9gH/AU8BtgHcAf8B8QHvAfAB/wHxAe8B8AH/AfEB7wHwAf8B8QHv + A/YB/wP2Af8IAAP2Af8DOQH/AfEB7wHwAf8B8QHvAfAB/wHxAe8B8AH/AfEB7wHwAf8B8QHvAfAB/wHx + Ae8B8AH/AfEB7wHwAf8B8QHvAfAB/wHxAe8B8AH/AzkB/wP2Af+IAANAAXAByAHeAewB/wFLAbYB3AH/ + AUsBtgHcAf8BSwG2AdwB/wFLAbYB3AH/AUsBtgHcAf8BSwG2AdwB/wFLAbYB3AH/AUsBtgHcAf8BSwG2 + AdwB/wFLAbYB3AH/AbYB0wHmAf8BSwG2AdwB/wP2Af8IAAP2Af8DOQH/AfEB7wHwAf8B8QHvAfAB/wHx + Ae8B8AH/AcUBxAHFAf8BhAKDAf8BxQHEAcUB/wHxAe8B8AH/AfEB7wHwAf8B8QHvAfAB/wM5Af8D9gH/ + iAADXAHfAZEBwgHhAf8BSwG2AdwB/wFLAbYB3AH/AUsBtgHcAf8BSwG2AdwB/wFLAbYB3AH/AUsBtgHc + Af8BSwG2AdwB/wFLAbYB3AH/AUsBtgHcAf8BiQG9Ad8B/wHxAe8B8AH/AUsBtgHcAf8D9gH/CAAD9gH/ + AzkB/wHxAe8B8AH/AdsB2QHaAf8BcAJvAf8BmgKZAf8DOQH/AZoCmQH/AXACbwH/AdsB2QHaAf8B8QHv + AfAB/wM5Af8D9gH/hAADKgFAAd8B6gHxAf8BSwG2AdwB/wFLAbYB3AH/AUsBtgHcAf8BSwG2AdwB/wFL + AbYB3AH/AUsBtgHcAf8BSwG2AdwB/wFLAbYB3AH/AUsBtgHcAf8BSwG2AdwB/wHTAeEB6wH/AfEB7wHw + Af8BSwG2AdwB/wP2Af8IAAP2Af8DOQH/AfEB7wHwAf8DOQH/AdsB2QHaAf8B8QHvAfAB/wM5Af8B8QHv + AfAB/wHbAdkB2gH/AzkB/wHxAe8B8AH/AzkB/wP2Af+EAANRAZ8BqQHOAeYB/wFLAbYB3AH/AUsBtgHc + Af8BSwG2AdwB/wFLAbYB3AH/AUsBtgHcAf8BSwG2AdwB/wFLAbYB3AH/AUsBtgHcAf8BSwG2AdwB/wGf + AcgB4gH/AfEB7wHwAf8B8QHvAfAB/wFLAbYB3AH/A/YB/wgAA/YB/wM5Af8B8QHvAfAB/wM5Af8B8QHv + AfAB/wHxAe8B8AH/AzkB/wHxAe8B8AH/AfEB7wHwAf8DOQH/AfEB7wHwAf8DOQH/A/YB/4QAA/YB/wGC + AboB3gH/AUsBtgHcAf8BSwG2AdwB/wFLAbYB3AH/AUsBtgHcAf8BSwG2AdwB/wFLAbYB3AH/AUsBtgHc + Af8BSwG2AdwB/wFLAbYB3AH/AeIB6AHuAf8B8QHvAfAB/wHxAe8B8AH/AUsBtgHcAf8D9gH/CAAD9gH/ + AzkB/wHxAe8B8AH/AzkB/wHFAcQBxQH/AWUBZAFlAf8BmgKZAf8BZQFkAWUB/wHFAcQBxQH/AzkB/wHx + Ae8B8AH/AzkB/wP2Af+EAAP2Af8D9gH/AUsBtgHcAf8B8QHvAfAB/wHxAe8B8AH/AfEB7wHwAf8B8QHv AfAB/wHxAe8B8AH/AfEB7wHwAf8B8QHvAfAB/wHxAe8B8AH/AfEB7wHwAf8B8QHvAfAB/wHxAe8B8AH/ - AU8BtgHcAf8D9gH/CAAD9gH/Az0B/wHxAe8B8AH/Az0B/wF0AnMB/wHmAeQB5QH/AfEB7wHwAf8B5gHk - AeUB/wF0AnMB/wM9Af8B8QHvAfAB/wM9Af8D9gH/iAAD9gH/AU8BtgHcAf8B8QHvAfAB/wHxAe8B8AH/ + AUsBtgHcAf8D9gH/CAAD9gH/AzkB/wHxAe8B8AH/AzkB/wFwAm8B/wHmAeQB5QH/AfEB7wHwAf8B5gHk + AeUB/wFwAm8B/wM5Af8B8QHvAfAB/wM5Af8D9gH/iAAD9gH/AUsBtgHcAf8B8QHvAfAB/wHxAe8B8AH/ AfEB7wHwAf8B8QHvAfAB/wHxAe8B8AH/AfEB7wHwAf8B8QHvAfAB/wHxAe8B8AH/AfEB7wHwAf8B8QHv - AfAB/wHxAe8B8AH/AU8BtgHcAf8D9gH/CAAD9gH/Az0B/wHxAe8B8AH/AdsB2QHaAf8BdAJzAf8BmgKZ - Af8B2wHZAdoB/wGaApkB/wF0AnMB/wHbAdkB2gH/AfEB7wHwAf8DPQH/A/YB/4gAA/YB/wFPAbYB3AH/ + AfAB/wHxAe8B8AH/AUsBtgHcAf8D9gH/CAAD9gH/AzkB/wHxAe8B8AH/AdsB2QHaAf8BcAJvAf8BmgKZ + Af8B2wHZAdoB/wGaApkB/wFwAm8B/wHbAdkB2gH/AfEB7wHwAf8DOQH/A/YB/4gAA/YB/wFLAbYB3AH/ AfEB7wHwAf8B8QHvAfAB/wHxAe8B8AH/AfEB7wHwAf8B8QHvAfAB/wHxAe8B8AH/AfEB7wHwAf8B8QHv - AfAB/wHxAe8B8AH/AfEB7wHwAf8B8QHvAfAB/wFPAbYB3AH/A/YB/wgAA/YB/wM9Af8B8QHvAfAB/wHx + AfAB/wHxAe8B8AH/AfEB7wHwAf8B8QHvAfAB/wFLAbYB3AH/A/YB/wgAA/YB/wM5Af8B8QHvAfAB/wHx Ae8B8AH/AfEB7wHwAf8BxQHEAcUB/wGEAoMB/wHFAcQBxQH/AfEB7wHwAf8B8QHvAfAB/wHxAe8B8AH/ - Az0B/wP2Af+IAAP2Af8BTwG2AdwB/wFPAbYB3AH/AU8BtgHcAf8BTwG2AdwB/wHiAegB7gH/AfEB7wHw - Af8B8QHvAfAB/wHxAe8B8AH/AfEB7wHwAf8B8QHvAfAB/wHxAe8B8AH/AfEB7wHwAf8BTwG2AdwB/wP2 - Af8IAAP2Af8DPQH/AfEB7wHwAf8B8QHvAfAB/wHxAe8B8AH/AfEB7wHwAf8B8QHvAfAB/wHxAe8B8AH/ - Az0B/wM9Af8DPQH/A4YB/wOuAe+IAAP2Af8D9gH/A/YB/wP2Af8BigG+Ad8B/wGnAcsB5AH/AfEB7wHw - Af8B8QHvAfAB/wHxAe8B8AH/AfEB7wHwAf8B8QHvAfAB/wHxAe8B8AH/AfEB7wHwAf8BTwG2AdwB/wP2 - Af8IAAP2Af8DPQH/AfEB7wHwAf8B8QHvAfAB/wHxAe8B8AH/AfEB7wHwAf8B8QHvAfAB/wHxAe8B8AH/ - Az0B/wM9Af8DhgH/A64B7wMhATCUAANcAd8ByAHeAewB/wFPAbYB3AH/AU8BtgHcAf8BTwG2AdwB/wFP - AbYB3AH/AU8BtgHcAf8BTwG2AdwB/wFPAbYB3AH/AU8BtgHcAf8BTwG2AdwB/wP2Af8IAAP2Af8DPQH/ - AfEB7wHwAf8B8QHvAfAB/wHxAe8B8AH/AfEB7wHwAf8B8QHvAfAB/wHxAe8B8AH/Az0B/wOGAf8DrgHv + AzkB/wP2Af+IAAP2Af8BSwG2AdwB/wFLAbYB3AH/AUsBtgHcAf8BSwG2AdwB/wHiAegB7gH/AfEB7wHw + Af8B8QHvAfAB/wHxAe8B8AH/AfEB7wHwAf8B8QHvAfAB/wHxAe8B8AH/AfEB7wHwAf8BSwG2AdwB/wP2 + Af8IAAP2Af8DOQH/AfEB7wHwAf8B8QHvAfAB/wHxAe8B8AH/AfEB7wHwAf8B8QHvAfAB/wHxAe8B8AH/ + AzkB/wM5Af8DOQH/A4YB/wOOAe+IAAP2Af8D9gH/A/YB/wP2Af8BigG+Ad8B/wGnAcsB5AH/AfEB7wHw + Af8B8QHvAfAB/wHxAe8B8AH/AfEB7wHwAf8B8QHvAfAB/wHxAe8B8AH/AfEB7wHwAf8BSwG2AdwB/wP2 + Af8IAAP2Af8DOQH/AfEB7wHwAf8B8QHvAfAB/wHxAe8B8AH/AfEB7wHwAf8B8QHvAfAB/wHxAe8B8AH/ + AzkB/wM5Af8DhgH/A44B7wMhATCUAANcAd8ByAHeAewB/wFLAbYB3AH/AUsBtgHcAf8BSwG2AdwB/wFL + AbYB3AH/AUsBtgHcAf8BSwG2AdwB/wFLAbYB3AH/AUsBtgHcAf8BSwG2AdwB/wP2Af8IAAP2Af8DOQH/ + AfEB7wHwAf8B8QHvAfAB/wHxAe8B8AH/AfEB7wHwAf8B8QHvAfAB/wHxAe8B8AH/AzkB/wOGAf8DjgHv AyEBMJgAAzoBYAP2Af8D9gH/A/YB/wP2Af8D9gH/A/YB/wP2Af8D9gH/A/YB/wP2Af8D9gH/CAAD9gH/ - Az0B/wM9Af8DPQH/Az0B/wM9Af8DPQH/Az0B/wOGAf8DrgHvAyEBMNQAA/YB/wP2Af8D9gH/A/YB/wP2 - Af8D9gH/A/YB/wP2Af8DrgHvAyEBMJAAAUIBTQE+BwABPgMAASgDAAFAAwABEAMAAQEBAAEBBQABgBcA + AzkB/wM5Af8DOQH/AzkB/wM5Af8DOQH/AzkB/wOGAf8DjgHvAyEBMNQAA/YB/wP2Af8D9gH/A/YB/wP2 + Af8D9gH/A/YB/wP2Af8DjgHvAyEBMJAAAUIBTQE+BwABPgMAASgDAAFAAwABEAMAAQEBAAEBBQABgBcA A/8BAAL/AcABAQQAAcABAAHAAQEEAAGAAQABwAEBBAABgAEAAcABAQQAAYABAAHAAQEGAAHAAQEGAAHA AQEGAAHAAQEGAAHAAQEEAAGAAQABwAEBBAABgAEAAcABAQQAAYABAAHAAQEEAAGAAQABwAEBBAAB8AEA AcABAwQAAfABAAHAAQcEAAL/AcABDwQACw== @@ -211,38 +211,45 @@ r0KQPFgRLoUwObgiEMamAIRRFIEwuoL///8zAAC5cW+geGnZqAAAAABJRU5ErkJggg== - + iVBORw0KGgoAAAANSUhEUgAAAAkAAAAFCAYAAACXU8ZrAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1 MAAA6mAAADqYAAAXb5JfxUYAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAAvSURBVBhXY4iJiflPCDP8//8f r0KQPFgRLoUwObgiEMamAIRRFIEwuoL///8zAAC5cW+geGnZqAAAAABJRU5ErkJggg== - + + + iVBORw0KGgoAAAANSUhEUgAAAAkAAAAFCAYAAACXU8ZrAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1 + MAAA6mAAADqYAAAXb5JfxUYAAAAJcEhZcwAADsIAAA7CARUoSoAAAAAvSURBVBhXY4iJiflPCDP8//8f + r0KQPFgRLoUwObgiEMamAIRRFIEwuoL///8zAAC5cW+geGnZqAAAAABJRU5ErkJggg== + + + iVBORw0KGgoAAAANSUhEUgAAAAkAAAAFCAYAAACXU8ZrAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1 MAAA6mAAADqYAAAXb5JfxUYAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAAvSURBVBhXY4iJiflPCDP8//8f r0KQPFgRLoUwObgiEMamAIRRFIEwuoL///8zAAC5cW+geGnZqAAAAABJRU5ErkJggg== - + iVBORw0KGgoAAAANSUhEUgAAAAkAAAAFCAYAAACXU8ZrAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1 MAAA6mAAADqYAAAXb5JfxUYAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAAvSURBVBhXY4iJiflPCDP8//8f r0KQPFgRLoUwObgiEMamAIRRFIEwuoL///8zAAC5cW+geGnZqAAAAABJRU5ErkJggg== - + iVBORw0KGgoAAAANSUhEUgAAAAkAAAAFCAYAAACXU8ZrAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1 MAAA6mAAADqYAAAXb5JfxUYAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAAvSURBVBhXY4iJiflPCDP8//8f r0KQPFgRLoUwObgiEMamAIRRFIEwuoL///8zAAC5cW+geGnZqAAAAABJRU5ErkJggg== - + iVBORw0KGgoAAAANSUhEUgAAAAkAAAAFCAYAAACXU8ZrAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1 - MAAA6mAAADqYAAAXb5JfxUYAAAAJcEhZcwAADsIAAA7CARUoSoAAAAAvSURBVBhXY4iJiflPCDP8//8f + MAAA6mAAADqYAAAXb5JfxUYAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAAvSURBVBhXY4iJiflPCDP8//8f r0KQPFgRLoUwObgiEMamAIRRFIEwuoL///8zAAC5cW+geGnZqAAAAABJRU5ErkJggg== diff --git a/Intersect.Editor/Intersect.Editor.csproj b/Intersect.Editor/Intersect.Editor.csproj index 0a8e9137..f6e379b4 100644 --- a/Intersect.Editor/Intersect.Editor.csproj +++ b/Intersect.Editor/Intersect.Editor.csproj @@ -86,6 +86,12 @@ + + UserControl + + + EventCommand_ChangeHair.cs + @@ -642,6 +648,9 @@ EditorForm.cs + + EventCommand_ChangeHair.cs + EventCommand_ChangeFace.cs diff --git a/Intersect.Editor/Localization/Strings.cs b/Intersect.Editor/Localization/Strings.cs index d21c0a94..ada944b2 100644 --- a/Intersect.Editor/Localization/Strings.cs +++ b/Intersect.Editor/Localization/Strings.cs @@ -852,6 +852,10 @@ public struct ClassEditor public static LocalizedString undotitle = @"Undo Changes"; + public static LocalizedString hairstyles = @"Hairstyles"; + + public static LocalizedString hair = @"Hair:"; + } public struct Colors @@ -1164,6 +1168,19 @@ public struct EventChangeFace } + public struct EventChangeHair + { + + public static LocalizedString cancel = @"Cancel"; + + public static LocalizedString label = @"Hair:"; + + public static LocalizedString okay = @"Ok"; + + public static LocalizedString title = @"Change Hair"; + + } + public struct EventShowPicture { @@ -1578,6 +1595,8 @@ public struct EventCommandList public static LocalizedString setface = @"Set Player Face to {00}"; + public static LocalizedString sethair = @"Set Player Hair to {00}"; + public static LocalizedString setnamecolor = @"Set Player Name Color"; public static LocalizedString removenamecolor = @"Remove Player Name Color"; @@ -1712,6 +1731,7 @@ public struct EventCommands {"changenamecolor", @"Change Name Color"}, {"inputvariable", @"Input Variable"}, {"changeplayerlabel", @"Change Player Label"}, + {"changehair", @"Change Hair"}, }; } diff --git a/Intersect.Server/Entities/Events/CommandProcessing.cs b/Intersect.Server/Entities/Events/CommandProcessing.cs index 0bf63d3d..cc0751b4 100644 --- a/Intersect.Server/Entities/Events/CommandProcessing.cs +++ b/Intersect.Server/Entities/Events/CommandProcessing.cs @@ -493,6 +493,19 @@ Stack callStack PacketSender.SendEntityDataToProximity(player); } + //Change Hair Command + private static void ProcessCommand( + ChangeHairCommand command, + Player player, + Event instance, + CommandInstance stackInfo, + Stack callStack + ) + { + player.CustomSpriteLayers[(int)Enums.CustomSpriteLayers.Hair] = command.Hair; + PacketSender.SendCustomSpriteLayersToProximity(player); + } + //Change Gender Command private static void ProcessCommand( ChangeGenderCommand command, diff --git a/Intersect.Server/Entities/Player.cs b/Intersect.Server/Entities/Player.cs index feca3c02..c7163597 100644 --- a/Intersect.Server/Entities/Player.cs +++ b/Intersect.Server/Entities/Player.cs @@ -69,6 +69,16 @@ public partial class Player : Entity public Gender Gender { get; set; } + [NotMapped] + public string[] CustomSpriteLayers { get; set; } = new string[(int)Enums.CustomSpriteLayers.CustomCount]; + + [Column("CustomSpriteLayers"), JsonIgnore] + public string CustomSpriteLayersJson + { + get => DatabaseUtils.SaveStringArray(CustomSpriteLayers, (int)Enums.CustomSpriteLayers.CustomCount); + set => CustomSpriteLayers = DatabaseUtils.LoadStringArray(value, (int)Enums.CustomSpriteLayers.CustomCount); + } + public long Exp { get; set; } public int StatPoints { get; set; } diff --git a/Intersect.Server/Intersect.Server.csproj b/Intersect.Server/Intersect.Server.csproj index 1bbee3dc..c36f85ac 100644 --- a/Intersect.Server/Intersect.Server.csproj +++ b/Intersect.Server/Intersect.Server.csproj @@ -480,6 +480,14 @@ + + + 20200402173703_PlayerHair_PlayerEdits.cs + + + + 20200402142818_PlayerHair_ClassEdits.cs + diff --git a/Intersect.Server/Migrations/20200402160828_PlayerHair_PlayerEdits.Designer.cs b/Intersect.Server/Migrations/20200402160828_PlayerHair_PlayerEdits.Designer.cs new file mode 100644 index 00000000..7523aeef --- /dev/null +++ b/Intersect.Server/Migrations/20200402160828_PlayerHair_PlayerEdits.Designer.cs @@ -0,0 +1,513 @@ +// +using System; +using Intersect.Server.Database.PlayerData; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; + +namespace Intersect.Server.Migrations +{ + [DbContext(typeof(PlayerContext))] + [Migration("20200402160828_PlayerHair_PlayerEdits")] + partial class PlayerHair_PlayerEdits + { + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "2.1.3-rtm-32065"); + + modelBuilder.Entity("Intersect.Server.Database.PlayerData.Api.RefreshToken", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ClientId"); + + b.Property("Expires"); + + b.Property("Issued"); + + b.Property("Subject") + .IsRequired(); + + b.Property("Ticket") + .IsRequired(); + + b.Property("TicketId"); + + b.Property("UserId"); + + b.HasKey("Id"); + + b.HasIndex("UserId"); + + b.ToTable("RefreshTokens"); + }); + + modelBuilder.Entity("Intersect.Server.Database.PlayerData.Ban", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Banner"); + + b.Property("EndTime"); + + b.Property("Ip"); + + b.Property("Reason"); + + b.Property("StartTime"); + + b.Property("UserId") + .HasColumnName("PlayerId"); + + b.HasKey("Id"); + + b.HasIndex("UserId") + .IsUnique(); + + b.ToTable("Bans"); + }); + + modelBuilder.Entity("Intersect.Server.Database.PlayerData.Mute", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("EndTime"); + + b.Property("Ip"); + + b.Property("Muter"); + + b.Property("Reason"); + + b.Property("StartTime"); + + b.Property("UserId") + .HasColumnName("PlayerId"); + + b.HasKey("Id"); + + b.HasIndex("UserId") + .IsUnique(); + + b.ToTable("Mutes"); + }); + + modelBuilder.Entity("Intersect.Server.Database.PlayerData.Players.Bag", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("SlotCount"); + + b.HasKey("Id"); + + b.ToTable("Bags"); + }); + + modelBuilder.Entity("Intersect.Server.Database.PlayerData.Players.BagSlot", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BagId"); + + b.Property("ItemId"); + + b.Property("ParentBagId"); + + b.Property("Quantity"); + + b.Property("Slot"); + + b.Property("StatBuffsJson") + .HasColumnName("StatBuffs"); + + b.HasKey("Id"); + + b.HasIndex("BagId"); + + b.HasIndex("ParentBagId"); + + b.ToTable("Bag_Items"); + }); + + modelBuilder.Entity("Intersect.Server.Database.PlayerData.Players.BankSlot", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BagId"); + + b.Property("ItemId"); + + b.Property("PlayerId"); + + b.Property("Quantity"); + + b.Property("Slot"); + + b.Property("StatBuffsJson") + .HasColumnName("StatBuffs"); + + b.HasKey("Id"); + + b.HasIndex("BagId"); + + b.HasIndex("PlayerId"); + + b.ToTable("Player_Bank"); + }); + + modelBuilder.Entity("Intersect.Server.Database.PlayerData.Players.Friend", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("OwnerId"); + + b.Property("TargetId"); + + b.HasKey("Id"); + + b.HasIndex("OwnerId"); + + b.HasIndex("TargetId"); + + b.ToTable("Player_Friends"); + }); + + modelBuilder.Entity("Intersect.Server.Database.PlayerData.Players.HotbarSlot", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BagId"); + + b.Property("ItemOrSpellId"); + + b.Property("PlayerId"); + + b.Property("Slot"); + + b.Property("StatBuffsJson") + .HasColumnName("PreferredStatBuffs"); + + b.HasKey("Id"); + + b.HasIndex("PlayerId"); + + b.ToTable("Player_Hotbar"); + }); + + modelBuilder.Entity("Intersect.Server.Database.PlayerData.Players.InventorySlot", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BagId"); + + b.Property("ItemId"); + + b.Property("PlayerId"); + + b.Property("Quantity"); + + b.Property("Slot"); + + b.Property("StatBuffsJson") + .HasColumnName("StatBuffs"); + + b.HasKey("Id"); + + b.HasIndex("BagId"); + + b.HasIndex("PlayerId"); + + b.ToTable("Player_Items"); + }); + + modelBuilder.Entity("Intersect.Server.Database.PlayerData.Players.Quest", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Completed"); + + b.Property("PlayerId"); + + b.Property("QuestId"); + + b.Property("TaskId"); + + b.Property("TaskProgress"); + + b.HasKey("Id"); + + b.HasIndex("PlayerId"); + + b.HasIndex("QuestId", "PlayerId") + .IsUnique(); + + b.ToTable("Player_Quests"); + }); + + modelBuilder.Entity("Intersect.Server.Database.PlayerData.Players.SpellSlot", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("PlayerId"); + + b.Property("Slot"); + + b.Property("SpellCd"); + + b.Property("SpellId"); + + b.HasKey("Id"); + + b.HasIndex("PlayerId"); + + b.ToTable("Player_Spells"); + }); + + modelBuilder.Entity("Intersect.Server.Database.PlayerData.Players.Variable", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Json") + .HasColumnName("Value"); + + b.Property("PlayerId"); + + b.Property("VariableId"); + + b.HasKey("Id"); + + b.HasIndex("PlayerId"); + + b.HasIndex("VariableId", "PlayerId") + .IsUnique(); + + b.ToTable("Player_Variables"); + }); + + modelBuilder.Entity("Intersect.Server.Database.PlayerData.User", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Email"); + + b.Property("Name"); + + b.Property("Password"); + + b.Property("PasswordResetCode"); + + b.Property("PasswordResetTime"); + + b.Property("PowerJson") + .HasColumnName("Power"); + + b.Property("Salt"); + + b.HasKey("Id"); + + b.ToTable("Users"); + }); + + modelBuilder.Entity("Intersect.Server.Entities.Player", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ClassId"); + + b.Property("Dir"); + + b.Property("EquipmentJson") + .HasColumnName("Equipment"); + + b.Property("Exp"); + + b.Property("Face"); + + b.Property("FooterLabelJson") + .HasColumnName("FooterLabel"); + + b.Property("Gender"); + + b.Property("Hair"); + + b.Property("HeaderLabelJson") + .HasColumnName("HeaderLabel"); + + b.Property("ItemCooldownsJson") + .HasColumnName("ItemCooldowns"); + + b.Property("LastOnline"); + + b.Property("Level"); + + b.Property("MapId"); + + b.Property("Name"); + + b.Property("NameColorJson") + .HasColumnName("NameColor"); + + b.Property("SpellCooldownsJson") + .HasColumnName("SpellCooldowns"); + + b.Property("Sprite"); + + b.Property("StatPoints"); + + b.Property("StatPointsJson") + .HasColumnName("StatPointAllocations"); + + b.Property("StatsJson") + .HasColumnName("BaseStats"); + + b.Property("UserId"); + + b.Property("VitalsJson") + .HasColumnName("Vitals"); + + b.Property("X"); + + b.Property("Y"); + + b.Property("Z"); + + b.HasKey("Id"); + + b.HasIndex("UserId"); + + b.ToTable("Players"); + }); + + modelBuilder.Entity("Intersect.Server.Database.PlayerData.Api.RefreshToken", b => + { + b.HasOne("Intersect.Server.Database.PlayerData.User", "User") + .WithMany("RefreshTokens") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("Intersect.Server.Database.PlayerData.Ban", b => + { + b.HasOne("Intersect.Server.Database.PlayerData.User", "User") + .WithOne("Ban") + .HasForeignKey("Intersect.Server.Database.PlayerData.Ban", "UserId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("Intersect.Server.Database.PlayerData.Mute", b => + { + b.HasOne("Intersect.Server.Database.PlayerData.User", "User") + .WithOne("Mute") + .HasForeignKey("Intersect.Server.Database.PlayerData.Mute", "UserId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("Intersect.Server.Database.PlayerData.Players.BagSlot", b => + { + b.HasOne("Intersect.Server.Database.PlayerData.Players.Bag", "Bag") + .WithMany() + .HasForeignKey("BagId"); + + b.HasOne("Intersect.Server.Database.PlayerData.Players.Bag", "ParentBag") + .WithMany("Slots") + .HasForeignKey("ParentBagId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("Intersect.Server.Database.PlayerData.Players.BankSlot", b => + { + b.HasOne("Intersect.Server.Database.PlayerData.Players.Bag", "Bag") + .WithMany() + .HasForeignKey("BagId"); + + b.HasOne("Intersect.Server.Entities.Player", "Player") + .WithMany("Bank") + .HasForeignKey("PlayerId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("Intersect.Server.Database.PlayerData.Players.Friend", b => + { + b.HasOne("Intersect.Server.Entities.Player", "Owner") + .WithMany("Friends") + .HasForeignKey("OwnerId") + .OnDelete(DeleteBehavior.Cascade); + + b.HasOne("Intersect.Server.Entities.Player", "Target") + .WithMany() + .HasForeignKey("TargetId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("Intersect.Server.Database.PlayerData.Players.HotbarSlot", b => + { + b.HasOne("Intersect.Server.Entities.Player", "Player") + .WithMany("Hotbar") + .HasForeignKey("PlayerId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("Intersect.Server.Database.PlayerData.Players.InventorySlot", b => + { + b.HasOne("Intersect.Server.Database.PlayerData.Players.Bag", "Bag") + .WithMany() + .HasForeignKey("BagId"); + + b.HasOne("Intersect.Server.Entities.Player", "Player") + .WithMany("Items") + .HasForeignKey("PlayerId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("Intersect.Server.Database.PlayerData.Players.Quest", b => + { + b.HasOne("Intersect.Server.Entities.Player", "Player") + .WithMany("Quests") + .HasForeignKey("PlayerId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("Intersect.Server.Database.PlayerData.Players.SpellSlot", b => + { + b.HasOne("Intersect.Server.Entities.Player", "Player") + .WithMany("Spells") + .HasForeignKey("PlayerId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("Intersect.Server.Database.PlayerData.Players.Variable", b => + { + b.HasOne("Intersect.Server.Entities.Player", "Player") + .WithMany("Variables") + .HasForeignKey("PlayerId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("Intersect.Server.Entities.Player", b => + { + b.HasOne("Intersect.Server.Database.PlayerData.User", "User") + .WithMany("Players") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/Intersect.Server/Migrations/20200402160828_PlayerHair_PlayerEdits.cs b/Intersect.Server/Migrations/20200402160828_PlayerHair_PlayerEdits.cs new file mode 100644 index 00000000..5dec7079 --- /dev/null +++ b/Intersect.Server/Migrations/20200402160828_PlayerHair_PlayerEdits.cs @@ -0,0 +1,22 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +namespace Intersect.Server.Migrations +{ + public partial class PlayerHair_PlayerEdits : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.AddColumn( + name: "Hair", + table: "Players", + nullable: true); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "Hair", + table: "Players"); + } + } +} diff --git a/Intersect.Server/Migrations/20200402173703_PlayerHair_PlayerEdits.Designer.cs b/Intersect.Server/Migrations/20200402173703_PlayerHair_PlayerEdits.Designer.cs new file mode 100644 index 00000000..77112c14 --- /dev/null +++ b/Intersect.Server/Migrations/20200402173703_PlayerHair_PlayerEdits.Designer.cs @@ -0,0 +1,514 @@ +// +using System; +using Intersect.Server.Database.PlayerData; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; + +namespace Intersect.Server.Migrations +{ + [DbContext(typeof(PlayerContext))] + [Migration("20200402173703_PlayerHair_PlayerEdits")] + partial class PlayerHair_PlayerEdits + { + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "2.1.3-rtm-32065"); + + modelBuilder.Entity("Intersect.Server.Database.PlayerData.Api.RefreshToken", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ClientId"); + + b.Property("Expires"); + + b.Property("Issued"); + + b.Property("Subject") + .IsRequired(); + + b.Property("Ticket") + .IsRequired(); + + b.Property("TicketId"); + + b.Property("UserId"); + + b.HasKey("Id"); + + b.HasIndex("UserId"); + + b.ToTable("RefreshTokens"); + }); + + modelBuilder.Entity("Intersect.Server.Database.PlayerData.Ban", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Banner"); + + b.Property("EndTime"); + + b.Property("Ip"); + + b.Property("Reason"); + + b.Property("StartTime"); + + b.Property("UserId") + .HasColumnName("PlayerId"); + + b.HasKey("Id"); + + b.HasIndex("UserId") + .IsUnique(); + + b.ToTable("Bans"); + }); + + modelBuilder.Entity("Intersect.Server.Database.PlayerData.Mute", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("EndTime"); + + b.Property("Ip"); + + b.Property("Muter"); + + b.Property("Reason"); + + b.Property("StartTime"); + + b.Property("UserId") + .HasColumnName("PlayerId"); + + b.HasKey("Id"); + + b.HasIndex("UserId") + .IsUnique(); + + b.ToTable("Mutes"); + }); + + modelBuilder.Entity("Intersect.Server.Database.PlayerData.Players.Bag", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("SlotCount"); + + b.HasKey("Id"); + + b.ToTable("Bags"); + }); + + modelBuilder.Entity("Intersect.Server.Database.PlayerData.Players.BagSlot", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BagId"); + + b.Property("ItemId"); + + b.Property("ParentBagId"); + + b.Property("Quantity"); + + b.Property("Slot"); + + b.Property("StatBuffsJson") + .HasColumnName("StatBuffs"); + + b.HasKey("Id"); + + b.HasIndex("BagId"); + + b.HasIndex("ParentBagId"); + + b.ToTable("Bag_Items"); + }); + + modelBuilder.Entity("Intersect.Server.Database.PlayerData.Players.BankSlot", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BagId"); + + b.Property("ItemId"); + + b.Property("PlayerId"); + + b.Property("Quantity"); + + b.Property("Slot"); + + b.Property("StatBuffsJson") + .HasColumnName("StatBuffs"); + + b.HasKey("Id"); + + b.HasIndex("BagId"); + + b.HasIndex("PlayerId"); + + b.ToTable("Player_Bank"); + }); + + modelBuilder.Entity("Intersect.Server.Database.PlayerData.Players.Friend", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("OwnerId"); + + b.Property("TargetId"); + + b.HasKey("Id"); + + b.HasIndex("OwnerId"); + + b.HasIndex("TargetId"); + + b.ToTable("Player_Friends"); + }); + + modelBuilder.Entity("Intersect.Server.Database.PlayerData.Players.HotbarSlot", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BagId"); + + b.Property("ItemOrSpellId"); + + b.Property("PlayerId"); + + b.Property("Slot"); + + b.Property("StatBuffsJson") + .HasColumnName("PreferredStatBuffs"); + + b.HasKey("Id"); + + b.HasIndex("PlayerId"); + + b.ToTable("Player_Hotbar"); + }); + + modelBuilder.Entity("Intersect.Server.Database.PlayerData.Players.InventorySlot", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BagId"); + + b.Property("ItemId"); + + b.Property("PlayerId"); + + b.Property("Quantity"); + + b.Property("Slot"); + + b.Property("StatBuffsJson") + .HasColumnName("StatBuffs"); + + b.HasKey("Id"); + + b.HasIndex("BagId"); + + b.HasIndex("PlayerId"); + + b.ToTable("Player_Items"); + }); + + modelBuilder.Entity("Intersect.Server.Database.PlayerData.Players.Quest", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Completed"); + + b.Property("PlayerId"); + + b.Property("QuestId"); + + b.Property("TaskId"); + + b.Property("TaskProgress"); + + b.HasKey("Id"); + + b.HasIndex("PlayerId"); + + b.HasIndex("QuestId", "PlayerId") + .IsUnique(); + + b.ToTable("Player_Quests"); + }); + + modelBuilder.Entity("Intersect.Server.Database.PlayerData.Players.SpellSlot", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("PlayerId"); + + b.Property("Slot"); + + b.Property("SpellCd"); + + b.Property("SpellId"); + + b.HasKey("Id"); + + b.HasIndex("PlayerId"); + + b.ToTable("Player_Spells"); + }); + + modelBuilder.Entity("Intersect.Server.Database.PlayerData.Players.Variable", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Json") + .HasColumnName("Value"); + + b.Property("PlayerId"); + + b.Property("VariableId"); + + b.HasKey("Id"); + + b.HasIndex("PlayerId"); + + b.HasIndex("VariableId", "PlayerId") + .IsUnique(); + + b.ToTable("Player_Variables"); + }); + + modelBuilder.Entity("Intersect.Server.Database.PlayerData.User", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Email"); + + b.Property("Name"); + + b.Property("Password"); + + b.Property("PasswordResetCode"); + + b.Property("PasswordResetTime"); + + b.Property("PowerJson") + .HasColumnName("Power"); + + b.Property("Salt"); + + b.HasKey("Id"); + + b.ToTable("Users"); + }); + + modelBuilder.Entity("Intersect.Server.Entities.Player", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("ClassId"); + + b.Property("CustomSpriteLayersJson") + .HasColumnName("CustomSpriteLayers"); + + b.Property("Dir"); + + b.Property("EquipmentJson") + .HasColumnName("Equipment"); + + b.Property("Exp"); + + b.Property("Face"); + + b.Property("FooterLabelJson") + .HasColumnName("FooterLabel"); + + b.Property("Gender"); + + b.Property("HeaderLabelJson") + .HasColumnName("HeaderLabel"); + + b.Property("ItemCooldownsJson") + .HasColumnName("ItemCooldowns"); + + b.Property("LastOnline"); + + b.Property("Level"); + + b.Property("MapId"); + + b.Property("Name"); + + b.Property("NameColorJson") + .HasColumnName("NameColor"); + + b.Property("SpellCooldownsJson") + .HasColumnName("SpellCooldowns"); + + b.Property("Sprite"); + + b.Property("StatPoints"); + + b.Property("StatPointsJson") + .HasColumnName("StatPointAllocations"); + + b.Property("StatsJson") + .HasColumnName("BaseStats"); + + b.Property("UserId"); + + b.Property("VitalsJson") + .HasColumnName("Vitals"); + + b.Property("X"); + + b.Property("Y"); + + b.Property("Z"); + + b.HasKey("Id"); + + b.HasIndex("UserId"); + + b.ToTable("Players"); + }); + + modelBuilder.Entity("Intersect.Server.Database.PlayerData.Api.RefreshToken", b => + { + b.HasOne("Intersect.Server.Database.PlayerData.User", "User") + .WithMany("RefreshTokens") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("Intersect.Server.Database.PlayerData.Ban", b => + { + b.HasOne("Intersect.Server.Database.PlayerData.User", "User") + .WithOne("Ban") + .HasForeignKey("Intersect.Server.Database.PlayerData.Ban", "UserId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("Intersect.Server.Database.PlayerData.Mute", b => + { + b.HasOne("Intersect.Server.Database.PlayerData.User", "User") + .WithOne("Mute") + .HasForeignKey("Intersect.Server.Database.PlayerData.Mute", "UserId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("Intersect.Server.Database.PlayerData.Players.BagSlot", b => + { + b.HasOne("Intersect.Server.Database.PlayerData.Players.Bag", "Bag") + .WithMany() + .HasForeignKey("BagId"); + + b.HasOne("Intersect.Server.Database.PlayerData.Players.Bag", "ParentBag") + .WithMany("Slots") + .HasForeignKey("ParentBagId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("Intersect.Server.Database.PlayerData.Players.BankSlot", b => + { + b.HasOne("Intersect.Server.Database.PlayerData.Players.Bag", "Bag") + .WithMany() + .HasForeignKey("BagId"); + + b.HasOne("Intersect.Server.Entities.Player", "Player") + .WithMany("Bank") + .HasForeignKey("PlayerId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("Intersect.Server.Database.PlayerData.Players.Friend", b => + { + b.HasOne("Intersect.Server.Entities.Player", "Owner") + .WithMany("Friends") + .HasForeignKey("OwnerId") + .OnDelete(DeleteBehavior.Cascade); + + b.HasOne("Intersect.Server.Entities.Player", "Target") + .WithMany() + .HasForeignKey("TargetId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("Intersect.Server.Database.PlayerData.Players.HotbarSlot", b => + { + b.HasOne("Intersect.Server.Entities.Player", "Player") + .WithMany("Hotbar") + .HasForeignKey("PlayerId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("Intersect.Server.Database.PlayerData.Players.InventorySlot", b => + { + b.HasOne("Intersect.Server.Database.PlayerData.Players.Bag", "Bag") + .WithMany() + .HasForeignKey("BagId"); + + b.HasOne("Intersect.Server.Entities.Player", "Player") + .WithMany("Items") + .HasForeignKey("PlayerId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("Intersect.Server.Database.PlayerData.Players.Quest", b => + { + b.HasOne("Intersect.Server.Entities.Player", "Player") + .WithMany("Quests") + .HasForeignKey("PlayerId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("Intersect.Server.Database.PlayerData.Players.SpellSlot", b => + { + b.HasOne("Intersect.Server.Entities.Player", "Player") + .WithMany("Spells") + .HasForeignKey("PlayerId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("Intersect.Server.Database.PlayerData.Players.Variable", b => + { + b.HasOne("Intersect.Server.Entities.Player", "Player") + .WithMany("Variables") + .HasForeignKey("PlayerId") + .OnDelete(DeleteBehavior.Cascade); + }); + + modelBuilder.Entity("Intersect.Server.Entities.Player", b => + { + b.HasOne("Intersect.Server.Database.PlayerData.User", "User") + .WithMany("Players") + .HasForeignKey("UserId") + .OnDelete(DeleteBehavior.Cascade); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/Intersect.Server/Migrations/20200402173703_PlayerHair_PlayerEdits.cs b/Intersect.Server/Migrations/20200402173703_PlayerHair_PlayerEdits.cs new file mode 100644 index 00000000..50277779 --- /dev/null +++ b/Intersect.Server/Migrations/20200402173703_PlayerHair_PlayerEdits.cs @@ -0,0 +1,22 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +namespace Intersect.Server.Migrations +{ + public partial class PlayerHair_PlayerEdits : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.AddColumn( + name: "CustomSpriteLayers", + table: "Players", + nullable: true); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "CustomSpriteLayers", + table: "Players"); + } + } +} diff --git a/Intersect.Server/Migrations/Game/20200402142818_PlayerHair_ClassEdits.Designer.cs b/Intersect.Server/Migrations/Game/20200402142818_PlayerHair_ClassEdits.Designer.cs new file mode 100644 index 00000000..348db302 --- /dev/null +++ b/Intersect.Server/Migrations/Game/20200402142818_PlayerHair_ClassEdits.Designer.cs @@ -0,0 +1,1039 @@ +// +using System; +using Intersect.Server.Database.GameData; +using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Infrastructure; +using Microsoft.EntityFrameworkCore.Migrations; +using Microsoft.EntityFrameworkCore.Storage.ValueConversion; + +namespace Intersect.Server.Migrations.Game +{ + [DbContext(typeof(GameContext))] + [Migration("20200402142818_PlayerHair_ClassEdits")] + partial class PlayerHair_ClassEdits + { + protected override void BuildTargetModel(ModelBuilder modelBuilder) + { +#pragma warning disable 612, 618 + modelBuilder + .HasAnnotation("ProductVersion", "2.1.3-rtm-32065"); + + modelBuilder.Entity("Intersect.GameObjects.AnimationBase", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("CompleteSound"); + + b.Property("Folder"); + + b.Property("Name"); + + b.Property("Sound"); + + b.Property("TimeCreated"); + + b.HasKey("Id"); + + b.ToTable("Animations"); + }); + + modelBuilder.Entity("Intersect.GameObjects.ClassBase", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("AttackAnimationId") + .HasColumnName("AttackAnimation"); + + b.Property("AttackSpeedModifier"); + + b.Property("AttackSpeedValue"); + + b.Property("BaseExp"); + + b.Property("BasePoints"); + + b.Property("CritChance"); + + b.Property("CritMultiplier"); + + b.Property("Damage"); + + b.Property("DamageType"); + + b.Property("ExpIncrease"); + + b.Property("ExpOverridesJson") + .HasColumnName("ExperienceOverrides"); + + b.Property("Folder"); + + b.Property("IncreasePercentage"); + + b.Property("JsonBaseStats") + .HasColumnName("BaseStats"); + + b.Property("JsonBaseVitals") + .HasColumnName("BaseVitals"); + + b.Property("JsonHairs") + .HasColumnName("Hairs"); + + b.Property("JsonItems") + .HasColumnName("Items"); + + b.Property("JsonSpells") + .HasColumnName("Spells"); + + b.Property("JsonSprites") + .HasColumnName("Sprites"); + + b.Property("Locked"); + + b.Property("Name"); + + b.Property("PointIncrease"); + + b.Property("RegenJson") + .HasColumnName("VitalRegen"); + + b.Property("Scaling"); + + b.Property("ScalingStat"); + + b.Property("SpawnDir"); + + b.Property("SpawnMapId") + .HasColumnName("SpawnMap"); + + b.Property("SpawnX"); + + b.Property("SpawnY"); + + b.Property("StatIncreaseJson") + .HasColumnName("StatIncreases"); + + b.Property("TimeCreated"); + + b.Property("VitalIncreaseJson") + .HasColumnName("VitalIncreases"); + + b.HasKey("Id"); + + b.ToTable("Classes"); + }); + + modelBuilder.Entity("Intersect.GameObjects.Crafting.CraftBase", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Folder"); + + b.Property("IngredientsJson") + .HasColumnName("Ingredients"); + + b.Property("ItemId"); + + b.Property("Name"); + + b.Property("Quantity"); + + b.Property("Time"); + + b.Property("TimeCreated"); + + b.HasKey("Id"); + + b.ToTable("Crafts"); + }); + + modelBuilder.Entity("Intersect.GameObjects.CraftingTableBase", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("CraftsJson") + .HasColumnName("Crafts"); + + b.Property("Folder"); + + b.Property("Name"); + + b.Property("TimeCreated"); + + b.HasKey("Id"); + + b.ToTable("CraftingTables"); + }); + + modelBuilder.Entity("Intersect.GameObjects.Events.EventBase", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("CommonEvent"); + + b.Property("Folder"); + + b.Property("Global"); + + b.Property("MapId"); + + b.Property("Name"); + + b.Property("PagesJson") + .HasColumnName("Pages"); + + b.Property("SpawnX"); + + b.Property("SpawnY"); + + b.Property("TimeCreated"); + + b.HasKey("Id"); + + b.ToTable("Events"); + }); + + modelBuilder.Entity("Intersect.GameObjects.ItemBase", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("AnimationId") + .HasColumnName("Animation"); + + b.Property("AttackAnimationId") + .HasColumnName("AttackAnimation"); + + b.Property("AttackSpeedModifier"); + + b.Property("AttackSpeedValue"); + + b.Property("Bound"); + + b.Property("Cooldown"); + + b.Property("CritChance"); + + b.Property("CritMultiplier"); + + b.Property("Damage"); + + b.Property("DamageType"); + + b.Property("Description"); + + b.Property("DestroySpell"); + + b.Property("EquipmentAnimationId") + .HasColumnName("EquipmentAnimation"); + + b.Property("EquipmentSlot"); + + b.Property("EventId") + .HasColumnName("Event"); + + b.Property("FemalePaperdoll"); + + b.Property("Folder"); + + b.Property("Icon"); + + b.Property("ItemType"); + + b.Property("JsonUsageRequirements") + .HasColumnName("UsageRequirements"); + + b.Property("MalePaperdoll"); + + b.Property("Name"); + + b.Property("PercentageStatsJson") + .HasColumnName("PercentageStatsGiven"); + + b.Property("PercentageVitalsJson") + .HasColumnName("PercentageVitalsGiven"); + + b.Property("Price"); + + b.Property("ProjectileId") + .HasColumnName("Projectile"); + + b.Property("QuickCast"); + + b.Property("Rarity"); + + b.Property("Scaling"); + + b.Property("ScalingStat"); + + b.Property("SlotCount"); + + b.Property("Speed"); + + b.Property("SpellId") + .HasColumnName("Spell"); + + b.Property("Stackable"); + + b.Property("StatGrowth"); + + b.Property("StatsJson") + .HasColumnName("StatsGiven"); + + b.Property("TimeCreated"); + + b.Property("Tool"); + + b.Property("TwoHanded"); + + b.Property("VitalsJson") + .HasColumnName("VitalsGiven"); + + b.Property("VitalsRegenJson") + .HasColumnName("VitalsRegen"); + + b.HasKey("Id"); + + b.ToTable("Items"); + }); + + modelBuilder.Entity("Intersect.GameObjects.Maps.MapList.MapList", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("JsonData") + .HasColumnName("JsonData"); + + b.HasKey("Id"); + + b.ToTable("MapFolders"); + }); + + modelBuilder.Entity("Intersect.GameObjects.NpcBase", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Aggressive"); + + b.Property("AttackAllies"); + + b.Property("AttackAnimationId") + .HasColumnName("AttackAnimation"); + + b.Property("AttackOnSightConditionsJson") + .HasColumnName("AttackOnSightConditions"); + + b.Property("AttackSpeedModifier"); + + b.Property("AttackSpeedValue"); + + b.Property("CraftsJson") + .HasColumnName("Spells"); + + b.Property("CritChance"); + + b.Property("CritMultiplier"); + + b.Property("Damage"); + + b.Property("DamageType"); + + b.Property("Experience"); + + b.Property("FleeHealthPercentage"); + + b.Property("FocusHighestDamageDealer"); + + b.Property("Folder"); + + b.Property("JsonAggroList") + .HasColumnName("AggroList"); + + b.Property("JsonDrops") + .HasColumnName("Drops"); + + b.Property("JsonMaxVital") + .HasColumnName("MaxVital"); + + b.Property("JsonStat") + .HasColumnName("Stats"); + + b.Property("Level"); + + b.Property("Movement"); + + b.Property("Name"); + + b.Property("NpcVsNpcEnabled"); + + b.Property("OnDeathEventId") + .HasColumnName("OnDeathEvent"); + + b.Property("OnDeathPartyEventId") + .HasColumnName("OnDeathPartyEvent"); + + b.Property("PlayerCanAttackConditionsJson") + .HasColumnName("PlayerCanAttackConditions"); + + b.Property("PlayerFriendConditionsJson") + .HasColumnName("PlayerFriendConditions"); + + b.Property("RegenJson") + .HasColumnName("VitalRegen"); + + b.Property("Scaling"); + + b.Property("ScalingStat"); + + b.Property("SightRange"); + + b.Property("SpawnDuration"); + + b.Property("SpellFrequency"); + + b.Property("Sprite"); + + b.Property("Swarm"); + + b.Property("TimeCreated"); + + b.HasKey("Id"); + + b.ToTable("Npcs"); + }); + + modelBuilder.Entity("Intersect.GameObjects.PlayerVariableBase", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Folder"); + + b.Property("Name"); + + b.Property("TextId"); + + b.Property("TimeCreated"); + + b.Property("Type"); + + b.HasKey("Id"); + + b.ToTable("PlayerVariables"); + }); + + modelBuilder.Entity("Intersect.GameObjects.ProjectileBase", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("AmmoItemId") + .HasColumnName("Ammo"); + + b.Property("AmmoRequired"); + + b.Property("AnimationsJson") + .HasColumnName("Animations"); + + b.Property("Delay"); + + b.Property("Folder"); + + b.Property("GrappleHook"); + + b.Property("IgnoreActiveResources"); + + b.Property("IgnoreExhaustedResources"); + + b.Property("IgnoreMapBlocks"); + + b.Property("IgnoreZDimension"); + + b.Property("Knockback"); + + b.Property("Name"); + + b.Property("PierceTarget"); + + b.Property("Quantity"); + + b.Property("Range"); + + b.Property("SpawnsJson") + .HasColumnName("SpawnLocations"); + + b.Property("Speed"); + + b.Property("SpellId") + .HasColumnName("Spell"); + + b.Property("TimeCreated"); + + b.HasKey("Id"); + + b.ToTable("Projectiles"); + }); + + modelBuilder.Entity("Intersect.GameObjects.QuestBase", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BeforeDescription"); + + b.Property("EndDescription"); + + b.Property("EndEventId") + .HasColumnName("EndEvent"); + + b.Property("Folder"); + + b.Property("InProgressDescription"); + + b.Property("JsonRequirements") + .HasColumnName("Requirements"); + + b.Property("LogAfterComplete"); + + b.Property("LogBeforeOffer"); + + b.Property("Name"); + + b.Property("Quitable"); + + b.Property("Repeatable"); + + b.Property("StartDescription"); + + b.Property("StartEventId") + .HasColumnName("StartEvent"); + + b.Property("TasksJson") + .HasColumnName("Tasks"); + + b.Property("TimeCreated"); + + b.HasKey("Id"); + + b.ToTable("Quests"); + }); + + modelBuilder.Entity("Intersect.GameObjects.ResourceBase", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("AnimationId") + .HasColumnName("Animation"); + + b.Property("EventId") + .HasColumnName("Event"); + + b.Property("Folder"); + + b.Property("JsonDrops") + .HasColumnName("Drops"); + + b.Property("JsonHarvestingRequirements") + .HasColumnName("HarvestingRequirements"); + + b.Property("MaxHp"); + + b.Property("MinHp"); + + b.Property("Name"); + + b.Property("SpawnDuration"); + + b.Property("TimeCreated"); + + b.Property("Tool"); + + b.Property("VitalRegen"); + + b.Property("WalkableAfter"); + + b.Property("WalkableBefore"); + + b.HasKey("Id"); + + b.ToTable("Resources"); + }); + + modelBuilder.Entity("Intersect.GameObjects.ServerVariableBase", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Folder"); + + b.Property("Json") + .HasColumnName("Value"); + + b.Property("Name"); + + b.Property("TextId"); + + b.Property("TimeCreated"); + + b.Property("Type"); + + b.HasKey("Id"); + + b.ToTable("ServerVariables"); + }); + + modelBuilder.Entity("Intersect.GameObjects.ShopBase", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("BuyingWhitelist"); + + b.Property("DefaultCurrencyId") + .HasColumnName("DefaultCurrency"); + + b.Property("Folder"); + + b.Property("JsonBuyingItems") + .HasColumnName("BuyingItems"); + + b.Property("JsonSellingItems") + .HasColumnName("SellingItems"); + + b.Property("Name"); + + b.Property("TimeCreated"); + + b.HasKey("Id"); + + b.ToTable("Shops"); + }); + + modelBuilder.Entity("Intersect.GameObjects.SpellBase", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Bound"); + + b.Property("CastAnimationId") + .HasColumnName("CastAnimation"); + + b.Property("CastDuration"); + + b.Property("CooldownDuration"); + + b.Property("Description"); + + b.Property("EventId") + .HasColumnName("Event"); + + b.Property("Folder"); + + b.Property("HitAnimationId") + .HasColumnName("HitAnimation"); + + b.Property("Icon"); + + b.Property("JsonCastRequirements") + .HasColumnName("CastRequirements"); + + b.Property("Name"); + + b.Property("SpellType"); + + b.Property("TimeCreated"); + + b.Property("VitalCostJson") + .HasColumnName("VitalCost"); + + b.HasKey("Id"); + + b.ToTable("Spells"); + }); + + modelBuilder.Entity("Intersect.GameObjects.TilesetBase", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("Name"); + + b.Property("TimeCreated"); + + b.HasKey("Id"); + + b.ToTable("Tilesets"); + }); + + modelBuilder.Entity("Intersect.GameObjects.TimeBase", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("DaylightHuesJson") + .HasColumnName("DaylightHues"); + + b.Property("RangeInterval"); + + b.Property("Rate"); + + b.Property("SyncTime"); + + b.HasKey("Id"); + + b.ToTable("Time"); + }); + + modelBuilder.Entity("Intersect.Server.Maps.MapInstance", b => + { + b.Property("Id") + .ValueGeneratedOnAdd(); + + b.Property("AHue"); + + b.Property("AttributeData") + .HasColumnName("Attributes"); + + b.Property("BHue"); + + b.Property("Brightness"); + + b.Property("Down"); + + b.Property("EventIdsJson") + .HasColumnName("Events"); + + b.Property("Fog"); + + b.Property("FogTransparency"); + + b.Property("FogXSpeed"); + + b.Property("FogYSpeed"); + + b.Property("GHue"); + + b.Property("IsIndoors"); + + b.Property("Left"); + + b.Property("LightsJson") + .HasColumnName("Lights"); + + b.Property("Music"); + + b.Property("Name"); + + b.Property("NpcSpawnsJson") + .HasColumnName("NpcSpawns"); + + b.Property("OverlayGraphic"); + + b.Property("Panorama"); + + b.Property("PlayerLightColorJson") + .HasColumnName("PlayerLightColor"); + + b.Property("PlayerLightExpand"); + + b.Property("PlayerLightIntensity"); + + b.Property("PlayerLightSize"); + + b.Property("RHue"); + + b.Property("Revision"); + + b.Property("Right"); + + b.Property("Sound"); + + b.Property("TileData"); + + b.Property("TimeCreated"); + + b.Property("Up"); + + b.Property("WeatherAnimationId") + .HasColumnName("WeatherAnimation"); + + b.Property("WeatherIntensity"); + + b.Property("WeatherXSpeed"); + + b.Property("WeatherYSpeed"); + + b.Property("ZoneType"); + + b.HasKey("Id"); + + b.ToTable("Maps"); + }); + + modelBuilder.Entity("Intersect.GameObjects.AnimationBase", b => + { + b.OwnsOne("Intersect.GameObjects.AnimationLayer", "Lower", b1 => + { + b1.Property("AnimationBaseId"); + + b1.Property("AlternateRenderLayer"); + + b1.Property("DisableRotations"); + + b1.Property("FrameCount"); + + b1.Property("FrameSpeed"); + + b1.Property("Light"); + + b1.Property("LoopCount"); + + b1.Property("Sprite"); + + b1.Property("XFrames"); + + b1.Property("YFrames"); + + b1.ToTable("Animations"); + + b1.HasOne("Intersect.GameObjects.AnimationBase") + .WithOne("Lower") + .HasForeignKey("Intersect.GameObjects.AnimationLayer", "AnimationBaseId") + .OnDelete(DeleteBehavior.Cascade); + }); + + b.OwnsOne("Intersect.GameObjects.AnimationLayer", "Upper", b1 => + { + b1.Property("AnimationBaseId"); + + b1.Property("AlternateRenderLayer"); + + b1.Property("DisableRotations"); + + b1.Property("FrameCount"); + + b1.Property("FrameSpeed"); + + b1.Property("Light"); + + b1.Property("LoopCount"); + + b1.Property("Sprite"); + + b1.Property("XFrames"); + + b1.Property("YFrames"); + + b1.ToTable("Animations"); + + b1.HasOne("Intersect.GameObjects.AnimationBase") + .WithOne("Upper") + .HasForeignKey("Intersect.GameObjects.AnimationLayer", "AnimationBaseId") + .OnDelete(DeleteBehavior.Cascade); + }); + }); + + modelBuilder.Entity("Intersect.GameObjects.ItemBase", b => + { + b.OwnsOne("Intersect.GameObjects.ConsumableData", "Consumable", b1 => + { + b1.Property("ItemBaseId"); + + b1.Property("Percentage"); + + b1.Property("Type"); + + b1.Property("Value"); + + b1.ToTable("Items"); + + b1.HasOne("Intersect.GameObjects.ItemBase") + .WithOne("Consumable") + .HasForeignKey("Intersect.GameObjects.ConsumableData", "ItemBaseId") + .OnDelete(DeleteBehavior.Cascade); + }); + + b.OwnsOne("Intersect.GameObjects.EffectData", "Effect", b1 => + { + b1.Property("ItemBaseId"); + + b1.Property("Percentage"); + + b1.Property("Type"); + + b1.ToTable("Items"); + + b1.HasOne("Intersect.GameObjects.ItemBase") + .WithOne("Effect") + .HasForeignKey("Intersect.GameObjects.EffectData", "ItemBaseId") + .OnDelete(DeleteBehavior.Cascade); + }); + }); + + modelBuilder.Entity("Intersect.GameObjects.ResourceBase", b => + { + b.OwnsOne("Intersect.GameObjects.ResourceState", "Exhausted", b1 => + { + b1.Property("ResourceBaseId"); + + b1.Property("Graphic"); + + b1.Property("GraphicFromTileset"); + + b1.Property("Height"); + + b1.Property("RenderBelowEntities"); + + b1.Property("Width"); + + b1.Property("X"); + + b1.Property("Y"); + + b1.ToTable("Resources"); + + b1.HasOne("Intersect.GameObjects.ResourceBase") + .WithOne("Exhausted") + .HasForeignKey("Intersect.GameObjects.ResourceState", "ResourceBaseId") + .OnDelete(DeleteBehavior.Cascade); + }); + + b.OwnsOne("Intersect.GameObjects.ResourceState", "Initial", b1 => + { + b1.Property("ResourceBaseId"); + + b1.Property("Graphic"); + + b1.Property("GraphicFromTileset"); + + b1.Property("Height"); + + b1.Property("RenderBelowEntities"); + + b1.Property("Width"); + + b1.Property("X"); + + b1.Property("Y"); + + b1.ToTable("Resources"); + + b1.HasOne("Intersect.GameObjects.ResourceBase") + .WithOne("Initial") + .HasForeignKey("Intersect.GameObjects.ResourceState", "ResourceBaseId") + .OnDelete(DeleteBehavior.Cascade); + }); + }); + + modelBuilder.Entity("Intersect.GameObjects.SpellBase", b => + { + b.OwnsOne("Intersect.GameObjects.SpellCombatData", "Combat", b1 => + { + b1.Property("SpellBaseId"); + + b1.Property("CastRange"); + + b1.Property("CritChance"); + + b1.Property("CritMultiplier"); + + b1.Property("DamageType"); + + b1.Property("Duration"); + + b1.Property("Effect"); + + b1.Property("Friendly"); + + b1.Property("HitRadius"); + + b1.Property("HoTDoT"); + + b1.Property("HotDotInterval"); + + b1.Property("OnHitDuration") + .HasColumnName("OnHit"); + + b1.Property("PercentageStatDiffJson") + .HasColumnName("PercentageStatDiff"); + + b1.Property("ProjectileId") + .HasColumnName("Projectile"); + + b1.Property("Scaling"); + + b1.Property("ScalingStat"); + + b1.Property("StatDiffJson") + .HasColumnName("StatDiff"); + + b1.Property("TargetType"); + + b1.Property("TransformSprite"); + + b1.Property("TrapDuration") + .HasColumnName("Trap"); + + b1.Property("VitalDiffJson") + .HasColumnName("VitalDiff"); + + b1.ToTable("Spells"); + + b1.HasOne("Intersect.GameObjects.SpellBase") + .WithOne("Combat") + .HasForeignKey("Intersect.GameObjects.SpellCombatData", "SpellBaseId") + .OnDelete(DeleteBehavior.Cascade); + }); + + b.OwnsOne("Intersect.GameObjects.SpellDashOpts", "Dash", b1 => + { + b1.Property("SpellBaseId"); + + b1.Property("IgnoreActiveResources"); + + b1.Property("IgnoreInactiveResources"); + + b1.Property("IgnoreMapBlocks"); + + b1.Property("IgnoreZDimensionAttributes"); + + b1.ToTable("Spells"); + + b1.HasOne("Intersect.GameObjects.SpellBase") + .WithOne("Dash") + .HasForeignKey("Intersect.GameObjects.SpellDashOpts", "SpellBaseId") + .OnDelete(DeleteBehavior.Cascade); + }); + + b.OwnsOne("Intersect.GameObjects.SpellWarpData", "Warp", b1 => + { + b1.Property("SpellBaseId"); + + b1.Property("Dir"); + + b1.Property("MapId"); + + b1.Property("X"); + + b1.Property("Y"); + + b1.ToTable("Spells"); + + b1.HasOne("Intersect.GameObjects.SpellBase") + .WithOne("Warp") + .HasForeignKey("Intersect.GameObjects.SpellWarpData", "SpellBaseId") + .OnDelete(DeleteBehavior.Cascade); + }); + }); +#pragma warning restore 612, 618 + } + } +} diff --git a/Intersect.Server/Migrations/Game/20200402142818_PlayerHair_ClassEdits.cs b/Intersect.Server/Migrations/Game/20200402142818_PlayerHair_ClassEdits.cs new file mode 100644 index 00000000..169282c2 --- /dev/null +++ b/Intersect.Server/Migrations/Game/20200402142818_PlayerHair_ClassEdits.cs @@ -0,0 +1,22 @@ +using Microsoft.EntityFrameworkCore.Migrations; + +namespace Intersect.Server.Migrations.Game +{ + public partial class PlayerHair_ClassEdits : Migration + { + protected override void Up(MigrationBuilder migrationBuilder) + { + migrationBuilder.AddColumn( + name: "CustomSpriteLayers", + table: "Classes", + nullable: true); + } + + protected override void Down(MigrationBuilder migrationBuilder) + { + migrationBuilder.DropColumn( + name: "CustomSpriteLayers", + table: "Classes"); + } + } +} diff --git a/Intersect.Server/Migrations/Game/GameContextModelSnapshot.cs b/Intersect.Server/Migrations/Game/GameContextModelSnapshot.cs index fbfd65a8..111b315d 100644 --- a/Intersect.Server/Migrations/Game/GameContextModelSnapshot.cs +++ b/Intersect.Server/Migrations/Game/GameContextModelSnapshot.cs @@ -75,6 +75,9 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.Property("JsonBaseVitals") .HasColumnName("BaseVitals"); + b.Property("JsonCustomSpriteLayers") + .HasColumnName("CustomSpriteLayers"); + b.Property("JsonItems") .HasColumnName("Items"); diff --git a/Intersect.Server/Migrations/PlayerContextModelSnapshot.cs b/Intersect.Server/Migrations/PlayerContextModelSnapshot.cs index 80857543..4999e9ac 100644 --- a/Intersect.Server/Migrations/PlayerContextModelSnapshot.cs +++ b/Intersect.Server/Migrations/PlayerContextModelSnapshot.cs @@ -329,6 +329,9 @@ protected override void BuildModel(ModelBuilder modelBuilder) b.Property("ClassId"); + b.Property("CustomSpriteLayersJson") + .HasColumnName("CustomSpriteLayers"); + b.Property("Dir"); b.Property("EquipmentJson") diff --git a/Intersect.Server/Networking/PacketHandler.cs b/Intersect.Server/Networking/PacketHandler.cs index 831504ca..7c135951 100644 --- a/Intersect.Server/Networking/PacketHandler.cs +++ b/Intersect.Server/Networking/PacketHandler.cs @@ -1108,6 +1108,12 @@ public void HandlePacket(Client client, Player player, CreateCharacterPacket pac newChar.Gender = classBase.Sprites[spriteIndex].Gender; } + // Get our custom layers from the packet. + for (var i = 0; i < (int)Enums.CustomSpriteLayers.CustomCount; i++) + { + newChar.CustomSpriteLayers[i] = packet.CustomSpriteLayers[i] != -1 ? classBase.CustomSpriteLayers[(Enums.CustomSpriteLayers)i][packet.CustomSpriteLayers[i]].Texture : String.Empty; + } + client.LoadCharacter(newChar); newChar.SetVital(Vitals.Health, classBase.BaseVital[(int) Vitals.Health]); diff --git a/Intersect.Server/Networking/PacketSender.cs b/Intersect.Server/Networking/PacketSender.cs index 8bb96269..83d9a0c6 100644 --- a/Intersect.Server/Networking/PacketSender.cs +++ b/Intersect.Server/Networking/PacketSender.cs @@ -339,9 +339,11 @@ public static void SendEntityDataTo(Player player, Entity en) } //If a player, send equipment to all (for paperdolls) + //Also send Custom Sprite Layers if (en.GetType() == typeof(Player)) { SendPlayerEquipmentTo(player, (Player) en); + SendCustomSpriteLayersTo(player, (Player) en); } if (en.GetType() == typeof(Npc)) @@ -372,6 +374,7 @@ public static void SendMapEntitiesTo(Player player, ICollection entities player.SendPacket(new MapEntitiesPacket(enPackets.ToArray())); SendMapEntityEquipmentTo(player, sendEntities); //Send the equipment of each player + SendMapCustomSpriteLayersTo(player, sendEntities); //Send the custom sprite layers of each player. for (var i = 0; i < sendEntities.Count; i++) { @@ -397,6 +400,21 @@ public static void SendMapEntityEquipmentTo(Player player, List entities } } + public static void SendMapCustomSpriteLayersTo(Player player, List entities) + { + for (var i = 0; i < entities.Count; i++) + { + if (entities[i] != null && entities[i] != player) + { + //If a player, send equipment to all (for paperdolls) + if (entities[i].GetType() == typeof(Player) && player != entities[i]) + { + SendCustomSpriteLayersTo(player, (Player)entities[i]); + } + } + } + } + //EntityDataPacket public static void SendEntityDataToProximity(Entity en, Player except = null) { @@ -423,6 +441,7 @@ public static void SendEntityDataToProximity(Entity en, Player except = null) if (en.GetType() == typeof(Player)) { SendPlayerEquipmentToProximity((Player) en); + SendCustomSpriteLayersToProximity((Player) en); } if (en.GetType() == typeof(Npc)) @@ -935,6 +954,22 @@ public static void SendPlayerSpellUpdate(Player player, int slot) player.SendPacket(new SpellUpdatePacket(slot, player.Spells[slot].SpellId)); } + //CustomSpriteLayerPacket + public static CustomSpriteLayersPacket GenerateCustomSpriteLayersPacket(Player en) + { + return new CustomSpriteLayersPacket(en.Id, en.CustomSpriteLayers); + } + + public static void SendCustomSpriteLayersTo(Player forPlayer, Player en) + { + forPlayer.SendPacket(GenerateCustomSpriteLayersPacket(en)); + } + + public static void SendCustomSpriteLayersToProximity(Player en) + { + SendDataToProximity(en.MapId, GenerateCustomSpriteLayersPacket(en)); + } + //EquipmentPacket public static EquipmentPacket GenerateEquipmentPacket(Player forPlayer, Player en) { @@ -1046,7 +1081,7 @@ public static void SendPlayerCharacters(Client client) characters.Add( new CharacterPacket( character.Id, character.Name, character.Sprite, character.Face, character.Level, - ClassBase.GetName(character.ClassId), equipment + ClassBase.GetName(character.ClassId), equipment, character.CustomSpriteLayers ) ); } diff --git a/hair.patch b/hair.patch new file mode 100644 index 00000000..8f5d7d0e --- /dev/null +++ b/hair.patch @@ -0,0 +1,7355 @@ +From 6e17e39fd81231fa19195448b95e712b17a0eb3f Mon Sep 17 00:00:00 2001 +From: Joyce +Date: Sun, 5 Apr 2020 09:33:58 +0200 +Subject: [PATCH] Updated for build 0.6.1.243 + +--- + Intersect (Core)/Config/EquipmentOptions.cs | 2 + + Intersect (Core)/Enums/CustomSpriteLayers.cs | 11 + + Intersect (Core)/GameObjects/ClassBase.cs | 30 + + .../Events/Commands/EventCommands.cs | 9 + + Intersect (Core)/GameObjects/Events/Enums.cs | 3 + + Intersect (Core)/Intersect (Core).csproj | 2 + + .../Packets/Client/CreateCharacterPacket.cs | 5 +- + .../Network/Packets/Server/CharacterPacket.cs | 6 +- + .../Server/CustomSpriteLayersPacket.cs | 19 + + Intersect (Core)/Utilities/DatabaseUtils.cs | 31 + + .../File Management/GameContentManager.cs | 14 + + Intersect.Client/Entities/Entity.cs | 9 + + Intersect.Client/Entities/Player.cs | 103 + + .../Game/Character/CharacterWindow.cs | 11 +- + .../Interface/Game/EntityPanel/EntityBox.cs | 9 +- + .../Interface/Menu/CreateCharacterWindow.cs | 212 +- + .../Interface/Menu/SelectCharacterWindow.cs | 28 +- + .../File Management/MonoContentManager.cs | 5 + + Intersect.Client/Networking/PacketHandler.cs | 15 +- + Intersect.Client/Networking/PacketSender.cs | 4 +- + Intersect.Editor/Content/ContentManager.cs | 18 + + .../Forms/Editors/Events/CommandPrinter.cs | 5 + + .../EventCommand_ChangeHair.Designer.cs | 142 + + .../Event Commands/EventCommand_ChangeHair.cs | 87 + + .../EventCommand_ChangeHair.resx | 128 + + .../Forms/Editors/Events/frmEvent.Designer.cs | 2389 +++++++++-------- + .../Forms/Editors/Events/frmEvent.cs | 8 + + .../Forms/Editors/frmClass.Designer.cs | 372 ++- + Intersect.Editor/Forms/Editors/frmClass.cs | 145 +- + Intersect.Editor/Forms/Editors/frmClass.resx | 93 +- + Intersect.Editor/Intersect.Editor.csproj | 9 + + Intersect.Editor/Localization/Strings.cs | 20 + + .../Entities/Events/CommandProcessing.cs | 13 + + Intersect.Server/Entities/Player.cs | 10 + + Intersect.Server/Intersect.Server.csproj | 8 + + ...2160828_PlayerHair_PlayerEdits.Designer.cs | 513 ++++ + .../20200402160828_PlayerHair_PlayerEdits.cs | 22 + + ...2173703_PlayerHair_PlayerEdits.Designer.cs | 514 ++++ + .../20200402173703_PlayerHair_PlayerEdits.cs | 22 + + ...02142818_PlayerHair_ClassEdits.Designer.cs | 1039 +++++++ + .../20200402142818_PlayerHair_ClassEdits.cs | 22 + + .../Game/GameContextModelSnapshot.cs | 3 + + .../Migrations/PlayerContextModelSnapshot.cs | 3 + + Intersect.Server/Networking/PacketHandler.cs | 6 + + Intersect.Server/Networking/PacketSender.cs | 37 +- + 45 files changed, 4803 insertions(+), 1353 deletions(-) + create mode 100644 Intersect (Core)/Enums/CustomSpriteLayers.cs + create mode 100644 Intersect (Core)/Network/Packets/Server/CustomSpriteLayersPacket.cs + create mode 100644 Intersect.Editor/Forms/Editors/Events/Event Commands/EventCommand_ChangeHair.Designer.cs + create mode 100644 Intersect.Editor/Forms/Editors/Events/Event Commands/EventCommand_ChangeHair.cs + create mode 100644 Intersect.Editor/Forms/Editors/Events/Event Commands/EventCommand_ChangeHair.resx + create mode 100644 Intersect.Server/Migrations/20200402160828_PlayerHair_PlayerEdits.Designer.cs + create mode 100644 Intersect.Server/Migrations/20200402160828_PlayerHair_PlayerEdits.cs + create mode 100644 Intersect.Server/Migrations/20200402173703_PlayerHair_PlayerEdits.Designer.cs + create mode 100644 Intersect.Server/Migrations/20200402173703_PlayerHair_PlayerEdits.cs + create mode 100644 Intersect.Server/Migrations/Game/20200402142818_PlayerHair_ClassEdits.Designer.cs + create mode 100644 Intersect.Server/Migrations/Game/20200402142818_PlayerHair_ClassEdits.cs + +diff --git a/Intersect (Core)/Config/EquipmentOptions.cs b/Intersect (Core)/Config/EquipmentOptions.cs +index 91ae727a..73375713 100644 +--- a/Intersect (Core)/Config/EquipmentOptions.cs ++++ b/Intersect (Core)/Config/EquipmentOptions.cs +@@ -22,6 +22,8 @@ public class EquipmentOptions + "Boots", + }; + ++ public string HairSlot { get; set; } = "Helmet"; ++ + public List ToolTypes = new List() + { + "Axe", +diff --git a/Intersect (Core)/Enums/CustomSpriteLayers.cs b/Intersect (Core)/Enums/CustomSpriteLayers.cs +new file mode 100644 +index 00000000..f93b624b +--- /dev/null ++++ b/Intersect (Core)/Enums/CustomSpriteLayers.cs +@@ -0,0 +1,11 @@ ++namespace Intersect.Enums { ++ ++ public enum CustomSpriteLayers { ++ ++ Hair = 0, ++ ++ CustomCount ++ ++ } ++ ++} +diff --git a/Intersect (Core)/GameObjects/ClassBase.cs b/Intersect (Core)/GameObjects/ClassBase.cs +index 3301f59c..d0c9b7ea 100644 +--- a/Intersect (Core)/GameObjects/ClassBase.cs ++++ b/Intersect (Core)/GameObjects/ClassBase.cs +@@ -38,6 +38,8 @@ public class ClassBase : DatabaseObject, IFolderable + + [NotMapped] public List Sprites = new List(); + ++ [NotMapped] public Dictionary> CustomSpriteLayers = new Dictionary>(); ++ + [NotMapped] public int[] StatIncrease = new int[(int) Stats.StatCount]; + + [NotMapped] public int[] VitalIncrease = new int[(int) Vitals.VitalCount]; +@@ -53,6 +55,12 @@ public ClassBase(Guid id) : base(id) + ExperienceCurve.Calculate(1); + BaseExp = DEFAULT_BASE_EXPERIENCE; + ExpIncrease = DEFAULT_EXPERIENCE_INCREASE; ++ ++ // Init the empty lists, stop getting null references. ++ for (int i = 0; i < (int)Enums.CustomSpriteLayers.CustomCount; i++) ++ { ++ CustomSpriteLayers[(Enums.CustomSpriteLayers)i] = new List(); ++ } + } + + //Parameterless constructor for EF +@@ -64,6 +72,12 @@ public ClassBase() + ExperienceCurve.Calculate(1); + BaseExp = DEFAULT_BASE_EXPERIENCE; + ExpIncrease = DEFAULT_EXPERIENCE_INCREASE; ++ ++ // Init the empty lists, stop gettng null references. ++ for (int i = 0; i < (int)Enums.CustomSpriteLayers.CustomCount; i++) ++ { ++ CustomSpriteLayers[(Enums.CustomSpriteLayers)i] = new List(); ++ } + } + + [Column("AttackAnimation")] +@@ -194,6 +208,15 @@ public string JsonSprites + protected set => Sprites = JsonConvert.DeserializeObject>(value); + } + ++ //Sprites ++ [JsonIgnore] ++ [Column("CustomSpriteLayers")] ++ public string JsonCustomSpriteLayers ++ { ++ get => JsonConvert.SerializeObject(CustomSpriteLayers); ++ protected set => CustomSpriteLayers = value != null ? JsonConvert.DeserializeObject>>(value) : CustomSpriteLayers; // Because a migrated database doesn't have this, set to default value if no data exists. ++ } ++ + //Stat Increases (per level) + [JsonIgnore] + [Column("StatIncreases")] +@@ -293,4 +316,11 @@ public class ClassSprite + + } + ++ public class CustomSpriteLayer ++ { ++ public string Texture = ""; ++ ++ public Gender Gender; ++ } ++ + } +diff --git a/Intersect (Core)/GameObjects/Events/Commands/EventCommands.cs b/Intersect (Core)/GameObjects/Events/Commands/EventCommands.cs +index e1d5e334..d126eab7 100644 +--- a/Intersect (Core)/GameObjects/Events/Commands/EventCommands.cs ++++ b/Intersect (Core)/GameObjects/Events/Commands/EventCommands.cs +@@ -518,6 +518,15 @@ public class ChangeFaceCommand : EventCommand + + } + ++ public class ChangeHairCommand : EventCommand ++ { ++ ++ public override EventCommandType Type { get; } = EventCommandType.ChangeHair; ++ ++ public string Hair { get; set; } = ""; ++ ++ } ++ + public class ChangeGenderCommand : EventCommand + { + +diff --git a/Intersect (Core)/GameObjects/Events/Enums.cs b/Intersect (Core)/GameObjects/Events/Enums.cs +index a5d59d83..302965da 100644 +--- a/Intersect (Core)/GameObjects/Events/Enums.cs ++++ b/Intersect (Core)/GameObjects/Events/Enums.cs +@@ -215,6 +215,9 @@ public enum EventCommandType + //Player Label + PlayerLabel, + ++ //Change Hair ++ ChangeHair, ++ + } + + } +diff --git a/Intersect (Core)/Intersect (Core).csproj b/Intersect (Core)/Intersect (Core).csproj +index 567dc36c..f0cf1990 100644 +--- a/Intersect (Core)/Intersect (Core).csproj ++++ b/Intersect (Core)/Intersect (Core).csproj +@@ -221,6 +221,7 @@ + + + ++ + + + +@@ -328,6 +329,7 @@ + + + ++ + + + +diff --git a/Intersect (Core)/Network/Packets/Client/CreateCharacterPacket.cs b/Intersect (Core)/Network/Packets/Client/CreateCharacterPacket.cs +index 2e76ead6..fbe211dd 100644 +--- a/Intersect (Core)/Network/Packets/Client/CreateCharacterPacket.cs ++++ b/Intersect (Core)/Network/Packets/Client/CreateCharacterPacket.cs +@@ -10,11 +10,12 @@ namespace Intersect.Network.Packets.Client + public class CreateCharacterPacket : CerasPacket + { + +- public CreateCharacterPacket(string name, Guid classId, int sprite) ++ public CreateCharacterPacket(string name, Guid classId, int sprite, int[] customSpriteLayers) + { + Name = name; + ClassId = classId; + Sprite = sprite; ++ CustomSpriteLayers = customSpriteLayers; + } + + public string Name { get; set; } +@@ -23,6 +24,8 @@ public CreateCharacterPacket(string name, Guid classId, int sprite) + + public int Sprite { get; set; } + ++ public int[] CustomSpriteLayers { get; set; } ++ + public override Dictionary> Sanitize() + { + base.Sanitize(); +diff --git a/Intersect (Core)/Network/Packets/Server/CharacterPacket.cs b/Intersect (Core)/Network/Packets/Server/CharacterPacket.cs +index 44286440..4f0a60a1 100644 +--- a/Intersect (Core)/Network/Packets/Server/CharacterPacket.cs ++++ b/Intersect (Core)/Network/Packets/Server/CharacterPacket.cs +@@ -13,7 +13,8 @@ public class CharacterPacket : CerasPacket + string face, + int level, + string className, +- string[] equipment ++ string[] equipment, ++ string[] customspritelayers + ) + { + Id = id; +@@ -23,6 +24,7 @@ string[] equipment + Level = level; + ClassName = className; + Equipment = equipment; ++ CustomSpriteLayers = customspritelayers; + } + + public Guid Id { get; set; } +@@ -39,6 +41,8 @@ string[] equipment + + public string[] Equipment { get; set; } + ++ public string[] CustomSpriteLayers { get; set; } ++ + } + + } +diff --git a/Intersect (Core)/Network/Packets/Server/CustomSpriteLayersPacket.cs b/Intersect (Core)/Network/Packets/Server/CustomSpriteLayersPacket.cs +new file mode 100644 +index 00000000..7715c3de +--- /dev/null ++++ b/Intersect (Core)/Network/Packets/Server/CustomSpriteLayersPacket.cs +@@ -0,0 +1,19 @@ ++using System; ++ ++namespace Intersect.Network.Packets.Server ++{ ++ ++ public class CustomSpriteLayersPacket : CerasPacket ++ { ++ ++ public CustomSpriteLayersPacket(Guid entityId, string[] customSpriteLayers) ++ { ++ EntityId = entityId; ++ CustomSpriteLayers = customSpriteLayers; ++ } ++ ++ public string[] CustomSpriteLayers { get; set; } ++ ++ public Guid EntityId { get; set; } ++ } ++} +diff --git a/Intersect (Core)/Utilities/DatabaseUtils.cs b/Intersect (Core)/Utilities/DatabaseUtils.cs +index 32db6e37..ac362d37 100644 +--- a/Intersect (Core)/Utilities/DatabaseUtils.cs ++++ b/Intersect (Core)/Utilities/DatabaseUtils.cs +@@ -25,6 +25,20 @@ public static int[] LoadIntArray(string json, int arrayLen) + return output; + } + ++ public static string[] LoadStringArray(string json, int arrayLen) { ++ var output = new string[arrayLen]; ++ var jsonList = new List(); ++ if (json != null) { ++ jsonList = JsonConvert.DeserializeObject>(json); ++ } ++ ++ for (var i = 0; i < arrayLen && i < jsonList.Count; i++) { ++ output[i] = jsonList[i]; ++ } ++ ++ return output; ++ } ++ + public static void LoadIntArray(ref int[] output, string json, int arrayLen) + { + var jsonList = JsonConvert.DeserializeObject>(json); +@@ -57,6 +71,23 @@ public static string SaveIntArray(int[] array, int arrayLen) + return JsonConvert.SerializeObject(output); + } + ++ public static string SaveStringArray(string[] array, int arrayLen) { ++ if (array == null) { ++ array = new string[arrayLen]; ++ } ++ ++ var output = new List(); ++ for (var i = 0; i < arrayLen; i++) { ++ if (i < array.Length) { ++ output.Add(array[i]); ++ } else { ++ output.Add(string.Empty); ++ } ++ } ++ ++ return JsonConvert.SerializeObject(output); ++ } ++ + public static string SaveColor(Color color) + { + if (color == null) +diff --git a/Intersect.Client.Framework/File Management/GameContentManager.cs b/Intersect.Client.Framework/File Management/GameContentManager.cs +index 38ce3612..2e814f1e 100644 +--- a/Intersect.Client.Framework/File Management/GameContentManager.cs ++++ b/Intersect.Client.Framework/File Management/GameContentManager.cs +@@ -39,6 +39,8 @@ public enum TextureType + + Misc, + ++ Hair ++ + } + + public enum UI +@@ -56,6 +58,8 @@ public enum UI + + protected Dictionary mEntityDict = new Dictionary(); + ++ protected Dictionary mHairDict = new Dictionary(); ++ + protected Dictionary mFaceDict = new Dictionary(); + + protected Dictionary mFogDict = new Dictionary(); +@@ -99,6 +103,7 @@ public void LoadAll() + { + LoadTexturePacks(); + LoadEntities(); ++ LoadHairs(); + LoadItems(); + LoadAnimations(); + LoadSpells(); +@@ -121,6 +126,8 @@ public void LoadAll() + + public abstract void LoadEntities(); + ++ public abstract void LoadHairs(); ++ + public abstract void LoadSpells(); + + public abstract void LoadAnimations(); +@@ -193,6 +200,8 @@ public string[] GetTextureNames(TextureType type) + return mGuiDict.Keys.ToArray(); + case TextureType.Misc: + return mMiscDict.Keys.ToArray(); ++ case TextureType.Hair: ++ return mHairDict.Keys.ToArray(); + } + + return null; +@@ -256,6 +265,11 @@ public virtual GameTexture GetTexture(TextureType type, string name) + case TextureType.Misc: + textureDict = mMiscDict; + ++ break; ++ ++ case TextureType.Hair: ++ textureDict = mHairDict; ++ + break; + default: + return null; +diff --git a/Intersect.Client/Entities/Entity.cs b/Intersect.Client/Entities/Entity.cs +index de0f4902..d26aa5e3 100644 +--- a/Intersect.Client/Entities/Entity.cs ++++ b/Intersect.Client/Entities/Entity.cs +@@ -943,6 +943,15 @@ public virtual void Draw() + DrawEquipment(item.FemalePaperdoll, alpha); + } + } ++ else ++ { ++ // Render a hairstyle here if we're currently rendering the desired hair slot without any equipment in it. ++ if (this is Player && paperdoll == Options.EquipmentSlots[Options.EquipmentSlots.IndexOf(Options.Equipment.HairSlot)]) ++ { ++ var player = (Player)this; ++ player.DrawCustomSpriteLayer(player.CustomSpriteLayers[(int)Enums.CustomSpriteLayers.Hair], alpha); ++ } ++ } + } + } + } +diff --git a/Intersect.Client/Entities/Player.cs b/Intersect.Client/Entities/Player.cs +index e7af06e0..7d407c80 100644 +--- a/Intersect.Client/Entities/Player.cs ++++ b/Intersect.Client/Entities/Player.cs +@@ -5,6 +5,9 @@ + using Intersect.Client.Core.Controls; + using Intersect.Client.Entities.Events; + using Intersect.Client.Entities.Projectiles; ++using Intersect.Client.Framework.File_Management; ++using Intersect.Client.Framework.GenericClasses; ++using Intersect.Client.Framework.Graphics; + using Intersect.Client.General; + using Intersect.Client.Interface.Game; + using Intersect.Client.Interface.Game.EntityPanel; +@@ -57,6 +60,10 @@ public class Player : Entity + public Guid TargetIndex; + + public int TargetType; ++ ++ protected string[] mMyCustomSpriteLayers { get; set; } = new string[(int)Enums.CustomSpriteLayers.CustomCount]; ++ ++ public Framework.Graphics.GameTexture[] CustomSpriteLayersTexture { get; set; } = new Framework.Graphics.GameTexture[(int)Enums.CustomSpriteLayers.CustomCount]; + + public Player(Guid id, PlayerEntityPacket packet) : base(id, packet) + { +@@ -83,6 +90,27 @@ public List Party + } + } + ++ public virtual string[] CustomSpriteLayers ++ { ++ get => mMyCustomSpriteLayers; ++ set ++ { ++ mMyCustomSpriteLayers = value; ++ CustomSpriteLayersTexture = GetCustomSpriteTextures(value); ++ } ++ } ++ ++ private GameTexture[] GetCustomSpriteTextures(string[] customSpriteLayers) ++ { ++ var textures = new GameTexture[(int)Enums.CustomSpriteLayers.CustomCount]; ++ for (int i=0; i < (int)Enums.CustomSpriteLayers.CustomCount; i++) ++ { ++ textures[i] = Globals.ContentManager.GetTexture(GameContentManager.TextureType.Hair, customSpriteLayers[i]); ++ } ++ ++ return textures; ++ } ++ + public override Guid CurrentMap + { + get => base.CurrentMap; +@@ -1873,6 +1901,81 @@ public void DrawTargets() + } + } + ++ public virtual void DrawCustomSpriteLayer(string filename, int alpha) ++ { ++ var map = MapInstance.Get(CurrentMap); ++ if (map == null) ++ { ++ return; ++ } ++ ++ var srcRectangle = new FloatRect(); ++ var destRectangle = new FloatRect(); ++ var d = 0; ++ var customlayertex = Globals.ContentManager.GetTexture(GameContentManager.TextureType.Hair, filename); ++ if (customlayertex != null) ++ { ++ if (customlayertex.GetHeight() / 4 > Options.TileHeight) ++ { ++ destRectangle.X = map.GetX() + X * Options.TileWidth + OffsetX; ++ destRectangle.Y = GetCenterPos().Y - customlayertex.GetHeight() / 8; ++ } ++ else ++ { ++ destRectangle.X = map.GetX() + X * Options.TileWidth + OffsetX; ++ destRectangle.Y = map.GetY() + Y * Options.TileHeight + OffsetY; ++ } ++ ++ if (customlayertex.GetWidth() / 4 > Options.TileWidth) ++ { ++ destRectangle.X -= (customlayertex.GetWidth() / 4 - Options.TileWidth) / 2; ++ } ++ ++ switch (Dir) ++ { ++ case 0: ++ d = 3; ++ ++ break; ++ case 1: ++ d = 0; ++ ++ break; ++ case 2: ++ d = 1; ++ ++ break; ++ case 3: ++ d = 2; ++ ++ break; ++ } ++ ++ destRectangle.X = (int)Math.Ceiling(destRectangle.X); ++ destRectangle.Y = (int)Math.Ceiling(destRectangle.Y); ++ if (AttackTimer - CalculateAttackTime() / 2 > Globals.System.GetTimeMs() || Blocking) ++ { ++ srcRectangle = new FloatRect( ++ 3 * (int)customlayertex.GetWidth() / 4, d * (int)customlayertex.GetHeight() / 4, ++ (int)customlayertex.GetWidth() / 4, (int)customlayertex.GetHeight() / 4 ++ ); ++ } ++ else ++ { ++ srcRectangle = new FloatRect( ++ WalkFrame * (int)customlayertex.GetWidth() / 4, d * (int)customlayertex.GetHeight() / 4, ++ (int)customlayertex.GetWidth() / 4, (int)customlayertex.GetHeight() / 4 ++ ); ++ } ++ ++ destRectangle.Width = srcRectangle.Width; ++ destRectangle.Height = srcRectangle.Height; ++ Graphics.DrawGameTexture( ++ customlayertex, srcRectangle, destRectangle, new Intersect.Color(alpha, 255, 255, 255) ++ ); ++ } ++ } ++ + } + + public class FriendInstance +diff --git a/Intersect.Client/Interface/Game/Character/CharacterWindow.cs b/Intersect.Client/Interface/Game/Character/CharacterWindow.cs +index ce0cf2ee..26765ad2 100644 +--- a/Intersect.Client/Interface/Game/Character/CharacterWindow.cs ++++ b/Intersect.Client/Interface/Game/Character/CharacterWindow.cs +@@ -197,6 +197,7 @@ public void Update() + for (var z = 0; z < Options.PaperdollOrder[1].Count; z++) + { + var paperdoll = ""; ++ var type = GameContentManager.TextureType.Paperdoll; + if (Options.EquipmentSlots.IndexOf(Options.PaperdollOrder[1][z]) > -1) + { + var equipment = Globals.Me.MyEquipment; +@@ -231,6 +232,12 @@ public void Update() + Align.Center(PaperdollPanels[z]); + } + ++ if (paperdoll == "" && Options.PaperdollOrder[1][z] == Options.Equipment.HairSlot) ++ { ++ paperdoll = Globals.Me.CustomSpriteLayers[(int)Enums.CustomSpriteLayers.Hair]; ++ type = GameContentManager.TextureType.Hair; ++ } ++ + if (string.IsNullOrWhiteSpace(paperdoll) && !string.IsNullOrWhiteSpace(PaperdollTextures[z]) && Options.PaperdollOrder[1][z] != "Player") + { + PaperdollPanels[z].Texture = null; +@@ -240,7 +247,7 @@ public void Update() + else if (paperdoll != "" && paperdoll != PaperdollTextures[z]) + { + var paperdollTex = Globals.ContentManager.GetTexture( +- GameContentManager.TextureType.Paperdoll, paperdoll ++ type, paperdoll + ); + + PaperdollPanels[z].Texture = paperdollTex; +@@ -267,7 +274,7 @@ public void Update() + + PaperdollPanels[z].Show(); + PaperdollTextures[z] = paperdoll; +- } ++ } + } + } + else if (Globals.Me.MySprite != mCurrentSprite && Globals.Me.Face != mCurrentSprite) +diff --git a/Intersect.Client/Interface/Game/EntityPanel/EntityBox.cs b/Intersect.Client/Interface/Game/EntityPanel/EntityBox.cs +index 1e2cd8db..eee8814b 100644 +--- a/Intersect.Client/Interface/Game/EntityPanel/EntityBox.cs ++++ b/Intersect.Client/Interface/Game/EntityPanel/EntityBox.cs +@@ -747,6 +747,7 @@ private void UpdateImage() + for (var z = 0; z < Options.PaperdollOrder[1].Count; z++) + { + var paperdoll = ""; ++ var type = GameContentManager.TextureType.Paperdoll; + if (Options.EquipmentSlots.IndexOf(Options.PaperdollOrder[1][z]) > -1 && + equipment.Length == Options.EquipmentSlots.Count) + { +@@ -774,6 +775,12 @@ private void UpdateImage() + continue; + } + ++ if (MyEntity is Player && paperdoll == "" && Options.PaperdollOrder[1][z] == Options.Equipment.HairSlot) ++ { ++ paperdoll = ((Player)MyEntity).CustomSpriteLayers[(int)Enums.CustomSpriteLayers.Hair]; ++ type = GameContentManager.TextureType.Hair; ++ } ++ + if (paperdoll == "" && PaperdollTextures[n] != "") + { + PaperdollPanels[n].Texture = null; +@@ -783,7 +790,7 @@ private void UpdateImage() + else if (paperdoll != "" && paperdoll != PaperdollTextures[n]) + { + var paperdollTex = Globals.ContentManager.GetTexture( +- GameContentManager.TextureType.Paperdoll, paperdoll ++ type, paperdoll + ); + + PaperdollPanels[n].Texture = paperdollTex; +diff --git a/Intersect.Client/Interface/Menu/CreateCharacterWindow.cs b/Intersect.Client/Interface/Menu/CreateCharacterWindow.cs +index 43b8750b..6bdaf0b7 100644 +--- a/Intersect.Client/Interface/Menu/CreateCharacterWindow.cs ++++ b/Intersect.Client/Interface/Menu/CreateCharacterWindow.cs +@@ -26,6 +26,8 @@ public class CreateCharacterWindow + + private ImagePanel mCharacterPortrait; + ++ private ImagePanel mCharacterHair; ++ + //Image + private string mCharacterPortraitImg = ""; + +@@ -48,6 +50,8 @@ public class CreateCharacterWindow + + private int mDisplaySpriteIndex = -1; + ++ private int[] mDisplayCustomSpriteLayerIndex = new int[(int)Enums.CustomSpriteLayers.CustomCount]; ++ + private LabeledCheckBox mFemaleChk; + + private List> mFemaleSprites = new List>(); +@@ -68,10 +72,19 @@ public class CreateCharacterWindow + //Class Info + private List> mMaleSprites = new List>(); + ++ private Dictionary>> mMaleCustomSpriteLayers = new Dictionary>>(); ++ ++ private Dictionary>> mFemaleCustomSpriteLayers = new Dictionary>>(); ++ + private Button mNextSpriteButton; + + private Button mPrevSpriteButton; + ++ private Button mNextHairButton; ++ ++ private Button mPrevHairButton; ++ ++ + private SelectCharacterWindow mSelectCharacterWindow; + + //Init +@@ -133,6 +146,10 @@ SelectCharacterWindow selectCharacterWindow + mCharacterPortrait = new ImagePanel(mCharacterContainer, "CharacterPortait"); + mCharacterPortrait.SetSize(48, 48); + ++ // Hair Sprite ++ mCharacterHair = new ImagePanel(mCharacterContainer, "CharacterHair"); ++ mCharacterHair.SetSize(48, 48); ++ + //Next Sprite Button + mNextSpriteButton = new Button(mCharacterContainer, "NextSpriteButton"); + mNextSpriteButton.Clicked += _nextSpriteButton_Clicked; +@@ -141,6 +158,14 @@ SelectCharacterWindow selectCharacterWindow + mPrevSpriteButton = new Button(mCharacterContainer, "PreviousSpriteButton"); + mPrevSpriteButton.Clicked += _prevSpriteButton_Clicked; + ++ //Next Hair Button ++ mNextHairButton = new Button(mCharacterContainer, "NextHairButton"); ++ mNextHairButton.Clicked += _nextHairButton_Clicked; ++ ++ //Prev Hair Button ++ mPrevHairButton = new Button(mCharacterContainer, "PreviousHairButton"); ++ mPrevHairButton.Clicked += _prevHairButton_Clicked; ++ + //Class Background + mGenderBackground = new ImagePanel(mCharCreationPanel, "GenderPanel"); + +@@ -218,6 +243,7 @@ private void UpdateDisplay() + if (GetClass() != null && mDisplaySpriteIndex != -1) + { + mCharacterPortrait.IsHidden = false; ++ mCharacterHair.IsHidden = false; + if (GetClass().Sprites.Count > 0) + { + if (mMaleChk.IsChecked) +@@ -232,6 +258,17 @@ private void UpdateDisplay() + GameContentManager.TextureType.Entity, mMaleSprites[mDisplaySpriteIndex].Value.Sprite + ); + ++ if (mDisplayCustomSpriteLayerIndex[(int)Enums.CustomSpriteLayers.Hair] != -1) ++ { ++ mCharacterHair.Texture = Globals.ContentManager.GetTexture( ++ GameContentManager.TextureType.Hair, mMaleCustomSpriteLayers[Enums.CustomSpriteLayers.Hair][mDisplayCustomSpriteLayerIndex[(int)Enums.CustomSpriteLayers.Hair]].Value.Texture ++ ); ++ } ++ else ++ { ++ mCharacterHair.Texture = null; ++ } ++ + isFace = false; + } + } +@@ -247,6 +284,17 @@ private void UpdateDisplay() + GameContentManager.TextureType.Entity, mFemaleSprites[mDisplaySpriteIndex].Value.Sprite + ); + ++ if (mDisplayCustomSpriteLayerIndex[(int)Enums.CustomSpriteLayers.Hair] != -1) ++ { ++ mCharacterHair.Texture = Globals.ContentManager.GetTexture( ++ GameContentManager.TextureType.Hair, mFemaleCustomSpriteLayers[Enums.CustomSpriteLayers.Hair][mDisplayCustomSpriteLayerIndex[(int)Enums.CustomSpriteLayers.Hair]].Value.Texture ++ ); ++ } ++ else ++ { ++ mCharacterHair.Texture = null; ++ } ++ + isFace = false; + } + } +@@ -281,14 +329,28 @@ private void UpdateDisplay() + mCharacterPortrait.Texture.GetHeight() / 4 + ); + ++ if (mCharacterHair.Texture != null) mCharacterHair.SetTextureRect( ++ 0, 0, mCharacterHair.Texture.GetWidth() / 4, ++ mCharacterHair.Texture.GetHeight() / 4 ++ ); ++ + mCharacterPortrait.SetSize( + mCharacterPortrait.Texture.GetWidth() / 4, mCharacterPortrait.Texture.GetHeight() / 4 + ); + ++ if (mCharacterHair.Texture != null) mCharacterHair.SetSize( ++ mCharacterHair.Texture.GetWidth() / 4, mCharacterHair.Texture.GetHeight() / 4 ++ ); ++ + mCharacterPortrait.SetPosition( + mCharacterContainer.Width / 2 - mCharacterPortrait.Width / 2, + mCharacterContainer.Height / 2 - mCharacterPortrait.Height / 2 + ); ++ ++ if (mCharacterHair.Texture != null) mCharacterHair.SetPosition( ++ mCharacterContainer.Width / 2 - mCharacterHair.Width / 2, ++ mCharacterContainer.Height / 2 - mCharacterHair.Height / 2 ++ ); + } + } + } +@@ -296,6 +358,7 @@ private void UpdateDisplay() + else + { + mCharacterPortrait.IsHidden = true; ++ mCharacterHair.IsHidden = true; + } + } + +@@ -333,6 +396,12 @@ private void LoadClass() + mMaleSprites.Clear(); + mFemaleSprites.Clear(); + mDisplaySpriteIndex = -1; ++ ++ for (var i = 0; i < (int)Enums.CustomSpriteLayers.CustomCount; i++) ++ { ++ mDisplayCustomSpriteLayerIndex[i] = -1; ++ } ++ + if (cls != null) + { + for (var i = 0; i < cls.Sprites.Count; i++) +@@ -346,6 +415,28 @@ private void LoadClass() + mFemaleSprites.Add(new KeyValuePair(i, cls.Sprites[i])); + } + } ++ ++ // Clear our custom sprite layers if they exist, and fill them again. ++ mMaleCustomSpriteLayers.Clear(); ++ mFemaleCustomSpriteLayers.Clear(); ++ for (var i = 0; i < (int)Enums.CustomSpriteLayers.CustomCount; i++) ++ { ++ var layer = (Enums.CustomSpriteLayers)i; ++ mMaleCustomSpriteLayers.Add(layer, new List>()); ++ mFemaleCustomSpriteLayers.Add(layer, new List>()); ++ for (var n = 0; n < cls.CustomSpriteLayers[layer].Count; n++) ++ { ++ if (cls.CustomSpriteLayers[layer][n].Gender == 0) ++ { ++ mMaleCustomSpriteLayers[layer].Add(new KeyValuePair(n, cls.CustomSpriteLayers[layer][n])); ++ } ++ else ++ { ++ mFemaleCustomSpriteLayers[layer].Add(new KeyValuePair(n, cls.CustomSpriteLayers[layer][n])); ++ } ++ } ++ } ++ + } + + ResetSprite(); +@@ -355,8 +446,11 @@ private void ResetSprite() + { + mNextSpriteButton.IsHidden = true; + mPrevSpriteButton.IsHidden = true; ++ mNextHairButton.IsHidden = true; ++ mPrevHairButton.IsHidden = true; + if (mMaleChk.IsChecked) + { ++ // Sprite + if (mMaleSprites.Count > 0) + { + mDisplaySpriteIndex = 0; +@@ -370,9 +464,25 @@ private void ResetSprite() + { + mDisplaySpriteIndex = -1; + } ++ ++ // Hair ++ if (mMaleCustomSpriteLayers[Enums.CustomSpriteLayers.Hair].Count > 0) ++ { ++ mDisplayCustomSpriteLayerIndex[(int)Enums.CustomSpriteLayers.Hair] = 0; ++ if (mMaleCustomSpriteLayers[Enums.CustomSpriteLayers.Hair].Count > 1) ++ { ++ mNextHairButton.IsHidden = false; ++ mPrevHairButton.IsHidden = false; ++ } ++ } ++ else ++ { ++ mDisplayCustomSpriteLayerIndex[(int)Enums.CustomSpriteLayers.Hair] = -1; ++ } + } + else + { ++ // Sprite + if (mFemaleSprites.Count > 0) + { + mDisplaySpriteIndex = 0; +@@ -386,6 +496,20 @@ private void ResetSprite() + { + mDisplaySpriteIndex = -1; + } ++ // Hair ++ if (mFemaleCustomSpriteLayers[Enums.CustomSpriteLayers.Hair].Count > 0) ++ { ++ mDisplayCustomSpriteLayerIndex[(int)Enums.CustomSpriteLayers.Hair] = 0; ++ if (mFemaleCustomSpriteLayers[Enums.CustomSpriteLayers.Hair].Count > 1) ++ { ++ mNextHairButton.IsHidden = false; ++ mPrevHairButton.IsHidden = false; ++ } ++ } ++ else ++ { ++ mDisplayCustomSpriteLayerIndex[(int)Enums.CustomSpriteLayers.Hair] = -1; ++ } + } + } + +@@ -459,6 +583,75 @@ private void _nextSpriteButton_Clicked(Base sender, ClickedEventArgs arguments) + UpdateDisplay(); + } + ++ private void _prevHairButton_Clicked(Base sender, ClickedEventArgs arguments) ++ { ++ mDisplayCustomSpriteLayerIndex[(int)Enums.CustomSpriteLayers.Hair]--; ++ if (mMaleChk.IsChecked) ++ { ++ if (mMaleCustomSpriteLayers[Enums.CustomSpriteLayers.Hair].Count > 0) ++ { ++ if (mDisplayCustomSpriteLayerIndex[(int)Enums.CustomSpriteLayers.Hair] == -1) ++ { ++ mDisplayCustomSpriteLayerIndex[(int)Enums.CustomSpriteLayers.Hair] = mMaleCustomSpriteLayers[Enums.CustomSpriteLayers.Hair].Count - 1; ++ } ++ } ++ else ++ { ++ mDisplayCustomSpriteLayerIndex[(int)Enums.CustomSpriteLayers.Hair] = -1; ++ } ++ } ++ else ++ { ++ if (mFemaleCustomSpriteLayers[Enums.CustomSpriteLayers.Hair].Count > 0) ++ { ++ if (mDisplayCustomSpriteLayerIndex[(int)Enums.CustomSpriteLayers.Hair] == -1) ++ { ++ mDisplayCustomSpriteLayerIndex[(int)Enums.CustomSpriteLayers.Hair] = mFemaleCustomSpriteLayers[Enums.CustomSpriteLayers.Hair].Count - 1; ++ } ++ } ++ else ++ { ++ mDisplayCustomSpriteLayerIndex[(int)Enums.CustomSpriteLayers.Hair] = -1; ++ } ++ } ++ ++ UpdateDisplay(); ++ } ++ ++ private void _nextHairButton_Clicked(Base sender, ClickedEventArgs arguments) { ++ mDisplayCustomSpriteLayerIndex[(int)Enums.CustomSpriteLayers.Hair]++; ++ if (mMaleChk.IsChecked) ++ { ++ if (mMaleCustomSpriteLayers[Enums.CustomSpriteLayers.Hair].Count > 0) ++ { ++ if (mDisplayCustomSpriteLayerIndex[(int)Enums.CustomSpriteLayers.Hair] >= mMaleCustomSpriteLayers[Enums.CustomSpriteLayers.Hair].Count) ++ { ++ mDisplayCustomSpriteLayerIndex[(int)Enums.CustomSpriteLayers.Hair] = 0; ++ } ++ } ++ else ++ { ++ mDisplayCustomSpriteLayerIndex[(int)Enums.CustomSpriteLayers.Hair] = -1; ++ } ++ } ++ else ++ { ++ if (mFemaleCustomSpriteLayers[Enums.CustomSpriteLayers.Hair].Count > 0) ++ { ++ if (mDisplayCustomSpriteLayerIndex[(int)Enums.CustomSpriteLayers.Hair] >= mFemaleCustomSpriteLayers[Enums.CustomSpriteLayers.Hair].Count) ++ { ++ mDisplayCustomSpriteLayerIndex[(int)Enums.CustomSpriteLayers.Hair] = 0; ++ } ++ } ++ else ++ { ++ mDisplayCustomSpriteLayerIndex[(int)Enums.CustomSpriteLayers.Hair] = -1; ++ } ++ } ++ ++ UpdateDisplay(); ++ } ++ + void TryCreateCharacter(int gender) + { + if (Globals.WaitingOnServer || mDisplaySpriteIndex == -1) +@@ -468,16 +661,31 @@ void TryCreateCharacter(int gender) + + if (FieldChecking.IsValidUsername(mCharnameTextbox.Text, Strings.Regex.username)) + { ++ var customSpriteLayers = new int[(int)Enums.CustomSpriteLayers.CustomCount]; + if (mMaleChk.IsChecked) + { ++ // Add our custom layers to the packet. ++ for (var i = 0; i < (int)Enums.CustomSpriteLayers.CustomCount; i++) ++ { ++ var layer = (Enums.CustomSpriteLayers)i; ++ customSpriteLayers[i] = mDisplayCustomSpriteLayerIndex[i] != -1 ? mMaleCustomSpriteLayers[layer][mDisplayCustomSpriteLayerIndex[i]].Key : -1; ++ } ++ + PacketSender.SendCreateCharacter( +- mCharnameTextbox.Text, GetClass().Id, mMaleSprites[mDisplaySpriteIndex].Key ++ mCharnameTextbox.Text, GetClass().Id, mMaleSprites[mDisplaySpriteIndex].Key, customSpriteLayers + ); + } + else + { ++ // Add our custom layers to the packet. ++ for (var i = 0; i < (int)Enums.CustomSpriteLayers.CustomCount; i++) ++ { ++ var layer = (Enums.CustomSpriteLayers)i; ++ customSpriteLayers[i] = mDisplayCustomSpriteLayerIndex[i] != -1 ? mFemaleCustomSpriteLayers[layer][mDisplayCustomSpriteLayerIndex[i]].Key : -1; ++ } ++ + PacketSender.SendCreateCharacter( +- mCharnameTextbox.Text, GetClass().Id, mFemaleSprites[mDisplaySpriteIndex].Key ++ mCharnameTextbox.Text, GetClass().Id, mFemaleSprites[mDisplaySpriteIndex].Key, customSpriteLayers + ); + } + +diff --git a/Intersect.Client/Interface/Menu/SelectCharacterWindow.cs b/Intersect.Client/Interface/Menu/SelectCharacterWindow.cs +index d22ba2f5..903ecb09 100644 +--- a/Intersect.Client/Interface/Menu/SelectCharacterWindow.cs ++++ b/Intersect.Client/Interface/Menu/SelectCharacterWindow.cs +@@ -244,8 +244,28 @@ private void UpdateDisplay() + { + if (mPaperdollPortraits[i] != mCharacterPortrait) + { ++ var texture = String.Empty; ++ GameContentManager.TextureType type; ++ if (Options.EquipmentSlots.IndexOf(Options.PaperdollOrder[1][i]) == Options.EquipmentSlots.IndexOf(Options.Equipment.HairSlot)) ++ { ++ if (Characters[mSelectedChar].Equipment[i] != String.Empty && Characters[mSelectedChar].Equipment[i] != null) ++ { ++ texture = Characters[mSelectedChar].Equipment[i]; ++ type = GameContentManager.TextureType.Paperdoll; ++ } ++ else ++ { ++ texture = Characters[mSelectedChar].CustomSpriteLayers[(int)Enums.CustomSpriteLayers.Hair]; ++ type = GameContentManager.TextureType.Hair; ++ } ++ } ++ else ++ { ++ texture = Characters[mSelectedChar].Equipment[i]; ++ type = GameContentManager.TextureType.Paperdoll; ++ } + mPaperdollPortraits[i].Texture = Globals.ContentManager.GetTexture( +- GameContentManager.TextureType.Paperdoll, Characters[mSelectedChar].Equipment[i] ++ type, texture + ); + + if (mPaperdollPortraits[i].Texture != null) +@@ -370,6 +390,8 @@ public class Character + + public string[] Equipment = new string[Options.EquipmentSlots.Count + 1]; + ++ public string[] CustomSpriteLayers = new string[(int)Enums.CustomSpriteLayers.CustomCount]; ++ + public bool Exists = false; + + public string Face = ""; +@@ -394,9 +416,11 @@ public Character(Guid id) + string face, + int level, + string charClass, +- string[] equipment ++ string[] equipment, ++ string[] customspritelayers + ) + { ++ CustomSpriteLayers = customspritelayers; + Equipment = equipment; + Id = id; + Name = name; +diff --git a/Intersect.Client/MonoGame/File Management/MonoContentManager.cs b/Intersect.Client/MonoGame/File Management/MonoContentManager.cs +index dc725cf6..77654bb6 100644 +--- a/Intersect.Client/MonoGame/File Management/MonoContentManager.cs ++++ b/Intersect.Client/MonoGame/File Management/MonoContentManager.cs +@@ -139,6 +139,11 @@ public override void LoadEntities() + LoadTextureGroup("entities", mEntityDict); + } + ++ public override void LoadHairs() ++ { ++ LoadTextureGroup("hairs", mHairDict); ++ } ++ + public override void LoadSpells() + { + LoadTextureGroup("spells", mSpellDict); +diff --git a/Intersect.Client/Networking/PacketHandler.cs b/Intersect.Client/Networking/PacketHandler.cs +index c69ec70d..d38a9c1d 100644 +--- a/Intersect.Client/Networking/PacketHandler.cs ++++ b/Intersect.Client/Networking/PacketHandler.cs +@@ -890,6 +890,19 @@ private static void HandlePacket(EquipmentPacket packet) + } + } + ++ private static void HandlePacket(CustomSpriteLayersPacket packet) ++ { ++ var entityId = packet.EntityId; ++ if (Globals.Entities.ContainsKey(entityId)) ++ { ++ var entity = Globals.Entities[entityId]; ++ if (entity != null) ++ { ++ ((Player)entity).CustomSpriteLayers = packet.CustomSpriteLayers; ++ } ++ } ++ } ++ + //StatPointsPacket + private static void HandlePacket(StatPointsPacket packet) + { +@@ -1602,7 +1615,7 @@ private static void HandlePacket(CharactersPacket packet) + foreach (var chr in packet.Characters) + { + characters.Add( +- new Character(chr.Id, chr.Name, chr.Sprite, chr.Face, chr.Level, chr.ClassName, chr.Equipment) ++ new Character(chr.Id, chr.Name, chr.Sprite, chr.Face, chr.Level, chr.ClassName, chr.Equipment, chr.CustomSpriteLayers) + ); + } + +diff --git a/Intersect.Client/Networking/PacketSender.cs b/Intersect.Client/Networking/PacketSender.cs +index 41082f45..c6bc88c7 100644 +--- a/Intersect.Client/Networking/PacketSender.cs ++++ b/Intersect.Client/Networking/PacketSender.cs +@@ -106,9 +106,9 @@ public static void SendCreateAccount(string username, string password, string em + Network.SendPacket(new CreateAccountPacket(username.Trim(), password.Trim(), email.Trim())); + } + +- public static void SendCreateCharacter(string name, Guid classId, int sprite) ++ public static void SendCreateCharacter(string name, Guid classId, int sprite, int[] customSpriteLayers) + { +- Network.SendPacket(new CreateCharacterPacket(name, classId, sprite)); ++ Network.SendPacket(new CreateCharacterPacket(name, classId, sprite, customSpriteLayers)); + } + + public static void SendPickupItem(int index) +diff --git a/Intersect.Editor/Content/ContentManager.cs b/Intersect.Editor/Content/ContentManager.cs +index 433f0c77..32792d6d 100644 +--- a/Intersect.Editor/Content/ContentManager.cs ++++ b/Intersect.Editor/Content/ContentManager.cs +@@ -48,6 +48,8 @@ public enum TextureType + + Misc, + ++ Hairs ++ + } + + //Game Content +@@ -90,6 +92,8 @@ public enum TextureType + + static IDictionary sTilesetDict = new Dictionary(); + ++ static IDictionary sHairsDict = new Dictionary(); ++ + public static List TilesetTextures = new List(); + + public static string[] MusicNames => sMusicDict?.Keys.ToArray(); +@@ -135,6 +139,7 @@ public static void LoadEditorContent() + LoadFaces(); + LoadItems(); + LoadMisc(); ++ LoadHairs(); + LoadShaders(); + LoadSounds(); + LoadMusic(); +@@ -323,6 +328,10 @@ private static void LoadMisc() + LoadTextureGroup("misc", sMiscDict); + } + ++ private static void LoadHairs() { ++ LoadTextureGroup("hairs", sHairsDict); ++ } ++ + public static void LoadShaders() + { + sShaderDict.Clear(); +@@ -443,6 +452,10 @@ public static Texture2D GetTexture(TextureType type, string name) + case TextureType.Misc: + textureDict = sMiscDict; + ++ break; ++ case TextureType.Hairs: ++ textureDict = sHairsDict; ++ + break; + default: + return null; +@@ -571,6 +584,11 @@ public static string[] GetTextureNames(TextureType type) + case TextureType.Misc: + textureDict = sMiscDict; + ++ break; ++ ++ case TextureType.Hairs: ++ textureDict = sHairsDict; ++ + break; + default: + return null; +diff --git a/Intersect.Editor/Forms/Editors/Events/CommandPrinter.cs b/Intersect.Editor/Forms/Editors/Events/CommandPrinter.cs +index b3497aa0..b2a980b7 100644 +--- a/Intersect.Editor/Forms/Editors/Events/CommandPrinter.cs ++++ b/Intersect.Editor/Forms/Editors/Events/CommandPrinter.cs +@@ -635,6 +635,11 @@ private static string GetCommandText(ChangeFaceCommand command, MapInstance map) + return Strings.EventCommandList.setface.ToString(command.Face); + } + ++ private static string GetCommandText(ChangeHairCommand command, MapInstance map) ++ { ++ return Strings.EventCommandList.sethair.ToString(command.Hair); ++ } ++ + private static string GetCommandText(ChangeNameColorCommand command, MapInstance map) + { + if (command.Remove) +diff --git a/Intersect.Editor/Forms/Editors/Events/Event Commands/EventCommand_ChangeHair.Designer.cs b/Intersect.Editor/Forms/Editors/Events/Event Commands/EventCommand_ChangeHair.Designer.cs +new file mode 100644 +index 00000000..aa8444c2 +--- /dev/null ++++ b/Intersect.Editor/Forms/Editors/Events/Event Commands/EventCommand_ChangeHair.Designer.cs +@@ -0,0 +1,142 @@ ++using DarkUI.Controls; ++ ++namespace Intersect.Editor.Forms.Editors.Events.Event_Commands ++{ ++ partial class EventCommandChangeHair ++ { ++ /// ++ /// Required designer variable. ++ /// ++ private System.ComponentModel.IContainer components = null; ++ ++ /// ++ /// Clean up any resources being used. ++ /// ++ /// true if managed resources should be disposed; otherwise, false. ++ protected override void Dispose(bool disposing) ++ { ++ if (disposing && (components != null)) ++ { ++ components.Dispose(); ++ } ++ base.Dispose(disposing); ++ } ++ ++ #region Component Designer generated code ++ ++ /// ++ /// Required method for Designer support - do not modify ++ /// the contents of this method with the code editor. ++ /// ++ private void InitializeComponent() ++ { ++ System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(EventCommandChangeHair)); ++ this.grpChangeHair = new DarkUI.Controls.DarkGroupBox(); ++ this.pnlPreview = new System.Windows.Forms.Panel(); ++ this.cmbHair = new DarkUI.Controls.DarkComboBox(); ++ this.lblHair = new System.Windows.Forms.Label(); ++ this.btnCancel = new DarkUI.Controls.DarkButton(); ++ this.btnSave = new DarkUI.Controls.DarkButton(); ++ this.grpChangeHair.SuspendLayout(); ++ this.SuspendLayout(); ++ // ++ // grpChangeHair ++ // ++ this.grpChangeHair.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(63)))), ((int)(((byte)(65))))); ++ this.grpChangeHair.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(90)))), ((int)(((byte)(90)))), ((int)(((byte)(90))))); ++ this.grpChangeHair.Controls.Add(this.pnlPreview); ++ this.grpChangeHair.Controls.Add(this.cmbHair); ++ this.grpChangeHair.Controls.Add(this.lblHair); ++ this.grpChangeHair.Controls.Add(this.btnCancel); ++ this.grpChangeHair.Controls.Add(this.btnSave); ++ this.grpChangeHair.ForeColor = System.Drawing.Color.Gainsboro; ++ this.grpChangeHair.Location = new System.Drawing.Point(3, 3); ++ this.grpChangeHair.Name = "grpChangeHair"; ++ this.grpChangeHair.Size = new System.Drawing.Size(259, 126); ++ this.grpChangeHair.TabIndex = 17; ++ this.grpChangeHair.TabStop = false; ++ this.grpChangeHair.Text = "Change Hair:"; ++ // ++ // pnlPreview ++ // ++ this.pnlPreview.Location = new System.Drawing.Point(170, 19); ++ this.pnlPreview.Name = "pnlPreview"; ++ this.pnlPreview.Size = new System.Drawing.Size(83, 101); ++ this.pnlPreview.TabIndex = 23; ++ // ++ // cmbHair ++ // ++ this.cmbHair.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(69)))), ((int)(((byte)(73)))), ((int)(((byte)(74))))); ++ this.cmbHair.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(90)))), ((int)(((byte)(90)))), ((int)(((byte)(90))))); ++ this.cmbHair.BorderStyle = System.Windows.Forms.ButtonBorderStyle.Solid; ++ this.cmbHair.ButtonColor = System.Drawing.Color.FromArgb(((int)(((byte)(43)))), ((int)(((byte)(43)))), ((int)(((byte)(43))))); ++ this.cmbHair.ButtonIcon = ((System.Drawing.Bitmap)(resources.GetObject("cmbHair.ButtonIcon"))); ++ this.cmbHair.DrawDropdownHoverOutline = false; ++ this.cmbHair.DrawFocusRectangle = false; ++ this.cmbHair.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed; ++ this.cmbHair.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; ++ this.cmbHair.FlatStyle = System.Windows.Forms.FlatStyle.Flat; ++ this.cmbHair.ForeColor = System.Drawing.Color.Gainsboro; ++ this.cmbHair.FormattingEnabled = true; ++ this.cmbHair.Location = new System.Drawing.Point(47, 19); ++ this.cmbHair.Name = "cmbHair"; ++ this.cmbHair.Size = new System.Drawing.Size(117, 21); ++ this.cmbHair.TabIndex = 22; ++ this.cmbHair.Text = null; ++ this.cmbHair.TextPadding = new System.Windows.Forms.Padding(2); ++ this.cmbHair.SelectedIndexChanged += new System.EventHandler(this.cmbSprite_SelectedIndexChanged); ++ // ++ // lblHair ++ // ++ this.lblHair.AutoSize = true; ++ this.lblHair.Location = new System.Drawing.Point(4, 22); ++ this.lblHair.Name = "lblHair"; ++ this.lblHair.Size = new System.Drawing.Size(29, 13); ++ this.lblHair.TabIndex = 21; ++ this.lblHair.Text = "Hair:"; ++ // ++ // btnCancel ++ // ++ this.btnCancel.Location = new System.Drawing.Point(89, 97); ++ this.btnCancel.Name = "btnCancel"; ++ this.btnCancel.Padding = new System.Windows.Forms.Padding(5); ++ this.btnCancel.Size = new System.Drawing.Size(75, 23); ++ this.btnCancel.TabIndex = 20; ++ this.btnCancel.Text = "Cancel"; ++ this.btnCancel.Click += new System.EventHandler(this.btnCancel_Click); ++ // ++ // btnSave ++ // ++ this.btnSave.Location = new System.Drawing.Point(7, 97); ++ this.btnSave.Name = "btnSave"; ++ this.btnSave.Padding = new System.Windows.Forms.Padding(5); ++ this.btnSave.Size = new System.Drawing.Size(75, 23); ++ this.btnSave.TabIndex = 19; ++ this.btnSave.Text = "Ok"; ++ this.btnSave.Click += new System.EventHandler(this.btnSave_Click); ++ // ++ // EventCommandChangeHair ++ // ++ this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); ++ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; ++ this.AutoSize = true; ++ this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(48))))); ++ this.Controls.Add(this.grpChangeHair); ++ this.Name = "EventCommandChangeHair"; ++ this.Size = new System.Drawing.Size(268, 132); ++ this.grpChangeHair.ResumeLayout(false); ++ this.grpChangeHair.PerformLayout(); ++ this.ResumeLayout(false); ++ ++ } ++ ++ #endregion ++ ++ private DarkGroupBox grpChangeHair; ++ private DarkButton btnCancel; ++ private DarkButton btnSave; ++ private System.Windows.Forms.Label lblHair; ++ private DarkComboBox cmbHair; ++ private System.Windows.Forms.Panel pnlPreview; ++ } ++} +diff --git a/Intersect.Editor/Forms/Editors/Events/Event Commands/EventCommand_ChangeHair.cs b/Intersect.Editor/Forms/Editors/Events/Event Commands/EventCommand_ChangeHair.cs +new file mode 100644 +index 00000000..51f9180f +--- /dev/null ++++ b/Intersect.Editor/Forms/Editors/Events/Event Commands/EventCommand_ChangeHair.cs +@@ -0,0 +1,87 @@ ++using System; ++using System.Drawing; ++using System.IO; ++using System.Windows.Forms; ++ ++using Intersect.Editor.Content; ++using Intersect.Editor.Localization; ++using Intersect.GameObjects.Events.Commands; ++ ++namespace Intersect.Editor.Forms.Editors.Events.Event_Commands ++{ ++ ++ public partial class EventCommandChangeHair : UserControl ++ { ++ ++ private readonly FrmEvent mEventEditor; ++ ++ private ChangeHairCommand mMyCommand; ++ ++ public EventCommandChangeHair(ChangeHairCommand refCommand, FrmEvent editor) ++ { ++ InitializeComponent(); ++ mMyCommand = refCommand; ++ mEventEditor = editor; ++ cmbHair.Items.Clear(); ++ cmbHair.Items.AddRange(GameContentManager.GetSmartSortedTextureNames(GameContentManager.TextureType.Hairs)); ++ if (cmbHair.Items.IndexOf(mMyCommand.Hair) > -1) ++ { ++ cmbHair.SelectedIndex = cmbHair.Items.IndexOf(mMyCommand.Hair); ++ } ++ else ++ { ++ cmbHair.SelectedIndex = 0; ++ } ++ ++ UpdatePreview(); ++ InitLocalization(); ++ } ++ ++ private void InitLocalization() ++ { ++ grpChangeHair.Text = Strings.EventChangeHair.title; ++ lblHair.Text = Strings.EventChangeHair.label; ++ btnSave.Text = Strings.EventChangeHair.okay; ++ btnCancel.Text = Strings.EventChangeHair.cancel; ++ } ++ ++ private void UpdatePreview() ++ { ++ var destBitmap = new Bitmap(pnlPreview.Width, pnlPreview.Height); ++ var g = Graphics.FromImage(destBitmap); ++ g.Clear(System.Drawing.Color.Black); ++ if (File.Exists("resources/hairs/" + cmbHair.Text)) ++ { ++ var sourceBitmap = new Bitmap("resources/hairs/" + cmbHair.Text); ++ g.DrawImage( ++ sourceBitmap, ++ new Rectangle( ++ pnlPreview.Width / 2 - sourceBitmap.Width / 8, pnlPreview.Height / 2 - sourceBitmap.Height / 8, ++ sourceBitmap.Width / 4, sourceBitmap.Height / 4 ++ ), new Rectangle(0, 0, sourceBitmap.Width / 4, sourceBitmap.Height / 4), GraphicsUnit.Pixel ++ ); ++ } ++ ++ g.Dispose(); ++ pnlPreview.BackgroundImage = destBitmap; ++ } ++ ++ private void btnSave_Click(object sender, EventArgs e) ++ { ++ mMyCommand.Hair = cmbHair.Text; ++ mEventEditor.FinishCommandEdit(); ++ } ++ ++ private void btnCancel_Click(object sender, EventArgs e) ++ { ++ mEventEditor.CancelCommandEdit(); ++ } ++ ++ private void cmbSprite_SelectedIndexChanged(object sender, EventArgs e) ++ { ++ UpdatePreview(); ++ } ++ ++ } ++ ++} +diff --git a/Intersect.Editor/Forms/Editors/Events/Event Commands/EventCommand_ChangeHair.resx b/Intersect.Editor/Forms/Editors/Events/Event Commands/EventCommand_ChangeHair.resx +new file mode 100644 +index 00000000..7b5aa913 +--- /dev/null ++++ b/Intersect.Editor/Forms/Editors/Events/Event Commands/EventCommand_ChangeHair.resx +@@ -0,0 +1,128 @@ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ text/microsoft-resx ++ ++ ++ 2.0 ++ ++ ++ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 ++ ++ ++ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 ++ ++ ++ ++ ++ iVBORw0KGgoAAAANSUhEUgAAAAkAAAAFCAYAAACXU8ZrAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1 ++ MAAA6mAAADqYAAAXb5JfxUYAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAAvSURBVBhXY4iJiflPCDP8//8f ++ r0KQPFgRLoUwObgiEMamAIRRFIEwuoL///8zAAC5cW+geGnZqAAAAABJRU5ErkJggg== ++ ++ ++ +\ No newline at end of file +diff --git a/Intersect.Editor/Forms/Editors/Events/frmEvent.Designer.cs b/Intersect.Editor/Forms/Editors/Events/frmEvent.Designer.cs +index e9223a50..66f976e9 100644 +--- a/Intersect.Editor/Forms/Editors/Events/frmEvent.Designer.cs ++++ b/Intersect.Editor/Forms/Editors/Events/frmEvent.Designer.cs +@@ -32,25 +32,25 @@ protected override void Dispose(bool disposing) + /// + private void InitializeComponent() + { +- this.components = new System.ComponentModel.Container(); +- System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FrmEvent)); +- System.Windows.Forms.TreeNode treeNode1 = new System.Windows.Forms.TreeNode("Show Text"); +- System.Windows.Forms.TreeNode treeNode2 = new System.Windows.Forms.TreeNode("Show Options"); +- System.Windows.Forms.TreeNode treeNode3 = new System.Windows.Forms.TreeNode("Input Variable"); +- System.Windows.Forms.TreeNode treeNode4 = new System.Windows.Forms.TreeNode("Add Chatbox Text"); +- System.Windows.Forms.TreeNode treeNode5 = new System.Windows.Forms.TreeNode("Dialogue", new System.Windows.Forms.TreeNode[] { ++ this.components = new System.ComponentModel.Container(); ++ System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FrmEvent)); ++ System.Windows.Forms.TreeNode treeNode1 = new System.Windows.Forms.TreeNode("Show Text"); ++ System.Windows.Forms.TreeNode treeNode2 = new System.Windows.Forms.TreeNode("Show Options"); ++ System.Windows.Forms.TreeNode treeNode3 = new System.Windows.Forms.TreeNode("Input Variable"); ++ System.Windows.Forms.TreeNode treeNode4 = new System.Windows.Forms.TreeNode("Add Chatbox Text"); ++ System.Windows.Forms.TreeNode treeNode5 = new System.Windows.Forms.TreeNode("Dialogue", new System.Windows.Forms.TreeNode[] { + treeNode1, + treeNode2, + treeNode3, + treeNode4}); +- System.Windows.Forms.TreeNode treeNode6 = new System.Windows.Forms.TreeNode("Set Variable"); +- System.Windows.Forms.TreeNode treeNode7 = new System.Windows.Forms.TreeNode("Set Self Switch"); +- System.Windows.Forms.TreeNode treeNode8 = new System.Windows.Forms.TreeNode("Conditional Branch"); +- System.Windows.Forms.TreeNode treeNode9 = new System.Windows.Forms.TreeNode("Exit Event Process"); +- System.Windows.Forms.TreeNode treeNode10 = new System.Windows.Forms.TreeNode("Label"); +- System.Windows.Forms.TreeNode treeNode11 = new System.Windows.Forms.TreeNode("Go To Label"); +- System.Windows.Forms.TreeNode treeNode12 = new System.Windows.Forms.TreeNode("Start Common Event"); +- System.Windows.Forms.TreeNode treeNode13 = new System.Windows.Forms.TreeNode("Logic Flow", new System.Windows.Forms.TreeNode[] { ++ System.Windows.Forms.TreeNode treeNode6 = new System.Windows.Forms.TreeNode("Set Variable"); ++ System.Windows.Forms.TreeNode treeNode7 = new System.Windows.Forms.TreeNode("Set Self Switch"); ++ System.Windows.Forms.TreeNode treeNode8 = new System.Windows.Forms.TreeNode("Conditional Branch"); ++ System.Windows.Forms.TreeNode treeNode9 = new System.Windows.Forms.TreeNode("Exit Event Process"); ++ System.Windows.Forms.TreeNode treeNode10 = new System.Windows.Forms.TreeNode("Label"); ++ System.Windows.Forms.TreeNode treeNode11 = new System.Windows.Forms.TreeNode("Go To Label"); ++ System.Windows.Forms.TreeNode treeNode12 = new System.Windows.Forms.TreeNode("Start Common Event"); ++ System.Windows.Forms.TreeNode treeNode13 = new System.Windows.Forms.TreeNode("Logic Flow", new System.Windows.Forms.TreeNode[] { + treeNode6, + treeNode7, + treeNode8, +@@ -58,22 +58,23 @@ private void InitializeComponent() + treeNode10, + treeNode11, + treeNode12}); +- System.Windows.Forms.TreeNode treeNode14 = new System.Windows.Forms.TreeNode("Restore HP"); +- System.Windows.Forms.TreeNode treeNode15 = new System.Windows.Forms.TreeNode("Restore MP"); +- System.Windows.Forms.TreeNode treeNode16 = new System.Windows.Forms.TreeNode("Level Up"); +- System.Windows.Forms.TreeNode treeNode17 = new System.Windows.Forms.TreeNode("Give Experience"); +- System.Windows.Forms.TreeNode treeNode18 = new System.Windows.Forms.TreeNode("Change Level"); +- System.Windows.Forms.TreeNode treeNode19 = new System.Windows.Forms.TreeNode("Change Spells"); +- System.Windows.Forms.TreeNode treeNode20 = new System.Windows.Forms.TreeNode("Change Items"); +- System.Windows.Forms.TreeNode treeNode21 = new System.Windows.Forms.TreeNode("Change Sprite"); +- System.Windows.Forms.TreeNode treeNode22 = new System.Windows.Forms.TreeNode("Change Face"); +- System.Windows.Forms.TreeNode treeNode23 = new System.Windows.Forms.TreeNode("Change Gender"); +- System.Windows.Forms.TreeNode treeNode24 = new System.Windows.Forms.TreeNode("Set Access"); +- System.Windows.Forms.TreeNode treeNode25 = new System.Windows.Forms.TreeNode("Change Class"); +- System.Windows.Forms.TreeNode treeNode26 = new System.Windows.Forms.TreeNode("Equip Item"); +- System.Windows.Forms.TreeNode treeNode27 = new System.Windows.Forms.TreeNode("Change Name Color"); +- System.Windows.Forms.TreeNode treeNode28 = new System.Windows.Forms.TreeNode("Change Player Label"); +- System.Windows.Forms.TreeNode treeNode29 = new System.Windows.Forms.TreeNode("Player Control", new System.Windows.Forms.TreeNode[] { ++ System.Windows.Forms.TreeNode treeNode14 = new System.Windows.Forms.TreeNode("Restore HP"); ++ System.Windows.Forms.TreeNode treeNode15 = new System.Windows.Forms.TreeNode("Restore MP"); ++ System.Windows.Forms.TreeNode treeNode16 = new System.Windows.Forms.TreeNode("Level Up"); ++ System.Windows.Forms.TreeNode treeNode17 = new System.Windows.Forms.TreeNode("Give Experience"); ++ System.Windows.Forms.TreeNode treeNode18 = new System.Windows.Forms.TreeNode("Change Level"); ++ System.Windows.Forms.TreeNode treeNode19 = new System.Windows.Forms.TreeNode("Change Spells"); ++ System.Windows.Forms.TreeNode treeNode20 = new System.Windows.Forms.TreeNode("Change Items"); ++ System.Windows.Forms.TreeNode treeNode21 = new System.Windows.Forms.TreeNode("Change Sprite"); ++ System.Windows.Forms.TreeNode treeNode22 = new System.Windows.Forms.TreeNode("Change Face"); ++ System.Windows.Forms.TreeNode treeNode23 = new System.Windows.Forms.TreeNode("Change Hair"); ++ System.Windows.Forms.TreeNode treeNode24 = new System.Windows.Forms.TreeNode("Change Gender"); ++ System.Windows.Forms.TreeNode treeNode25 = new System.Windows.Forms.TreeNode("Set Access"); ++ System.Windows.Forms.TreeNode treeNode26 = new System.Windows.Forms.TreeNode("Change Class"); ++ System.Windows.Forms.TreeNode treeNode27 = new System.Windows.Forms.TreeNode("Equip Item"); ++ System.Windows.Forms.TreeNode treeNode28 = new System.Windows.Forms.TreeNode("Change Name Color"); ++ System.Windows.Forms.TreeNode treeNode29 = new System.Windows.Forms.TreeNode("Change Player Label"); ++ System.Windows.Forms.TreeNode treeNode30 = new System.Windows.Forms.TreeNode("Player Control", new System.Windows.Forms.TreeNode[] { + treeNode14, + treeNode15, + treeNode16, +@@ -88,18 +89,18 @@ private void InitializeComponent() + treeNode25, + treeNode26, + treeNode27, +- treeNode28}); +- System.Windows.Forms.TreeNode treeNode30 = new System.Windows.Forms.TreeNode("Warp Player"); +- System.Windows.Forms.TreeNode treeNode31 = new System.Windows.Forms.TreeNode("Set Move Route"); +- System.Windows.Forms.TreeNode treeNode32 = new System.Windows.Forms.TreeNode("Wait for Route Completion"); +- System.Windows.Forms.TreeNode treeNode33 = new System.Windows.Forms.TreeNode("Hold Player"); +- System.Windows.Forms.TreeNode treeNode34 = new System.Windows.Forms.TreeNode("Release Player"); +- System.Windows.Forms.TreeNode treeNode35 = new System.Windows.Forms.TreeNode("Spawn NPC"); +- System.Windows.Forms.TreeNode treeNode36 = new System.Windows.Forms.TreeNode("Despawn NPC"); +- System.Windows.Forms.TreeNode treeNode37 = new System.Windows.Forms.TreeNode("Hide Player"); +- System.Windows.Forms.TreeNode treeNode38 = new System.Windows.Forms.TreeNode("Show Player"); +- System.Windows.Forms.TreeNode treeNode39 = new System.Windows.Forms.TreeNode("Movement", new System.Windows.Forms.TreeNode[] { +- treeNode30, ++ treeNode28, ++ treeNode29}); ++ System.Windows.Forms.TreeNode treeNode31 = new System.Windows.Forms.TreeNode("Warp Player"); ++ System.Windows.Forms.TreeNode treeNode32 = new System.Windows.Forms.TreeNode("Set Move Route"); ++ System.Windows.Forms.TreeNode treeNode33 = new System.Windows.Forms.TreeNode("Wait for Route Completion"); ++ System.Windows.Forms.TreeNode treeNode34 = new System.Windows.Forms.TreeNode("Hold Player"); ++ System.Windows.Forms.TreeNode treeNode35 = new System.Windows.Forms.TreeNode("Release Player"); ++ System.Windows.Forms.TreeNode treeNode36 = new System.Windows.Forms.TreeNode("Spawn NPC"); ++ System.Windows.Forms.TreeNode treeNode37 = new System.Windows.Forms.TreeNode("Despawn NPC"); ++ System.Windows.Forms.TreeNode treeNode38 = new System.Windows.Forms.TreeNode("Hide Player"); ++ System.Windows.Forms.TreeNode treeNode39 = new System.Windows.Forms.TreeNode("Show Player"); ++ System.Windows.Forms.TreeNode treeNode40 = new System.Windows.Forms.TreeNode("Movement", new System.Windows.Forms.TreeNode[] { + treeNode31, + treeNode32, + treeNode33, +@@ -107,1192 +108,1196 @@ private void InitializeComponent() + treeNode35, + treeNode36, + treeNode37, +- treeNode38}); +- System.Windows.Forms.TreeNode treeNode40 = new System.Windows.Forms.TreeNode("Play Animation"); +- System.Windows.Forms.TreeNode treeNode41 = new System.Windows.Forms.TreeNode("Play BGM"); +- System.Windows.Forms.TreeNode treeNode42 = new System.Windows.Forms.TreeNode("Fadeout BGM"); +- System.Windows.Forms.TreeNode treeNode43 = new System.Windows.Forms.TreeNode("Play Sound"); +- System.Windows.Forms.TreeNode treeNode44 = new System.Windows.Forms.TreeNode("Stop Sounds"); +- System.Windows.Forms.TreeNode treeNode45 = new System.Windows.Forms.TreeNode("Show Picture"); +- System.Windows.Forms.TreeNode treeNode46 = new System.Windows.Forms.TreeNode("Hide Picture"); +- System.Windows.Forms.TreeNode treeNode47 = new System.Windows.Forms.TreeNode("Special Effects", new System.Windows.Forms.TreeNode[] { +- treeNode40, ++ treeNode38, ++ treeNode39}); ++ System.Windows.Forms.TreeNode treeNode41 = new System.Windows.Forms.TreeNode("Play Animation"); ++ System.Windows.Forms.TreeNode treeNode42 = new System.Windows.Forms.TreeNode("Play BGM"); ++ System.Windows.Forms.TreeNode treeNode43 = new System.Windows.Forms.TreeNode("Fadeout BGM"); ++ System.Windows.Forms.TreeNode treeNode44 = new System.Windows.Forms.TreeNode("Play Sound"); ++ System.Windows.Forms.TreeNode treeNode45 = new System.Windows.Forms.TreeNode("Stop Sounds"); ++ System.Windows.Forms.TreeNode treeNode46 = new System.Windows.Forms.TreeNode("Show Picture"); ++ System.Windows.Forms.TreeNode treeNode47 = new System.Windows.Forms.TreeNode("Hide Picture"); ++ System.Windows.Forms.TreeNode treeNode48 = new System.Windows.Forms.TreeNode("Special Effects", new System.Windows.Forms.TreeNode[] { + treeNode41, + treeNode42, + treeNode43, + treeNode44, + treeNode45, +- treeNode46}); +- System.Windows.Forms.TreeNode treeNode48 = new System.Windows.Forms.TreeNode("Start Quest"); +- System.Windows.Forms.TreeNode treeNode49 = new System.Windows.Forms.TreeNode("Complete Quest Task"); +- System.Windows.Forms.TreeNode treeNode50 = new System.Windows.Forms.TreeNode("End Quest"); +- System.Windows.Forms.TreeNode treeNode51 = new System.Windows.Forms.TreeNode("Quest Control", new System.Windows.Forms.TreeNode[] { +- treeNode48, ++ treeNode46, ++ treeNode47}); ++ System.Windows.Forms.TreeNode treeNode49 = new System.Windows.Forms.TreeNode("Start Quest"); ++ System.Windows.Forms.TreeNode treeNode50 = new System.Windows.Forms.TreeNode("Complete Quest Task"); ++ System.Windows.Forms.TreeNode treeNode51 = new System.Windows.Forms.TreeNode("End Quest"); ++ System.Windows.Forms.TreeNode treeNode52 = new System.Windows.Forms.TreeNode("Quest Control", new System.Windows.Forms.TreeNode[] { + treeNode49, +- treeNode50}); +- System.Windows.Forms.TreeNode treeNode52 = new System.Windows.Forms.TreeNode("Wait..."); +- System.Windows.Forms.TreeNode treeNode53 = new System.Windows.Forms.TreeNode("Etc", new System.Windows.Forms.TreeNode[] { +- treeNode52}); +- System.Windows.Forms.TreeNode treeNode54 = new System.Windows.Forms.TreeNode("Open Bank"); +- System.Windows.Forms.TreeNode treeNode55 = new System.Windows.Forms.TreeNode("Open Shop"); +- System.Windows.Forms.TreeNode treeNode56 = new System.Windows.Forms.TreeNode("Open Crafting Station"); +- System.Windows.Forms.TreeNode treeNode57 = new System.Windows.Forms.TreeNode("Shop and Bank", new System.Windows.Forms.TreeNode[] { +- treeNode54, ++ treeNode50, ++ treeNode51}); ++ System.Windows.Forms.TreeNode treeNode53 = new System.Windows.Forms.TreeNode("Wait..."); ++ System.Windows.Forms.TreeNode treeNode54 = new System.Windows.Forms.TreeNode("Etc", new System.Windows.Forms.TreeNode[] { ++ treeNode53}); ++ System.Windows.Forms.TreeNode treeNode55 = new System.Windows.Forms.TreeNode("Open Bank"); ++ System.Windows.Forms.TreeNode treeNode56 = new System.Windows.Forms.TreeNode("Open Shop"); ++ System.Windows.Forms.TreeNode treeNode57 = new System.Windows.Forms.TreeNode("Open Crafting Station"); ++ System.Windows.Forms.TreeNode treeNode58 = new System.Windows.Forms.TreeNode("Shop and Bank", new System.Windows.Forms.TreeNode[] { + treeNode55, +- treeNode56}); +- this.lblName = new System.Windows.Forms.Label(); +- this.txtEventname = new DarkUI.Controls.DarkTextBox(); +- this.grpEntityOptions = new DarkUI.Controls.DarkGroupBox(); +- this.grpExtra = new DarkUI.Controls.DarkGroupBox(); +- this.chkInteractionFreeze = new DarkUI.Controls.DarkCheckBox(); +- this.chkWalkingAnimation = new DarkUI.Controls.DarkCheckBox(); +- this.chkDirectionFix = new DarkUI.Controls.DarkCheckBox(); +- this.chkHideName = new DarkUI.Controls.DarkCheckBox(); +- this.chkWalkThrough = new DarkUI.Controls.DarkCheckBox(); +- this.grpInspector = new DarkUI.Controls.DarkGroupBox(); +- this.pnlFacePreview = new System.Windows.Forms.Panel(); +- this.lblInspectorDesc = new System.Windows.Forms.Label(); +- this.txtDesc = new DarkUI.Controls.DarkTextBox(); +- this.chkDisableInspector = new DarkUI.Controls.DarkCheckBox(); +- this.cmbPreviewFace = new DarkUI.Controls.DarkComboBox(); +- this.lblFace = new System.Windows.Forms.Label(); +- this.grpPreview = new DarkUI.Controls.DarkGroupBox(); +- this.lblAnimation = new System.Windows.Forms.Label(); +- this.cmbAnimation = new DarkUI.Controls.DarkComboBox(); +- this.pnlPreview = new System.Windows.Forms.Panel(); +- this.grpMovement = new DarkUI.Controls.DarkGroupBox(); +- this.lblLayer = new System.Windows.Forms.Label(); +- this.cmbLayering = new DarkUI.Controls.DarkComboBox(); +- this.cmbEventFreq = new DarkUI.Controls.DarkComboBox(); +- this.cmbEventSpeed = new DarkUI.Controls.DarkComboBox(); +- this.lblFreq = new System.Windows.Forms.Label(); +- this.lblSpeed = new System.Windows.Forms.Label(); +- this.btnSetRoute = new DarkUI.Controls.DarkButton(); +- this.lblType = new System.Windows.Forms.Label(); +- this.cmbMoveType = new DarkUI.Controls.DarkComboBox(); +- this.grpTriggers = new DarkUI.Controls.DarkGroupBox(); +- this.txtCommand = new DarkUI.Controls.DarkTextBox(); +- this.lblCommand = new System.Windows.Forms.Label(); +- this.lblTriggerVal = new System.Windows.Forms.Label(); +- this.cmbTriggerVal = new DarkUI.Controls.DarkComboBox(); +- this.cmbTrigger = new DarkUI.Controls.DarkComboBox(); +- this.grpEventConditions = new DarkUI.Controls.DarkGroupBox(); +- this.btnEditConditions = new DarkUI.Controls.DarkButton(); +- this.grpNewCommands = new DarkUI.Controls.DarkGroupBox(); +- this.lblCloseCommands = new System.Windows.Forms.Label(); +- this.lstCommands = new System.Windows.Forms.TreeView(); +- this.grpEventCommands = new DarkUI.Controls.DarkGroupBox(); +- this.lstEventCommands = new System.Windows.Forms.ListBox(); +- this.grpCreateCommands = new DarkUI.Controls.DarkGroupBox(); +- this.btnSave = new DarkUI.Controls.DarkButton(); +- this.btnCancel = new DarkUI.Controls.DarkButton(); +- this.commandMenu = new System.Windows.Forms.ContextMenuStrip(this.components); +- this.btnInsert = new System.Windows.Forms.ToolStripMenuItem(); +- this.btnEdit = new System.Windows.Forms.ToolStripMenuItem(); +- this.btnCut = new System.Windows.Forms.ToolStripMenuItem(); +- this.btnCopy = new System.Windows.Forms.ToolStripMenuItem(); +- this.btnPaste = new System.Windows.Forms.ToolStripMenuItem(); +- this.btnDelete = new System.Windows.Forms.ToolStripMenuItem(); +- this.grpPageOptions = new DarkUI.Controls.DarkGroupBox(); +- this.btnClearPage = new DarkUI.Controls.DarkButton(); +- this.btnDeletePage = new DarkUI.Controls.DarkButton(); +- this.btnPastePage = new DarkUI.Controls.DarkButton(); +- this.btnCopyPage = new DarkUI.Controls.DarkButton(); +- this.btnNewPage = new DarkUI.Controls.DarkButton(); +- this.grpGeneral = new DarkUI.Controls.DarkGroupBox(); +- this.chkIsGlobal = new DarkUI.Controls.DarkCheckBox(); +- this.pnlTabsContainer = new System.Windows.Forms.Panel(); +- this.pnlTabs = new System.Windows.Forms.Panel(); +- this.btnTabsRight = new DarkUI.Controls.DarkButton(); +- this.btnTabsLeft = new DarkUI.Controls.DarkButton(); +- this.panel1 = new System.Windows.Forms.Panel(); +- this.grpEntityOptions.SuspendLayout(); +- this.grpExtra.SuspendLayout(); +- this.grpInspector.SuspendLayout(); +- this.grpPreview.SuspendLayout(); +- this.grpMovement.SuspendLayout(); +- this.grpTriggers.SuspendLayout(); +- this.grpEventConditions.SuspendLayout(); +- this.grpNewCommands.SuspendLayout(); +- this.grpEventCommands.SuspendLayout(); +- this.commandMenu.SuspendLayout(); +- this.grpPageOptions.SuspendLayout(); +- this.grpGeneral.SuspendLayout(); +- this.pnlTabsContainer.SuspendLayout(); +- this.SuspendLayout(); +- // +- // lblName +- // +- this.lblName.AutoSize = true; +- this.lblName.Location = new System.Drawing.Point(6, 22); +- this.lblName.Name = "lblName"; +- this.lblName.Size = new System.Drawing.Size(38, 13); +- this.lblName.TabIndex = 1; +- this.lblName.Text = "Name:"; +- // +- // txtEventname +- // +- this.txtEventname.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(69)))), ((int)(((byte)(73)))), ((int)(((byte)(74))))); +- this.txtEventname.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; +- this.txtEventname.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(220)))), ((int)(((byte)(220)))), ((int)(((byte)(220))))); +- this.txtEventname.Location = new System.Drawing.Point(48, 19); +- this.txtEventname.Name = "txtEventname"; +- this.txtEventname.Size = new System.Drawing.Size(124, 20); +- this.txtEventname.TabIndex = 2; +- this.txtEventname.TextChanged += new System.EventHandler(this.txtEventname_TextChanged); +- // +- // grpEntityOptions +- // +- this.grpEntityOptions.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(48))))); +- this.grpEntityOptions.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(90)))), ((int)(((byte)(90)))), ((int)(((byte)(90))))); +- this.grpEntityOptions.Controls.Add(this.grpExtra); +- this.grpEntityOptions.Controls.Add(this.grpInspector); +- this.grpEntityOptions.Controls.Add(this.grpPreview); +- this.grpEntityOptions.Controls.Add(this.grpMovement); +- this.grpEntityOptions.ForeColor = System.Drawing.Color.Gainsboro; +- this.grpEntityOptions.Location = new System.Drawing.Point(21, 150); +- this.grpEntityOptions.Name = "grpEntityOptions"; +- this.grpEntityOptions.Size = new System.Drawing.Size(326, 423); +- this.grpEntityOptions.TabIndex = 12; +- this.grpEntityOptions.TabStop = false; +- this.grpEntityOptions.Text = "Entity Options"; +- // +- // grpExtra +- // +- this.grpExtra.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(48))))); +- this.grpExtra.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(90)))), ((int)(((byte)(90)))), ((int)(((byte)(90))))); +- this.grpExtra.Controls.Add(this.chkInteractionFreeze); +- this.grpExtra.Controls.Add(this.chkWalkingAnimation); +- this.grpExtra.Controls.Add(this.chkDirectionFix); +- this.grpExtra.Controls.Add(this.chkHideName); +- this.grpExtra.Controls.Add(this.chkWalkThrough); +- this.grpExtra.ForeColor = System.Drawing.Color.Gainsboro; +- this.grpExtra.Location = new System.Drawing.Point(6, 297); +- this.grpExtra.Name = "grpExtra"; +- this.grpExtra.Size = new System.Drawing.Size(315, 64); +- this.grpExtra.TabIndex = 9; +- this.grpExtra.TabStop = false; +- this.grpExtra.Text = "Extra"; +- // +- // chkInteractionFreeze +- // +- this.chkInteractionFreeze.AutoSize = true; +- this.chkInteractionFreeze.Location = new System.Drawing.Point(6, 41); +- this.chkInteractionFreeze.Name = "chkInteractionFreeze"; +- this.chkInteractionFreeze.Size = new System.Drawing.Size(111, 17); +- this.chkInteractionFreeze.TabIndex = 6; +- this.chkInteractionFreeze.Text = "Interaction Freeze"; +- this.chkInteractionFreeze.CheckedChanged += new System.EventHandler(this.chkInteractionFreeze_CheckedChanged); +- // +- // chkWalkingAnimation +- // +- this.chkWalkingAnimation.AutoSize = true; +- this.chkWalkingAnimation.Location = new System.Drawing.Point(214, 19); +- this.chkWalkingAnimation.Name = "chkWalkingAnimation"; +- this.chkWalkingAnimation.Size = new System.Drawing.Size(91, 17); +- this.chkWalkingAnimation.TabIndex = 5; +- this.chkWalkingAnimation.Text = "Walking Anim"; +- this.chkWalkingAnimation.CheckedChanged += new System.EventHandler(this.chkWalkingAnimation_CheckedChanged); +- // +- // chkDirectionFix +- // +- this.chkDirectionFix.AutoSize = true; +- this.chkDirectionFix.Location = new System.Drawing.Point(156, 19); +- this.chkDirectionFix.Name = "chkDirectionFix"; +- this.chkDirectionFix.Size = new System.Drawing.Size(55, 17); +- this.chkDirectionFix.TabIndex = 4; +- this.chkDirectionFix.Text = "Dir Fix"; +- this.chkDirectionFix.CheckedChanged += new System.EventHandler(this.chkDirectionFix_CheckedChanged); +- // +- // chkHideName +- // +- this.chkHideName.AutoSize = true; +- this.chkHideName.Location = new System.Drawing.Point(75, 19); +- this.chkHideName.Name = "chkHideName"; +- this.chkHideName.Size = new System.Drawing.Size(79, 17); +- this.chkHideName.TabIndex = 3; +- this.chkHideName.Text = "Hide Name"; +- this.chkHideName.CheckedChanged += new System.EventHandler(this.chkHideName_CheckedChanged); +- // +- // chkWalkThrough +- // +- this.chkWalkThrough.AutoSize = true; +- this.chkWalkThrough.Location = new System.Drawing.Point(6, 19); +- this.chkWalkThrough.Name = "chkWalkThrough"; +- this.chkWalkThrough.Size = new System.Drawing.Size(69, 17); +- this.chkWalkThrough.TabIndex = 2; +- this.chkWalkThrough.Text = "Passable"; +- this.chkWalkThrough.CheckedChanged += new System.EventHandler(this.chkWalkThrough_CheckedChanged); +- // +- // grpInspector +- // +- this.grpInspector.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(48))))); +- this.grpInspector.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(90)))), ((int)(((byte)(90)))), ((int)(((byte)(90))))); +- this.grpInspector.Controls.Add(this.pnlFacePreview); +- this.grpInspector.Controls.Add(this.lblInspectorDesc); +- this.grpInspector.Controls.Add(this.txtDesc); +- this.grpInspector.Controls.Add(this.chkDisableInspector); +- this.grpInspector.Controls.Add(this.cmbPreviewFace); +- this.grpInspector.Controls.Add(this.lblFace); +- this.grpInspector.ForeColor = System.Drawing.Color.Gainsboro; +- this.grpInspector.Location = new System.Drawing.Point(6, 179); +- this.grpInspector.Name = "grpInspector"; +- this.grpInspector.Size = new System.Drawing.Size(316, 117); +- this.grpInspector.TabIndex = 7; +- this.grpInspector.TabStop = false; +- this.grpInspector.Text = "Entity Inspector Options"; +- // +- // pnlFacePreview +- // +- this.pnlFacePreview.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch; +- this.pnlFacePreview.Location = new System.Drawing.Point(9, 46); +- this.pnlFacePreview.Name = "pnlFacePreview"; +- this.pnlFacePreview.Size = new System.Drawing.Size(64, 64); +- this.pnlFacePreview.TabIndex = 12; +- // +- // lblInspectorDesc +- // +- this.lblInspectorDesc.Location = new System.Drawing.Point(79, 42); +- this.lblInspectorDesc.Name = "lblInspectorDesc"; +- this.lblInspectorDesc.Size = new System.Drawing.Size(112, 19); +- this.lblInspectorDesc.TabIndex = 11; +- this.lblInspectorDesc.Text = "Inspector Description:"; +- // +- // txtDesc +- // +- this.txtDesc.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(69)))), ((int)(((byte)(73)))), ((int)(((byte)(74))))); +- this.txtDesc.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; +- this.txtDesc.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(220)))), ((int)(((byte)(220)))), ((int)(((byte)(220))))); +- this.txtDesc.Location = new System.Drawing.Point(79, 61); +- this.txtDesc.Multiline = true; +- this.txtDesc.Name = "txtDesc"; +- this.txtDesc.Size = new System.Drawing.Size(231, 50); +- this.txtDesc.TabIndex = 0; +- this.txtDesc.TextChanged += new System.EventHandler(this.txtDesc_TextChanged); +- // +- // chkDisableInspector +- // +- this.chkDisableInspector.Location = new System.Drawing.Point(204, 15); +- this.chkDisableInspector.Name = "chkDisableInspector"; +- this.chkDisableInspector.Size = new System.Drawing.Size(107, 21); +- this.chkDisableInspector.TabIndex = 4; +- this.chkDisableInspector.Text = "Disable Inspector"; +- this.chkDisableInspector.CheckedChanged += new System.EventHandler(this.chkDisablePreview_CheckedChanged); +- // +- // cmbPreviewFace +- // +- this.cmbPreviewFace.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(69)))), ((int)(((byte)(73)))), ((int)(((byte)(74))))); +- this.cmbPreviewFace.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(90)))), ((int)(((byte)(90)))), ((int)(((byte)(90))))); +- this.cmbPreviewFace.BorderStyle = System.Windows.Forms.ButtonBorderStyle.Solid; +- this.cmbPreviewFace.ButtonColor = System.Drawing.Color.FromArgb(((int)(((byte)(43)))), ((int)(((byte)(43)))), ((int)(((byte)(43))))); +- this.cmbPreviewFace.ButtonIcon = ((System.Drawing.Bitmap)(resources.GetObject("cmbPreviewFace.ButtonIcon"))); +- this.cmbPreviewFace.DrawDropdownHoverOutline = false; +- this.cmbPreviewFace.DrawFocusRectangle = false; +- this.cmbPreviewFace.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed; +- this.cmbPreviewFace.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; +- this.cmbPreviewFace.FlatStyle = System.Windows.Forms.FlatStyle.Flat; +- this.cmbPreviewFace.ForeColor = System.Drawing.Color.Gainsboro; +- this.cmbPreviewFace.FormattingEnabled = true; +- this.cmbPreviewFace.Location = new System.Drawing.Point(46, 15); +- this.cmbPreviewFace.Name = "cmbPreviewFace"; +- this.cmbPreviewFace.Size = new System.Drawing.Size(114, 21); +- this.cmbPreviewFace.TabIndex = 10; +- this.cmbPreviewFace.Text = null; +- this.cmbPreviewFace.TextPadding = new System.Windows.Forms.Padding(2); +- this.cmbPreviewFace.SelectedIndexChanged += new System.EventHandler(this.cmbPreviewFace_SelectedIndexChanged); +- // +- // lblFace +- // +- this.lblFace.AutoSize = true; +- this.lblFace.Location = new System.Drawing.Point(6, 18); +- this.lblFace.Name = "lblFace"; +- this.lblFace.Size = new System.Drawing.Size(34, 13); +- this.lblFace.TabIndex = 9; +- this.lblFace.Text = "Face:"; +- // +- // grpPreview +- // +- this.grpPreview.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(48))))); +- this.grpPreview.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(90)))), ((int)(((byte)(90)))), ((int)(((byte)(90))))); +- this.grpPreview.Controls.Add(this.lblAnimation); +- this.grpPreview.Controls.Add(this.cmbAnimation); +- this.grpPreview.Controls.Add(this.pnlPreview); +- this.grpPreview.ForeColor = System.Drawing.Color.Gainsboro; +- this.grpPreview.Location = new System.Drawing.Point(6, 13); +- this.grpPreview.Name = "grpPreview"; +- this.grpPreview.Size = new System.Drawing.Size(160, 163); +- this.grpPreview.TabIndex = 10; +- this.grpPreview.TabStop = false; +- this.grpPreview.Text = "Preview"; +- // +- // lblAnimation +- // +- this.lblAnimation.AutoSize = true; +- this.lblAnimation.Location = new System.Drawing.Point(4, 116); +- this.lblAnimation.Name = "lblAnimation"; +- this.lblAnimation.Size = new System.Drawing.Size(56, 13); +- this.lblAnimation.TabIndex = 2; +- this.lblAnimation.Text = "Animation:"; +- // +- // cmbAnimation +- // +- this.cmbAnimation.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(69)))), ((int)(((byte)(73)))), ((int)(((byte)(74))))); +- this.cmbAnimation.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(90)))), ((int)(((byte)(90)))), ((int)(((byte)(90))))); +- this.cmbAnimation.BorderStyle = System.Windows.Forms.ButtonBorderStyle.Solid; +- this.cmbAnimation.ButtonColor = System.Drawing.Color.FromArgb(((int)(((byte)(43)))), ((int)(((byte)(43)))), ((int)(((byte)(43))))); +- this.cmbAnimation.ButtonIcon = ((System.Drawing.Bitmap)(resources.GetObject("cmbAnimation.ButtonIcon"))); +- this.cmbAnimation.DrawDropdownHoverOutline = false; +- this.cmbAnimation.DrawFocusRectangle = false; +- this.cmbAnimation.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed; +- this.cmbAnimation.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; +- this.cmbAnimation.FlatStyle = System.Windows.Forms.FlatStyle.Flat; +- this.cmbAnimation.ForeColor = System.Drawing.Color.Gainsboro; +- this.cmbAnimation.FormattingEnabled = true; +- this.cmbAnimation.Location = new System.Drawing.Point(20, 132); +- this.cmbAnimation.Name = "cmbAnimation"; +- this.cmbAnimation.Size = new System.Drawing.Size(125, 21); +- this.cmbAnimation.TabIndex = 1; +- this.cmbAnimation.Text = null; +- this.cmbAnimation.TextPadding = new System.Windows.Forms.Padding(2); +- this.cmbAnimation.SelectedIndexChanged += new System.EventHandler(this.cmbAnimation_SelectedIndexChanged); +- // +- // pnlPreview +- // +- this.pnlPreview.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(63)))), ((int)(((byte)(65))))); +- this.pnlPreview.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; +- this.pnlPreview.Location = new System.Drawing.Point(33, 14); +- this.pnlPreview.Name = "pnlPreview"; +- this.pnlPreview.Size = new System.Drawing.Size(96, 96); +- this.pnlPreview.TabIndex = 0; +- this.pnlPreview.DoubleClick += new System.EventHandler(this.pnlPreview_DoubleClick); +- // +- // grpMovement +- // +- this.grpMovement.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(48))))); +- this.grpMovement.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(90)))), ((int)(((byte)(90)))), ((int)(((byte)(90))))); +- this.grpMovement.Controls.Add(this.lblLayer); +- this.grpMovement.Controls.Add(this.cmbLayering); +- this.grpMovement.Controls.Add(this.cmbEventFreq); +- this.grpMovement.Controls.Add(this.cmbEventSpeed); +- this.grpMovement.Controls.Add(this.lblFreq); +- this.grpMovement.Controls.Add(this.lblSpeed); +- this.grpMovement.Controls.Add(this.btnSetRoute); +- this.grpMovement.Controls.Add(this.lblType); +- this.grpMovement.Controls.Add(this.cmbMoveType); +- this.grpMovement.ForeColor = System.Drawing.Color.Gainsboro; +- this.grpMovement.Location = new System.Drawing.Point(169, 13); +- this.grpMovement.Name = "grpMovement"; +- this.grpMovement.Size = new System.Drawing.Size(154, 163); +- this.grpMovement.TabIndex = 8; +- this.grpMovement.TabStop = false; +- this.grpMovement.Text = "Movement"; +- // +- // lblLayer +- // +- this.lblLayer.AutoSize = true; +- this.lblLayer.Location = new System.Drawing.Point(6, 134); +- this.lblLayer.Name = "lblLayer"; +- this.lblLayer.Size = new System.Drawing.Size(36, 13); +- this.lblLayer.TabIndex = 7; +- this.lblLayer.Text = "Layer:"; +- // +- // cmbLayering +- // +- this.cmbLayering.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(69)))), ((int)(((byte)(73)))), ((int)(((byte)(74))))); +- this.cmbLayering.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(90)))), ((int)(((byte)(90)))), ((int)(((byte)(90))))); +- this.cmbLayering.BorderStyle = System.Windows.Forms.ButtonBorderStyle.Solid; +- this.cmbLayering.ButtonColor = System.Drawing.Color.FromArgb(((int)(((byte)(43)))), ((int)(((byte)(43)))), ((int)(((byte)(43))))); +- this.cmbLayering.ButtonIcon = ((System.Drawing.Bitmap)(resources.GetObject("cmbLayering.ButtonIcon"))); +- this.cmbLayering.DrawDropdownHoverOutline = false; +- this.cmbLayering.DrawFocusRectangle = false; +- this.cmbLayering.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed; +- this.cmbLayering.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; +- this.cmbLayering.FlatStyle = System.Windows.Forms.FlatStyle.Flat; +- this.cmbLayering.ForeColor = System.Drawing.Color.Gainsboro; +- this.cmbLayering.FormattingEnabled = true; +- this.cmbLayering.Items.AddRange(new object[] { ++ treeNode56, ++ treeNode57}); ++ this.lblName = new System.Windows.Forms.Label(); ++ this.txtEventname = new DarkUI.Controls.DarkTextBox(); ++ this.grpEntityOptions = new DarkUI.Controls.DarkGroupBox(); ++ this.grpExtra = new DarkUI.Controls.DarkGroupBox(); ++ this.chkInteractionFreeze = new DarkUI.Controls.DarkCheckBox(); ++ this.chkWalkingAnimation = new DarkUI.Controls.DarkCheckBox(); ++ this.chkDirectionFix = new DarkUI.Controls.DarkCheckBox(); ++ this.chkHideName = new DarkUI.Controls.DarkCheckBox(); ++ this.chkWalkThrough = new DarkUI.Controls.DarkCheckBox(); ++ this.grpInspector = new DarkUI.Controls.DarkGroupBox(); ++ this.pnlFacePreview = new System.Windows.Forms.Panel(); ++ this.lblInspectorDesc = new System.Windows.Forms.Label(); ++ this.txtDesc = new DarkUI.Controls.DarkTextBox(); ++ this.chkDisableInspector = new DarkUI.Controls.DarkCheckBox(); ++ this.cmbPreviewFace = new DarkUI.Controls.DarkComboBox(); ++ this.lblFace = new System.Windows.Forms.Label(); ++ this.grpPreview = new DarkUI.Controls.DarkGroupBox(); ++ this.lblAnimation = new System.Windows.Forms.Label(); ++ this.cmbAnimation = new DarkUI.Controls.DarkComboBox(); ++ this.pnlPreview = new System.Windows.Forms.Panel(); ++ this.grpMovement = new DarkUI.Controls.DarkGroupBox(); ++ this.lblLayer = new System.Windows.Forms.Label(); ++ this.cmbLayering = new DarkUI.Controls.DarkComboBox(); ++ this.cmbEventFreq = new DarkUI.Controls.DarkComboBox(); ++ this.cmbEventSpeed = new DarkUI.Controls.DarkComboBox(); ++ this.lblFreq = new System.Windows.Forms.Label(); ++ this.lblSpeed = new System.Windows.Forms.Label(); ++ this.btnSetRoute = new DarkUI.Controls.DarkButton(); ++ this.lblType = new System.Windows.Forms.Label(); ++ this.cmbMoveType = new DarkUI.Controls.DarkComboBox(); ++ this.grpTriggers = new DarkUI.Controls.DarkGroupBox(); ++ this.txtCommand = new DarkUI.Controls.DarkTextBox(); ++ this.lblCommand = new System.Windows.Forms.Label(); ++ this.lblTriggerVal = new System.Windows.Forms.Label(); ++ this.cmbTriggerVal = new DarkUI.Controls.DarkComboBox(); ++ this.cmbTrigger = new DarkUI.Controls.DarkComboBox(); ++ this.grpEventConditions = new DarkUI.Controls.DarkGroupBox(); ++ this.btnEditConditions = new DarkUI.Controls.DarkButton(); ++ this.grpNewCommands = new DarkUI.Controls.DarkGroupBox(); ++ this.lblCloseCommands = new System.Windows.Forms.Label(); ++ this.lstCommands = new System.Windows.Forms.TreeView(); ++ this.grpEventCommands = new DarkUI.Controls.DarkGroupBox(); ++ this.lstEventCommands = new System.Windows.Forms.ListBox(); ++ this.grpCreateCommands = new DarkUI.Controls.DarkGroupBox(); ++ this.btnSave = new DarkUI.Controls.DarkButton(); ++ this.btnCancel = new DarkUI.Controls.DarkButton(); ++ this.commandMenu = new System.Windows.Forms.ContextMenuStrip(this.components); ++ this.btnInsert = new System.Windows.Forms.ToolStripMenuItem(); ++ this.btnEdit = new System.Windows.Forms.ToolStripMenuItem(); ++ this.btnCut = new System.Windows.Forms.ToolStripMenuItem(); ++ this.btnCopy = new System.Windows.Forms.ToolStripMenuItem(); ++ this.btnPaste = new System.Windows.Forms.ToolStripMenuItem(); ++ this.btnDelete = new System.Windows.Forms.ToolStripMenuItem(); ++ this.grpPageOptions = new DarkUI.Controls.DarkGroupBox(); ++ this.btnClearPage = new DarkUI.Controls.DarkButton(); ++ this.btnDeletePage = new DarkUI.Controls.DarkButton(); ++ this.btnPastePage = new DarkUI.Controls.DarkButton(); ++ this.btnCopyPage = new DarkUI.Controls.DarkButton(); ++ this.btnNewPage = new DarkUI.Controls.DarkButton(); ++ this.grpGeneral = new DarkUI.Controls.DarkGroupBox(); ++ this.chkIsGlobal = new DarkUI.Controls.DarkCheckBox(); ++ this.pnlTabsContainer = new System.Windows.Forms.Panel(); ++ this.pnlTabs = new System.Windows.Forms.Panel(); ++ this.btnTabsRight = new DarkUI.Controls.DarkButton(); ++ this.btnTabsLeft = new DarkUI.Controls.DarkButton(); ++ this.panel1 = new System.Windows.Forms.Panel(); ++ this.grpEntityOptions.SuspendLayout(); ++ this.grpExtra.SuspendLayout(); ++ this.grpInspector.SuspendLayout(); ++ this.grpPreview.SuspendLayout(); ++ this.grpMovement.SuspendLayout(); ++ this.grpTriggers.SuspendLayout(); ++ this.grpEventConditions.SuspendLayout(); ++ this.grpNewCommands.SuspendLayout(); ++ this.grpEventCommands.SuspendLayout(); ++ this.commandMenu.SuspendLayout(); ++ this.grpPageOptions.SuspendLayout(); ++ this.grpGeneral.SuspendLayout(); ++ this.pnlTabsContainer.SuspendLayout(); ++ this.SuspendLayout(); ++ // ++ // lblName ++ // ++ this.lblName.AutoSize = true; ++ this.lblName.Location = new System.Drawing.Point(6, 22); ++ this.lblName.Name = "lblName"; ++ this.lblName.Size = new System.Drawing.Size(38, 13); ++ this.lblName.TabIndex = 1; ++ this.lblName.Text = "Name:"; ++ // ++ // txtEventname ++ // ++ this.txtEventname.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(69)))), ((int)(((byte)(73)))), ((int)(((byte)(74))))); ++ this.txtEventname.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; ++ this.txtEventname.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(220)))), ((int)(((byte)(220)))), ((int)(((byte)(220))))); ++ this.txtEventname.Location = new System.Drawing.Point(48, 19); ++ this.txtEventname.Name = "txtEventname"; ++ this.txtEventname.Size = new System.Drawing.Size(124, 20); ++ this.txtEventname.TabIndex = 2; ++ this.txtEventname.TextChanged += new System.EventHandler(this.txtEventname_TextChanged); ++ // ++ // grpEntityOptions ++ // ++ this.grpEntityOptions.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(48))))); ++ this.grpEntityOptions.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(90)))), ((int)(((byte)(90)))), ((int)(((byte)(90))))); ++ this.grpEntityOptions.Controls.Add(this.grpExtra); ++ this.grpEntityOptions.Controls.Add(this.grpInspector); ++ this.grpEntityOptions.Controls.Add(this.grpPreview); ++ this.grpEntityOptions.Controls.Add(this.grpMovement); ++ this.grpEntityOptions.ForeColor = System.Drawing.Color.Gainsboro; ++ this.grpEntityOptions.Location = new System.Drawing.Point(21, 150); ++ this.grpEntityOptions.Name = "grpEntityOptions"; ++ this.grpEntityOptions.Size = new System.Drawing.Size(326, 423); ++ this.grpEntityOptions.TabIndex = 12; ++ this.grpEntityOptions.TabStop = false; ++ this.grpEntityOptions.Text = "Entity Options"; ++ // ++ // grpExtra ++ // ++ this.grpExtra.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(48))))); ++ this.grpExtra.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(90)))), ((int)(((byte)(90)))), ((int)(((byte)(90))))); ++ this.grpExtra.Controls.Add(this.chkInteractionFreeze); ++ this.grpExtra.Controls.Add(this.chkWalkingAnimation); ++ this.grpExtra.Controls.Add(this.chkDirectionFix); ++ this.grpExtra.Controls.Add(this.chkHideName); ++ this.grpExtra.Controls.Add(this.chkWalkThrough); ++ this.grpExtra.ForeColor = System.Drawing.Color.Gainsboro; ++ this.grpExtra.Location = new System.Drawing.Point(6, 297); ++ this.grpExtra.Name = "grpExtra"; ++ this.grpExtra.Size = new System.Drawing.Size(315, 64); ++ this.grpExtra.TabIndex = 9; ++ this.grpExtra.TabStop = false; ++ this.grpExtra.Text = "Extra"; ++ // ++ // chkInteractionFreeze ++ // ++ this.chkInteractionFreeze.AutoSize = true; ++ this.chkInteractionFreeze.Location = new System.Drawing.Point(6, 41); ++ this.chkInteractionFreeze.Name = "chkInteractionFreeze"; ++ this.chkInteractionFreeze.Size = new System.Drawing.Size(111, 17); ++ this.chkInteractionFreeze.TabIndex = 6; ++ this.chkInteractionFreeze.Text = "Interaction Freeze"; ++ this.chkInteractionFreeze.CheckedChanged += new System.EventHandler(this.chkInteractionFreeze_CheckedChanged); ++ // ++ // chkWalkingAnimation ++ // ++ this.chkWalkingAnimation.AutoSize = true; ++ this.chkWalkingAnimation.Location = new System.Drawing.Point(214, 19); ++ this.chkWalkingAnimation.Name = "chkWalkingAnimation"; ++ this.chkWalkingAnimation.Size = new System.Drawing.Size(91, 17); ++ this.chkWalkingAnimation.TabIndex = 5; ++ this.chkWalkingAnimation.Text = "Walking Anim"; ++ this.chkWalkingAnimation.CheckedChanged += new System.EventHandler(this.chkWalkingAnimation_CheckedChanged); ++ // ++ // chkDirectionFix ++ // ++ this.chkDirectionFix.AutoSize = true; ++ this.chkDirectionFix.Location = new System.Drawing.Point(156, 19); ++ this.chkDirectionFix.Name = "chkDirectionFix"; ++ this.chkDirectionFix.Size = new System.Drawing.Size(55, 17); ++ this.chkDirectionFix.TabIndex = 4; ++ this.chkDirectionFix.Text = "Dir Fix"; ++ this.chkDirectionFix.CheckedChanged += new System.EventHandler(this.chkDirectionFix_CheckedChanged); ++ // ++ // chkHideName ++ // ++ this.chkHideName.AutoSize = true; ++ this.chkHideName.Location = new System.Drawing.Point(75, 19); ++ this.chkHideName.Name = "chkHideName"; ++ this.chkHideName.Size = new System.Drawing.Size(79, 17); ++ this.chkHideName.TabIndex = 3; ++ this.chkHideName.Text = "Hide Name"; ++ this.chkHideName.CheckedChanged += new System.EventHandler(this.chkHideName_CheckedChanged); ++ // ++ // chkWalkThrough ++ // ++ this.chkWalkThrough.AutoSize = true; ++ this.chkWalkThrough.Location = new System.Drawing.Point(6, 19); ++ this.chkWalkThrough.Name = "chkWalkThrough"; ++ this.chkWalkThrough.Size = new System.Drawing.Size(69, 17); ++ this.chkWalkThrough.TabIndex = 2; ++ this.chkWalkThrough.Text = "Passable"; ++ this.chkWalkThrough.CheckedChanged += new System.EventHandler(this.chkWalkThrough_CheckedChanged); ++ // ++ // grpInspector ++ // ++ this.grpInspector.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(48))))); ++ this.grpInspector.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(90)))), ((int)(((byte)(90)))), ((int)(((byte)(90))))); ++ this.grpInspector.Controls.Add(this.pnlFacePreview); ++ this.grpInspector.Controls.Add(this.lblInspectorDesc); ++ this.grpInspector.Controls.Add(this.txtDesc); ++ this.grpInspector.Controls.Add(this.chkDisableInspector); ++ this.grpInspector.Controls.Add(this.cmbPreviewFace); ++ this.grpInspector.Controls.Add(this.lblFace); ++ this.grpInspector.ForeColor = System.Drawing.Color.Gainsboro; ++ this.grpInspector.Location = new System.Drawing.Point(6, 179); ++ this.grpInspector.Name = "grpInspector"; ++ this.grpInspector.Size = new System.Drawing.Size(316, 117); ++ this.grpInspector.TabIndex = 7; ++ this.grpInspector.TabStop = false; ++ this.grpInspector.Text = "Entity Inspector Options"; ++ // ++ // pnlFacePreview ++ // ++ this.pnlFacePreview.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch; ++ this.pnlFacePreview.Location = new System.Drawing.Point(9, 46); ++ this.pnlFacePreview.Name = "pnlFacePreview"; ++ this.pnlFacePreview.Size = new System.Drawing.Size(64, 64); ++ this.pnlFacePreview.TabIndex = 12; ++ // ++ // lblInspectorDesc ++ // ++ this.lblInspectorDesc.Location = new System.Drawing.Point(79, 42); ++ this.lblInspectorDesc.Name = "lblInspectorDesc"; ++ this.lblInspectorDesc.Size = new System.Drawing.Size(112, 19); ++ this.lblInspectorDesc.TabIndex = 11; ++ this.lblInspectorDesc.Text = "Inspector Description:"; ++ // ++ // txtDesc ++ // ++ this.txtDesc.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(69)))), ((int)(((byte)(73)))), ((int)(((byte)(74))))); ++ this.txtDesc.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; ++ this.txtDesc.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(220)))), ((int)(((byte)(220)))), ((int)(((byte)(220))))); ++ this.txtDesc.Location = new System.Drawing.Point(79, 61); ++ this.txtDesc.Multiline = true; ++ this.txtDesc.Name = "txtDesc"; ++ this.txtDesc.Size = new System.Drawing.Size(231, 50); ++ this.txtDesc.TabIndex = 0; ++ this.txtDesc.TextChanged += new System.EventHandler(this.txtDesc_TextChanged); ++ // ++ // chkDisableInspector ++ // ++ this.chkDisableInspector.Location = new System.Drawing.Point(204, 15); ++ this.chkDisableInspector.Name = "chkDisableInspector"; ++ this.chkDisableInspector.Size = new System.Drawing.Size(107, 21); ++ this.chkDisableInspector.TabIndex = 4; ++ this.chkDisableInspector.Text = "Disable Inspector"; ++ this.chkDisableInspector.CheckedChanged += new System.EventHandler(this.chkDisablePreview_CheckedChanged); ++ // ++ // cmbPreviewFace ++ // ++ this.cmbPreviewFace.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(69)))), ((int)(((byte)(73)))), ((int)(((byte)(74))))); ++ this.cmbPreviewFace.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(90)))), ((int)(((byte)(90)))), ((int)(((byte)(90))))); ++ this.cmbPreviewFace.BorderStyle = System.Windows.Forms.ButtonBorderStyle.Solid; ++ this.cmbPreviewFace.ButtonColor = System.Drawing.Color.FromArgb(((int)(((byte)(43)))), ((int)(((byte)(43)))), ((int)(((byte)(43))))); ++ this.cmbPreviewFace.ButtonIcon = ((System.Drawing.Bitmap)(resources.GetObject("cmbPreviewFace.ButtonIcon"))); ++ this.cmbPreviewFace.DrawDropdownHoverOutline = false; ++ this.cmbPreviewFace.DrawFocusRectangle = false; ++ this.cmbPreviewFace.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed; ++ this.cmbPreviewFace.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; ++ this.cmbPreviewFace.FlatStyle = System.Windows.Forms.FlatStyle.Flat; ++ this.cmbPreviewFace.ForeColor = System.Drawing.Color.Gainsboro; ++ this.cmbPreviewFace.FormattingEnabled = true; ++ this.cmbPreviewFace.Location = new System.Drawing.Point(46, 15); ++ this.cmbPreviewFace.Name = "cmbPreviewFace"; ++ this.cmbPreviewFace.Size = new System.Drawing.Size(114, 21); ++ this.cmbPreviewFace.TabIndex = 10; ++ this.cmbPreviewFace.Text = null; ++ this.cmbPreviewFace.TextPadding = new System.Windows.Forms.Padding(2); ++ this.cmbPreviewFace.SelectedIndexChanged += new System.EventHandler(this.cmbPreviewFace_SelectedIndexChanged); ++ // ++ // lblFace ++ // ++ this.lblFace.AutoSize = true; ++ this.lblFace.Location = new System.Drawing.Point(6, 18); ++ this.lblFace.Name = "lblFace"; ++ this.lblFace.Size = new System.Drawing.Size(34, 13); ++ this.lblFace.TabIndex = 9; ++ this.lblFace.Text = "Face:"; ++ // ++ // grpPreview ++ // ++ this.grpPreview.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(48))))); ++ this.grpPreview.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(90)))), ((int)(((byte)(90)))), ((int)(((byte)(90))))); ++ this.grpPreview.Controls.Add(this.lblAnimation); ++ this.grpPreview.Controls.Add(this.cmbAnimation); ++ this.grpPreview.Controls.Add(this.pnlPreview); ++ this.grpPreview.ForeColor = System.Drawing.Color.Gainsboro; ++ this.grpPreview.Location = new System.Drawing.Point(6, 13); ++ this.grpPreview.Name = "grpPreview"; ++ this.grpPreview.Size = new System.Drawing.Size(160, 163); ++ this.grpPreview.TabIndex = 10; ++ this.grpPreview.TabStop = false; ++ this.grpPreview.Text = "Preview"; ++ // ++ // lblAnimation ++ // ++ this.lblAnimation.AutoSize = true; ++ this.lblAnimation.Location = new System.Drawing.Point(4, 116); ++ this.lblAnimation.Name = "lblAnimation"; ++ this.lblAnimation.Size = new System.Drawing.Size(56, 13); ++ this.lblAnimation.TabIndex = 2; ++ this.lblAnimation.Text = "Animation:"; ++ // ++ // cmbAnimation ++ // ++ this.cmbAnimation.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(69)))), ((int)(((byte)(73)))), ((int)(((byte)(74))))); ++ this.cmbAnimation.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(90)))), ((int)(((byte)(90)))), ((int)(((byte)(90))))); ++ this.cmbAnimation.BorderStyle = System.Windows.Forms.ButtonBorderStyle.Solid; ++ this.cmbAnimation.ButtonColor = System.Drawing.Color.FromArgb(((int)(((byte)(43)))), ((int)(((byte)(43)))), ((int)(((byte)(43))))); ++ this.cmbAnimation.ButtonIcon = ((System.Drawing.Bitmap)(resources.GetObject("cmbAnimation.ButtonIcon"))); ++ this.cmbAnimation.DrawDropdownHoverOutline = false; ++ this.cmbAnimation.DrawFocusRectangle = false; ++ this.cmbAnimation.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed; ++ this.cmbAnimation.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; ++ this.cmbAnimation.FlatStyle = System.Windows.Forms.FlatStyle.Flat; ++ this.cmbAnimation.ForeColor = System.Drawing.Color.Gainsboro; ++ this.cmbAnimation.FormattingEnabled = true; ++ this.cmbAnimation.Location = new System.Drawing.Point(20, 132); ++ this.cmbAnimation.Name = "cmbAnimation"; ++ this.cmbAnimation.Size = new System.Drawing.Size(125, 21); ++ this.cmbAnimation.TabIndex = 1; ++ this.cmbAnimation.Text = null; ++ this.cmbAnimation.TextPadding = new System.Windows.Forms.Padding(2); ++ this.cmbAnimation.SelectedIndexChanged += new System.EventHandler(this.cmbAnimation_SelectedIndexChanged); ++ // ++ // pnlPreview ++ // ++ this.pnlPreview.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(63)))), ((int)(((byte)(65))))); ++ this.pnlPreview.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; ++ this.pnlPreview.Location = new System.Drawing.Point(33, 14); ++ this.pnlPreview.Name = "pnlPreview"; ++ this.pnlPreview.Size = new System.Drawing.Size(96, 96); ++ this.pnlPreview.TabIndex = 0; ++ this.pnlPreview.DoubleClick += new System.EventHandler(this.pnlPreview_DoubleClick); ++ // ++ // grpMovement ++ // ++ this.grpMovement.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(48))))); ++ this.grpMovement.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(90)))), ((int)(((byte)(90)))), ((int)(((byte)(90))))); ++ this.grpMovement.Controls.Add(this.lblLayer); ++ this.grpMovement.Controls.Add(this.cmbLayering); ++ this.grpMovement.Controls.Add(this.cmbEventFreq); ++ this.grpMovement.Controls.Add(this.cmbEventSpeed); ++ this.grpMovement.Controls.Add(this.lblFreq); ++ this.grpMovement.Controls.Add(this.lblSpeed); ++ this.grpMovement.Controls.Add(this.btnSetRoute); ++ this.grpMovement.Controls.Add(this.lblType); ++ this.grpMovement.Controls.Add(this.cmbMoveType); ++ this.grpMovement.ForeColor = System.Drawing.Color.Gainsboro; ++ this.grpMovement.Location = new System.Drawing.Point(169, 13); ++ this.grpMovement.Name = "grpMovement"; ++ this.grpMovement.Size = new System.Drawing.Size(154, 163); ++ this.grpMovement.TabIndex = 8; ++ this.grpMovement.TabStop = false; ++ this.grpMovement.Text = "Movement"; ++ // ++ // lblLayer ++ // ++ this.lblLayer.AutoSize = true; ++ this.lblLayer.Location = new System.Drawing.Point(6, 134); ++ this.lblLayer.Name = "lblLayer"; ++ this.lblLayer.Size = new System.Drawing.Size(36, 13); ++ this.lblLayer.TabIndex = 7; ++ this.lblLayer.Text = "Layer:"; ++ // ++ // cmbLayering ++ // ++ this.cmbLayering.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(69)))), ((int)(((byte)(73)))), ((int)(((byte)(74))))); ++ this.cmbLayering.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(90)))), ((int)(((byte)(90)))), ((int)(((byte)(90))))); ++ this.cmbLayering.BorderStyle = System.Windows.Forms.ButtonBorderStyle.Solid; ++ this.cmbLayering.ButtonColor = System.Drawing.Color.FromArgb(((int)(((byte)(43)))), ((int)(((byte)(43)))), ((int)(((byte)(43))))); ++ this.cmbLayering.ButtonIcon = ((System.Drawing.Bitmap)(resources.GetObject("cmbLayering.ButtonIcon"))); ++ this.cmbLayering.DrawDropdownHoverOutline = false; ++ this.cmbLayering.DrawFocusRectangle = false; ++ this.cmbLayering.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed; ++ this.cmbLayering.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; ++ this.cmbLayering.FlatStyle = System.Windows.Forms.FlatStyle.Flat; ++ this.cmbLayering.ForeColor = System.Drawing.Color.Gainsboro; ++ this.cmbLayering.FormattingEnabled = true; ++ this.cmbLayering.Items.AddRange(new object[] { + "Below Player", + "Same as Player", + "Above Player"}); +- this.cmbLayering.Location = new System.Drawing.Point(48, 131); +- this.cmbLayering.Name = "cmbLayering"; +- this.cmbLayering.Size = new System.Drawing.Size(101, 21); +- this.cmbLayering.TabIndex = 1; +- this.cmbLayering.Text = "Below Player"; +- this.cmbLayering.TextPadding = new System.Windows.Forms.Padding(2); +- this.cmbLayering.SelectedIndexChanged += new System.EventHandler(this.cmbLayering_SelectedIndexChanged); +- // +- // cmbEventFreq +- // +- this.cmbEventFreq.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(69)))), ((int)(((byte)(73)))), ((int)(((byte)(74))))); +- this.cmbEventFreq.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(90)))), ((int)(((byte)(90)))), ((int)(((byte)(90))))); +- this.cmbEventFreq.BorderStyle = System.Windows.Forms.ButtonBorderStyle.Solid; +- this.cmbEventFreq.ButtonColor = System.Drawing.Color.FromArgb(((int)(((byte)(43)))), ((int)(((byte)(43)))), ((int)(((byte)(43))))); +- this.cmbEventFreq.ButtonIcon = ((System.Drawing.Bitmap)(resources.GetObject("cmbEventFreq.ButtonIcon"))); +- this.cmbEventFreq.DrawDropdownHoverOutline = false; +- this.cmbEventFreq.DrawFocusRectangle = false; +- this.cmbEventFreq.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed; +- this.cmbEventFreq.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; +- this.cmbEventFreq.FlatStyle = System.Windows.Forms.FlatStyle.Flat; +- this.cmbEventFreq.ForeColor = System.Drawing.Color.Gainsboro; +- this.cmbEventFreq.FormattingEnabled = true; +- this.cmbEventFreq.Items.AddRange(new object[] { ++ this.cmbLayering.Location = new System.Drawing.Point(48, 131); ++ this.cmbLayering.Name = "cmbLayering"; ++ this.cmbLayering.Size = new System.Drawing.Size(101, 21); ++ this.cmbLayering.TabIndex = 1; ++ this.cmbLayering.Text = "Below Player"; ++ this.cmbLayering.TextPadding = new System.Windows.Forms.Padding(2); ++ this.cmbLayering.SelectedIndexChanged += new System.EventHandler(this.cmbLayering_SelectedIndexChanged); ++ // ++ // cmbEventFreq ++ // ++ this.cmbEventFreq.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(69)))), ((int)(((byte)(73)))), ((int)(((byte)(74))))); ++ this.cmbEventFreq.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(90)))), ((int)(((byte)(90)))), ((int)(((byte)(90))))); ++ this.cmbEventFreq.BorderStyle = System.Windows.Forms.ButtonBorderStyle.Solid; ++ this.cmbEventFreq.ButtonColor = System.Drawing.Color.FromArgb(((int)(((byte)(43)))), ((int)(((byte)(43)))), ((int)(((byte)(43))))); ++ this.cmbEventFreq.ButtonIcon = ((System.Drawing.Bitmap)(resources.GetObject("cmbEventFreq.ButtonIcon"))); ++ this.cmbEventFreq.DrawDropdownHoverOutline = false; ++ this.cmbEventFreq.DrawFocusRectangle = false; ++ this.cmbEventFreq.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed; ++ this.cmbEventFreq.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; ++ this.cmbEventFreq.FlatStyle = System.Windows.Forms.FlatStyle.Flat; ++ this.cmbEventFreq.ForeColor = System.Drawing.Color.Gainsboro; ++ this.cmbEventFreq.FormattingEnabled = true; ++ this.cmbEventFreq.Items.AddRange(new object[] { + "Not Very Often", + "Not Often", + "Normal", + "Often", + "Very Often"}); +- this.cmbEventFreq.Location = new System.Drawing.Point(48, 104); +- this.cmbEventFreq.Name = "cmbEventFreq"; +- this.cmbEventFreq.Size = new System.Drawing.Size(100, 21); +- this.cmbEventFreq.TabIndex = 6; +- this.cmbEventFreq.Text = "Not Very Often"; +- this.cmbEventFreq.TextPadding = new System.Windows.Forms.Padding(2); +- this.cmbEventFreq.SelectedIndexChanged += new System.EventHandler(this.cmbEventFreq_SelectedIndexChanged); +- // +- // cmbEventSpeed +- // +- this.cmbEventSpeed.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(69)))), ((int)(((byte)(73)))), ((int)(((byte)(74))))); +- this.cmbEventSpeed.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(90)))), ((int)(((byte)(90)))), ((int)(((byte)(90))))); +- this.cmbEventSpeed.BorderStyle = System.Windows.Forms.ButtonBorderStyle.Solid; +- this.cmbEventSpeed.ButtonColor = System.Drawing.Color.FromArgb(((int)(((byte)(43)))), ((int)(((byte)(43)))), ((int)(((byte)(43))))); +- this.cmbEventSpeed.ButtonIcon = ((System.Drawing.Bitmap)(resources.GetObject("cmbEventSpeed.ButtonIcon"))); +- this.cmbEventSpeed.DrawDropdownHoverOutline = false; +- this.cmbEventSpeed.DrawFocusRectangle = false; +- this.cmbEventSpeed.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed; +- this.cmbEventSpeed.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; +- this.cmbEventSpeed.FlatStyle = System.Windows.Forms.FlatStyle.Flat; +- this.cmbEventSpeed.ForeColor = System.Drawing.Color.Gainsboro; +- this.cmbEventSpeed.FormattingEnabled = true; +- this.cmbEventSpeed.Items.AddRange(new object[] { ++ this.cmbEventFreq.Location = new System.Drawing.Point(48, 104); ++ this.cmbEventFreq.Name = "cmbEventFreq"; ++ this.cmbEventFreq.Size = new System.Drawing.Size(100, 21); ++ this.cmbEventFreq.TabIndex = 6; ++ this.cmbEventFreq.Text = "Not Very Often"; ++ this.cmbEventFreq.TextPadding = new System.Windows.Forms.Padding(2); ++ this.cmbEventFreq.SelectedIndexChanged += new System.EventHandler(this.cmbEventFreq_SelectedIndexChanged); ++ // ++ // cmbEventSpeed ++ // ++ this.cmbEventSpeed.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(69)))), ((int)(((byte)(73)))), ((int)(((byte)(74))))); ++ this.cmbEventSpeed.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(90)))), ((int)(((byte)(90)))), ((int)(((byte)(90))))); ++ this.cmbEventSpeed.BorderStyle = System.Windows.Forms.ButtonBorderStyle.Solid; ++ this.cmbEventSpeed.ButtonColor = System.Drawing.Color.FromArgb(((int)(((byte)(43)))), ((int)(((byte)(43)))), ((int)(((byte)(43))))); ++ this.cmbEventSpeed.ButtonIcon = ((System.Drawing.Bitmap)(resources.GetObject("cmbEventSpeed.ButtonIcon"))); ++ this.cmbEventSpeed.DrawDropdownHoverOutline = false; ++ this.cmbEventSpeed.DrawFocusRectangle = false; ++ this.cmbEventSpeed.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed; ++ this.cmbEventSpeed.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; ++ this.cmbEventSpeed.FlatStyle = System.Windows.Forms.FlatStyle.Flat; ++ this.cmbEventSpeed.ForeColor = System.Drawing.Color.Gainsboro; ++ this.cmbEventSpeed.FormattingEnabled = true; ++ this.cmbEventSpeed.Items.AddRange(new object[] { + "Slowest", + "Slower", + "Normal", + "Faster", + "Fastest"}); +- this.cmbEventSpeed.Location = new System.Drawing.Point(48, 77); +- this.cmbEventSpeed.Name = "cmbEventSpeed"; +- this.cmbEventSpeed.Size = new System.Drawing.Size(100, 21); +- this.cmbEventSpeed.TabIndex = 5; +- this.cmbEventSpeed.Text = "Slowest"; +- this.cmbEventSpeed.TextPadding = new System.Windows.Forms.Padding(2); +- this.cmbEventSpeed.SelectedIndexChanged += new System.EventHandler(this.cmbEventSpeed_SelectedIndexChanged); +- // +- // lblFreq +- // +- this.lblFreq.AutoSize = true; +- this.lblFreq.Location = new System.Drawing.Point(6, 107); +- this.lblFreq.Name = "lblFreq"; +- this.lblFreq.Size = new System.Drawing.Size(31, 13); +- this.lblFreq.TabIndex = 4; +- this.lblFreq.Text = "Freq:"; +- // +- // lblSpeed +- // +- this.lblSpeed.AutoSize = true; +- this.lblSpeed.Location = new System.Drawing.Point(6, 80); +- this.lblSpeed.Name = "lblSpeed"; +- this.lblSpeed.Size = new System.Drawing.Size(41, 13); +- this.lblSpeed.TabIndex = 3; +- this.lblSpeed.Text = "Speed:"; +- // +- // btnSetRoute +- // +- this.btnSetRoute.Enabled = false; +- this.btnSetRoute.Location = new System.Drawing.Point(73, 43); +- this.btnSetRoute.Name = "btnSetRoute"; +- this.btnSetRoute.Padding = new System.Windows.Forms.Padding(5); +- this.btnSetRoute.Size = new System.Drawing.Size(75, 23); +- this.btnSetRoute.TabIndex = 2; +- this.btnSetRoute.Text = "Set Route...."; +- this.btnSetRoute.Click += new System.EventHandler(this.btnSetRoute_Click); +- // +- // lblType +- // +- this.lblType.AutoSize = true; +- this.lblType.Location = new System.Drawing.Point(6, 22); +- this.lblType.Name = "lblType"; +- this.lblType.Size = new System.Drawing.Size(34, 13); +- this.lblType.TabIndex = 1; +- this.lblType.Text = "Type:"; +- // +- // cmbMoveType +- // +- this.cmbMoveType.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(69)))), ((int)(((byte)(73)))), ((int)(((byte)(74))))); +- this.cmbMoveType.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(90)))), ((int)(((byte)(90)))), ((int)(((byte)(90))))); +- this.cmbMoveType.BorderStyle = System.Windows.Forms.ButtonBorderStyle.Solid; +- this.cmbMoveType.ButtonColor = System.Drawing.Color.FromArgb(((int)(((byte)(43)))), ((int)(((byte)(43)))), ((int)(((byte)(43))))); +- this.cmbMoveType.ButtonIcon = ((System.Drawing.Bitmap)(resources.GetObject("cmbMoveType.ButtonIcon"))); +- this.cmbMoveType.DrawDropdownHoverOutline = false; +- this.cmbMoveType.DrawFocusRectangle = false; +- this.cmbMoveType.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed; +- this.cmbMoveType.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; +- this.cmbMoveType.FlatStyle = System.Windows.Forms.FlatStyle.Flat; +- this.cmbMoveType.ForeColor = System.Drawing.Color.Gainsboro; +- this.cmbMoveType.FormattingEnabled = true; +- this.cmbMoveType.Items.AddRange(new object[] { ++ this.cmbEventSpeed.Location = new System.Drawing.Point(48, 77); ++ this.cmbEventSpeed.Name = "cmbEventSpeed"; ++ this.cmbEventSpeed.Size = new System.Drawing.Size(100, 21); ++ this.cmbEventSpeed.TabIndex = 5; ++ this.cmbEventSpeed.Text = "Slowest"; ++ this.cmbEventSpeed.TextPadding = new System.Windows.Forms.Padding(2); ++ this.cmbEventSpeed.SelectedIndexChanged += new System.EventHandler(this.cmbEventSpeed_SelectedIndexChanged); ++ // ++ // lblFreq ++ // ++ this.lblFreq.AutoSize = true; ++ this.lblFreq.Location = new System.Drawing.Point(6, 107); ++ this.lblFreq.Name = "lblFreq"; ++ this.lblFreq.Size = new System.Drawing.Size(31, 13); ++ this.lblFreq.TabIndex = 4; ++ this.lblFreq.Text = "Freq:"; ++ // ++ // lblSpeed ++ // ++ this.lblSpeed.AutoSize = true; ++ this.lblSpeed.Location = new System.Drawing.Point(6, 80); ++ this.lblSpeed.Name = "lblSpeed"; ++ this.lblSpeed.Size = new System.Drawing.Size(41, 13); ++ this.lblSpeed.TabIndex = 3; ++ this.lblSpeed.Text = "Speed:"; ++ // ++ // btnSetRoute ++ // ++ this.btnSetRoute.Enabled = false; ++ this.btnSetRoute.Location = new System.Drawing.Point(73, 43); ++ this.btnSetRoute.Name = "btnSetRoute"; ++ this.btnSetRoute.Padding = new System.Windows.Forms.Padding(5); ++ this.btnSetRoute.Size = new System.Drawing.Size(75, 23); ++ this.btnSetRoute.TabIndex = 2; ++ this.btnSetRoute.Text = "Set Route...."; ++ this.btnSetRoute.Click += new System.EventHandler(this.btnSetRoute_Click); ++ // ++ // lblType ++ // ++ this.lblType.AutoSize = true; ++ this.lblType.Location = new System.Drawing.Point(6, 22); ++ this.lblType.Name = "lblType"; ++ this.lblType.Size = new System.Drawing.Size(34, 13); ++ this.lblType.TabIndex = 1; ++ this.lblType.Text = "Type:"; ++ // ++ // cmbMoveType ++ // ++ this.cmbMoveType.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(69)))), ((int)(((byte)(73)))), ((int)(((byte)(74))))); ++ this.cmbMoveType.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(90)))), ((int)(((byte)(90)))), ((int)(((byte)(90))))); ++ this.cmbMoveType.BorderStyle = System.Windows.Forms.ButtonBorderStyle.Solid; ++ this.cmbMoveType.ButtonColor = System.Drawing.Color.FromArgb(((int)(((byte)(43)))), ((int)(((byte)(43)))), ((int)(((byte)(43))))); ++ this.cmbMoveType.ButtonIcon = ((System.Drawing.Bitmap)(resources.GetObject("cmbMoveType.ButtonIcon"))); ++ this.cmbMoveType.DrawDropdownHoverOutline = false; ++ this.cmbMoveType.DrawFocusRectangle = false; ++ this.cmbMoveType.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed; ++ this.cmbMoveType.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; ++ this.cmbMoveType.FlatStyle = System.Windows.Forms.FlatStyle.Flat; ++ this.cmbMoveType.ForeColor = System.Drawing.Color.Gainsboro; ++ this.cmbMoveType.FormattingEnabled = true; ++ this.cmbMoveType.Items.AddRange(new object[] { + "None", + "Random", + "Move Route"}); +- this.cmbMoveType.Location = new System.Drawing.Point(48, 19); +- this.cmbMoveType.Name = "cmbMoveType"; +- this.cmbMoveType.Size = new System.Drawing.Size(100, 21); +- this.cmbMoveType.TabIndex = 0; +- this.cmbMoveType.Text = "None"; +- this.cmbMoveType.TextPadding = new System.Windows.Forms.Padding(2); +- this.cmbMoveType.SelectedIndexChanged += new System.EventHandler(this.cmbMoveType_SelectedIndexChanged); +- // +- // grpTriggers +- // +- this.grpTriggers.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(48))))); +- this.grpTriggers.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(90)))), ((int)(((byte)(90)))), ((int)(((byte)(90))))); +- this.grpTriggers.Controls.Add(this.txtCommand); +- this.grpTriggers.Controls.Add(this.lblCommand); +- this.grpTriggers.Controls.Add(this.lblTriggerVal); +- this.grpTriggers.Controls.Add(this.cmbTriggerVal); +- this.grpTriggers.Controls.Add(this.cmbTrigger); +- this.grpTriggers.ForeColor = System.Drawing.Color.Gainsboro; +- this.grpTriggers.Location = new System.Drawing.Point(25, 517); +- this.grpTriggers.Name = "grpTriggers"; +- this.grpTriggers.Size = new System.Drawing.Size(317, 44); +- this.grpTriggers.TabIndex = 21; +- this.grpTriggers.TabStop = false; +- this.grpTriggers.Text = "Trigger"; +- // +- // txtCommand +- // +- this.txtCommand.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(69)))), ((int)(((byte)(73)))), ((int)(((byte)(74))))); +- this.txtCommand.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; +- this.txtCommand.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(220)))), ((int)(((byte)(220)))), ((int)(((byte)(220))))); +- this.txtCommand.Location = new System.Drawing.Point(181, 13); +- this.txtCommand.Name = "txtCommand"; +- this.txtCommand.Size = new System.Drawing.Size(130, 20); +- this.txtCommand.TabIndex = 12; +- this.txtCommand.Visible = false; +- this.txtCommand.TextChanged += new System.EventHandler(this.txtCommand_TextChanged); +- // +- // lblCommand +- // +- this.lblCommand.AutoSize = true; +- this.lblCommand.Location = new System.Drawing.Point(113, 17); +- this.lblCommand.Name = "lblCommand"; +- this.lblCommand.Size = new System.Drawing.Size(70, 13); +- this.lblCommand.TabIndex = 11; +- this.lblCommand.Text = "/Command: /"; +- this.lblCommand.Visible = false; +- // +- // lblTriggerVal +- // +- this.lblTriggerVal.AutoSize = true; +- this.lblTriggerVal.Location = new System.Drawing.Point(113, 17); +- this.lblTriggerVal.Name = "lblTriggerVal"; +- this.lblTriggerVal.Size = new System.Drawing.Size(53, 13); +- this.lblTriggerVal.TabIndex = 10; +- this.lblTriggerVal.Text = "Projectile:"; +- this.lblTriggerVal.Visible = false; +- // +- // cmbTriggerVal +- // +- this.cmbTriggerVal.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(69)))), ((int)(((byte)(73)))), ((int)(((byte)(74))))); +- this.cmbTriggerVal.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(90)))), ((int)(((byte)(90)))), ((int)(((byte)(90))))); +- this.cmbTriggerVal.BorderStyle = System.Windows.Forms.ButtonBorderStyle.Solid; +- this.cmbTriggerVal.ButtonColor = System.Drawing.Color.FromArgb(((int)(((byte)(43)))), ((int)(((byte)(43)))), ((int)(((byte)(43))))); +- this.cmbTriggerVal.ButtonIcon = ((System.Drawing.Bitmap)(resources.GetObject("cmbTriggerVal.ButtonIcon"))); +- this.cmbTriggerVal.DrawDropdownHoverOutline = false; +- this.cmbTriggerVal.DrawFocusRectangle = false; +- this.cmbTriggerVal.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed; +- this.cmbTriggerVal.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; +- this.cmbTriggerVal.FlatStyle = System.Windows.Forms.FlatStyle.Flat; +- this.cmbTriggerVal.ForeColor = System.Drawing.Color.Gainsboro; +- this.cmbTriggerVal.FormattingEnabled = true; +- this.cmbTriggerVal.Items.AddRange(new object[] { ++ this.cmbMoveType.Location = new System.Drawing.Point(48, 19); ++ this.cmbMoveType.Name = "cmbMoveType"; ++ this.cmbMoveType.Size = new System.Drawing.Size(100, 21); ++ this.cmbMoveType.TabIndex = 0; ++ this.cmbMoveType.Text = "None"; ++ this.cmbMoveType.TextPadding = new System.Windows.Forms.Padding(2); ++ this.cmbMoveType.SelectedIndexChanged += new System.EventHandler(this.cmbMoveType_SelectedIndexChanged); ++ // ++ // grpTriggers ++ // ++ this.grpTriggers.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(48))))); ++ this.grpTriggers.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(90)))), ((int)(((byte)(90)))), ((int)(((byte)(90))))); ++ this.grpTriggers.Controls.Add(this.txtCommand); ++ this.grpTriggers.Controls.Add(this.lblCommand); ++ this.grpTriggers.Controls.Add(this.lblTriggerVal); ++ this.grpTriggers.Controls.Add(this.cmbTriggerVal); ++ this.grpTriggers.Controls.Add(this.cmbTrigger); ++ this.grpTriggers.ForeColor = System.Drawing.Color.Gainsboro; ++ this.grpTriggers.Location = new System.Drawing.Point(25, 517); ++ this.grpTriggers.Name = "grpTriggers"; ++ this.grpTriggers.Size = new System.Drawing.Size(317, 44); ++ this.grpTriggers.TabIndex = 21; ++ this.grpTriggers.TabStop = false; ++ this.grpTriggers.Text = "Trigger"; ++ // ++ // txtCommand ++ // ++ this.txtCommand.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(69)))), ((int)(((byte)(73)))), ((int)(((byte)(74))))); ++ this.txtCommand.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; ++ this.txtCommand.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(220)))), ((int)(((byte)(220)))), ((int)(((byte)(220))))); ++ this.txtCommand.Location = new System.Drawing.Point(181, 13); ++ this.txtCommand.Name = "txtCommand"; ++ this.txtCommand.Size = new System.Drawing.Size(130, 20); ++ this.txtCommand.TabIndex = 12; ++ this.txtCommand.Visible = false; ++ this.txtCommand.TextChanged += new System.EventHandler(this.txtCommand_TextChanged); ++ // ++ // lblCommand ++ // ++ this.lblCommand.AutoSize = true; ++ this.lblCommand.Location = new System.Drawing.Point(113, 17); ++ this.lblCommand.Name = "lblCommand"; ++ this.lblCommand.Size = new System.Drawing.Size(70, 13); ++ this.lblCommand.TabIndex = 11; ++ this.lblCommand.Text = "/Command: /"; ++ this.lblCommand.Visible = false; ++ // ++ // lblTriggerVal ++ // ++ this.lblTriggerVal.AutoSize = true; ++ this.lblTriggerVal.Location = new System.Drawing.Point(113, 17); ++ this.lblTriggerVal.Name = "lblTriggerVal"; ++ this.lblTriggerVal.Size = new System.Drawing.Size(53, 13); ++ this.lblTriggerVal.TabIndex = 10; ++ this.lblTriggerVal.Text = "Projectile:"; ++ this.lblTriggerVal.Visible = false; ++ // ++ // cmbTriggerVal ++ // ++ this.cmbTriggerVal.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(69)))), ((int)(((byte)(73)))), ((int)(((byte)(74))))); ++ this.cmbTriggerVal.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(90)))), ((int)(((byte)(90)))), ((int)(((byte)(90))))); ++ this.cmbTriggerVal.BorderStyle = System.Windows.Forms.ButtonBorderStyle.Solid; ++ this.cmbTriggerVal.ButtonColor = System.Drawing.Color.FromArgb(((int)(((byte)(43)))), ((int)(((byte)(43)))), ((int)(((byte)(43))))); ++ this.cmbTriggerVal.ButtonIcon = ((System.Drawing.Bitmap)(resources.GetObject("cmbTriggerVal.ButtonIcon"))); ++ this.cmbTriggerVal.DrawDropdownHoverOutline = false; ++ this.cmbTriggerVal.DrawFocusRectangle = false; ++ this.cmbTriggerVal.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed; ++ this.cmbTriggerVal.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; ++ this.cmbTriggerVal.FlatStyle = System.Windows.Forms.FlatStyle.Flat; ++ this.cmbTriggerVal.ForeColor = System.Drawing.Color.Gainsboro; ++ this.cmbTriggerVal.FormattingEnabled = true; ++ this.cmbTriggerVal.Items.AddRange(new object[] { + "None"}); +- this.cmbTriggerVal.Location = new System.Drawing.Point(181, 13); +- this.cmbTriggerVal.Name = "cmbTriggerVal"; +- this.cmbTriggerVal.Size = new System.Drawing.Size(130, 21); +- this.cmbTriggerVal.TabIndex = 9; +- this.cmbTriggerVal.Text = "None"; +- this.cmbTriggerVal.TextPadding = new System.Windows.Forms.Padding(2); +- this.cmbTriggerVal.Visible = false; +- // +- // cmbTrigger +- // +- this.cmbTrigger.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(69)))), ((int)(((byte)(73)))), ((int)(((byte)(74))))); +- this.cmbTrigger.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(90)))), ((int)(((byte)(90)))), ((int)(((byte)(90))))); +- this.cmbTrigger.BorderStyle = System.Windows.Forms.ButtonBorderStyle.Solid; +- this.cmbTrigger.ButtonColor = System.Drawing.Color.FromArgb(((int)(((byte)(43)))), ((int)(((byte)(43)))), ((int)(((byte)(43))))); +- this.cmbTrigger.ButtonIcon = ((System.Drawing.Bitmap)(resources.GetObject("cmbTrigger.ButtonIcon"))); +- this.cmbTrigger.DrawDropdownHoverOutline = false; +- this.cmbTrigger.DrawFocusRectangle = false; +- this.cmbTrigger.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed; +- this.cmbTrigger.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; +- this.cmbTrigger.FlatStyle = System.Windows.Forms.FlatStyle.Flat; +- this.cmbTrigger.ForeColor = System.Drawing.Color.Gainsboro; +- this.cmbTrigger.FormattingEnabled = true; +- this.cmbTrigger.Items.AddRange(new object[] { ++ this.cmbTriggerVal.Location = new System.Drawing.Point(181, 13); ++ this.cmbTriggerVal.Name = "cmbTriggerVal"; ++ this.cmbTriggerVal.Size = new System.Drawing.Size(130, 21); ++ this.cmbTriggerVal.TabIndex = 9; ++ this.cmbTriggerVal.Text = "None"; ++ this.cmbTriggerVal.TextPadding = new System.Windows.Forms.Padding(2); ++ this.cmbTriggerVal.Visible = false; ++ // ++ // cmbTrigger ++ // ++ this.cmbTrigger.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(69)))), ((int)(((byte)(73)))), ((int)(((byte)(74))))); ++ this.cmbTrigger.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(90)))), ((int)(((byte)(90)))), ((int)(((byte)(90))))); ++ this.cmbTrigger.BorderStyle = System.Windows.Forms.ButtonBorderStyle.Solid; ++ this.cmbTrigger.ButtonColor = System.Drawing.Color.FromArgb(((int)(((byte)(43)))), ((int)(((byte)(43)))), ((int)(((byte)(43))))); ++ this.cmbTrigger.ButtonIcon = ((System.Drawing.Bitmap)(resources.GetObject("cmbTrigger.ButtonIcon"))); ++ this.cmbTrigger.DrawDropdownHoverOutline = false; ++ this.cmbTrigger.DrawFocusRectangle = false; ++ this.cmbTrigger.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed; ++ this.cmbTrigger.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; ++ this.cmbTrigger.FlatStyle = System.Windows.Forms.FlatStyle.Flat; ++ this.cmbTrigger.ForeColor = System.Drawing.Color.Gainsboro; ++ this.cmbTrigger.FormattingEnabled = true; ++ this.cmbTrigger.Items.AddRange(new object[] { + "Action Button", + "Player Touch", + "Autorun", + "Projectile Hit"}); +- this.cmbTrigger.Location = new System.Drawing.Point(6, 13); +- this.cmbTrigger.Name = "cmbTrigger"; +- this.cmbTrigger.Size = new System.Drawing.Size(101, 21); +- this.cmbTrigger.TabIndex = 2; +- this.cmbTrigger.Text = "Action Button"; +- this.cmbTrigger.TextPadding = new System.Windows.Forms.Padding(2); +- this.cmbTrigger.SelectedIndexChanged += new System.EventHandler(this.cmbTrigger_SelectedIndexChanged); +- // +- // grpEventConditions +- // +- this.grpEventConditions.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(48))))); +- this.grpEventConditions.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(90)))), ((int)(((byte)(90)))), ((int)(((byte)(90))))); +- this.grpEventConditions.Controls.Add(this.btnEditConditions); +- this.grpEventConditions.ForeColor = System.Drawing.Color.Gainsboro; +- this.grpEventConditions.Location = new System.Drawing.Point(21, 89); +- this.grpEventConditions.Name = "grpEventConditions"; +- this.grpEventConditions.Size = new System.Drawing.Size(326, 55); +- this.grpEventConditions.TabIndex = 5; +- this.grpEventConditions.TabStop = false; +- this.grpEventConditions.Text = "Conditions"; +- // +- // btnEditConditions +- // +- this.btnEditConditions.Location = new System.Drawing.Point(7, 20); +- this.btnEditConditions.Name = "btnEditConditions"; +- this.btnEditConditions.Padding = new System.Windows.Forms.Padding(5); +- this.btnEditConditions.Size = new System.Drawing.Size(304, 23); +- this.btnEditConditions.TabIndex = 0; +- this.btnEditConditions.Text = "Spawn/Execution Conditions"; +- this.btnEditConditions.Click += new System.EventHandler(this.btnEditConditions_Click); +- // +- // grpNewCommands +- // +- this.grpNewCommands.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(48))))); +- this.grpNewCommands.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(90)))), ((int)(((byte)(90)))), ((int)(((byte)(90))))); +- this.grpNewCommands.Controls.Add(this.lblCloseCommands); +- this.grpNewCommands.Controls.Add(this.lstCommands); +- this.grpNewCommands.ForeColor = System.Drawing.Color.Gainsboro; +- this.grpNewCommands.Location = new System.Drawing.Point(353, 89); +- this.grpNewCommands.Name = "grpNewCommands"; +- this.grpNewCommands.Size = new System.Drawing.Size(457, 484); +- this.grpNewCommands.TabIndex = 7; +- this.grpNewCommands.TabStop = false; +- this.grpNewCommands.Text = "Add Commands"; +- this.grpNewCommands.Visible = false; +- // +- // lblCloseCommands +- // +- this.lblCloseCommands.AutoSize = true; +- this.lblCloseCommands.Location = new System.Drawing.Point(437, 14); +- this.lblCloseCommands.Name = "lblCloseCommands"; +- this.lblCloseCommands.Size = new System.Drawing.Size(14, 13); +- this.lblCloseCommands.TabIndex = 1; +- this.lblCloseCommands.Text = "X"; +- this.lblCloseCommands.Click += new System.EventHandler(this.lblCloseCommands_Click); +- // +- // lstCommands +- // +- this.lstCommands.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(63)))), ((int)(((byte)(65))))); +- this.lstCommands.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; +- this.lstCommands.ForeColor = System.Drawing.Color.Gainsboro; +- this.lstCommands.LineColor = System.Drawing.Color.FromArgb(((int)(((byte)(150)))), ((int)(((byte)(150)))), ((int)(((byte)(150))))); +- this.lstCommands.Location = new System.Drawing.Point(6, 32); +- this.lstCommands.Name = "lstCommands"; +- treeNode1.Name = "showtext"; +- treeNode1.Tag = "1"; +- treeNode1.Text = "Show Text"; +- treeNode2.Name = "showoptions"; +- treeNode2.Tag = "2"; +- treeNode2.Text = "Show Options"; +- treeNode3.Name = "inputvariable"; +- treeNode3.Tag = "49"; +- treeNode3.Text = "Input Variable"; +- treeNode4.Name = "addchatboxtext"; +- treeNode4.Tag = "3"; +- treeNode4.Text = "Add Chatbox Text"; +- treeNode5.Name = "dialogue"; +- treeNode5.Text = "Dialogue"; +- treeNode6.Name = "setvariable"; +- treeNode6.Tag = "5"; +- treeNode6.Text = "Set Variable"; +- treeNode7.Name = "setselfswitch"; +- treeNode7.Tag = "6"; +- treeNode7.Text = "Set Self Switch"; +- treeNode8.Name = "conditionalbranch"; +- treeNode8.Tag = "7"; +- treeNode8.Text = "Conditional Branch"; +- treeNode9.Name = "exiteventprocess"; +- treeNode9.Tag = "8"; +- treeNode9.Text = "Exit Event Process"; +- treeNode10.Name = "label"; +- treeNode10.Tag = "9"; +- treeNode10.Text = "Label"; +- treeNode11.Name = "gotolabel"; +- treeNode11.Tag = "10"; +- treeNode11.Text = "Go To Label"; +- treeNode12.Name = "startcommonevent"; +- treeNode12.Tag = "11"; +- treeNode12.Text = "Start Common Event"; +- treeNode13.Name = "logicflow"; +- treeNode13.Text = "Logic Flow"; +- treeNode14.Name = "restorehp"; +- treeNode14.Tag = "12"; +- treeNode14.Text = "Restore HP"; +- treeNode15.Name = "restoremp"; +- treeNode15.Tag = "13"; +- treeNode15.Text = "Restore MP"; +- treeNode16.Name = "levelup"; +- treeNode16.Tag = "14"; +- treeNode16.Text = "Level Up"; +- treeNode17.Name = "giveexperience"; +- treeNode17.Tag = "15"; +- treeNode17.Text = "Give Experience"; +- treeNode18.Name = "changelevel"; +- treeNode18.Tag = "16"; +- treeNode18.Text = "Change Level"; +- treeNode19.Name = "changespells"; +- treeNode19.Tag = "17"; +- treeNode19.Text = "Change Spells"; +- treeNode20.Name = "changeitems"; +- treeNode20.Tag = "18"; +- treeNode20.Text = "Change Items"; +- treeNode21.Name = "changesprite"; +- treeNode21.Tag = "19"; +- treeNode21.Text = "Change Sprite"; +- treeNode22.Name = "changeface"; +- treeNode22.Tag = "20"; +- treeNode22.Text = "Change Face"; +- treeNode23.Name = "changegender"; +- treeNode23.Tag = "21"; +- treeNode23.Text = "Change Gender"; +- treeNode24.Name = "setaccess"; +- treeNode24.Tag = "22"; +- treeNode24.Text = "Set Access"; +- treeNode25.Name = "changeclass"; +- treeNode25.Tag = "38"; +- treeNode25.Text = "Change Class"; +- treeNode26.Name = "equipitem"; +- treeNode26.Tag = "47"; +- treeNode26.Text = "Equip Item"; +- treeNode27.Name = "changenamecolor"; +- treeNode27.Tag = "48"; +- treeNode27.Text = "Change Name Color"; +- treeNode28.Name = "changeplayerlabel"; +- treeNode28.Tag = "50"; +- treeNode28.Text = "Change Player Label"; +- treeNode29.Name = "playercontrol"; +- treeNode29.Text = "Player Control"; +- treeNode30.Name = "warpplayer"; +- treeNode30.Tag = "23"; +- treeNode30.Text = "Warp Player"; +- treeNode31.Name = "setmoveroute"; +- treeNode31.Tag = "24"; +- treeNode31.Text = "Set Move Route"; +- treeNode32.Name = "waitmoveroute"; +- treeNode32.Tag = "25"; +- treeNode32.Text = "Wait for Route Completion"; +- treeNode33.Name = "holdplayer"; +- treeNode33.Tag = "26"; +- treeNode33.Text = "Hold Player"; +- treeNode34.Name = "releaseplayer"; +- treeNode34.Tag = "27"; +- treeNode34.Text = "Release Player"; +- treeNode35.Name = "spawnnpc"; +- treeNode35.Tag = "28"; +- treeNode35.Text = "Spawn NPC"; +- treeNode36.Name = "despawnnpcs"; +- treeNode36.Tag = "39"; +- treeNode36.Text = "Despawn NPC"; +- treeNode37.Name = "hideplayer"; +- treeNode37.Tag = "45"; +- treeNode37.Text = "Hide Player"; +- treeNode38.Name = "showplayer"; +- treeNode38.Tag = "46"; +- treeNode38.Text = "Show Player"; +- treeNode39.Name = "movement"; +- treeNode39.Text = "Movement"; +- treeNode40.Name = "playanimation"; +- treeNode40.Tag = "29"; +- treeNode40.Text = "Play Animation"; +- treeNode41.Name = "playbgm"; +- treeNode41.Tag = "30"; +- treeNode41.Text = "Play BGM"; +- treeNode42.Name = "fadeoutbgm"; +- treeNode42.Tag = "31"; +- treeNode42.Text = "Fadeout BGM"; +- treeNode43.Name = "playsound"; +- treeNode43.Tag = "32"; +- treeNode43.Text = "Play Sound"; +- treeNode44.Name = "stopsounds"; +- treeNode44.Tag = "33"; +- treeNode44.Text = "Stop Sounds"; +- treeNode45.Name = "showpicture"; +- treeNode45.Tag = "43"; +- treeNode45.Text = "Show Picture"; +- treeNode46.Name = "hidepicture"; +- treeNode46.Tag = "44"; +- treeNode46.Text = "Hide Picture"; +- treeNode47.Name = "specialeffects"; +- treeNode47.Text = "Special Effects"; +- treeNode48.Name = "startquest"; +- treeNode48.Tag = "40"; +- treeNode48.Text = "Start Quest"; +- treeNode49.Name = "completequesttask"; +- treeNode49.Tag = "41"; +- treeNode49.Text = "Complete Quest Task"; +- treeNode50.Name = "endquest"; +- treeNode50.Tag = "42"; +- treeNode50.Text = "End Quest"; +- treeNode51.Name = "questcontrol"; +- treeNode51.Text = "Quest Control"; +- treeNode52.Name = "wait"; +- treeNode52.Tag = "34"; +- treeNode52.Text = "Wait..."; +- treeNode53.Name = "etc"; +- treeNode53.Text = "Etc"; +- treeNode54.Name = "openbank"; +- treeNode54.Tag = "35"; +- treeNode54.Text = "Open Bank"; +- treeNode55.Name = "openshop"; +- treeNode55.Tag = "36"; +- treeNode55.Text = "Open Shop"; +- treeNode56.Name = "opencraftingstation"; +- treeNode56.Tag = "37"; +- treeNode56.Text = "Open Crafting Station"; +- treeNode57.Name = "shopandbank"; +- treeNode57.Text = "Shop and Bank"; +- this.lstCommands.Nodes.AddRange(new System.Windows.Forms.TreeNode[] { ++ this.cmbTrigger.Location = new System.Drawing.Point(6, 13); ++ this.cmbTrigger.Name = "cmbTrigger"; ++ this.cmbTrigger.Size = new System.Drawing.Size(101, 21); ++ this.cmbTrigger.TabIndex = 2; ++ this.cmbTrigger.Text = "Action Button"; ++ this.cmbTrigger.TextPadding = new System.Windows.Forms.Padding(2); ++ this.cmbTrigger.SelectedIndexChanged += new System.EventHandler(this.cmbTrigger_SelectedIndexChanged); ++ // ++ // grpEventConditions ++ // ++ this.grpEventConditions.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(48))))); ++ this.grpEventConditions.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(90)))), ((int)(((byte)(90)))), ((int)(((byte)(90))))); ++ this.grpEventConditions.Controls.Add(this.btnEditConditions); ++ this.grpEventConditions.ForeColor = System.Drawing.Color.Gainsboro; ++ this.grpEventConditions.Location = new System.Drawing.Point(21, 89); ++ this.grpEventConditions.Name = "grpEventConditions"; ++ this.grpEventConditions.Size = new System.Drawing.Size(326, 55); ++ this.grpEventConditions.TabIndex = 5; ++ this.grpEventConditions.TabStop = false; ++ this.grpEventConditions.Text = "Conditions"; ++ // ++ // btnEditConditions ++ // ++ this.btnEditConditions.Location = new System.Drawing.Point(7, 20); ++ this.btnEditConditions.Name = "btnEditConditions"; ++ this.btnEditConditions.Padding = new System.Windows.Forms.Padding(5); ++ this.btnEditConditions.Size = new System.Drawing.Size(304, 23); ++ this.btnEditConditions.TabIndex = 0; ++ this.btnEditConditions.Text = "Spawn/Execution Conditions"; ++ this.btnEditConditions.Click += new System.EventHandler(this.btnEditConditions_Click); ++ // ++ // grpNewCommands ++ // ++ this.grpNewCommands.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(48))))); ++ this.grpNewCommands.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(90)))), ((int)(((byte)(90)))), ((int)(((byte)(90))))); ++ this.grpNewCommands.Controls.Add(this.lblCloseCommands); ++ this.grpNewCommands.Controls.Add(this.lstCommands); ++ this.grpNewCommands.ForeColor = System.Drawing.Color.Gainsboro; ++ this.grpNewCommands.Location = new System.Drawing.Point(353, 89); ++ this.grpNewCommands.Name = "grpNewCommands"; ++ this.grpNewCommands.Size = new System.Drawing.Size(457, 484); ++ this.grpNewCommands.TabIndex = 7; ++ this.grpNewCommands.TabStop = false; ++ this.grpNewCommands.Text = "Add Commands"; ++ this.grpNewCommands.Visible = false; ++ // ++ // lblCloseCommands ++ // ++ this.lblCloseCommands.AutoSize = true; ++ this.lblCloseCommands.Location = new System.Drawing.Point(437, 14); ++ this.lblCloseCommands.Name = "lblCloseCommands"; ++ this.lblCloseCommands.Size = new System.Drawing.Size(14, 13); ++ this.lblCloseCommands.TabIndex = 1; ++ this.lblCloseCommands.Text = "X"; ++ this.lblCloseCommands.Click += new System.EventHandler(this.lblCloseCommands_Click); ++ // ++ // lstCommands ++ // ++ this.lstCommands.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(63)))), ((int)(((byte)(65))))); ++ this.lstCommands.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; ++ this.lstCommands.ForeColor = System.Drawing.Color.Gainsboro; ++ this.lstCommands.LineColor = System.Drawing.Color.FromArgb(((int)(((byte)(150)))), ((int)(((byte)(150)))), ((int)(((byte)(150))))); ++ this.lstCommands.Location = new System.Drawing.Point(6, 32); ++ this.lstCommands.Name = "lstCommands"; ++ treeNode1.Name = "showtext"; ++ treeNode1.Tag = "1"; ++ treeNode1.Text = "Show Text"; ++ treeNode2.Name = "showoptions"; ++ treeNode2.Tag = "2"; ++ treeNode2.Text = "Show Options"; ++ treeNode3.Name = "inputvariable"; ++ treeNode3.Tag = "49"; ++ treeNode3.Text = "Input Variable"; ++ treeNode4.Name = "addchatboxtext"; ++ treeNode4.Tag = "3"; ++ treeNode4.Text = "Add Chatbox Text"; ++ treeNode5.Name = "dialogue"; ++ treeNode5.Text = "Dialogue"; ++ treeNode6.Name = "setvariable"; ++ treeNode6.Tag = "5"; ++ treeNode6.Text = "Set Variable"; ++ treeNode7.Name = "setselfswitch"; ++ treeNode7.Tag = "6"; ++ treeNode7.Text = "Set Self Switch"; ++ treeNode8.Name = "conditionalbranch"; ++ treeNode8.Tag = "7"; ++ treeNode8.Text = "Conditional Branch"; ++ treeNode9.Name = "exiteventprocess"; ++ treeNode9.Tag = "8"; ++ treeNode9.Text = "Exit Event Process"; ++ treeNode10.Name = "label"; ++ treeNode10.Tag = "9"; ++ treeNode10.Text = "Label"; ++ treeNode11.Name = "gotolabel"; ++ treeNode11.Tag = "10"; ++ treeNode11.Text = "Go To Label"; ++ treeNode12.Name = "startcommonevent"; ++ treeNode12.Tag = "11"; ++ treeNode12.Text = "Start Common Event"; ++ treeNode13.Name = "logicflow"; ++ treeNode13.Text = "Logic Flow"; ++ treeNode14.Name = "restorehp"; ++ treeNode14.Tag = "12"; ++ treeNode14.Text = "Restore HP"; ++ treeNode15.Name = "restoremp"; ++ treeNode15.Tag = "13"; ++ treeNode15.Text = "Restore MP"; ++ treeNode16.Name = "levelup"; ++ treeNode16.Tag = "14"; ++ treeNode16.Text = "Level Up"; ++ treeNode17.Name = "giveexperience"; ++ treeNode17.Tag = "15"; ++ treeNode17.Text = "Give Experience"; ++ treeNode18.Name = "changelevel"; ++ treeNode18.Tag = "16"; ++ treeNode18.Text = "Change Level"; ++ treeNode19.Name = "changespells"; ++ treeNode19.Tag = "17"; ++ treeNode19.Text = "Change Spells"; ++ treeNode20.Name = "changeitems"; ++ treeNode20.Tag = "18"; ++ treeNode20.Text = "Change Items"; ++ treeNode21.Name = "changesprite"; ++ treeNode21.Tag = "19"; ++ treeNode21.Text = "Change Sprite"; ++ treeNode22.Name = "changeface"; ++ treeNode22.Tag = "20"; ++ treeNode22.Text = "Change Face"; ++ treeNode23.Name = "changehair"; ++ treeNode23.Tag = "51"; ++ treeNode23.Text = "Change Hair"; ++ treeNode24.Name = "changegender"; ++ treeNode24.Tag = "21"; ++ treeNode24.Text = "Change Gender"; ++ treeNode25.Name = "setaccess"; ++ treeNode25.Tag = "22"; ++ treeNode25.Text = "Set Access"; ++ treeNode26.Name = "changeclass"; ++ treeNode26.Tag = "38"; ++ treeNode26.Text = "Change Class"; ++ treeNode27.Name = "equipitem"; ++ treeNode27.Tag = "47"; ++ treeNode27.Text = "Equip Item"; ++ treeNode28.Name = "changenamecolor"; ++ treeNode28.Tag = "48"; ++ treeNode28.Text = "Change Name Color"; ++ treeNode29.Name = "changeplayerlabel"; ++ treeNode29.Tag = "50"; ++ treeNode29.Text = "Change Player Label"; ++ treeNode30.Name = "playercontrol"; ++ treeNode30.Text = "Player Control"; ++ treeNode31.Name = "warpplayer"; ++ treeNode31.Tag = "23"; ++ treeNode31.Text = "Warp Player"; ++ treeNode32.Name = "setmoveroute"; ++ treeNode32.Tag = "24"; ++ treeNode32.Text = "Set Move Route"; ++ treeNode33.Name = "waitmoveroute"; ++ treeNode33.Tag = "25"; ++ treeNode33.Text = "Wait for Route Completion"; ++ treeNode34.Name = "holdplayer"; ++ treeNode34.Tag = "26"; ++ treeNode34.Text = "Hold Player"; ++ treeNode35.Name = "releaseplayer"; ++ treeNode35.Tag = "27"; ++ treeNode35.Text = "Release Player"; ++ treeNode36.Name = "spawnnpc"; ++ treeNode36.Tag = "28"; ++ treeNode36.Text = "Spawn NPC"; ++ treeNode37.Name = "despawnnpcs"; ++ treeNode37.Tag = "39"; ++ treeNode37.Text = "Despawn NPC"; ++ treeNode38.Name = "hideplayer"; ++ treeNode38.Tag = "45"; ++ treeNode38.Text = "Hide Player"; ++ treeNode39.Name = "showplayer"; ++ treeNode39.Tag = "46"; ++ treeNode39.Text = "Show Player"; ++ treeNode40.Name = "movement"; ++ treeNode40.Text = "Movement"; ++ treeNode41.Name = "playanimation"; ++ treeNode41.Tag = "29"; ++ treeNode41.Text = "Play Animation"; ++ treeNode42.Name = "playbgm"; ++ treeNode42.Tag = "30"; ++ treeNode42.Text = "Play BGM"; ++ treeNode43.Name = "fadeoutbgm"; ++ treeNode43.Tag = "31"; ++ treeNode43.Text = "Fadeout BGM"; ++ treeNode44.Name = "playsound"; ++ treeNode44.Tag = "32"; ++ treeNode44.Text = "Play Sound"; ++ treeNode45.Name = "stopsounds"; ++ treeNode45.Tag = "33"; ++ treeNode45.Text = "Stop Sounds"; ++ treeNode46.Name = "showpicture"; ++ treeNode46.Tag = "43"; ++ treeNode46.Text = "Show Picture"; ++ treeNode47.Name = "hidepicture"; ++ treeNode47.Tag = "44"; ++ treeNode47.Text = "Hide Picture"; ++ treeNode48.Name = "specialeffects"; ++ treeNode48.Text = "Special Effects"; ++ treeNode49.Name = "startquest"; ++ treeNode49.Tag = "40"; ++ treeNode49.Text = "Start Quest"; ++ treeNode50.Name = "completequesttask"; ++ treeNode50.Tag = "41"; ++ treeNode50.Text = "Complete Quest Task"; ++ treeNode51.Name = "endquest"; ++ treeNode51.Tag = "42"; ++ treeNode51.Text = "End Quest"; ++ treeNode52.Name = "questcontrol"; ++ treeNode52.Text = "Quest Control"; ++ treeNode53.Name = "wait"; ++ treeNode53.Tag = "34"; ++ treeNode53.Text = "Wait..."; ++ treeNode54.Name = "etc"; ++ treeNode54.Text = "Etc"; ++ treeNode55.Name = "openbank"; ++ treeNode55.Tag = "35"; ++ treeNode55.Text = "Open Bank"; ++ treeNode56.Name = "openshop"; ++ treeNode56.Tag = "36"; ++ treeNode56.Text = "Open Shop"; ++ treeNode57.Name = "opencraftingstation"; ++ treeNode57.Tag = "37"; ++ treeNode57.Text = "Open Crafting Station"; ++ treeNode58.Name = "shopandbank"; ++ treeNode58.Text = "Shop and Bank"; ++ this.lstCommands.Nodes.AddRange(new System.Windows.Forms.TreeNode[] { + treeNode5, + treeNode13, +- treeNode29, +- treeNode39, +- treeNode47, +- treeNode51, +- treeNode53, +- treeNode57}); +- this.lstCommands.Size = new System.Drawing.Size(445, 440); +- this.lstCommands.TabIndex = 2; +- this.lstCommands.NodeMouseDoubleClick += new System.Windows.Forms.TreeNodeMouseClickEventHandler(this.lstCommands_NodeMouseDoubleClick); +- // +- // grpEventCommands +- // +- this.grpEventCommands.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(48))))); +- this.grpEventCommands.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(90)))), ((int)(((byte)(90)))), ((int)(((byte)(90))))); +- this.grpEventCommands.Controls.Add(this.lstEventCommands); +- this.grpEventCommands.ForeColor = System.Drawing.Color.Gainsboro; +- this.grpEventCommands.Location = new System.Drawing.Point(353, 89); +- this.grpEventCommands.Name = "grpEventCommands"; +- this.grpEventCommands.Size = new System.Drawing.Size(457, 484); +- this.grpEventCommands.TabIndex = 6; +- this.grpEventCommands.TabStop = false; +- this.grpEventCommands.Text = "Commands"; +- // +- // lstEventCommands +- // +- this.lstEventCommands.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(63)))), ((int)(((byte)(65))))); +- this.lstEventCommands.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; +- this.lstEventCommands.ForeColor = System.Drawing.Color.Gainsboro; +- this.lstEventCommands.FormattingEnabled = true; +- this.lstEventCommands.HorizontalScrollbar = true; +- this.lstEventCommands.Items.AddRange(new object[] { ++ treeNode30, ++ treeNode40, ++ treeNode48, ++ treeNode52, ++ treeNode54, ++ treeNode58}); ++ this.lstCommands.Size = new System.Drawing.Size(445, 440); ++ this.lstCommands.TabIndex = 2; ++ this.lstCommands.NodeMouseDoubleClick += new System.Windows.Forms.TreeNodeMouseClickEventHandler(this.lstCommands_NodeMouseDoubleClick); ++ // ++ // grpEventCommands ++ // ++ this.grpEventCommands.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(48))))); ++ this.grpEventCommands.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(90)))), ((int)(((byte)(90)))), ((int)(((byte)(90))))); ++ this.grpEventCommands.Controls.Add(this.lstEventCommands); ++ this.grpEventCommands.ForeColor = System.Drawing.Color.Gainsboro; ++ this.grpEventCommands.Location = new System.Drawing.Point(353, 89); ++ this.grpEventCommands.Name = "grpEventCommands"; ++ this.grpEventCommands.Size = new System.Drawing.Size(457, 484); ++ this.grpEventCommands.TabIndex = 6; ++ this.grpEventCommands.TabStop = false; ++ this.grpEventCommands.Text = "Commands"; ++ // ++ // lstEventCommands ++ // ++ this.lstEventCommands.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(63)))), ((int)(((byte)(65))))); ++ this.lstEventCommands.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; ++ this.lstEventCommands.ForeColor = System.Drawing.Color.Gainsboro; ++ this.lstEventCommands.FormattingEnabled = true; ++ this.lstEventCommands.HorizontalScrollbar = true; ++ this.lstEventCommands.Items.AddRange(new object[] { + "@>"}); +- this.lstEventCommands.Location = new System.Drawing.Point(6, 19); +- this.lstEventCommands.Name = "lstEventCommands"; +- this.lstEventCommands.Size = new System.Drawing.Size(445, 457); +- this.lstEventCommands.TabIndex = 0; +- this.lstEventCommands.SelectedIndexChanged += new System.EventHandler(this.lstEventCommands_SelectedIndexChanged); +- this.lstEventCommands.DoubleClick += new System.EventHandler(this.lstEventCommands_DoubleClick); +- this.lstEventCommands.KeyDown += new System.Windows.Forms.KeyEventHandler(this.lstEventCommands_KeyDown); +- this.lstEventCommands.MouseDown += new System.Windows.Forms.MouseEventHandler(this.lstEventCommands_Click); +- // +- // grpCreateCommands +- // +- this.grpCreateCommands.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(48))))); +- this.grpCreateCommands.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(90)))), ((int)(((byte)(90)))), ((int)(((byte)(90))))); +- this.grpCreateCommands.ForeColor = System.Drawing.Color.Gainsboro; +- this.grpCreateCommands.Location = new System.Drawing.Point(353, 89); +- this.grpCreateCommands.Name = "grpCreateCommands"; +- this.grpCreateCommands.Size = new System.Drawing.Size(457, 484); +- this.grpCreateCommands.TabIndex = 8; +- this.grpCreateCommands.TabStop = false; +- this.grpCreateCommands.Visible = false; +- // +- // btnSave +- // +- this.btnSave.Location = new System.Drawing.Point(628, 586); +- this.btnSave.Name = "btnSave"; +- this.btnSave.Padding = new System.Windows.Forms.Padding(5); +- this.btnSave.Size = new System.Drawing.Size(93, 30); +- this.btnSave.TabIndex = 6; +- this.btnSave.Text = "Save"; +- this.btnSave.Click += new System.EventHandler(this.btnSave_Click); +- // +- // btnCancel +- // +- this.btnCancel.Location = new System.Drawing.Point(727, 586); +- this.btnCancel.Name = "btnCancel"; +- this.btnCancel.Padding = new System.Windows.Forms.Padding(5); +- this.btnCancel.Size = new System.Drawing.Size(93, 30); +- this.btnCancel.TabIndex = 7; +- this.btnCancel.Text = "Cancel"; +- this.btnCancel.Click += new System.EventHandler(this.btnCancel_Click); +- // +- // commandMenu +- // +- this.commandMenu.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(63)))), ((int)(((byte)(65))))); +- this.commandMenu.ImageScalingSize = new System.Drawing.Size(24, 24); +- this.commandMenu.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { ++ this.lstEventCommands.Location = new System.Drawing.Point(6, 19); ++ this.lstEventCommands.Name = "lstEventCommands"; ++ this.lstEventCommands.Size = new System.Drawing.Size(445, 457); ++ this.lstEventCommands.TabIndex = 0; ++ this.lstEventCommands.SelectedIndexChanged += new System.EventHandler(this.lstEventCommands_SelectedIndexChanged); ++ this.lstEventCommands.DoubleClick += new System.EventHandler(this.lstEventCommands_DoubleClick); ++ this.lstEventCommands.KeyDown += new System.Windows.Forms.KeyEventHandler(this.lstEventCommands_KeyDown); ++ this.lstEventCommands.MouseDown += new System.Windows.Forms.MouseEventHandler(this.lstEventCommands_Click); ++ // ++ // grpCreateCommands ++ // ++ this.grpCreateCommands.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(48))))); ++ this.grpCreateCommands.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(90)))), ((int)(((byte)(90)))), ((int)(((byte)(90))))); ++ this.grpCreateCommands.ForeColor = System.Drawing.Color.Gainsboro; ++ this.grpCreateCommands.Location = new System.Drawing.Point(353, 89); ++ this.grpCreateCommands.Name = "grpCreateCommands"; ++ this.grpCreateCommands.Size = new System.Drawing.Size(457, 484); ++ this.grpCreateCommands.TabIndex = 8; ++ this.grpCreateCommands.TabStop = false; ++ this.grpCreateCommands.Visible = false; ++ // ++ // btnSave ++ // ++ this.btnSave.Location = new System.Drawing.Point(628, 586); ++ this.btnSave.Name = "btnSave"; ++ this.btnSave.Padding = new System.Windows.Forms.Padding(5); ++ this.btnSave.Size = new System.Drawing.Size(93, 30); ++ this.btnSave.TabIndex = 6; ++ this.btnSave.Text = "Save"; ++ this.btnSave.Click += new System.EventHandler(this.btnSave_Click); ++ // ++ // btnCancel ++ // ++ this.btnCancel.Location = new System.Drawing.Point(727, 586); ++ this.btnCancel.Name = "btnCancel"; ++ this.btnCancel.Padding = new System.Windows.Forms.Padding(5); ++ this.btnCancel.Size = new System.Drawing.Size(93, 30); ++ this.btnCancel.TabIndex = 7; ++ this.btnCancel.Text = "Cancel"; ++ this.btnCancel.Click += new System.EventHandler(this.btnCancel_Click); ++ // ++ // commandMenu ++ // ++ this.commandMenu.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(63)))), ((int)(((byte)(65))))); ++ this.commandMenu.ImageScalingSize = new System.Drawing.Size(24, 24); ++ this.commandMenu.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.btnInsert, + this.btnEdit, + this.btnCut, + this.btnCopy, + this.btnPaste, + this.btnDelete}); +- this.commandMenu.Name = "commandMenu"; +- this.commandMenu.RenderMode = System.Windows.Forms.ToolStripRenderMode.System; +- this.commandMenu.Size = new System.Drawing.Size(108, 136); +- // +- // btnInsert +- // +- this.btnInsert.ForeColor = System.Drawing.Color.Gainsboro; +- this.btnInsert.Name = "btnInsert"; +- this.btnInsert.Size = new System.Drawing.Size(107, 22); +- this.btnInsert.Text = "Insert"; +- this.btnInsert.Click += new System.EventHandler(this.btnInsert_Click); +- // +- // btnEdit +- // +- this.btnEdit.ForeColor = System.Drawing.Color.Gainsboro; +- this.btnEdit.Name = "btnEdit"; +- this.btnEdit.Size = new System.Drawing.Size(107, 22); +- this.btnEdit.Text = "Edit"; +- this.btnEdit.Click += new System.EventHandler(this.btnEdit_Click); +- // +- // btnCut +- // +- this.btnCut.ForeColor = System.Drawing.Color.Gainsboro; +- this.btnCut.Name = "btnCut"; +- this.btnCut.Size = new System.Drawing.Size(107, 22); +- this.btnCut.Text = "Cut"; +- this.btnCut.Click += new System.EventHandler(this.btnCut_Click); +- // +- // btnCopy +- // +- this.btnCopy.ForeColor = System.Drawing.Color.Gainsboro; +- this.btnCopy.Name = "btnCopy"; +- this.btnCopy.Size = new System.Drawing.Size(107, 22); +- this.btnCopy.Text = "Copy"; +- this.btnCopy.Click += new System.EventHandler(this.btnCopy_Click); +- // +- // btnPaste +- // +- this.btnPaste.ForeColor = System.Drawing.Color.Gainsboro; +- this.btnPaste.Name = "btnPaste"; +- this.btnPaste.Size = new System.Drawing.Size(107, 22); +- this.btnPaste.Text = "Paste"; +- this.btnPaste.Click += new System.EventHandler(this.btnPaste_Click); +- // +- // btnDelete +- // +- this.btnDelete.ForeColor = System.Drawing.Color.Gainsboro; +- this.btnDelete.Name = "btnDelete"; +- this.btnDelete.Size = new System.Drawing.Size(107, 22); +- this.btnDelete.Text = "Delete"; +- this.btnDelete.Click += new System.EventHandler(this.btnDelete_Click); +- // +- // grpPageOptions +- // +- this.grpPageOptions.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(48))))); +- this.grpPageOptions.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(90)))), ((int)(((byte)(90)))), ((int)(((byte)(90))))); +- this.grpPageOptions.Controls.Add(this.btnClearPage); +- this.grpPageOptions.Controls.Add(this.btnDeletePage); +- this.grpPageOptions.Controls.Add(this.btnPastePage); +- this.grpPageOptions.Controls.Add(this.btnCopyPage); +- this.grpPageOptions.Controls.Add(this.btnNewPage); +- this.grpPageOptions.ForeColor = System.Drawing.Color.Gainsboro; +- this.grpPageOptions.Location = new System.Drawing.Point(313, 5); +- this.grpPageOptions.Name = "grpPageOptions"; +- this.grpPageOptions.Size = new System.Drawing.Size(510, 50); +- this.grpPageOptions.TabIndex = 13; +- this.grpPageOptions.TabStop = false; +- this.grpPageOptions.Text = "Page Options"; +- // +- // btnClearPage +- // +- this.btnClearPage.Location = new System.Drawing.Point(402, 16); +- this.btnClearPage.Name = "btnClearPage"; +- this.btnClearPage.Padding = new System.Windows.Forms.Padding(5); +- this.btnClearPage.Size = new System.Drawing.Size(93, 30); +- this.btnClearPage.TabIndex = 17; +- this.btnClearPage.Text = "Clear Page"; +- this.btnClearPage.Click += new System.EventHandler(this.btnClearPage_Click); +- // +- // btnDeletePage +- // +- this.btnDeletePage.Enabled = false; +- this.btnDeletePage.Location = new System.Drawing.Point(303, 16); +- this.btnDeletePage.Name = "btnDeletePage"; +- this.btnDeletePage.Padding = new System.Windows.Forms.Padding(5); +- this.btnDeletePage.Size = new System.Drawing.Size(93, 30); +- this.btnDeletePage.TabIndex = 16; +- this.btnDeletePage.Text = "Delete Page"; +- this.btnDeletePage.Click += new System.EventHandler(this.btnDeletePage_Click); +- // +- // btnPastePage +- // +- this.btnPastePage.Location = new System.Drawing.Point(204, 16); +- this.btnPastePage.Name = "btnPastePage"; +- this.btnPastePage.Padding = new System.Windows.Forms.Padding(5); +- this.btnPastePage.Size = new System.Drawing.Size(93, 30); +- this.btnPastePage.TabIndex = 15; +- this.btnPastePage.Text = "Paste Page"; +- this.btnPastePage.Click += new System.EventHandler(this.btnPastePage_Click); +- // +- // btnCopyPage +- // +- this.btnCopyPage.Location = new System.Drawing.Point(105, 16); +- this.btnCopyPage.Name = "btnCopyPage"; +- this.btnCopyPage.Padding = new System.Windows.Forms.Padding(5); +- this.btnCopyPage.Size = new System.Drawing.Size(93, 30); +- this.btnCopyPage.TabIndex = 14; +- this.btnCopyPage.Text = "Copy Page"; +- this.btnCopyPage.Click += new System.EventHandler(this.btnCopyPage_Click); +- // +- // btnNewPage +- // +- this.btnNewPage.Location = new System.Drawing.Point(6, 16); +- this.btnNewPage.Name = "btnNewPage"; +- this.btnNewPage.Padding = new System.Windows.Forms.Padding(5); +- this.btnNewPage.Size = new System.Drawing.Size(93, 30); +- this.btnNewPage.TabIndex = 13; +- this.btnNewPage.Text = "New Page"; +- this.btnNewPage.Click += new System.EventHandler(this.btnNewPage_Click); +- // +- // grpGeneral +- // +- this.grpGeneral.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(48))))); +- this.grpGeneral.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(90)))), ((int)(((byte)(90)))), ((int)(((byte)(90))))); +- this.grpGeneral.Controls.Add(this.chkIsGlobal); +- this.grpGeneral.Controls.Add(this.lblName); +- this.grpGeneral.Controls.Add(this.txtEventname); +- this.grpGeneral.ForeColor = System.Drawing.Color.Gainsboro; +- this.grpGeneral.Location = new System.Drawing.Point(12, 5); +- this.grpGeneral.Name = "grpGeneral"; +- this.grpGeneral.Size = new System.Drawing.Size(295, 49); +- this.grpGeneral.TabIndex = 18; +- this.grpGeneral.TabStop = false; +- this.grpGeneral.Text = "General"; +- // +- // chkIsGlobal +- // +- this.chkIsGlobal.AutoSize = true; +- this.chkIsGlobal.Location = new System.Drawing.Point(202, 22); +- this.chkIsGlobal.Name = "chkIsGlobal"; +- this.chkIsGlobal.Size = new System.Drawing.Size(87, 17); +- this.chkIsGlobal.TabIndex = 3; +- this.chkIsGlobal.Text = "Global Event"; +- this.chkIsGlobal.CheckedChanged += new System.EventHandler(this.chkIsGlobal_CheckedChanged); +- // +- // pnlTabsContainer +- // +- this.pnlTabsContainer.Controls.Add(this.pnlTabs); +- this.pnlTabsContainer.Location = new System.Drawing.Point(12, 61); +- this.pnlTabsContainer.Name = "pnlTabsContainer"; +- this.pnlTabsContainer.Size = new System.Drawing.Size(811, 22); +- this.pnlTabsContainer.TabIndex = 22; +- // +- // pnlTabs +- // +- this.pnlTabs.AutoSize = true; +- this.pnlTabs.Location = new System.Drawing.Point(0, 0); +- this.pnlTabs.Name = "pnlTabs"; +- this.pnlTabs.Size = new System.Drawing.Size(811, 22); +- this.pnlTabs.TabIndex = 23; +- // +- // btnTabsRight +- // +- this.btnTabsRight.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); +- this.btnTabsRight.Location = new System.Drawing.Point(773, 61); +- this.btnTabsRight.Name = "btnTabsRight"; +- this.btnTabsRight.Padding = new System.Windows.Forms.Padding(5); +- this.btnTabsRight.Size = new System.Drawing.Size(50, 23); +- this.btnTabsRight.TabIndex = 1; +- this.btnTabsRight.Text = ">"; +- this.btnTabsRight.Click += new System.EventHandler(this.btnTabsRight_Click); +- // +- // btnTabsLeft +- // +- this.btnTabsLeft.Location = new System.Drawing.Point(12, 61); +- this.btnTabsLeft.Name = "btnTabsLeft"; +- this.btnTabsLeft.Padding = new System.Windows.Forms.Padding(5); +- this.btnTabsLeft.Size = new System.Drawing.Size(50, 23); +- this.btnTabsLeft.TabIndex = 0; +- this.btnTabsLeft.Text = "<"; +- this.btnTabsLeft.Click += new System.EventHandler(this.btnTabsLeft_Click); +- // +- // panel1 +- // +- this.panel1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; +- this.panel1.Location = new System.Drawing.Point(12, 83); +- this.panel1.Name = "panel1"; +- this.panel1.Size = new System.Drawing.Size(811, 498); +- this.panel1.TabIndex = 23; +- // +- // FrmEvent +- // +- this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); +- this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; +- this.AutoSize = true; +- this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(48))))); +- this.ClientSize = new System.Drawing.Size(835, 622); +- this.Controls.Add(this.grpNewCommands); +- this.Controls.Add(this.grpTriggers); +- this.Controls.Add(this.btnTabsRight); +- this.Controls.Add(this.btnTabsLeft); +- this.Controls.Add(this.grpEntityOptions); +- this.Controls.Add(this.grpEventConditions); +- this.Controls.Add(this.grpPageOptions); +- this.Controls.Add(this.grpGeneral); +- this.Controls.Add(this.btnCancel); +- this.Controls.Add(this.btnSave); +- this.Controls.Add(this.pnlTabsContainer); +- this.Controls.Add(this.grpEventCommands); +- this.Controls.Add(this.grpCreateCommands); +- this.Controls.Add(this.panel1); +- this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle; +- this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); +- this.KeyPreview = true; +- this.MaximizeBox = false; +- this.Name = "FrmEvent"; +- this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; +- this.Text = "Event Editor"; +- this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.frmEvent_FormClosing); +- this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.FrmEvent_FormClosed); +- this.Load += new System.EventHandler(this.frmEvent_Load); +- this.VisibleChanged += new System.EventHandler(this.FrmEvent_VisibleChanged); +- this.KeyDown += new System.Windows.Forms.KeyEventHandler(this.FrmEvent_KeyDown); +- this.grpEntityOptions.ResumeLayout(false); +- this.grpExtra.ResumeLayout(false); +- this.grpExtra.PerformLayout(); +- this.grpInspector.ResumeLayout(false); +- this.grpInspector.PerformLayout(); +- this.grpPreview.ResumeLayout(false); +- this.grpPreview.PerformLayout(); +- this.grpMovement.ResumeLayout(false); +- this.grpMovement.PerformLayout(); +- this.grpTriggers.ResumeLayout(false); +- this.grpTriggers.PerformLayout(); +- this.grpEventConditions.ResumeLayout(false); +- this.grpNewCommands.ResumeLayout(false); +- this.grpNewCommands.PerformLayout(); +- this.grpEventCommands.ResumeLayout(false); +- this.commandMenu.ResumeLayout(false); +- this.grpPageOptions.ResumeLayout(false); +- this.grpGeneral.ResumeLayout(false); +- this.grpGeneral.PerformLayout(); +- this.pnlTabsContainer.ResumeLayout(false); +- this.pnlTabsContainer.PerformLayout(); +- this.ResumeLayout(false); ++ this.commandMenu.Name = "commandMenu"; ++ this.commandMenu.RenderMode = System.Windows.Forms.ToolStripRenderMode.System; ++ this.commandMenu.Size = new System.Drawing.Size(108, 136); ++ // ++ // btnInsert ++ // ++ this.btnInsert.ForeColor = System.Drawing.Color.Gainsboro; ++ this.btnInsert.Name = "btnInsert"; ++ this.btnInsert.Size = new System.Drawing.Size(107, 22); ++ this.btnInsert.Text = "Insert"; ++ this.btnInsert.Click += new System.EventHandler(this.btnInsert_Click); ++ // ++ // btnEdit ++ // ++ this.btnEdit.ForeColor = System.Drawing.Color.Gainsboro; ++ this.btnEdit.Name = "btnEdit"; ++ this.btnEdit.Size = new System.Drawing.Size(107, 22); ++ this.btnEdit.Text = "Edit"; ++ this.btnEdit.Click += new System.EventHandler(this.btnEdit_Click); ++ // ++ // btnCut ++ // ++ this.btnCut.ForeColor = System.Drawing.Color.Gainsboro; ++ this.btnCut.Name = "btnCut"; ++ this.btnCut.Size = new System.Drawing.Size(107, 22); ++ this.btnCut.Text = "Cut"; ++ this.btnCut.Click += new System.EventHandler(this.btnCut_Click); ++ // ++ // btnCopy ++ // ++ this.btnCopy.ForeColor = System.Drawing.Color.Gainsboro; ++ this.btnCopy.Name = "btnCopy"; ++ this.btnCopy.Size = new System.Drawing.Size(107, 22); ++ this.btnCopy.Text = "Copy"; ++ this.btnCopy.Click += new System.EventHandler(this.btnCopy_Click); ++ // ++ // btnPaste ++ // ++ this.btnPaste.ForeColor = System.Drawing.Color.Gainsboro; ++ this.btnPaste.Name = "btnPaste"; ++ this.btnPaste.Size = new System.Drawing.Size(107, 22); ++ this.btnPaste.Text = "Paste"; ++ this.btnPaste.Click += new System.EventHandler(this.btnPaste_Click); ++ // ++ // btnDelete ++ // ++ this.btnDelete.ForeColor = System.Drawing.Color.Gainsboro; ++ this.btnDelete.Name = "btnDelete"; ++ this.btnDelete.Size = new System.Drawing.Size(107, 22); ++ this.btnDelete.Text = "Delete"; ++ this.btnDelete.Click += new System.EventHandler(this.btnDelete_Click); ++ // ++ // grpPageOptions ++ // ++ this.grpPageOptions.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(48))))); ++ this.grpPageOptions.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(90)))), ((int)(((byte)(90)))), ((int)(((byte)(90))))); ++ this.grpPageOptions.Controls.Add(this.btnClearPage); ++ this.grpPageOptions.Controls.Add(this.btnDeletePage); ++ this.grpPageOptions.Controls.Add(this.btnPastePage); ++ this.grpPageOptions.Controls.Add(this.btnCopyPage); ++ this.grpPageOptions.Controls.Add(this.btnNewPage); ++ this.grpPageOptions.ForeColor = System.Drawing.Color.Gainsboro; ++ this.grpPageOptions.Location = new System.Drawing.Point(313, 5); ++ this.grpPageOptions.Name = "grpPageOptions"; ++ this.grpPageOptions.Size = new System.Drawing.Size(510, 50); ++ this.grpPageOptions.TabIndex = 13; ++ this.grpPageOptions.TabStop = false; ++ this.grpPageOptions.Text = "Page Options"; ++ // ++ // btnClearPage ++ // ++ this.btnClearPage.Location = new System.Drawing.Point(402, 16); ++ this.btnClearPage.Name = "btnClearPage"; ++ this.btnClearPage.Padding = new System.Windows.Forms.Padding(5); ++ this.btnClearPage.Size = new System.Drawing.Size(93, 30); ++ this.btnClearPage.TabIndex = 17; ++ this.btnClearPage.Text = "Clear Page"; ++ this.btnClearPage.Click += new System.EventHandler(this.btnClearPage_Click); ++ // ++ // btnDeletePage ++ // ++ this.btnDeletePage.Enabled = false; ++ this.btnDeletePage.Location = new System.Drawing.Point(303, 16); ++ this.btnDeletePage.Name = "btnDeletePage"; ++ this.btnDeletePage.Padding = new System.Windows.Forms.Padding(5); ++ this.btnDeletePage.Size = new System.Drawing.Size(93, 30); ++ this.btnDeletePage.TabIndex = 16; ++ this.btnDeletePage.Text = "Delete Page"; ++ this.btnDeletePage.Click += new System.EventHandler(this.btnDeletePage_Click); ++ // ++ // btnPastePage ++ // ++ this.btnPastePage.Location = new System.Drawing.Point(204, 16); ++ this.btnPastePage.Name = "btnPastePage"; ++ this.btnPastePage.Padding = new System.Windows.Forms.Padding(5); ++ this.btnPastePage.Size = new System.Drawing.Size(93, 30); ++ this.btnPastePage.TabIndex = 15; ++ this.btnPastePage.Text = "Paste Page"; ++ this.btnPastePage.Click += new System.EventHandler(this.btnPastePage_Click); ++ // ++ // btnCopyPage ++ // ++ this.btnCopyPage.Location = new System.Drawing.Point(105, 16); ++ this.btnCopyPage.Name = "btnCopyPage"; ++ this.btnCopyPage.Padding = new System.Windows.Forms.Padding(5); ++ this.btnCopyPage.Size = new System.Drawing.Size(93, 30); ++ this.btnCopyPage.TabIndex = 14; ++ this.btnCopyPage.Text = "Copy Page"; ++ this.btnCopyPage.Click += new System.EventHandler(this.btnCopyPage_Click); ++ // ++ // btnNewPage ++ // ++ this.btnNewPage.Location = new System.Drawing.Point(6, 16); ++ this.btnNewPage.Name = "btnNewPage"; ++ this.btnNewPage.Padding = new System.Windows.Forms.Padding(5); ++ this.btnNewPage.Size = new System.Drawing.Size(93, 30); ++ this.btnNewPage.TabIndex = 13; ++ this.btnNewPage.Text = "New Page"; ++ this.btnNewPage.Click += new System.EventHandler(this.btnNewPage_Click); ++ // ++ // grpGeneral ++ // ++ this.grpGeneral.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(48))))); ++ this.grpGeneral.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(90)))), ((int)(((byte)(90)))), ((int)(((byte)(90))))); ++ this.grpGeneral.Controls.Add(this.chkIsGlobal); ++ this.grpGeneral.Controls.Add(this.lblName); ++ this.grpGeneral.Controls.Add(this.txtEventname); ++ this.grpGeneral.ForeColor = System.Drawing.Color.Gainsboro; ++ this.grpGeneral.Location = new System.Drawing.Point(12, 5); ++ this.grpGeneral.Name = "grpGeneral"; ++ this.grpGeneral.Size = new System.Drawing.Size(295, 49); ++ this.grpGeneral.TabIndex = 18; ++ this.grpGeneral.TabStop = false; ++ this.grpGeneral.Text = "General"; ++ // ++ // chkIsGlobal ++ // ++ this.chkIsGlobal.AutoSize = true; ++ this.chkIsGlobal.Location = new System.Drawing.Point(202, 22); ++ this.chkIsGlobal.Name = "chkIsGlobal"; ++ this.chkIsGlobal.Size = new System.Drawing.Size(87, 17); ++ this.chkIsGlobal.TabIndex = 3; ++ this.chkIsGlobal.Text = "Global Event"; ++ this.chkIsGlobal.CheckedChanged += new System.EventHandler(this.chkIsGlobal_CheckedChanged); ++ // ++ // pnlTabsContainer ++ // ++ this.pnlTabsContainer.Controls.Add(this.pnlTabs); ++ this.pnlTabsContainer.Location = new System.Drawing.Point(12, 61); ++ this.pnlTabsContainer.Name = "pnlTabsContainer"; ++ this.pnlTabsContainer.Size = new System.Drawing.Size(811, 22); ++ this.pnlTabsContainer.TabIndex = 22; ++ // ++ // pnlTabs ++ // ++ this.pnlTabs.AutoSize = true; ++ this.pnlTabs.Location = new System.Drawing.Point(0, 0); ++ this.pnlTabs.Name = "pnlTabs"; ++ this.pnlTabs.Size = new System.Drawing.Size(811, 22); ++ this.pnlTabs.TabIndex = 23; ++ // ++ // btnTabsRight ++ // ++ this.btnTabsRight.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); ++ this.btnTabsRight.Location = new System.Drawing.Point(773, 61); ++ this.btnTabsRight.Name = "btnTabsRight"; ++ this.btnTabsRight.Padding = new System.Windows.Forms.Padding(5); ++ this.btnTabsRight.Size = new System.Drawing.Size(50, 23); ++ this.btnTabsRight.TabIndex = 1; ++ this.btnTabsRight.Text = ">"; ++ this.btnTabsRight.Click += new System.EventHandler(this.btnTabsRight_Click); ++ // ++ // btnTabsLeft ++ // ++ this.btnTabsLeft.Location = new System.Drawing.Point(12, 61); ++ this.btnTabsLeft.Name = "btnTabsLeft"; ++ this.btnTabsLeft.Padding = new System.Windows.Forms.Padding(5); ++ this.btnTabsLeft.Size = new System.Drawing.Size(50, 23); ++ this.btnTabsLeft.TabIndex = 0; ++ this.btnTabsLeft.Text = "<"; ++ this.btnTabsLeft.Click += new System.EventHandler(this.btnTabsLeft_Click); ++ // ++ // panel1 ++ // ++ this.panel1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; ++ this.panel1.Location = new System.Drawing.Point(12, 83); ++ this.panel1.Name = "panel1"; ++ this.panel1.Size = new System.Drawing.Size(811, 498); ++ this.panel1.TabIndex = 23; ++ // ++ // FrmEvent ++ // ++ this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); ++ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; ++ this.AutoSize = true; ++ this.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(48))))); ++ this.ClientSize = new System.Drawing.Size(835, 622); ++ this.Controls.Add(this.grpNewCommands); ++ this.Controls.Add(this.grpTriggers); ++ this.Controls.Add(this.btnTabsRight); ++ this.Controls.Add(this.btnTabsLeft); ++ this.Controls.Add(this.grpEntityOptions); ++ this.Controls.Add(this.grpEventConditions); ++ this.Controls.Add(this.grpPageOptions); ++ this.Controls.Add(this.grpGeneral); ++ this.Controls.Add(this.btnCancel); ++ this.Controls.Add(this.btnSave); ++ this.Controls.Add(this.pnlTabsContainer); ++ this.Controls.Add(this.grpEventCommands); ++ this.Controls.Add(this.grpCreateCommands); ++ this.Controls.Add(this.panel1); ++ this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle; ++ this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); ++ this.KeyPreview = true; ++ this.MaximizeBox = false; ++ this.Name = "FrmEvent"; ++ this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; ++ this.Text = "Event Editor"; ++ this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.frmEvent_FormClosing); ++ this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.FrmEvent_FormClosed); ++ this.Load += new System.EventHandler(this.frmEvent_Load); ++ this.VisibleChanged += new System.EventHandler(this.FrmEvent_VisibleChanged); ++ this.KeyDown += new System.Windows.Forms.KeyEventHandler(this.FrmEvent_KeyDown); ++ this.grpEntityOptions.ResumeLayout(false); ++ this.grpExtra.ResumeLayout(false); ++ this.grpExtra.PerformLayout(); ++ this.grpInspector.ResumeLayout(false); ++ this.grpInspector.PerformLayout(); ++ this.grpPreview.ResumeLayout(false); ++ this.grpPreview.PerformLayout(); ++ this.grpMovement.ResumeLayout(false); ++ this.grpMovement.PerformLayout(); ++ this.grpTriggers.ResumeLayout(false); ++ this.grpTriggers.PerformLayout(); ++ this.grpEventConditions.ResumeLayout(false); ++ this.grpNewCommands.ResumeLayout(false); ++ this.grpNewCommands.PerformLayout(); ++ this.grpEventCommands.ResumeLayout(false); ++ this.commandMenu.ResumeLayout(false); ++ this.grpPageOptions.ResumeLayout(false); ++ this.grpGeneral.ResumeLayout(false); ++ this.grpGeneral.PerformLayout(); ++ this.pnlTabsContainer.ResumeLayout(false); ++ this.pnlTabsContainer.PerformLayout(); ++ this.ResumeLayout(false); + + } + +diff --git a/Intersect.Editor/Forms/Editors/Events/frmEvent.cs b/Intersect.Editor/Forms/Editors/Events/frmEvent.cs +index c0dc7bc5..ee412fe6 100644 +--- a/Intersect.Editor/Forms/Editors/Events/frmEvent.cs ++++ b/Intersect.Editor/Forms/Editors/Events/frmEvent.cs +@@ -598,6 +598,10 @@ private void lstCommands_NodeMouseDoubleClick(object sender, TreeNodeMouseClickE + case EventCommandType.ChangeFace: + tmpCommand = new ChangeFaceCommand(); + ++ break; ++ case EventCommandType.ChangeHair: ++ tmpCommand = new ChangeHairCommand(); ++ + break; + case EventCommandType.ChangeGender: + tmpCommand = new ChangeGenderCommand(); +@@ -1174,6 +1178,10 @@ private void OpenEditCommand(EventCommand command) + case EventCommandType.ChangeFace: + cmdWindow = new EventCommandChangeFace((ChangeFaceCommand) command, this); + ++ break; ++ case EventCommandType.ChangeHair: ++ cmdWindow = new EventCommandChangeHair((ChangeHairCommand) command, this); ++ + break; + case EventCommandType.ChangeGender: + cmdWindow = new EventCommandChangeGender((ChangeGenderCommand) command, this); +diff --git a/Intersect.Editor/Forms/Editors/frmClass.Designer.cs b/Intersect.Editor/Forms/Editors/frmClass.Designer.cs +index 59bf59d4..2dc0ffa5 100644 +--- a/Intersect.Editor/Forms/Editors/frmClass.Designer.cs ++++ b/Intersect.Editor/Forms/Editors/frmClass.Designer.cs +@@ -32,9 +32,9 @@ private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FrmClass)); +- System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle7 = new System.Windows.Forms.DataGridViewCellStyle(); +- System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle8 = new System.Windows.Forms.DataGridViewCellStyle(); +- System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle9 = new System.Windows.Forms.DataGridViewCellStyle(); ++ System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle4 = new System.Windows.Forms.DataGridViewCellStyle(); ++ System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle5 = new System.Windows.Forms.DataGridViewCellStyle(); ++ System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle6 = new System.Windows.Forms.DataGridViewCellStyle(); + this.grpClasses = new DarkUI.Controls.DarkGroupBox(); + this.btnClearSearch = new DarkUI.Controls.DarkButton(); + this.txtSearch = new DarkUI.Controls.DarkTextBox(); +@@ -91,6 +91,16 @@ private void InitializeComponent() + this.lblX = new System.Windows.Forms.Label(); + this.lblMap = new System.Windows.Forms.Label(); + this.pnlContainer = new System.Windows.Forms.Panel(); ++ this.grpHair = new DarkUI.Controls.DarkGroupBox(); ++ this.lblHair = new System.Windows.Forms.Label(); ++ this.picHair = new System.Windows.Forms.PictureBox(); ++ this.cmbHair = new DarkUI.Controls.DarkComboBox(); ++ this.grpGender2 = new DarkUI.Controls.DarkGroupBox(); ++ this.rbMale2 = new DarkUI.Controls.DarkRadioButton(); ++ this.rbFemale2 = new DarkUI.Controls.DarkRadioButton(); ++ this.BtnAddHair = new DarkUI.Controls.DarkButton(); ++ this.btnRemoveHair = new DarkUI.Controls.DarkButton(); ++ this.lstHair = new System.Windows.Forms.ListBox(); + this.grpSpawnItems = new DarkUI.Controls.DarkGroupBox(); + this.btnSpawnItemRemove = new DarkUI.Controls.DarkButton(); + this.btnSpawnItemAdd = new DarkUI.Controls.DarkButton(); +@@ -100,6 +110,11 @@ private void InitializeComponent() + this.lblSpawnItemAmount = new System.Windows.Forms.Label(); + this.lblSpawnItem = new System.Windows.Forms.Label(); + this.grpCombat = new DarkUI.Controls.DarkGroupBox(); ++ this.grpAttackSpeed = new DarkUI.Controls.DarkGroupBox(); ++ this.nudAttackSpeedValue = new DarkUI.Controls.DarkNumericUpDown(); ++ this.lblAttackSpeedValue = new System.Windows.Forms.Label(); ++ this.cmbAttackSpeedModifier = new DarkUI.Controls.DarkComboBox(); ++ this.lblAttackSpeedModifier = new System.Windows.Forms.Label(); + this.nudCritMultiplier = new DarkUI.Controls.DarkNumericUpDown(); + this.lblCritMultiplier = new System.Windows.Forms.Label(); + this.nudScaling = new DarkUI.Controls.DarkNumericUpDown(); +@@ -170,11 +185,6 @@ private void InitializeComponent() + this.toolStripItemUndo = new System.Windows.Forms.ToolStripButton(); + this.mnuExpGrid = new System.Windows.Forms.ContextMenuStrip(this.components); + this.btnExpPaste = new System.Windows.Forms.ToolStripMenuItem(); +- this.grpAttackSpeed = new DarkUI.Controls.DarkGroupBox(); +- this.nudAttackSpeedValue = new DarkUI.Controls.DarkNumericUpDown(); +- this.lblAttackSpeedValue = new System.Windows.Forms.Label(); +- this.cmbAttackSpeedModifier = new DarkUI.Controls.DarkComboBox(); +- this.lblAttackSpeedModifier = new System.Windows.Forms.Label(); + this.grpClasses.SuspendLayout(); + this.grpBaseStats.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.nudBaseMana)).BeginInit(); +@@ -193,9 +203,14 @@ private void InitializeComponent() + ((System.ComponentModel.ISupportInitialize)(this.nudY)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.nudX)).BeginInit(); + this.pnlContainer.SuspendLayout(); ++ this.grpHair.SuspendLayout(); ++ ((System.ComponentModel.ISupportInitialize)(this.picHair)).BeginInit(); ++ this.grpGender2.SuspendLayout(); + this.grpSpawnItems.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.nudSpawnItemAmount)).BeginInit(); + this.grpCombat.SuspendLayout(); ++ this.grpAttackSpeed.SuspendLayout(); ++ ((System.ComponentModel.ISupportInitialize)(this.nudAttackSpeedValue)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.nudCritMultiplier)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.nudScaling)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.nudCritChance)).BeginInit(); +@@ -222,8 +237,6 @@ private void InitializeComponent() + ((System.ComponentModel.ISupportInitialize)(this.nudStrengthIncrease)).BeginInit(); + this.toolStrip.SuspendLayout(); + this.mnuExpGrid.SuspendLayout(); +- this.grpAttackSpeed.SuspendLayout(); +- ((System.ComponentModel.ISupportInitialize)(this.nudAttackSpeedValue)).BeginInit(); + this.SuspendLayout(); + // + // grpClasses +@@ -1036,6 +1049,7 @@ private void InitializeComponent() + // pnlContainer + // + this.pnlContainer.AutoScroll = true; ++ this.pnlContainer.Controls.Add(this.grpHair); + this.pnlContainer.Controls.Add(this.grpSpawnItems); + this.pnlContainer.Controls.Add(this.grpCombat); + this.pnlContainer.Controls.Add(this.grpRegen); +@@ -1053,6 +1067,143 @@ private void InitializeComponent() + this.pnlContainer.TabIndex = 28; + this.pnlContainer.Visible = false; + // ++ // grpHair ++ // ++ this.grpHair.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(48))))); ++ this.grpHair.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(90)))), ((int)(((byte)(90)))), ((int)(((byte)(90))))); ++ this.grpHair.Controls.Add(this.lblHair); ++ this.grpHair.Controls.Add(this.picHair); ++ this.grpHair.Controls.Add(this.cmbHair); ++ this.grpHair.Controls.Add(this.grpGender2); ++ this.grpHair.Controls.Add(this.BtnAddHair); ++ this.grpHair.Controls.Add(this.btnRemoveHair); ++ this.grpHair.Controls.Add(this.lstHair); ++ this.grpHair.ForeColor = System.Drawing.Color.Gainsboro; ++ this.grpHair.Location = new System.Drawing.Point(537, 167); ++ this.grpHair.Name = "grpHair"; ++ this.grpHair.Size = new System.Drawing.Size(223, 177); ++ this.grpHair.TabIndex = 38; ++ this.grpHair.TabStop = false; ++ this.grpHair.Text = "Hairstyles"; ++ // ++ // lblHair ++ // ++ this.lblHair.AutoSize = true; ++ this.lblHair.Location = new System.Drawing.Point(99, 78); ++ this.lblHair.Margin = new System.Windows.Forms.Padding(2, 0, 2, 0); ++ this.lblHair.Name = "lblHair"; ++ this.lblHair.Size = new System.Drawing.Size(29, 13); ++ this.lblHair.TabIndex = 27; ++ this.lblHair.Text = "Hair:"; ++ // ++ // picHair ++ // ++ this.picHair.BackColor = System.Drawing.Color.Black; ++ this.picHair.Location = new System.Drawing.Point(163, 118); ++ this.picHair.Margin = new System.Windows.Forms.Padding(2); ++ this.picHair.Name = "picHair"; ++ this.picHair.Size = new System.Drawing.Size(43, 42); ++ this.picHair.TabIndex = 25; ++ this.picHair.TabStop = false; ++ // ++ // cmbHair ++ // ++ this.cmbHair.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(69)))), ((int)(((byte)(73)))), ((int)(((byte)(74))))); ++ this.cmbHair.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(90)))), ((int)(((byte)(90)))), ((int)(((byte)(90))))); ++ this.cmbHair.BorderStyle = System.Windows.Forms.ButtonBorderStyle.Solid; ++ this.cmbHair.ButtonColor = System.Drawing.Color.FromArgb(((int)(((byte)(43)))), ((int)(((byte)(43)))), ((int)(((byte)(43))))); ++ this.cmbHair.ButtonIcon = ((System.Drawing.Bitmap)(resources.GetObject("cmbHair.ButtonIcon"))); ++ this.cmbHair.DrawDropdownHoverOutline = false; ++ this.cmbHair.DrawFocusRectangle = false; ++ this.cmbHair.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed; ++ this.cmbHair.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; ++ this.cmbHair.FlatStyle = System.Windows.Forms.FlatStyle.Flat; ++ this.cmbHair.ForeColor = System.Drawing.Color.Gainsboro; ++ this.cmbHair.FormattingEnabled = true; ++ this.cmbHair.Items.AddRange(new object[] { ++ "None"}); ++ this.cmbHair.Location = new System.Drawing.Point(102, 93); ++ this.cmbHair.Margin = new System.Windows.Forms.Padding(2); ++ this.cmbHair.Name = "cmbHair"; ++ this.cmbHair.Size = new System.Drawing.Size(104, 21); ++ this.cmbHair.TabIndex = 26; ++ this.cmbHair.Text = "None"; ++ this.cmbHair.TextPadding = new System.Windows.Forms.Padding(2); ++ this.cmbHair.SelectedIndexChanged += new System.EventHandler(this.cmbHair_SelectedIndexChanged); ++ // ++ // grpGender2 ++ // ++ this.grpGender2.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(48))))); ++ this.grpGender2.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(90)))), ((int)(((byte)(90)))), ((int)(((byte)(90))))); ++ this.grpGender2.Controls.Add(this.rbMale2); ++ this.grpGender2.Controls.Add(this.rbFemale2); ++ this.grpGender2.ForeColor = System.Drawing.Color.Gainsboro; ++ this.grpGender2.Location = new System.Drawing.Point(102, 11); ++ this.grpGender2.Name = "grpGender2"; ++ this.grpGender2.Size = new System.Drawing.Size(76, 62); ++ this.grpGender2.TabIndex = 24; ++ this.grpGender2.TabStop = false; ++ this.grpGender2.Text = "Gender"; ++ // ++ // rbMale2 ++ // ++ this.rbMale2.AutoSize = true; ++ this.rbMale2.Checked = true; ++ this.rbMale2.Location = new System.Drawing.Point(5, 18); ++ this.rbMale2.Margin = new System.Windows.Forms.Padding(2); ++ this.rbMale2.Name = "rbMale2"; ++ this.rbMale2.Size = new System.Drawing.Size(48, 17); ++ this.rbMale2.TabIndex = 18; ++ this.rbMale2.TabStop = true; ++ this.rbMale2.Text = "Male"; ++ this.rbMale2.Click += new System.EventHandler(this.rbMale2_Click); ++ // ++ // rbFemale2 ++ // ++ this.rbFemale2.AutoSize = true; ++ this.rbFemale2.Location = new System.Drawing.Point(5, 38); ++ this.rbFemale2.Margin = new System.Windows.Forms.Padding(2); ++ this.rbFemale2.Name = "rbFemale2"; ++ this.rbFemale2.Size = new System.Drawing.Size(59, 17); ++ this.rbFemale2.TabIndex = 19; ++ this.rbFemale2.Text = "Female"; ++ this.rbFemale2.Click += new System.EventHandler(this.rbFemale2_Click); ++ // ++ // BtnAddHair ++ // ++ this.BtnAddHair.Location = new System.Drawing.Point(53, 16); ++ this.BtnAddHair.Margin = new System.Windows.Forms.Padding(2); ++ this.BtnAddHair.Name = "BtnAddHair"; ++ this.BtnAddHair.Padding = new System.Windows.Forms.Padding(5); ++ this.BtnAddHair.Size = new System.Drawing.Size(44, 19); ++ this.BtnAddHair.TabIndex = 23; ++ this.BtnAddHair.Text = "+"; ++ this.BtnAddHair.Click += new System.EventHandler(this.BtnAddHair_Click); ++ // ++ // btnRemoveHair ++ // ++ this.btnRemoveHair.Location = new System.Drawing.Point(5, 16); ++ this.btnRemoveHair.Margin = new System.Windows.Forms.Padding(2); ++ this.btnRemoveHair.Name = "btnRemoveHair"; ++ this.btnRemoveHair.Padding = new System.Windows.Forms.Padding(5); ++ this.btnRemoveHair.Size = new System.Drawing.Size(44, 19); ++ this.btnRemoveHair.TabIndex = 22; ++ this.btnRemoveHair.Text = "-"; ++ this.btnRemoveHair.Click += new System.EventHandler(this.btnRemoveHair_Click); ++ // ++ // lstHair ++ // ++ this.lstHair.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(63)))), ((int)(((byte)(65))))); ++ this.lstHair.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; ++ this.lstHair.ForeColor = System.Drawing.Color.Gainsboro; ++ this.lstHair.FormattingEnabled = true; ++ this.lstHair.Location = new System.Drawing.Point(5, 39); ++ this.lstHair.Margin = new System.Windows.Forms.Padding(2); ++ this.lstHair.Name = "lstHair"; ++ this.lstHair.Size = new System.Drawing.Size(91, 132); ++ this.lstHair.TabIndex = 18; ++ this.lstHair.Click += new System.EventHandler(this.lstHair_Click); ++ // + // grpSpawnItems + // + this.grpSpawnItems.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(48))))); +@@ -1184,13 +1335,89 @@ private void InitializeComponent() + this.grpCombat.Controls.Add(this.lblAttackAnimation); + this.grpCombat.Controls.Add(this.lblDamage); + this.grpCombat.ForeColor = System.Drawing.Color.Gainsboro; +- this.grpCombat.Location = new System.Drawing.Point(537, 169); ++ this.grpCombat.Location = new System.Drawing.Point(537, 348); + this.grpCombat.Name = "grpCombat"; +- this.grpCombat.Size = new System.Drawing.Size(226, 405); ++ this.grpCombat.Size = new System.Drawing.Size(223, 405); + this.grpCombat.TabIndex = 30; + this.grpCombat.TabStop = false; + this.grpCombat.Text = "Combat (Unarmed)"; + // ++ // grpAttackSpeed ++ // ++ this.grpAttackSpeed.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(48))))); ++ this.grpAttackSpeed.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(90)))), ((int)(((byte)(90)))), ((int)(((byte)(90))))); ++ this.grpAttackSpeed.Controls.Add(this.nudAttackSpeedValue); ++ this.grpAttackSpeed.Controls.Add(this.lblAttackSpeedValue); ++ this.grpAttackSpeed.Controls.Add(this.cmbAttackSpeedModifier); ++ this.grpAttackSpeed.Controls.Add(this.lblAttackSpeedModifier); ++ this.grpAttackSpeed.ForeColor = System.Drawing.Color.Gainsboro; ++ this.grpAttackSpeed.Location = new System.Drawing.Point(13, 309); ++ this.grpAttackSpeed.Name = "grpAttackSpeed"; ++ this.grpAttackSpeed.Size = new System.Drawing.Size(192, 86); ++ this.grpAttackSpeed.TabIndex = 66; ++ this.grpAttackSpeed.TabStop = false; ++ this.grpAttackSpeed.Text = "Attack Speed"; ++ // ++ // nudAttackSpeedValue ++ // ++ this.nudAttackSpeedValue.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(69)))), ((int)(((byte)(73)))), ((int)(((byte)(74))))); ++ this.nudAttackSpeedValue.ForeColor = System.Drawing.Color.Gainsboro; ++ this.nudAttackSpeedValue.Location = new System.Drawing.Point(60, 58); ++ this.nudAttackSpeedValue.Maximum = new decimal(new int[] { ++ 10000, ++ 0, ++ 0, ++ 0}); ++ this.nudAttackSpeedValue.Name = "nudAttackSpeedValue"; ++ this.nudAttackSpeedValue.Size = new System.Drawing.Size(114, 20); ++ this.nudAttackSpeedValue.TabIndex = 56; ++ this.nudAttackSpeedValue.Value = new decimal(new int[] { ++ 0, ++ 0, ++ 0, ++ 0}); ++ this.nudAttackSpeedValue.ValueChanged += new System.EventHandler(this.nudAttackSpeedValue_ValueChanged); ++ // ++ // lblAttackSpeedValue ++ // ++ this.lblAttackSpeedValue.AutoSize = true; ++ this.lblAttackSpeedValue.Location = new System.Drawing.Point(9, 60); ++ this.lblAttackSpeedValue.Name = "lblAttackSpeedValue"; ++ this.lblAttackSpeedValue.Size = new System.Drawing.Size(37, 13); ++ this.lblAttackSpeedValue.TabIndex = 29; ++ this.lblAttackSpeedValue.Text = "Value:"; ++ // ++ // cmbAttackSpeedModifier ++ // ++ this.cmbAttackSpeedModifier.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(69)))), ((int)(((byte)(73)))), ((int)(((byte)(74))))); ++ this.cmbAttackSpeedModifier.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(90)))), ((int)(((byte)(90)))), ((int)(((byte)(90))))); ++ this.cmbAttackSpeedModifier.BorderStyle = System.Windows.Forms.ButtonBorderStyle.Solid; ++ this.cmbAttackSpeedModifier.ButtonColor = System.Drawing.Color.FromArgb(((int)(((byte)(43)))), ((int)(((byte)(43)))), ((int)(((byte)(43))))); ++ this.cmbAttackSpeedModifier.ButtonIcon = ((System.Drawing.Bitmap)(resources.GetObject("cmbAttackSpeedModifier.ButtonIcon"))); ++ this.cmbAttackSpeedModifier.DrawDropdownHoverOutline = false; ++ this.cmbAttackSpeedModifier.DrawFocusRectangle = false; ++ this.cmbAttackSpeedModifier.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed; ++ this.cmbAttackSpeedModifier.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; ++ this.cmbAttackSpeedModifier.FlatStyle = System.Windows.Forms.FlatStyle.Flat; ++ this.cmbAttackSpeedModifier.ForeColor = System.Drawing.Color.Gainsboro; ++ this.cmbAttackSpeedModifier.FormattingEnabled = true; ++ this.cmbAttackSpeedModifier.Location = new System.Drawing.Point(60, 24); ++ this.cmbAttackSpeedModifier.Name = "cmbAttackSpeedModifier"; ++ this.cmbAttackSpeedModifier.Size = new System.Drawing.Size(114, 21); ++ this.cmbAttackSpeedModifier.TabIndex = 28; ++ this.cmbAttackSpeedModifier.Text = null; ++ this.cmbAttackSpeedModifier.TextPadding = new System.Windows.Forms.Padding(2); ++ this.cmbAttackSpeedModifier.SelectedIndexChanged += new System.EventHandler(this.cmbAttackSpeedModifier_SelectedIndexChanged); ++ // ++ // lblAttackSpeedModifier ++ // ++ this.lblAttackSpeedModifier.AutoSize = true; ++ this.lblAttackSpeedModifier.Location = new System.Drawing.Point(9, 27); ++ this.lblAttackSpeedModifier.Name = "lblAttackSpeedModifier"; ++ this.lblAttackSpeedModifier.Size = new System.Drawing.Size(47, 13); ++ this.lblAttackSpeedModifier.TabIndex = 0; ++ this.lblAttackSpeedModifier.Text = "Modifier:"; ++ // + // nudCritMultiplier + // + this.nudCritMultiplier.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(69)))), ((int)(((byte)(73)))), ((int)(((byte)(74))))); +@@ -1612,21 +1839,21 @@ private void InitializeComponent() + this.expGrid.AllowUserToDeleteRows = false; + this.expGrid.AllowUserToResizeColumns = false; + this.expGrid.AllowUserToResizeRows = false; +- dataGridViewCellStyle7.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(53)))), ((int)(((byte)(55))))); +- this.expGrid.AlternatingRowsDefaultCellStyle = dataGridViewCellStyle7; ++ dataGridViewCellStyle4.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(50)))), ((int)(((byte)(53)))), ((int)(((byte)(55))))); ++ this.expGrid.AlternatingRowsDefaultCellStyle = dataGridViewCellStyle4; + this.expGrid.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.Fill; + this.expGrid.BackgroundColor = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(48))))); + this.expGrid.CellBorderStyle = System.Windows.Forms.DataGridViewCellBorderStyle.None; + this.expGrid.ClipboardCopyMode = System.Windows.Forms.DataGridViewClipboardCopyMode.EnableWithoutHeaderText; + this.expGrid.ColumnHeadersBorderStyle = System.Windows.Forms.DataGridViewHeaderBorderStyle.None; +- dataGridViewCellStyle8.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; +- dataGridViewCellStyle8.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(48))))); +- dataGridViewCellStyle8.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); +- dataGridViewCellStyle8.ForeColor = System.Drawing.Color.Gainsboro; +- dataGridViewCellStyle8.SelectionBackColor = System.Drawing.SystemColors.Highlight; +- dataGridViewCellStyle8.SelectionForeColor = System.Drawing.SystemColors.HighlightText; +- dataGridViewCellStyle8.WrapMode = System.Windows.Forms.DataGridViewTriState.True; +- this.expGrid.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle8; ++ dataGridViewCellStyle5.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; ++ dataGridViewCellStyle5.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(48))))); ++ dataGridViewCellStyle5.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0))); ++ dataGridViewCellStyle5.ForeColor = System.Drawing.Color.Gainsboro; ++ dataGridViewCellStyle5.SelectionBackColor = System.Drawing.SystemColors.Highlight; ++ dataGridViewCellStyle5.SelectionForeColor = System.Drawing.SystemColors.HighlightText; ++ dataGridViewCellStyle5.WrapMode = System.Windows.Forms.DataGridViewTriState.True; ++ this.expGrid.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle5; + this.expGrid.ColumnHeadersHeight = 24; + this.expGrid.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.DisableResizing; + this.expGrid.EnableHeadersVisualStyles = false; +@@ -1634,8 +1861,8 @@ private void InitializeComponent() + this.expGrid.MultiSelect = false; + this.expGrid.Name = "expGrid"; + this.expGrid.RowHeadersVisible = false; +- dataGridViewCellStyle9.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(63)))), ((int)(((byte)(65))))); +- this.expGrid.RowsDefaultCellStyle = dataGridViewCellStyle9; ++ dataGridViewCellStyle6.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(60)))), ((int)(((byte)(63)))), ((int)(((byte)(65))))); ++ this.expGrid.RowsDefaultCellStyle = dataGridViewCellStyle6; + this.expGrid.Size = new System.Drawing.Size(515, 125); + this.expGrid.TabIndex = 0; + this.expGrid.CellEndEdit += new System.Windows.Forms.DataGridViewCellEventHandler(this.expGrid_CellEndEdit); +@@ -2188,82 +2415,6 @@ private void InitializeComponent() + this.btnExpPaste.Text = "Paste"; + this.btnExpPaste.Click += new System.EventHandler(this.btnPaste_Click); + // +- // grpAttackSpeed +- // +- this.grpAttackSpeed.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(45)))), ((int)(((byte)(45)))), ((int)(((byte)(48))))); +- this.grpAttackSpeed.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(90)))), ((int)(((byte)(90)))), ((int)(((byte)(90))))); +- this.grpAttackSpeed.Controls.Add(this.nudAttackSpeedValue); +- this.grpAttackSpeed.Controls.Add(this.lblAttackSpeedValue); +- this.grpAttackSpeed.Controls.Add(this.cmbAttackSpeedModifier); +- this.grpAttackSpeed.Controls.Add(this.lblAttackSpeedModifier); +- this.grpAttackSpeed.ForeColor = System.Drawing.Color.Gainsboro; +- this.grpAttackSpeed.Location = new System.Drawing.Point(13, 309); +- this.grpAttackSpeed.Name = "grpAttackSpeed"; +- this.grpAttackSpeed.Size = new System.Drawing.Size(192, 86); +- this.grpAttackSpeed.TabIndex = 66; +- this.grpAttackSpeed.TabStop = false; +- this.grpAttackSpeed.Text = "Attack Speed"; +- // +- // nudAttackSpeedValue +- // +- this.nudAttackSpeedValue.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(69)))), ((int)(((byte)(73)))), ((int)(((byte)(74))))); +- this.nudAttackSpeedValue.ForeColor = System.Drawing.Color.Gainsboro; +- this.nudAttackSpeedValue.Location = new System.Drawing.Point(60, 58); +- this.nudAttackSpeedValue.Maximum = new decimal(new int[] { +- 10000, +- 0, +- 0, +- 0}); +- this.nudAttackSpeedValue.Name = "nudAttackSpeedValue"; +- this.nudAttackSpeedValue.Size = new System.Drawing.Size(114, 20); +- this.nudAttackSpeedValue.TabIndex = 56; +- this.nudAttackSpeedValue.Value = new decimal(new int[] { +- 0, +- 0, +- 0, +- 0}); +- this.nudAttackSpeedValue.ValueChanged += new System.EventHandler(this.nudAttackSpeedValue_ValueChanged); +- // +- // lblAttackSpeedValue +- // +- this.lblAttackSpeedValue.AutoSize = true; +- this.lblAttackSpeedValue.Location = new System.Drawing.Point(9, 60); +- this.lblAttackSpeedValue.Name = "lblAttackSpeedValue"; +- this.lblAttackSpeedValue.Size = new System.Drawing.Size(37, 13); +- this.lblAttackSpeedValue.TabIndex = 29; +- this.lblAttackSpeedValue.Text = "Value:"; +- // +- // cmbAttackSpeedModifier +- // +- this.cmbAttackSpeedModifier.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(69)))), ((int)(((byte)(73)))), ((int)(((byte)(74))))); +- this.cmbAttackSpeedModifier.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(90)))), ((int)(((byte)(90)))), ((int)(((byte)(90))))); +- this.cmbAttackSpeedModifier.BorderStyle = System.Windows.Forms.ButtonBorderStyle.Solid; +- this.cmbAttackSpeedModifier.ButtonColor = System.Drawing.Color.FromArgb(((int)(((byte)(43)))), ((int)(((byte)(43)))), ((int)(((byte)(43))))); +- this.cmbAttackSpeedModifier.ButtonIcon = ((System.Drawing.Bitmap)(resources.GetObject("cmbAttackSpeedModifier.ButtonIcon"))); +- this.cmbAttackSpeedModifier.DrawDropdownHoverOutline = false; +- this.cmbAttackSpeedModifier.DrawFocusRectangle = false; +- this.cmbAttackSpeedModifier.DrawMode = System.Windows.Forms.DrawMode.OwnerDrawFixed; +- this.cmbAttackSpeedModifier.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; +- this.cmbAttackSpeedModifier.FlatStyle = System.Windows.Forms.FlatStyle.Flat; +- this.cmbAttackSpeedModifier.ForeColor = System.Drawing.Color.Gainsboro; +- this.cmbAttackSpeedModifier.FormattingEnabled = true; +- this.cmbAttackSpeedModifier.Location = new System.Drawing.Point(60, 24); +- this.cmbAttackSpeedModifier.Name = "cmbAttackSpeedModifier"; +- this.cmbAttackSpeedModifier.Size = new System.Drawing.Size(114, 21); +- this.cmbAttackSpeedModifier.TabIndex = 28; +- this.cmbAttackSpeedModifier.Text = null; +- this.cmbAttackSpeedModifier.TextPadding = new System.Windows.Forms.Padding(2); +- this.cmbAttackSpeedModifier.SelectedIndexChanged += new System.EventHandler(this.cmbAttackSpeedModifier_SelectedIndexChanged); +- // +- // lblAttackSpeedModifier +- // +- this.lblAttackSpeedModifier.AutoSize = true; +- this.lblAttackSpeedModifier.Location = new System.Drawing.Point(9, 27); +- this.lblAttackSpeedModifier.Name = "lblAttackSpeedModifier"; +- this.lblAttackSpeedModifier.Size = new System.Drawing.Size(47, 13); +- this.lblAttackSpeedModifier.TabIndex = 0; +- this.lblAttackSpeedModifier.Text = "Modifier:"; +- // + // FrmClass + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); +@@ -2310,11 +2461,19 @@ private void InitializeComponent() + ((System.ComponentModel.ISupportInitialize)(this.nudY)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.nudX)).EndInit(); + this.pnlContainer.ResumeLayout(false); ++ this.grpHair.ResumeLayout(false); ++ this.grpHair.PerformLayout(); ++ ((System.ComponentModel.ISupportInitialize)(this.picHair)).EndInit(); ++ this.grpGender2.ResumeLayout(false); ++ this.grpGender2.PerformLayout(); + this.grpSpawnItems.ResumeLayout(false); + this.grpSpawnItems.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.nudSpawnItemAmount)).EndInit(); + this.grpCombat.ResumeLayout(false); + this.grpCombat.PerformLayout(); ++ this.grpAttackSpeed.ResumeLayout(false); ++ this.grpAttackSpeed.PerformLayout(); ++ ((System.ComponentModel.ISupportInitialize)(this.nudAttackSpeedValue)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.nudCritMultiplier)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.nudScaling)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.nudCritChance)).EndInit(); +@@ -2347,9 +2506,6 @@ private void InitializeComponent() + this.toolStrip.ResumeLayout(false); + this.toolStrip.PerformLayout(); + this.mnuExpGrid.ResumeLayout(false); +- this.grpAttackSpeed.ResumeLayout(false); +- this.grpAttackSpeed.PerformLayout(); +- ((System.ComponentModel.ISupportInitialize)(this.nudAttackSpeedValue)).EndInit(); + this.ResumeLayout(false); + + } +@@ -2496,5 +2652,15 @@ private void InitializeComponent() + private System.Windows.Forms.Label lblAttackSpeedValue; + private DarkComboBox cmbAttackSpeedModifier; + private System.Windows.Forms.Label lblAttackSpeedModifier; ++ private DarkGroupBox grpHair; ++ private System.Windows.Forms.Label lblHair; ++ private System.Windows.Forms.PictureBox picHair; ++ private DarkComboBox cmbHair; ++ private DarkGroupBox grpGender2; ++ private DarkRadioButton rbMale2; ++ private DarkRadioButton rbFemale2; ++ private DarkButton BtnAddHair; ++ private DarkButton btnRemoveHair; ++ private System.Windows.Forms.ListBox lstHair; + } + } +\ No newline at end of file +diff --git a/Intersect.Editor/Forms/Editors/frmClass.cs b/Intersect.Editor/Forms/Editors/frmClass.cs +index cb6156f3..7b3ce587 100644 +--- a/Intersect.Editor/Forms/Editors/frmClass.cs ++++ b/Intersect.Editor/Forms/Editors/frmClass.cs +@@ -211,6 +211,7 @@ private void UpdateEditor() + } + + RefreshSpriteList(false); ++ RefreshHairList(false); + + // Don't select if there are no Spells, to avoid crashes. + if (lstSprites.Items.Count > 0) +@@ -278,7 +279,16 @@ private void frmClass_Load(object sender, EventArgs e) + + cmbFace.Items.Clear(); + cmbFace.Items.Add(Strings.General.none); +- cmbFace.Items.AddRange(GameContentManager.GetSmartSortedTextureNames(GameContentManager.TextureType.Face)); ++ cmbFace.Items.AddRange( ++ GameContentManager.GetSmartSortedTextureNames(GameContentManager.TextureType.Face) ++ ); ++ ++ cmbHair.Items.Clear(); ++ cmbHair.Items.Add(Strings.General.none); ++ cmbHair.Items.AddRange( ++ GameContentManager.GetSmartSortedTextureNames(GameContentManager.TextureType.Hairs) ++ ); ++ + cmbSpawnItem.Items.Clear(); + cmbSpawnItem.Items.Add(Strings.General.none); + cmbSpawnItem.Items.AddRange(ItemBase.Names); +@@ -456,6 +466,12 @@ private void InitLocalization() + expGrid.Columns.Add(tnlCol); + expGrid.Columns.Add(totalCol); + ++ grpHair.Text = Strings.ClassEditor.hairstyles; ++ grpGender2.Text = Strings.ClassEditor.gender; ++ rbMale2.Text = Strings.ClassEditor.male; ++ rbFemale2.Text = Strings.ClassEditor.female; ++ lblHair.Text = Strings.ClassEditor.hair; ++ + //Searching/Sorting + btnChronological.ToolTipText = Strings.ClassEditor.sortchronologically; + txtSearch.Text = Strings.ClassEditor.searchplaceholder; +@@ -600,7 +616,6 @@ private void rbMale_Click(object sender, EventArgs e) + if (lstSprites.Items.Count > 0) + { + mEditorItem.Sprites[lstSprites.SelectedIndex].Gender = Gender.Male; +- + RefreshSpriteList(); + } + } +@@ -658,6 +673,31 @@ private void RefreshSpriteList(bool saveSpot = true) + } + } + ++ private void RefreshHairList(bool saveSpot = true) { ++ // Refresh List ++ var n = lstHair.SelectedIndex; ++ lstHair.Items.Clear(); ++ for (var i = 0; i < mEditorItem.CustomSpriteLayers[CustomSpriteLayers.Hair].Count; i++) { ++ if (mEditorItem.CustomSpriteLayers[CustomSpriteLayers.Hair][i].Gender == 0) { ++ lstHair.Items.Add( ++ Strings.ClassEditor.spriteitemmale.ToString( ++ i + 1, TextUtils.NullToNone(mEditorItem.CustomSpriteLayers[CustomSpriteLayers.Hair][i].Texture) ++ ) ++ ); ++ } else { ++ lstHair.Items.Add( ++ Strings.ClassEditor.spriteitemfemale.ToString( ++ i + 1, TextUtils.NullToNone(mEditorItem.CustomSpriteLayers[CustomSpriteLayers.Hair][i].Texture) ++ ) ++ ); ++ } ++ } ++ ++ if (saveSpot) { ++ lstHair.SelectedIndex = n; ++ } ++ } ++ + private void btnAdd_Click(object sender, EventArgs e) + { + var n = new ClassSprite +@@ -751,6 +791,26 @@ private void DrawSprite() + picFace.BackgroundImage = picFaceBmp; + } + ++ private void DrawHair() { ++ var picSpriteBmp = new Bitmap(picHair.Width, picHair.Height); ++ var gfx = Graphics.FromImage(picSpriteBmp); ++ gfx.FillRectangle(Brushes.Black, new Rectangle(0, 0, picSprite.Width, picSprite.Height)); ++ if (cmbHair.SelectedIndex > 0) { ++ if (File.Exists("resources/hairs/" + cmbHair.Text)) { ++ var img = Image.FromFile("resources/hairs/" + cmbHair.Text); ++ gfx.DrawImage( ++ img, new Rectangle(0, 0, img.Width / 4, img.Height / 4), ++ new Rectangle(0, 0, img.Width / 4, img.Height / 4), GraphicsUnit.Pixel ++ ); ++ ++ img.Dispose(); ++ } ++ } ++ ++ gfx.Dispose(); ++ picHair.BackgroundImage = picSpriteBmp; ++ } ++ + private void btnVisualMapSelector_Click(object sender, EventArgs e) + { + var frmWarpSelection = new FrmWarpSelection(); +@@ -1284,6 +1344,85 @@ private void nudAttackSpeedValue_ValueChanged(object sender, EventArgs e) + mEditorItem.AttackSpeedValue = (int) nudAttackSpeedValue.Value; + } + ++ private void cmbHair_SelectedIndexChanged(object sender, EventArgs e) { ++ if (lstHair.SelectedIndex >= 0) { ++ mEditorItem.CustomSpriteLayers[CustomSpriteLayers.Hair][lstHair.SelectedIndex].Texture = TextUtils.SanitizeNone(cmbHair?.Text); ++ ++ RefreshHairList(); ++ } ++ ++ DrawHair(); ++ } ++ ++ private void BtnAddHair_Click(object sender, EventArgs e) { ++ var n = new CustomSpriteLayer { ++ Texture = null, ++ Gender = 0 ++ }; ++ ++ mEditorItem.CustomSpriteLayers[CustomSpriteLayers.Hair].Add(n); ++ ++ if (n.Gender == 0) { ++ lstHair.Items.Add( ++ Strings.ClassEditor.spriteitemmale.ToString( ++ mEditorItem.CustomSpriteLayers[CustomSpriteLayers.Hair].Count, TextUtils.NullToNone(n.Texture) ++ ) ++ ); ++ } else { ++ lstHair.Items.Add( ++ Strings.ClassEditor.spriteitemfemale.ToString( ++ mEditorItem.CustomSpriteLayers[CustomSpriteLayers.Hair].Count, TextUtils.NullToNone(n.Texture) ++ ) ++ ); ++ } ++ ++ lstHair.SelectedIndex = lstHair.Items.Count - 1; ++ lstHair_Click(null, null); ++ } ++ ++ private void btnRemoveHair_Click(object sender, EventArgs e) { ++ if (lstHair.SelectedIndex == -1) { ++ return; ++ } ++ ++ mEditorItem.CustomSpriteLayers[CustomSpriteLayers.Hair].RemoveAt(lstHair.SelectedIndex); ++ lstHair.Items.RemoveAt(lstHair.SelectedIndex); ++ ++ RefreshSpriteList(false); ++ ++ if (lstHair.Items.Count > 0) { ++ lstHair.SelectedIndex = 0; ++ } ++ } ++ ++ private void lstHair_Click(object sender, EventArgs e) { ++ if (lstHair.Items.Count > 0) { ++ cmbHair.SelectedIndex = cmbHair.FindString( ++ TextUtils.NullToNone(mEditorItem.CustomSpriteLayers[CustomSpriteLayers.Hair][lstHair.SelectedIndex].Texture) ++ ); ++ ++ if (mEditorItem.CustomSpriteLayers[CustomSpriteLayers.Hair][lstHair.SelectedIndex].Gender == 0) { ++ rbMale2.Checked = true; ++ } else { ++ rbFemale2.Checked = true; ++ } ++ } ++ } ++ ++ private void rbMale2_Click(object sender, EventArgs e) { ++ if (lstHair.Items.Count > 0) { ++ mEditorItem.CustomSpriteLayers[CustomSpriteLayers.Hair][lstHair.SelectedIndex].Gender = Gender.Male; ++ RefreshHairList(); ++ } ++ } ++ ++ private void rbFemale2_Click(object sender, EventArgs e) { ++ if (lstHair.Items.Count > 0) { ++ mEditorItem.CustomSpriteLayers[CustomSpriteLayers.Hair][lstHair.SelectedIndex].Gender = Gender.Female; ++ RefreshHairList(); ++ } ++ } ++ + #region "Exp Grid" + + private void btnExpGrid_Click(object sender, EventArgs e) +@@ -1682,6 +1821,8 @@ private void txtSearch_Click(object sender, EventArgs e) + } + } + ++ ++ + #endregion + + } +diff --git a/Intersect.Editor/Forms/Editors/frmClass.resx b/Intersect.Editor/Forms/Editors/frmClass.resx +index 35e1308a..23e58675 100644 +--- a/Intersect.Editor/Forms/Editors/frmClass.resx ++++ b/Intersect.Editor/Forms/Editors/frmClass.resx +@@ -125,51 +125,51 @@ + AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w + LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 + ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAAY +- CwAAAk1TRnQBSQFMAgEBAgEAAVgBAQFYAQEBEAEAARABAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAFA ++ CwAAAk1TRnQBSQFMAgEBAgEAAXgBAQF4AQEBEAEAARABAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAFA + AwABEAMAAQEBAAEgBgABEFoAA/YB/wP2Af8D9gH/A/YB/wP2Af8D9gH/A/YB/wP2Af8D9gH/A/YB/wP2 + Af8D9gH/A/YB/4wAAyEBMAMqAUADKgFAAyoBQAMqAUADKgFAAyoBQAMqAUADKgFAAyoBQAMqAUADKgFA +- AyoBQAMqAUAIAAP2Af8DPQH/Az0B/wM9Af8DPQH/Az0B/wM9Af8DPQH/Az0B/wM9Af8DPQH/Az0B/wP2 ++ AyoBQAMqAUAIAAP2Af8DOQH/AzkB/wM5Af8DOQH/AzkB/wM5Af8DOQH/AzkB/wM5Af8DOQH/AzkB/wP2 + Af+IAAMMARAB7gHyAfQB/wP2Af8D9gH/A/YB/wP2Af8D9gH/A/YB/wP2Af8D9gH/A/YB/wP2Af8D9gH/ +- A/YB/wP2Af8IAAP2Af8DPQH/AfEB7wHwAf8B8QHvAfAB/wHxAe8B8AH/AfEB7wHwAf8B8QHvAfAB/wHx +- Ae8B8AH/AfEB7wHwAf8B8QHvAfAB/wHxAe8B8AH/Az0B/wP2Af+IAANAAXAByAHeAewB/wFPAbYB3AH/ +- AU8BtgHcAf8BTwG2AdwB/wFPAbYB3AH/AU8BtgHcAf8BTwG2AdwB/wFPAbYB3AH/AU8BtgHcAf8BTwG2 +- AdwB/wFPAbYB3AH/AbYB0wHmAf8BTwG2AdwB/wP2Af8IAAP2Af8DPQH/AfEB7wHwAf8B8QHvAfAB/wHx +- Ae8B8AH/AcUBxAHFAf8BhAKDAf8BxQHEAcUB/wHxAe8B8AH/AfEB7wHwAf8B8QHvAfAB/wM9Af8D9gH/ +- iAADXAHfAZEBwgHhAf8BTwG2AdwB/wFPAbYB3AH/AU8BtgHcAf8BTwG2AdwB/wFPAbYB3AH/AU8BtgHc +- Af8BTwG2AdwB/wFPAbYB3AH/AU8BtgHcAf8BiQG9Ad8B/wHxAe8B8AH/AU8BtgHcAf8D9gH/CAAD9gH/ +- Az0B/wHxAe8B8AH/AdsB2QHaAf8BdAJzAf8BmgKZAf8DPQH/AZoCmQH/AXQCcwH/AdsB2QHaAf8B8QHv +- AfAB/wM9Af8D9gH/hAADKgFAAd8B6gHxAf8BTwG2AdwB/wFPAbYB3AH/AU8BtgHcAf8BTwG2AdwB/wFP +- AbYB3AH/AU8BtgHcAf8BTwG2AdwB/wFPAbYB3AH/AU8BtgHcAf8BTwG2AdwB/wHTAeEB6wH/AfEB7wHw +- Af8BTwG2AdwB/wP2Af8IAAP2Af8DPQH/AfEB7wHwAf8DPQH/AdsB2QHaAf8B8QHvAfAB/wM9Af8B8QHv +- AfAB/wHbAdkB2gH/Az0B/wHxAe8B8AH/Az0B/wP2Af+EAANRAZ8BqQHOAeYB/wFPAbYB3AH/AU8BtgHc +- Af8BTwG2AdwB/wFPAbYB3AH/AU8BtgHcAf8BTwG2AdwB/wFPAbYB3AH/AU8BtgHcAf8BTwG2AdwB/wGf +- AcgB4gH/AfEB7wHwAf8B8QHvAfAB/wFPAbYB3AH/A/YB/wgAA/YB/wM9Af8B8QHvAfAB/wM9Af8B8QHv +- AfAB/wHxAe8B8AH/Az0B/wHxAe8B8AH/AfEB7wHwAf8DPQH/AfEB7wHwAf8DPQH/A/YB/4QAA/YB/wGC +- AboB3gH/AU8BtgHcAf8BTwG2AdwB/wFPAbYB3AH/AU8BtgHcAf8BTwG2AdwB/wFPAbYB3AH/AU8BtgHc +- Af8BTwG2AdwB/wFPAbYB3AH/AeIB6AHuAf8B8QHvAfAB/wHxAe8B8AH/AU8BtgHcAf8D9gH/CAAD9gH/ +- Az0B/wHxAe8B8AH/Az0B/wHFAcQBxQH/AWkBaAFpAf8BmgKZAf8BaQFoAWkB/wHFAcQBxQH/Az0B/wHx +- Ae8B8AH/Az0B/wP2Af+EAAP2Af8D9gH/AU8BtgHcAf8B8QHvAfAB/wHxAe8B8AH/AfEB7wHwAf8B8QHv ++ A/YB/wP2Af8IAAP2Af8DOQH/AfEB7wHwAf8B8QHvAfAB/wHxAe8B8AH/AfEB7wHwAf8B8QHvAfAB/wHx ++ Ae8B8AH/AfEB7wHwAf8B8QHvAfAB/wHxAe8B8AH/AzkB/wP2Af+IAANAAXAByAHeAewB/wFLAbYB3AH/ ++ AUsBtgHcAf8BSwG2AdwB/wFLAbYB3AH/AUsBtgHcAf8BSwG2AdwB/wFLAbYB3AH/AUsBtgHcAf8BSwG2 ++ AdwB/wFLAbYB3AH/AbYB0wHmAf8BSwG2AdwB/wP2Af8IAAP2Af8DOQH/AfEB7wHwAf8B8QHvAfAB/wHx ++ Ae8B8AH/AcUBxAHFAf8BhAKDAf8BxQHEAcUB/wHxAe8B8AH/AfEB7wHwAf8B8QHvAfAB/wM5Af8D9gH/ ++ iAADXAHfAZEBwgHhAf8BSwG2AdwB/wFLAbYB3AH/AUsBtgHcAf8BSwG2AdwB/wFLAbYB3AH/AUsBtgHc ++ Af8BSwG2AdwB/wFLAbYB3AH/AUsBtgHcAf8BiQG9Ad8B/wHxAe8B8AH/AUsBtgHcAf8D9gH/CAAD9gH/ ++ AzkB/wHxAe8B8AH/AdsB2QHaAf8BcAJvAf8BmgKZAf8DOQH/AZoCmQH/AXACbwH/AdsB2QHaAf8B8QHv ++ AfAB/wM5Af8D9gH/hAADKgFAAd8B6gHxAf8BSwG2AdwB/wFLAbYB3AH/AUsBtgHcAf8BSwG2AdwB/wFL ++ AbYB3AH/AUsBtgHcAf8BSwG2AdwB/wFLAbYB3AH/AUsBtgHcAf8BSwG2AdwB/wHTAeEB6wH/AfEB7wHw ++ Af8BSwG2AdwB/wP2Af8IAAP2Af8DOQH/AfEB7wHwAf8DOQH/AdsB2QHaAf8B8QHvAfAB/wM5Af8B8QHv ++ AfAB/wHbAdkB2gH/AzkB/wHxAe8B8AH/AzkB/wP2Af+EAANRAZ8BqQHOAeYB/wFLAbYB3AH/AUsBtgHc ++ Af8BSwG2AdwB/wFLAbYB3AH/AUsBtgHcAf8BSwG2AdwB/wFLAbYB3AH/AUsBtgHcAf8BSwG2AdwB/wGf ++ AcgB4gH/AfEB7wHwAf8B8QHvAfAB/wFLAbYB3AH/A/YB/wgAA/YB/wM5Af8B8QHvAfAB/wM5Af8B8QHv ++ AfAB/wHxAe8B8AH/AzkB/wHxAe8B8AH/AfEB7wHwAf8DOQH/AfEB7wHwAf8DOQH/A/YB/4QAA/YB/wGC ++ AboB3gH/AUsBtgHcAf8BSwG2AdwB/wFLAbYB3AH/AUsBtgHcAf8BSwG2AdwB/wFLAbYB3AH/AUsBtgHc ++ Af8BSwG2AdwB/wFLAbYB3AH/AeIB6AHuAf8B8QHvAfAB/wHxAe8B8AH/AUsBtgHcAf8D9gH/CAAD9gH/ ++ AzkB/wHxAe8B8AH/AzkB/wHFAcQBxQH/AWUBZAFlAf8BmgKZAf8BZQFkAWUB/wHFAcQBxQH/AzkB/wHx ++ Ae8B8AH/AzkB/wP2Af+EAAP2Af8D9gH/AUsBtgHcAf8B8QHvAfAB/wHxAe8B8AH/AfEB7wHwAf8B8QHv + AfAB/wHxAe8B8AH/AfEB7wHwAf8B8QHvAfAB/wHxAe8B8AH/AfEB7wHwAf8B8QHvAfAB/wHxAe8B8AH/ +- AU8BtgHcAf8D9gH/CAAD9gH/Az0B/wHxAe8B8AH/Az0B/wF0AnMB/wHmAeQB5QH/AfEB7wHwAf8B5gHk +- AeUB/wF0AnMB/wM9Af8B8QHvAfAB/wM9Af8D9gH/iAAD9gH/AU8BtgHcAf8B8QHvAfAB/wHxAe8B8AH/ ++ AUsBtgHcAf8D9gH/CAAD9gH/AzkB/wHxAe8B8AH/AzkB/wFwAm8B/wHmAeQB5QH/AfEB7wHwAf8B5gHk ++ AeUB/wFwAm8B/wM5Af8B8QHvAfAB/wM5Af8D9gH/iAAD9gH/AUsBtgHcAf8B8QHvAfAB/wHxAe8B8AH/ + AfEB7wHwAf8B8QHvAfAB/wHxAe8B8AH/AfEB7wHwAf8B8QHvAfAB/wHxAe8B8AH/AfEB7wHwAf8B8QHv +- AfAB/wHxAe8B8AH/AU8BtgHcAf8D9gH/CAAD9gH/Az0B/wHxAe8B8AH/AdsB2QHaAf8BdAJzAf8BmgKZ +- Af8B2wHZAdoB/wGaApkB/wF0AnMB/wHbAdkB2gH/AfEB7wHwAf8DPQH/A/YB/4gAA/YB/wFPAbYB3AH/ ++ AfAB/wHxAe8B8AH/AUsBtgHcAf8D9gH/CAAD9gH/AzkB/wHxAe8B8AH/AdsB2QHaAf8BcAJvAf8BmgKZ ++ Af8B2wHZAdoB/wGaApkB/wFwAm8B/wHbAdkB2gH/AfEB7wHwAf8DOQH/A/YB/4gAA/YB/wFLAbYB3AH/ + AfEB7wHwAf8B8QHvAfAB/wHxAe8B8AH/AfEB7wHwAf8B8QHvAfAB/wHxAe8B8AH/AfEB7wHwAf8B8QHv +- AfAB/wHxAe8B8AH/AfEB7wHwAf8B8QHvAfAB/wFPAbYB3AH/A/YB/wgAA/YB/wM9Af8B8QHvAfAB/wHx ++ AfAB/wHxAe8B8AH/AfEB7wHwAf8B8QHvAfAB/wFLAbYB3AH/A/YB/wgAA/YB/wM5Af8B8QHvAfAB/wHx + Ae8B8AH/AfEB7wHwAf8BxQHEAcUB/wGEAoMB/wHFAcQBxQH/AfEB7wHwAf8B8QHvAfAB/wHxAe8B8AH/ +- Az0B/wP2Af+IAAP2Af8BTwG2AdwB/wFPAbYB3AH/AU8BtgHcAf8BTwG2AdwB/wHiAegB7gH/AfEB7wHw +- Af8B8QHvAfAB/wHxAe8B8AH/AfEB7wHwAf8B8QHvAfAB/wHxAe8B8AH/AfEB7wHwAf8BTwG2AdwB/wP2 +- Af8IAAP2Af8DPQH/AfEB7wHwAf8B8QHvAfAB/wHxAe8B8AH/AfEB7wHwAf8B8QHvAfAB/wHxAe8B8AH/ +- Az0B/wM9Af8DPQH/A4YB/wOuAe+IAAP2Af8D9gH/A/YB/wP2Af8BigG+Ad8B/wGnAcsB5AH/AfEB7wHw +- Af8B8QHvAfAB/wHxAe8B8AH/AfEB7wHwAf8B8QHvAfAB/wHxAe8B8AH/AfEB7wHwAf8BTwG2AdwB/wP2 +- Af8IAAP2Af8DPQH/AfEB7wHwAf8B8QHvAfAB/wHxAe8B8AH/AfEB7wHwAf8B8QHvAfAB/wHxAe8B8AH/ +- Az0B/wM9Af8DhgH/A64B7wMhATCUAANcAd8ByAHeAewB/wFPAbYB3AH/AU8BtgHcAf8BTwG2AdwB/wFP +- AbYB3AH/AU8BtgHcAf8BTwG2AdwB/wFPAbYB3AH/AU8BtgHcAf8BTwG2AdwB/wP2Af8IAAP2Af8DPQH/ +- AfEB7wHwAf8B8QHvAfAB/wHxAe8B8AH/AfEB7wHwAf8B8QHvAfAB/wHxAe8B8AH/Az0B/wOGAf8DrgHv ++ AzkB/wP2Af+IAAP2Af8BSwG2AdwB/wFLAbYB3AH/AUsBtgHcAf8BSwG2AdwB/wHiAegB7gH/AfEB7wHw ++ Af8B8QHvAfAB/wHxAe8B8AH/AfEB7wHwAf8B8QHvAfAB/wHxAe8B8AH/AfEB7wHwAf8BSwG2AdwB/wP2 ++ Af8IAAP2Af8DOQH/AfEB7wHwAf8B8QHvAfAB/wHxAe8B8AH/AfEB7wHwAf8B8QHvAfAB/wHxAe8B8AH/ ++ AzkB/wM5Af8DOQH/A4YB/wOOAe+IAAP2Af8D9gH/A/YB/wP2Af8BigG+Ad8B/wGnAcsB5AH/AfEB7wHw ++ Af8B8QHvAfAB/wHxAe8B8AH/AfEB7wHwAf8B8QHvAfAB/wHxAe8B8AH/AfEB7wHwAf8BSwG2AdwB/wP2 ++ Af8IAAP2Af8DOQH/AfEB7wHwAf8B8QHvAfAB/wHxAe8B8AH/AfEB7wHwAf8B8QHvAfAB/wHxAe8B8AH/ ++ AzkB/wM5Af8DhgH/A44B7wMhATCUAANcAd8ByAHeAewB/wFLAbYB3AH/AUsBtgHcAf8BSwG2AdwB/wFL ++ AbYB3AH/AUsBtgHcAf8BSwG2AdwB/wFLAbYB3AH/AUsBtgHcAf8BSwG2AdwB/wP2Af8IAAP2Af8DOQH/ ++ AfEB7wHwAf8B8QHvAfAB/wHxAe8B8AH/AfEB7wHwAf8B8QHvAfAB/wHxAe8B8AH/AzkB/wOGAf8DjgHv + AyEBMJgAAzoBYAP2Af8D9gH/A/YB/wP2Af8D9gH/A/YB/wP2Af8D9gH/A/YB/wP2Af8D9gH/CAAD9gH/ +- Az0B/wM9Af8DPQH/Az0B/wM9Af8DPQH/Az0B/wOGAf8DrgHvAyEBMNQAA/YB/wP2Af8D9gH/A/YB/wP2 +- Af8D9gH/A/YB/wP2Af8DrgHvAyEBMJAAAUIBTQE+BwABPgMAASgDAAFAAwABEAMAAQEBAAEBBQABgBcA ++ AzkB/wM5Af8DOQH/AzkB/wM5Af8DOQH/AzkB/wOGAf8DjgHvAyEBMNQAA/YB/wP2Af8D9gH/A/YB/wP2 ++ Af8D9gH/A/YB/wP2Af8DjgHvAyEBMJAAAUIBTQE+BwABPgMAASgDAAFAAwABEAMAAQEBAAEBBQABgBcA + A/8BAAL/AcABAQQAAcABAAHAAQEEAAGAAQABwAEBBAABgAEAAcABAQQAAYABAAHAAQEGAAHAAQEGAAHA + AQEGAAHAAQEGAAHAAQEEAAGAAQABwAEBBAABgAEAAcABAQQAAYABAAHAAQEEAAGAAQABwAEBBAAB8AEA + AcABAwQAAfABAAHAAQcEAAL/AcABDwQACw== +@@ -211,38 +211,45 @@ + r0KQPFgRLoUwObgiEMamAIRRFIEwuoL///8zAAC5cW+geGnZqAAAAABJRU5ErkJggg== + + +- ++ + + iVBORw0KGgoAAAANSUhEUgAAAAkAAAAFCAYAAACXU8ZrAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1 + MAAA6mAAADqYAAAXb5JfxUYAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAAvSURBVBhXY4iJiflPCDP8//8f + r0KQPFgRLoUwObgiEMamAIRRFIEwuoL///8zAAC5cW+geGnZqAAAAABJRU5ErkJggg== + + +- ++ ++ ++ iVBORw0KGgoAAAANSUhEUgAAAAkAAAAFCAYAAACXU8ZrAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1 ++ MAAA6mAAADqYAAAXb5JfxUYAAAAJcEhZcwAADsIAAA7CARUoSoAAAAAvSURBVBhXY4iJiflPCDP8//8f ++ r0KQPFgRLoUwObgiEMamAIRRFIEwuoL///8zAAC5cW+geGnZqAAAAABJRU5ErkJggg== ++ ++ ++ + + iVBORw0KGgoAAAANSUhEUgAAAAkAAAAFCAYAAACXU8ZrAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1 + MAAA6mAAADqYAAAXb5JfxUYAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAAvSURBVBhXY4iJiflPCDP8//8f + r0KQPFgRLoUwObgiEMamAIRRFIEwuoL///8zAAC5cW+geGnZqAAAAABJRU5ErkJggg== + + +- ++ + + iVBORw0KGgoAAAANSUhEUgAAAAkAAAAFCAYAAACXU8ZrAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1 + MAAA6mAAADqYAAAXb5JfxUYAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAAvSURBVBhXY4iJiflPCDP8//8f + r0KQPFgRLoUwObgiEMamAIRRFIEwuoL///8zAAC5cW+geGnZqAAAAABJRU5ErkJggg== + + +- ++ + + iVBORw0KGgoAAAANSUhEUgAAAAkAAAAFCAYAAACXU8ZrAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1 + MAAA6mAAADqYAAAXb5JfxUYAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAAvSURBVBhXY4iJiflPCDP8//8f + r0KQPFgRLoUwObgiEMamAIRRFIEwuoL///8zAAC5cW+geGnZqAAAAABJRU5ErkJggg== + + +- ++ + + iVBORw0KGgoAAAANSUhEUgAAAAkAAAAFCAYAAACXU8ZrAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1 +- MAAA6mAAADqYAAAXb5JfxUYAAAAJcEhZcwAADsIAAA7CARUoSoAAAAAvSURBVBhXY4iJiflPCDP8//8f ++ MAAA6mAAADqYAAAXb5JfxUYAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAAvSURBVBhXY4iJiflPCDP8//8f + r0KQPFgRLoUwObgiEMamAIRRFIEwuoL///8zAAC5cW+geGnZqAAAAABJRU5ErkJggg== + + +diff --git a/Intersect.Editor/Intersect.Editor.csproj b/Intersect.Editor/Intersect.Editor.csproj +index 0a8e9137..f6e379b4 100644 +--- a/Intersect.Editor/Intersect.Editor.csproj ++++ b/Intersect.Editor/Intersect.Editor.csproj +@@ -86,6 +86,12 @@ + + + ++ ++ UserControl ++ ++ ++ EventCommand_ChangeHair.cs ++ + + + +@@ -642,6 +648,9 @@ + + EditorForm.cs + ++ ++ EventCommand_ChangeHair.cs ++ + + EventCommand_ChangeFace.cs + +diff --git a/Intersect.Editor/Localization/Strings.cs b/Intersect.Editor/Localization/Strings.cs +index 7432fe66..52c3961c 100644 +--- a/Intersect.Editor/Localization/Strings.cs ++++ b/Intersect.Editor/Localization/Strings.cs +@@ -852,6 +852,10 @@ public struct ClassEditor + + public static LocalizedString undotitle = @"Undo Changes"; + ++ public static LocalizedString hairstyles = @"Hairstyles"; ++ ++ public static LocalizedString hair = @"Hair:"; ++ + } + + public struct Colors +@@ -1164,6 +1168,19 @@ public struct EventChangeFace + + } + ++ public struct EventChangeHair ++ { ++ ++ public static LocalizedString cancel = @"Cancel"; ++ ++ public static LocalizedString label = @"Hair:"; ++ ++ public static LocalizedString okay = @"Ok"; ++ ++ public static LocalizedString title = @"Change Hair"; ++ ++ } ++ + public struct EventShowPicture + { + +@@ -1554,6 +1571,8 @@ public struct EventCommandList + + public static LocalizedString setface = @"Set Player Face to {00}"; + ++ public static LocalizedString sethair = @"Set Player Hair to {00}"; ++ + public static LocalizedString setnamecolor = @"Set Player Name Color"; + + public static LocalizedString removenamecolor = @"Remove Player Name Color"; +@@ -1688,6 +1707,7 @@ public struct EventCommands + {"changenamecolor", @"Change Name Color"}, + {"inputvariable", @"Input Variable"}, + {"changeplayerlabel", @"Change Player Label"}, ++ {"changehair", @"Change Hair"}, + }; + + } +diff --git a/Intersect.Server/Entities/Events/CommandProcessing.cs b/Intersect.Server/Entities/Events/CommandProcessing.cs +index 27d1e0bc..5d4a7bce 100644 +--- a/Intersect.Server/Entities/Events/CommandProcessing.cs ++++ b/Intersect.Server/Entities/Events/CommandProcessing.cs +@@ -492,6 +492,19 @@ Stack callStack + PacketSender.SendEntityDataToProximity(player); + } + ++ //Change Hair Command ++ private static void ProcessCommand( ++ ChangeHairCommand command, ++ Player player, ++ Event instance, ++ CommandInstance stackInfo, ++ Stack callStack ++ ) ++ { ++ player.CustomSpriteLayers[(int)Enums.CustomSpriteLayers.Hair] = command.Hair; ++ PacketSender.SendCustomSpriteLayersToProximity(player); ++ } ++ + //Change Gender Command + private static void ProcessCommand( + ChangeGenderCommand command, +diff --git a/Intersect.Server/Entities/Player.cs b/Intersect.Server/Entities/Player.cs +index f3289df3..d12e869d 100644 +--- a/Intersect.Server/Entities/Player.cs ++++ b/Intersect.Server/Entities/Player.cs +@@ -71,6 +71,16 @@ public partial class Player : Entity + + public Gender Gender { get; set; } + ++ [NotMapped] ++ public string[] CustomSpriteLayers { get; set; } = new string[(int)Enums.CustomSpriteLayers.CustomCount]; ++ ++ [Column("CustomSpriteLayers"), JsonIgnore] ++ public string CustomSpriteLayersJson ++ { ++ get => DatabaseUtils.SaveStringArray(CustomSpriteLayers, (int)Enums.CustomSpriteLayers.CustomCount); ++ set => CustomSpriteLayers = DatabaseUtils.LoadStringArray(value, (int)Enums.CustomSpriteLayers.CustomCount); ++ } ++ + public long Exp { get; set; } + + public int StatPoints { get; set; } +diff --git a/Intersect.Server/Intersect.Server.csproj b/Intersect.Server/Intersect.Server.csproj +index 1bbee3dc..c36f85ac 100644 +--- a/Intersect.Server/Intersect.Server.csproj ++++ b/Intersect.Server/Intersect.Server.csproj +@@ -480,6 +480,14 @@ + + + ++ ++ ++ 20200402173703_PlayerHair_PlayerEdits.cs ++ ++ ++ ++ 20200402142818_PlayerHair_ClassEdits.cs ++ + + + +diff --git a/Intersect.Server/Migrations/20200402160828_PlayerHair_PlayerEdits.Designer.cs b/Intersect.Server/Migrations/20200402160828_PlayerHair_PlayerEdits.Designer.cs +new file mode 100644 +index 00000000..7523aeef +--- /dev/null ++++ b/Intersect.Server/Migrations/20200402160828_PlayerHair_PlayerEdits.Designer.cs +@@ -0,0 +1,513 @@ ++// ++using System; ++using Intersect.Server.Database.PlayerData; ++using Microsoft.EntityFrameworkCore; ++using Microsoft.EntityFrameworkCore.Infrastructure; ++using Microsoft.EntityFrameworkCore.Migrations; ++using Microsoft.EntityFrameworkCore.Storage.ValueConversion; ++ ++namespace Intersect.Server.Migrations ++{ ++ [DbContext(typeof(PlayerContext))] ++ [Migration("20200402160828_PlayerHair_PlayerEdits")] ++ partial class PlayerHair_PlayerEdits ++ { ++ protected override void BuildTargetModel(ModelBuilder modelBuilder) ++ { ++#pragma warning disable 612, 618 ++ modelBuilder ++ .HasAnnotation("ProductVersion", "2.1.3-rtm-32065"); ++ ++ modelBuilder.Entity("Intersect.Server.Database.PlayerData.Api.RefreshToken", b => ++ { ++ b.Property("Id") ++ .ValueGeneratedOnAdd(); ++ ++ b.Property("ClientId"); ++ ++ b.Property("Expires"); ++ ++ b.Property("Issued"); ++ ++ b.Property("Subject") ++ .IsRequired(); ++ ++ b.Property("Ticket") ++ .IsRequired(); ++ ++ b.Property("TicketId"); ++ ++ b.Property("UserId"); ++ ++ b.HasKey("Id"); ++ ++ b.HasIndex("UserId"); ++ ++ b.ToTable("RefreshTokens"); ++ }); ++ ++ modelBuilder.Entity("Intersect.Server.Database.PlayerData.Ban", b => ++ { ++ b.Property("Id") ++ .ValueGeneratedOnAdd(); ++ ++ b.Property("Banner"); ++ ++ b.Property("EndTime"); ++ ++ b.Property("Ip"); ++ ++ b.Property("Reason"); ++ ++ b.Property("StartTime"); ++ ++ b.Property("UserId") ++ .HasColumnName("PlayerId"); ++ ++ b.HasKey("Id"); ++ ++ b.HasIndex("UserId") ++ .IsUnique(); ++ ++ b.ToTable("Bans"); ++ }); ++ ++ modelBuilder.Entity("Intersect.Server.Database.PlayerData.Mute", b => ++ { ++ b.Property("Id") ++ .ValueGeneratedOnAdd(); ++ ++ b.Property("EndTime"); ++ ++ b.Property("Ip"); ++ ++ b.Property("Muter"); ++ ++ b.Property("Reason"); ++ ++ b.Property("StartTime"); ++ ++ b.Property("UserId") ++ .HasColumnName("PlayerId"); ++ ++ b.HasKey("Id"); ++ ++ b.HasIndex("UserId") ++ .IsUnique(); ++ ++ b.ToTable("Mutes"); ++ }); ++ ++ modelBuilder.Entity("Intersect.Server.Database.PlayerData.Players.Bag", b => ++ { ++ b.Property("Id") ++ .ValueGeneratedOnAdd(); ++ ++ b.Property("SlotCount"); ++ ++ b.HasKey("Id"); ++ ++ b.ToTable("Bags"); ++ }); ++ ++ modelBuilder.Entity("Intersect.Server.Database.PlayerData.Players.BagSlot", b => ++ { ++ b.Property("Id") ++ .ValueGeneratedOnAdd(); ++ ++ b.Property("BagId"); ++ ++ b.Property("ItemId"); ++ ++ b.Property("ParentBagId"); ++ ++ b.Property("Quantity"); ++ ++ b.Property("Slot"); ++ ++ b.Property("StatBuffsJson") ++ .HasColumnName("StatBuffs"); ++ ++ b.HasKey("Id"); ++ ++ b.HasIndex("BagId"); ++ ++ b.HasIndex("ParentBagId"); ++ ++ b.ToTable("Bag_Items"); ++ }); ++ ++ modelBuilder.Entity("Intersect.Server.Database.PlayerData.Players.BankSlot", b => ++ { ++ b.Property("Id") ++ .ValueGeneratedOnAdd(); ++ ++ b.Property("BagId"); ++ ++ b.Property("ItemId"); ++ ++ b.Property("PlayerId"); ++ ++ b.Property("Quantity"); ++ ++ b.Property("Slot"); ++ ++ b.Property("StatBuffsJson") ++ .HasColumnName("StatBuffs"); ++ ++ b.HasKey("Id"); ++ ++ b.HasIndex("BagId"); ++ ++ b.HasIndex("PlayerId"); ++ ++ b.ToTable("Player_Bank"); ++ }); ++ ++ modelBuilder.Entity("Intersect.Server.Database.PlayerData.Players.Friend", b => ++ { ++ b.Property("Id") ++ .ValueGeneratedOnAdd(); ++ ++ b.Property("OwnerId"); ++ ++ b.Property("TargetId"); ++ ++ b.HasKey("Id"); ++ ++ b.HasIndex("OwnerId"); ++ ++ b.HasIndex("TargetId"); ++ ++ b.ToTable("Player_Friends"); ++ }); ++ ++ modelBuilder.Entity("Intersect.Server.Database.PlayerData.Players.HotbarSlot", b => ++ { ++ b.Property("Id") ++ .ValueGeneratedOnAdd(); ++ ++ b.Property("BagId"); ++ ++ b.Property("ItemOrSpellId"); ++ ++ b.Property("PlayerId"); ++ ++ b.Property("Slot"); ++ ++ b.Property("StatBuffsJson") ++ .HasColumnName("PreferredStatBuffs"); ++ ++ b.HasKey("Id"); ++ ++ b.HasIndex("PlayerId"); ++ ++ b.ToTable("Player_Hotbar"); ++ }); ++ ++ modelBuilder.Entity("Intersect.Server.Database.PlayerData.Players.InventorySlot", b => ++ { ++ b.Property("Id") ++ .ValueGeneratedOnAdd(); ++ ++ b.Property("BagId"); ++ ++ b.Property("ItemId"); ++ ++ b.Property("PlayerId"); ++ ++ b.Property("Quantity"); ++ ++ b.Property("Slot"); ++ ++ b.Property("StatBuffsJson") ++ .HasColumnName("StatBuffs"); ++ ++ b.HasKey("Id"); ++ ++ b.HasIndex("BagId"); ++ ++ b.HasIndex("PlayerId"); ++ ++ b.ToTable("Player_Items"); ++ }); ++ ++ modelBuilder.Entity("Intersect.Server.Database.PlayerData.Players.Quest", b => ++ { ++ b.Property("Id") ++ .ValueGeneratedOnAdd(); ++ ++ b.Property("Completed"); ++ ++ b.Property("PlayerId"); ++ ++ b.Property("QuestId"); ++ ++ b.Property("TaskId"); ++ ++ b.Property("TaskProgress"); ++ ++ b.HasKey("Id"); ++ ++ b.HasIndex("PlayerId"); ++ ++ b.HasIndex("QuestId", "PlayerId") ++ .IsUnique(); ++ ++ b.ToTable("Player_Quests"); ++ }); ++ ++ modelBuilder.Entity("Intersect.Server.Database.PlayerData.Players.SpellSlot", b => ++ { ++ b.Property("Id") ++ .ValueGeneratedOnAdd(); ++ ++ b.Property("PlayerId"); ++ ++ b.Property("Slot"); ++ ++ b.Property("SpellCd"); ++ ++ b.Property("SpellId"); ++ ++ b.HasKey("Id"); ++ ++ b.HasIndex("PlayerId"); ++ ++ b.ToTable("Player_Spells"); ++ }); ++ ++ modelBuilder.Entity("Intersect.Server.Database.PlayerData.Players.Variable", b => ++ { ++ b.Property("Id") ++ .ValueGeneratedOnAdd(); ++ ++ b.Property("Json") ++ .HasColumnName("Value"); ++ ++ b.Property("PlayerId"); ++ ++ b.Property("VariableId"); ++ ++ b.HasKey("Id"); ++ ++ b.HasIndex("PlayerId"); ++ ++ b.HasIndex("VariableId", "PlayerId") ++ .IsUnique(); ++ ++ b.ToTable("Player_Variables"); ++ }); ++ ++ modelBuilder.Entity("Intersect.Server.Database.PlayerData.User", b => ++ { ++ b.Property("Id") ++ .ValueGeneratedOnAdd(); ++ ++ b.Property("Email"); ++ ++ b.Property("Name"); ++ ++ b.Property("Password"); ++ ++ b.Property("PasswordResetCode"); ++ ++ b.Property("PasswordResetTime"); ++ ++ b.Property("PowerJson") ++ .HasColumnName("Power"); ++ ++ b.Property("Salt"); ++ ++ b.HasKey("Id"); ++ ++ b.ToTable("Users"); ++ }); ++ ++ modelBuilder.Entity("Intersect.Server.Entities.Player", b => ++ { ++ b.Property("Id") ++ .ValueGeneratedOnAdd(); ++ ++ b.Property("ClassId"); ++ ++ b.Property("Dir"); ++ ++ b.Property("EquipmentJson") ++ .HasColumnName("Equipment"); ++ ++ b.Property("Exp"); ++ ++ b.Property("Face"); ++ ++ b.Property("FooterLabelJson") ++ .HasColumnName("FooterLabel"); ++ ++ b.Property("Gender"); ++ ++ b.Property("Hair"); ++ ++ b.Property("HeaderLabelJson") ++ .HasColumnName("HeaderLabel"); ++ ++ b.Property("ItemCooldownsJson") ++ .HasColumnName("ItemCooldowns"); ++ ++ b.Property("LastOnline"); ++ ++ b.Property("Level"); ++ ++ b.Property("MapId"); ++ ++ b.Property("Name"); ++ ++ b.Property("NameColorJson") ++ .HasColumnName("NameColor"); ++ ++ b.Property("SpellCooldownsJson") ++ .HasColumnName("SpellCooldowns"); ++ ++ b.Property("Sprite"); ++ ++ b.Property("StatPoints"); ++ ++ b.Property("StatPointsJson") ++ .HasColumnName("StatPointAllocations"); ++ ++ b.Property("StatsJson") ++ .HasColumnName("BaseStats"); ++ ++ b.Property("UserId"); ++ ++ b.Property("VitalsJson") ++ .HasColumnName("Vitals"); ++ ++ b.Property("X"); ++ ++ b.Property("Y"); ++ ++ b.Property("Z"); ++ ++ b.HasKey("Id"); ++ ++ b.HasIndex("UserId"); ++ ++ b.ToTable("Players"); ++ }); ++ ++ modelBuilder.Entity("Intersect.Server.Database.PlayerData.Api.RefreshToken", b => ++ { ++ b.HasOne("Intersect.Server.Database.PlayerData.User", "User") ++ .WithMany("RefreshTokens") ++ .HasForeignKey("UserId") ++ .OnDelete(DeleteBehavior.Cascade); ++ }); ++ ++ modelBuilder.Entity("Intersect.Server.Database.PlayerData.Ban", b => ++ { ++ b.HasOne("Intersect.Server.Database.PlayerData.User", "User") ++ .WithOne("Ban") ++ .HasForeignKey("Intersect.Server.Database.PlayerData.Ban", "UserId") ++ .OnDelete(DeleteBehavior.Cascade); ++ }); ++ ++ modelBuilder.Entity("Intersect.Server.Database.PlayerData.Mute", b => ++ { ++ b.HasOne("Intersect.Server.Database.PlayerData.User", "User") ++ .WithOne("Mute") ++ .HasForeignKey("Intersect.Server.Database.PlayerData.Mute", "UserId") ++ .OnDelete(DeleteBehavior.Cascade); ++ }); ++ ++ modelBuilder.Entity("Intersect.Server.Database.PlayerData.Players.BagSlot", b => ++ { ++ b.HasOne("Intersect.Server.Database.PlayerData.Players.Bag", "Bag") ++ .WithMany() ++ .HasForeignKey("BagId"); ++ ++ b.HasOne("Intersect.Server.Database.PlayerData.Players.Bag", "ParentBag") ++ .WithMany("Slots") ++ .HasForeignKey("ParentBagId") ++ .OnDelete(DeleteBehavior.Cascade); ++ }); ++ ++ modelBuilder.Entity("Intersect.Server.Database.PlayerData.Players.BankSlot", b => ++ { ++ b.HasOne("Intersect.Server.Database.PlayerData.Players.Bag", "Bag") ++ .WithMany() ++ .HasForeignKey("BagId"); ++ ++ b.HasOne("Intersect.Server.Entities.Player", "Player") ++ .WithMany("Bank") ++ .HasForeignKey("PlayerId") ++ .OnDelete(DeleteBehavior.Cascade); ++ }); ++ ++ modelBuilder.Entity("Intersect.Server.Database.PlayerData.Players.Friend", b => ++ { ++ b.HasOne("Intersect.Server.Entities.Player", "Owner") ++ .WithMany("Friends") ++ .HasForeignKey("OwnerId") ++ .OnDelete(DeleteBehavior.Cascade); ++ ++ b.HasOne("Intersect.Server.Entities.Player", "Target") ++ .WithMany() ++ .HasForeignKey("TargetId") ++ .OnDelete(DeleteBehavior.Cascade); ++ }); ++ ++ modelBuilder.Entity("Intersect.Server.Database.PlayerData.Players.HotbarSlot", b => ++ { ++ b.HasOne("Intersect.Server.Entities.Player", "Player") ++ .WithMany("Hotbar") ++ .HasForeignKey("PlayerId") ++ .OnDelete(DeleteBehavior.Cascade); ++ }); ++ ++ modelBuilder.Entity("Intersect.Server.Database.PlayerData.Players.InventorySlot", b => ++ { ++ b.HasOne("Intersect.Server.Database.PlayerData.Players.Bag", "Bag") ++ .WithMany() ++ .HasForeignKey("BagId"); ++ ++ b.HasOne("Intersect.Server.Entities.Player", "Player") ++ .WithMany("Items") ++ .HasForeignKey("PlayerId") ++ .OnDelete(DeleteBehavior.Cascade); ++ }); ++ ++ modelBuilder.Entity("Intersect.Server.Database.PlayerData.Players.Quest", b => ++ { ++ b.HasOne("Intersect.Server.Entities.Player", "Player") ++ .WithMany("Quests") ++ .HasForeignKey("PlayerId") ++ .OnDelete(DeleteBehavior.Cascade); ++ }); ++ ++ modelBuilder.Entity("Intersect.Server.Database.PlayerData.Players.SpellSlot", b => ++ { ++ b.HasOne("Intersect.Server.Entities.Player", "Player") ++ .WithMany("Spells") ++ .HasForeignKey("PlayerId") ++ .OnDelete(DeleteBehavior.Cascade); ++ }); ++ ++ modelBuilder.Entity("Intersect.Server.Database.PlayerData.Players.Variable", b => ++ { ++ b.HasOne("Intersect.Server.Entities.Player", "Player") ++ .WithMany("Variables") ++ .HasForeignKey("PlayerId") ++ .OnDelete(DeleteBehavior.Cascade); ++ }); ++ ++ modelBuilder.Entity("Intersect.Server.Entities.Player", b => ++ { ++ b.HasOne("Intersect.Server.Database.PlayerData.User", "User") ++ .WithMany("Players") ++ .HasForeignKey("UserId") ++ .OnDelete(DeleteBehavior.Cascade); ++ }); ++#pragma warning restore 612, 618 ++ } ++ } ++} +diff --git a/Intersect.Server/Migrations/20200402160828_PlayerHair_PlayerEdits.cs b/Intersect.Server/Migrations/20200402160828_PlayerHair_PlayerEdits.cs +new file mode 100644 +index 00000000..5dec7079 +--- /dev/null ++++ b/Intersect.Server/Migrations/20200402160828_PlayerHair_PlayerEdits.cs +@@ -0,0 +1,22 @@ ++using Microsoft.EntityFrameworkCore.Migrations; ++ ++namespace Intersect.Server.Migrations ++{ ++ public partial class PlayerHair_PlayerEdits : Migration ++ { ++ protected override void Up(MigrationBuilder migrationBuilder) ++ { ++ migrationBuilder.AddColumn( ++ name: "Hair", ++ table: "Players", ++ nullable: true); ++ } ++ ++ protected override void Down(MigrationBuilder migrationBuilder) ++ { ++ migrationBuilder.DropColumn( ++ name: "Hair", ++ table: "Players"); ++ } ++ } ++} +diff --git a/Intersect.Server/Migrations/20200402173703_PlayerHair_PlayerEdits.Designer.cs b/Intersect.Server/Migrations/20200402173703_PlayerHair_PlayerEdits.Designer.cs +new file mode 100644 +index 00000000..77112c14 +--- /dev/null ++++ b/Intersect.Server/Migrations/20200402173703_PlayerHair_PlayerEdits.Designer.cs +@@ -0,0 +1,514 @@ ++// ++using System; ++using Intersect.Server.Database.PlayerData; ++using Microsoft.EntityFrameworkCore; ++using Microsoft.EntityFrameworkCore.Infrastructure; ++using Microsoft.EntityFrameworkCore.Migrations; ++using Microsoft.EntityFrameworkCore.Storage.ValueConversion; ++ ++namespace Intersect.Server.Migrations ++{ ++ [DbContext(typeof(PlayerContext))] ++ [Migration("20200402173703_PlayerHair_PlayerEdits")] ++ partial class PlayerHair_PlayerEdits ++ { ++ protected override void BuildTargetModel(ModelBuilder modelBuilder) ++ { ++#pragma warning disable 612, 618 ++ modelBuilder ++ .HasAnnotation("ProductVersion", "2.1.3-rtm-32065"); ++ ++ modelBuilder.Entity("Intersect.Server.Database.PlayerData.Api.RefreshToken", b => ++ { ++ b.Property("Id") ++ .ValueGeneratedOnAdd(); ++ ++ b.Property("ClientId"); ++ ++ b.Property("Expires"); ++ ++ b.Property("Issued"); ++ ++ b.Property("Subject") ++ .IsRequired(); ++ ++ b.Property("Ticket") ++ .IsRequired(); ++ ++ b.Property("TicketId"); ++ ++ b.Property("UserId"); ++ ++ b.HasKey("Id"); ++ ++ b.HasIndex("UserId"); ++ ++ b.ToTable("RefreshTokens"); ++ }); ++ ++ modelBuilder.Entity("Intersect.Server.Database.PlayerData.Ban", b => ++ { ++ b.Property("Id") ++ .ValueGeneratedOnAdd(); ++ ++ b.Property("Banner"); ++ ++ b.Property("EndTime"); ++ ++ b.Property("Ip"); ++ ++ b.Property("Reason"); ++ ++ b.Property("StartTime"); ++ ++ b.Property("UserId") ++ .HasColumnName("PlayerId"); ++ ++ b.HasKey("Id"); ++ ++ b.HasIndex("UserId") ++ .IsUnique(); ++ ++ b.ToTable("Bans"); ++ }); ++ ++ modelBuilder.Entity("Intersect.Server.Database.PlayerData.Mute", b => ++ { ++ b.Property("Id") ++ .ValueGeneratedOnAdd(); ++ ++ b.Property("EndTime"); ++ ++ b.Property("Ip"); ++ ++ b.Property("Muter"); ++ ++ b.Property("Reason"); ++ ++ b.Property("StartTime"); ++ ++ b.Property("UserId") ++ .HasColumnName("PlayerId"); ++ ++ b.HasKey("Id"); ++ ++ b.HasIndex("UserId") ++ .IsUnique(); ++ ++ b.ToTable("Mutes"); ++ }); ++ ++ modelBuilder.Entity("Intersect.Server.Database.PlayerData.Players.Bag", b => ++ { ++ b.Property("Id") ++ .ValueGeneratedOnAdd(); ++ ++ b.Property("SlotCount"); ++ ++ b.HasKey("Id"); ++ ++ b.ToTable("Bags"); ++ }); ++ ++ modelBuilder.Entity("Intersect.Server.Database.PlayerData.Players.BagSlot", b => ++ { ++ b.Property("Id") ++ .ValueGeneratedOnAdd(); ++ ++ b.Property("BagId"); ++ ++ b.Property("ItemId"); ++ ++ b.Property("ParentBagId"); ++ ++ b.Property("Quantity"); ++ ++ b.Property("Slot"); ++ ++ b.Property("StatBuffsJson") ++ .HasColumnName("StatBuffs"); ++ ++ b.HasKey("Id"); ++ ++ b.HasIndex("BagId"); ++ ++ b.HasIndex("ParentBagId"); ++ ++ b.ToTable("Bag_Items"); ++ }); ++ ++ modelBuilder.Entity("Intersect.Server.Database.PlayerData.Players.BankSlot", b => ++ { ++ b.Property("Id") ++ .ValueGeneratedOnAdd(); ++ ++ b.Property("BagId"); ++ ++ b.Property("ItemId"); ++ ++ b.Property("PlayerId"); ++ ++ b.Property("Quantity"); ++ ++ b.Property("Slot"); ++ ++ b.Property("StatBuffsJson") ++ .HasColumnName("StatBuffs"); ++ ++ b.HasKey("Id"); ++ ++ b.HasIndex("BagId"); ++ ++ b.HasIndex("PlayerId"); ++ ++ b.ToTable("Player_Bank"); ++ }); ++ ++ modelBuilder.Entity("Intersect.Server.Database.PlayerData.Players.Friend", b => ++ { ++ b.Property("Id") ++ .ValueGeneratedOnAdd(); ++ ++ b.Property("OwnerId"); ++ ++ b.Property("TargetId"); ++ ++ b.HasKey("Id"); ++ ++ b.HasIndex("OwnerId"); ++ ++ b.HasIndex("TargetId"); ++ ++ b.ToTable("Player_Friends"); ++ }); ++ ++ modelBuilder.Entity("Intersect.Server.Database.PlayerData.Players.HotbarSlot", b => ++ { ++ b.Property("Id") ++ .ValueGeneratedOnAdd(); ++ ++ b.Property("BagId"); ++ ++ b.Property("ItemOrSpellId"); ++ ++ b.Property("PlayerId"); ++ ++ b.Property("Slot"); ++ ++ b.Property("StatBuffsJson") ++ .HasColumnName("PreferredStatBuffs"); ++ ++ b.HasKey("Id"); ++ ++ b.HasIndex("PlayerId"); ++ ++ b.ToTable("Player_Hotbar"); ++ }); ++ ++ modelBuilder.Entity("Intersect.Server.Database.PlayerData.Players.InventorySlot", b => ++ { ++ b.Property("Id") ++ .ValueGeneratedOnAdd(); ++ ++ b.Property("BagId"); ++ ++ b.Property("ItemId"); ++ ++ b.Property("PlayerId"); ++ ++ b.Property("Quantity"); ++ ++ b.Property("Slot"); ++ ++ b.Property("StatBuffsJson") ++ .HasColumnName("StatBuffs"); ++ ++ b.HasKey("Id"); ++ ++ b.HasIndex("BagId"); ++ ++ b.HasIndex("PlayerId"); ++ ++ b.ToTable("Player_Items"); ++ }); ++ ++ modelBuilder.Entity("Intersect.Server.Database.PlayerData.Players.Quest", b => ++ { ++ b.Property("Id") ++ .ValueGeneratedOnAdd(); ++ ++ b.Property("Completed"); ++ ++ b.Property("PlayerId"); ++ ++ b.Property("QuestId"); ++ ++ b.Property("TaskId"); ++ ++ b.Property("TaskProgress"); ++ ++ b.HasKey("Id"); ++ ++ b.HasIndex("PlayerId"); ++ ++ b.HasIndex("QuestId", "PlayerId") ++ .IsUnique(); ++ ++ b.ToTable("Player_Quests"); ++ }); ++ ++ modelBuilder.Entity("Intersect.Server.Database.PlayerData.Players.SpellSlot", b => ++ { ++ b.Property("Id") ++ .ValueGeneratedOnAdd(); ++ ++ b.Property("PlayerId"); ++ ++ b.Property("Slot"); ++ ++ b.Property("SpellCd"); ++ ++ b.Property("SpellId"); ++ ++ b.HasKey("Id"); ++ ++ b.HasIndex("PlayerId"); ++ ++ b.ToTable("Player_Spells"); ++ }); ++ ++ modelBuilder.Entity("Intersect.Server.Database.PlayerData.Players.Variable", b => ++ { ++ b.Property("Id") ++ .ValueGeneratedOnAdd(); ++ ++ b.Property("Json") ++ .HasColumnName("Value"); ++ ++ b.Property("PlayerId"); ++ ++ b.Property("VariableId"); ++ ++ b.HasKey("Id"); ++ ++ b.HasIndex("PlayerId"); ++ ++ b.HasIndex("VariableId", "PlayerId") ++ .IsUnique(); ++ ++ b.ToTable("Player_Variables"); ++ }); ++ ++ modelBuilder.Entity("Intersect.Server.Database.PlayerData.User", b => ++ { ++ b.Property("Id") ++ .ValueGeneratedOnAdd(); ++ ++ b.Property("Email"); ++ ++ b.Property("Name"); ++ ++ b.Property("Password"); ++ ++ b.Property("PasswordResetCode"); ++ ++ b.Property("PasswordResetTime"); ++ ++ b.Property("PowerJson") ++ .HasColumnName("Power"); ++ ++ b.Property("Salt"); ++ ++ b.HasKey("Id"); ++ ++ b.ToTable("Users"); ++ }); ++ ++ modelBuilder.Entity("Intersect.Server.Entities.Player", b => ++ { ++ b.Property("Id") ++ .ValueGeneratedOnAdd(); ++ ++ b.Property("ClassId"); ++ ++ b.Property("CustomSpriteLayersJson") ++ .HasColumnName("CustomSpriteLayers"); ++ ++ b.Property("Dir"); ++ ++ b.Property("EquipmentJson") ++ .HasColumnName("Equipment"); ++ ++ b.Property("Exp"); ++ ++ b.Property("Face"); ++ ++ b.Property("FooterLabelJson") ++ .HasColumnName("FooterLabel"); ++ ++ b.Property("Gender"); ++ ++ b.Property("HeaderLabelJson") ++ .HasColumnName("HeaderLabel"); ++ ++ b.Property("ItemCooldownsJson") ++ .HasColumnName("ItemCooldowns"); ++ ++ b.Property("LastOnline"); ++ ++ b.Property("Level"); ++ ++ b.Property("MapId"); ++ ++ b.Property("Name"); ++ ++ b.Property("NameColorJson") ++ .HasColumnName("NameColor"); ++ ++ b.Property("SpellCooldownsJson") ++ .HasColumnName("SpellCooldowns"); ++ ++ b.Property("Sprite"); ++ ++ b.Property("StatPoints"); ++ ++ b.Property("StatPointsJson") ++ .HasColumnName("StatPointAllocations"); ++ ++ b.Property("StatsJson") ++ .HasColumnName("BaseStats"); ++ ++ b.Property("UserId"); ++ ++ b.Property("VitalsJson") ++ .HasColumnName("Vitals"); ++ ++ b.Property("X"); ++ ++ b.Property("Y"); ++ ++ b.Property("Z"); ++ ++ b.HasKey("Id"); ++ ++ b.HasIndex("UserId"); ++ ++ b.ToTable("Players"); ++ }); ++ ++ modelBuilder.Entity("Intersect.Server.Database.PlayerData.Api.RefreshToken", b => ++ { ++ b.HasOne("Intersect.Server.Database.PlayerData.User", "User") ++ .WithMany("RefreshTokens") ++ .HasForeignKey("UserId") ++ .OnDelete(DeleteBehavior.Cascade); ++ }); ++ ++ modelBuilder.Entity("Intersect.Server.Database.PlayerData.Ban", b => ++ { ++ b.HasOne("Intersect.Server.Database.PlayerData.User", "User") ++ .WithOne("Ban") ++ .HasForeignKey("Intersect.Server.Database.PlayerData.Ban", "UserId") ++ .OnDelete(DeleteBehavior.Cascade); ++ }); ++ ++ modelBuilder.Entity("Intersect.Server.Database.PlayerData.Mute", b => ++ { ++ b.HasOne("Intersect.Server.Database.PlayerData.User", "User") ++ .WithOne("Mute") ++ .HasForeignKey("Intersect.Server.Database.PlayerData.Mute", "UserId") ++ .OnDelete(DeleteBehavior.Cascade); ++ }); ++ ++ modelBuilder.Entity("Intersect.Server.Database.PlayerData.Players.BagSlot", b => ++ { ++ b.HasOne("Intersect.Server.Database.PlayerData.Players.Bag", "Bag") ++ .WithMany() ++ .HasForeignKey("BagId"); ++ ++ b.HasOne("Intersect.Server.Database.PlayerData.Players.Bag", "ParentBag") ++ .WithMany("Slots") ++ .HasForeignKey("ParentBagId") ++ .OnDelete(DeleteBehavior.Cascade); ++ }); ++ ++ modelBuilder.Entity("Intersect.Server.Database.PlayerData.Players.BankSlot", b => ++ { ++ b.HasOne("Intersect.Server.Database.PlayerData.Players.Bag", "Bag") ++ .WithMany() ++ .HasForeignKey("BagId"); ++ ++ b.HasOne("Intersect.Server.Entities.Player", "Player") ++ .WithMany("Bank") ++ .HasForeignKey("PlayerId") ++ .OnDelete(DeleteBehavior.Cascade); ++ }); ++ ++ modelBuilder.Entity("Intersect.Server.Database.PlayerData.Players.Friend", b => ++ { ++ b.HasOne("Intersect.Server.Entities.Player", "Owner") ++ .WithMany("Friends") ++ .HasForeignKey("OwnerId") ++ .OnDelete(DeleteBehavior.Cascade); ++ ++ b.HasOne("Intersect.Server.Entities.Player", "Target") ++ .WithMany() ++ .HasForeignKey("TargetId") ++ .OnDelete(DeleteBehavior.Cascade); ++ }); ++ ++ modelBuilder.Entity("Intersect.Server.Database.PlayerData.Players.HotbarSlot", b => ++ { ++ b.HasOne("Intersect.Server.Entities.Player", "Player") ++ .WithMany("Hotbar") ++ .HasForeignKey("PlayerId") ++ .OnDelete(DeleteBehavior.Cascade); ++ }); ++ ++ modelBuilder.Entity("Intersect.Server.Database.PlayerData.Players.InventorySlot", b => ++ { ++ b.HasOne("Intersect.Server.Database.PlayerData.Players.Bag", "Bag") ++ .WithMany() ++ .HasForeignKey("BagId"); ++ ++ b.HasOne("Intersect.Server.Entities.Player", "Player") ++ .WithMany("Items") ++ .HasForeignKey("PlayerId") ++ .OnDelete(DeleteBehavior.Cascade); ++ }); ++ ++ modelBuilder.Entity("Intersect.Server.Database.PlayerData.Players.Quest", b => ++ { ++ b.HasOne("Intersect.Server.Entities.Player", "Player") ++ .WithMany("Quests") ++ .HasForeignKey("PlayerId") ++ .OnDelete(DeleteBehavior.Cascade); ++ }); ++ ++ modelBuilder.Entity("Intersect.Server.Database.PlayerData.Players.SpellSlot", b => ++ { ++ b.HasOne("Intersect.Server.Entities.Player", "Player") ++ .WithMany("Spells") ++ .HasForeignKey("PlayerId") ++ .OnDelete(DeleteBehavior.Cascade); ++ }); ++ ++ modelBuilder.Entity("Intersect.Server.Database.PlayerData.Players.Variable", b => ++ { ++ b.HasOne("Intersect.Server.Entities.Player", "Player") ++ .WithMany("Variables") ++ .HasForeignKey("PlayerId") ++ .OnDelete(DeleteBehavior.Cascade); ++ }); ++ ++ modelBuilder.Entity("Intersect.Server.Entities.Player", b => ++ { ++ b.HasOne("Intersect.Server.Database.PlayerData.User", "User") ++ .WithMany("Players") ++ .HasForeignKey("UserId") ++ .OnDelete(DeleteBehavior.Cascade); ++ }); ++#pragma warning restore 612, 618 ++ } ++ } ++} +diff --git a/Intersect.Server/Migrations/20200402173703_PlayerHair_PlayerEdits.cs b/Intersect.Server/Migrations/20200402173703_PlayerHair_PlayerEdits.cs +new file mode 100644 +index 00000000..50277779 +--- /dev/null ++++ b/Intersect.Server/Migrations/20200402173703_PlayerHair_PlayerEdits.cs +@@ -0,0 +1,22 @@ ++using Microsoft.EntityFrameworkCore.Migrations; ++ ++namespace Intersect.Server.Migrations ++{ ++ public partial class PlayerHair_PlayerEdits : Migration ++ { ++ protected override void Up(MigrationBuilder migrationBuilder) ++ { ++ migrationBuilder.AddColumn( ++ name: "CustomSpriteLayers", ++ table: "Players", ++ nullable: true); ++ } ++ ++ protected override void Down(MigrationBuilder migrationBuilder) ++ { ++ migrationBuilder.DropColumn( ++ name: "CustomSpriteLayers", ++ table: "Players"); ++ } ++ } ++} +diff --git a/Intersect.Server/Migrations/Game/20200402142818_PlayerHair_ClassEdits.Designer.cs b/Intersect.Server/Migrations/Game/20200402142818_PlayerHair_ClassEdits.Designer.cs +new file mode 100644 +index 00000000..348db302 +--- /dev/null ++++ b/Intersect.Server/Migrations/Game/20200402142818_PlayerHair_ClassEdits.Designer.cs +@@ -0,0 +1,1039 @@ ++// ++using System; ++using Intersect.Server.Database.GameData; ++using Microsoft.EntityFrameworkCore; ++using Microsoft.EntityFrameworkCore.Infrastructure; ++using Microsoft.EntityFrameworkCore.Migrations; ++using Microsoft.EntityFrameworkCore.Storage.ValueConversion; ++ ++namespace Intersect.Server.Migrations.Game ++{ ++ [DbContext(typeof(GameContext))] ++ [Migration("20200402142818_PlayerHair_ClassEdits")] ++ partial class PlayerHair_ClassEdits ++ { ++ protected override void BuildTargetModel(ModelBuilder modelBuilder) ++ { ++#pragma warning disable 612, 618 ++ modelBuilder ++ .HasAnnotation("ProductVersion", "2.1.3-rtm-32065"); ++ ++ modelBuilder.Entity("Intersect.GameObjects.AnimationBase", b => ++ { ++ b.Property("Id") ++ .ValueGeneratedOnAdd(); ++ ++ b.Property("CompleteSound"); ++ ++ b.Property("Folder"); ++ ++ b.Property("Name"); ++ ++ b.Property("Sound"); ++ ++ b.Property("TimeCreated"); ++ ++ b.HasKey("Id"); ++ ++ b.ToTable("Animations"); ++ }); ++ ++ modelBuilder.Entity("Intersect.GameObjects.ClassBase", b => ++ { ++ b.Property("Id") ++ .ValueGeneratedOnAdd(); ++ ++ b.Property("AttackAnimationId") ++ .HasColumnName("AttackAnimation"); ++ ++ b.Property("AttackSpeedModifier"); ++ ++ b.Property("AttackSpeedValue"); ++ ++ b.Property("BaseExp"); ++ ++ b.Property("BasePoints"); ++ ++ b.Property("CritChance"); ++ ++ b.Property("CritMultiplier"); ++ ++ b.Property("Damage"); ++ ++ b.Property("DamageType"); ++ ++ b.Property("ExpIncrease"); ++ ++ b.Property("ExpOverridesJson") ++ .HasColumnName("ExperienceOverrides"); ++ ++ b.Property("Folder"); ++ ++ b.Property("IncreasePercentage"); ++ ++ b.Property("JsonBaseStats") ++ .HasColumnName("BaseStats"); ++ ++ b.Property("JsonBaseVitals") ++ .HasColumnName("BaseVitals"); ++ ++ b.Property("JsonHairs") ++ .HasColumnName("Hairs"); ++ ++ b.Property("JsonItems") ++ .HasColumnName("Items"); ++ ++ b.Property("JsonSpells") ++ .HasColumnName("Spells"); ++ ++ b.Property("JsonSprites") ++ .HasColumnName("Sprites"); ++ ++ b.Property("Locked"); ++ ++ b.Property("Name"); ++ ++ b.Property("PointIncrease"); ++ ++ b.Property("RegenJson") ++ .HasColumnName("VitalRegen"); ++ ++ b.Property("Scaling"); ++ ++ b.Property("ScalingStat"); ++ ++ b.Property("SpawnDir"); ++ ++ b.Property("SpawnMapId") ++ .HasColumnName("SpawnMap"); ++ ++ b.Property("SpawnX"); ++ ++ b.Property("SpawnY"); ++ ++ b.Property("StatIncreaseJson") ++ .HasColumnName("StatIncreases"); ++ ++ b.Property("TimeCreated"); ++ ++ b.Property("VitalIncreaseJson") ++ .HasColumnName("VitalIncreases"); ++ ++ b.HasKey("Id"); ++ ++ b.ToTable("Classes"); ++ }); ++ ++ modelBuilder.Entity("Intersect.GameObjects.Crafting.CraftBase", b => ++ { ++ b.Property("Id") ++ .ValueGeneratedOnAdd(); ++ ++ b.Property("Folder"); ++ ++ b.Property("IngredientsJson") ++ .HasColumnName("Ingredients"); ++ ++ b.Property("ItemId"); ++ ++ b.Property("Name"); ++ ++ b.Property("Quantity"); ++ ++ b.Property("Time"); ++ ++ b.Property("TimeCreated"); ++ ++ b.HasKey("Id"); ++ ++ b.ToTable("Crafts"); ++ }); ++ ++ modelBuilder.Entity("Intersect.GameObjects.CraftingTableBase", b => ++ { ++ b.Property("Id") ++ .ValueGeneratedOnAdd(); ++ ++ b.Property("CraftsJson") ++ .HasColumnName("Crafts"); ++ ++ b.Property("Folder"); ++ ++ b.Property("Name"); ++ ++ b.Property("TimeCreated"); ++ ++ b.HasKey("Id"); ++ ++ b.ToTable("CraftingTables"); ++ }); ++ ++ modelBuilder.Entity("Intersect.GameObjects.Events.EventBase", b => ++ { ++ b.Property("Id") ++ .ValueGeneratedOnAdd(); ++ ++ b.Property("CommonEvent"); ++ ++ b.Property("Folder"); ++ ++ b.Property("Global"); ++ ++ b.Property("MapId"); ++ ++ b.Property("Name"); ++ ++ b.Property("PagesJson") ++ .HasColumnName("Pages"); ++ ++ b.Property("SpawnX"); ++ ++ b.Property("SpawnY"); ++ ++ b.Property("TimeCreated"); ++ ++ b.HasKey("Id"); ++ ++ b.ToTable("Events"); ++ }); ++ ++ modelBuilder.Entity("Intersect.GameObjects.ItemBase", b => ++ { ++ b.Property("Id") ++ .ValueGeneratedOnAdd(); ++ ++ b.Property("AnimationId") ++ .HasColumnName("Animation"); ++ ++ b.Property("AttackAnimationId") ++ .HasColumnName("AttackAnimation"); ++ ++ b.Property("AttackSpeedModifier"); ++ ++ b.Property("AttackSpeedValue"); ++ ++ b.Property("Bound"); ++ ++ b.Property("Cooldown"); ++ ++ b.Property("CritChance"); ++ ++ b.Property("CritMultiplier"); ++ ++ b.Property("Damage"); ++ ++ b.Property("DamageType"); ++ ++ b.Property("Description"); ++ ++ b.Property("DestroySpell"); ++ ++ b.Property("EquipmentAnimationId") ++ .HasColumnName("EquipmentAnimation"); ++ ++ b.Property("EquipmentSlot"); ++ ++ b.Property("EventId") ++ .HasColumnName("Event"); ++ ++ b.Property("FemalePaperdoll"); ++ ++ b.Property("Folder"); ++ ++ b.Property("Icon"); ++ ++ b.Property("ItemType"); ++ ++ b.Property("JsonUsageRequirements") ++ .HasColumnName("UsageRequirements"); ++ ++ b.Property("MalePaperdoll"); ++ ++ b.Property("Name"); ++ ++ b.Property("PercentageStatsJson") ++ .HasColumnName("PercentageStatsGiven"); ++ ++ b.Property("PercentageVitalsJson") ++ .HasColumnName("PercentageVitalsGiven"); ++ ++ b.Property("Price"); ++ ++ b.Property("ProjectileId") ++ .HasColumnName("Projectile"); ++ ++ b.Property("QuickCast"); ++ ++ b.Property("Rarity"); ++ ++ b.Property("Scaling"); ++ ++ b.Property("ScalingStat"); ++ ++ b.Property("SlotCount"); ++ ++ b.Property("Speed"); ++ ++ b.Property("SpellId") ++ .HasColumnName("Spell"); ++ ++ b.Property("Stackable"); ++ ++ b.Property("StatGrowth"); ++ ++ b.Property("StatsJson") ++ .HasColumnName("StatsGiven"); ++ ++ b.Property("TimeCreated"); ++ ++ b.Property("Tool"); ++ ++ b.Property("TwoHanded"); ++ ++ b.Property("VitalsJson") ++ .HasColumnName("VitalsGiven"); ++ ++ b.Property("VitalsRegenJson") ++ .HasColumnName("VitalsRegen"); ++ ++ b.HasKey("Id"); ++ ++ b.ToTable("Items"); ++ }); ++ ++ modelBuilder.Entity("Intersect.GameObjects.Maps.MapList.MapList", b => ++ { ++ b.Property("Id") ++ .ValueGeneratedOnAdd(); ++ ++ b.Property("JsonData") ++ .HasColumnName("JsonData"); ++ ++ b.HasKey("Id"); ++ ++ b.ToTable("MapFolders"); ++ }); ++ ++ modelBuilder.Entity("Intersect.GameObjects.NpcBase", b => ++ { ++ b.Property("Id") ++ .ValueGeneratedOnAdd(); ++ ++ b.Property("Aggressive"); ++ ++ b.Property("AttackAllies"); ++ ++ b.Property("AttackAnimationId") ++ .HasColumnName("AttackAnimation"); ++ ++ b.Property("AttackOnSightConditionsJson") ++ .HasColumnName("AttackOnSightConditions"); ++ ++ b.Property("AttackSpeedModifier"); ++ ++ b.Property("AttackSpeedValue"); ++ ++ b.Property("CraftsJson") ++ .HasColumnName("Spells"); ++ ++ b.Property("CritChance"); ++ ++ b.Property("CritMultiplier"); ++ ++ b.Property("Damage"); ++ ++ b.Property("DamageType"); ++ ++ b.Property("Experience"); ++ ++ b.Property("FleeHealthPercentage"); ++ ++ b.Property("FocusHighestDamageDealer"); ++ ++ b.Property("Folder"); ++ ++ b.Property("JsonAggroList") ++ .HasColumnName("AggroList"); ++ ++ b.Property("JsonDrops") ++ .HasColumnName("Drops"); ++ ++ b.Property("JsonMaxVital") ++ .HasColumnName("MaxVital"); ++ ++ b.Property("JsonStat") ++ .HasColumnName("Stats"); ++ ++ b.Property("Level"); ++ ++ b.Property("Movement"); ++ ++ b.Property("Name"); ++ ++ b.Property("NpcVsNpcEnabled"); ++ ++ b.Property("OnDeathEventId") ++ .HasColumnName("OnDeathEvent"); ++ ++ b.Property("OnDeathPartyEventId") ++ .HasColumnName("OnDeathPartyEvent"); ++ ++ b.Property("PlayerCanAttackConditionsJson") ++ .HasColumnName("PlayerCanAttackConditions"); ++ ++ b.Property("PlayerFriendConditionsJson") ++ .HasColumnName("PlayerFriendConditions"); ++ ++ b.Property("RegenJson") ++ .HasColumnName("VitalRegen"); ++ ++ b.Property("Scaling"); ++ ++ b.Property("ScalingStat"); ++ ++ b.Property("SightRange"); ++ ++ b.Property("SpawnDuration"); ++ ++ b.Property("SpellFrequency"); ++ ++ b.Property("Sprite"); ++ ++ b.Property("Swarm"); ++ ++ b.Property("TimeCreated"); ++ ++ b.HasKey("Id"); ++ ++ b.ToTable("Npcs"); ++ }); ++ ++ modelBuilder.Entity("Intersect.GameObjects.PlayerVariableBase", b => ++ { ++ b.Property("Id") ++ .ValueGeneratedOnAdd(); ++ ++ b.Property("Folder"); ++ ++ b.Property("Name"); ++ ++ b.Property("TextId"); ++ ++ b.Property("TimeCreated"); ++ ++ b.Property("Type"); ++ ++ b.HasKey("Id"); ++ ++ b.ToTable("PlayerVariables"); ++ }); ++ ++ modelBuilder.Entity("Intersect.GameObjects.ProjectileBase", b => ++ { ++ b.Property("Id") ++ .ValueGeneratedOnAdd(); ++ ++ b.Property("AmmoItemId") ++ .HasColumnName("Ammo"); ++ ++ b.Property("AmmoRequired"); ++ ++ b.Property("AnimationsJson") ++ .HasColumnName("Animations"); ++ ++ b.Property("Delay"); ++ ++ b.Property("Folder"); ++ ++ b.Property("GrappleHook"); ++ ++ b.Property("IgnoreActiveResources"); ++ ++ b.Property("IgnoreExhaustedResources"); ++ ++ b.Property("IgnoreMapBlocks"); ++ ++ b.Property("IgnoreZDimension"); ++ ++ b.Property("Knockback"); ++ ++ b.Property("Name"); ++ ++ b.Property("PierceTarget"); ++ ++ b.Property("Quantity"); ++ ++ b.Property("Range"); ++ ++ b.Property("SpawnsJson") ++ .HasColumnName("SpawnLocations"); ++ ++ b.Property("Speed"); ++ ++ b.Property("SpellId") ++ .HasColumnName("Spell"); ++ ++ b.Property("TimeCreated"); ++ ++ b.HasKey("Id"); ++ ++ b.ToTable("Projectiles"); ++ }); ++ ++ modelBuilder.Entity("Intersect.GameObjects.QuestBase", b => ++ { ++ b.Property("Id") ++ .ValueGeneratedOnAdd(); ++ ++ b.Property("BeforeDescription"); ++ ++ b.Property("EndDescription"); ++ ++ b.Property("EndEventId") ++ .HasColumnName("EndEvent"); ++ ++ b.Property("Folder"); ++ ++ b.Property("InProgressDescription"); ++ ++ b.Property("JsonRequirements") ++ .HasColumnName("Requirements"); ++ ++ b.Property("LogAfterComplete"); ++ ++ b.Property("LogBeforeOffer"); ++ ++ b.Property("Name"); ++ ++ b.Property("Quitable"); ++ ++ b.Property("Repeatable"); ++ ++ b.Property("StartDescription"); ++ ++ b.Property("StartEventId") ++ .HasColumnName("StartEvent"); ++ ++ b.Property("TasksJson") ++ .HasColumnName("Tasks"); ++ ++ b.Property("TimeCreated"); ++ ++ b.HasKey("Id"); ++ ++ b.ToTable("Quests"); ++ }); ++ ++ modelBuilder.Entity("Intersect.GameObjects.ResourceBase", b => ++ { ++ b.Property("Id") ++ .ValueGeneratedOnAdd(); ++ ++ b.Property("AnimationId") ++ .HasColumnName("Animation"); ++ ++ b.Property("EventId") ++ .HasColumnName("Event"); ++ ++ b.Property("Folder"); ++ ++ b.Property("JsonDrops") ++ .HasColumnName("Drops"); ++ ++ b.Property("JsonHarvestingRequirements") ++ .HasColumnName("HarvestingRequirements"); ++ ++ b.Property("MaxHp"); ++ ++ b.Property("MinHp"); ++ ++ b.Property("Name"); ++ ++ b.Property("SpawnDuration"); ++ ++ b.Property("TimeCreated"); ++ ++ b.Property("Tool"); ++ ++ b.Property("VitalRegen"); ++ ++ b.Property("WalkableAfter"); ++ ++ b.Property("WalkableBefore"); ++ ++ b.HasKey("Id"); ++ ++ b.ToTable("Resources"); ++ }); ++ ++ modelBuilder.Entity("Intersect.GameObjects.ServerVariableBase", b => ++ { ++ b.Property("Id") ++ .ValueGeneratedOnAdd(); ++ ++ b.Property("Folder"); ++ ++ b.Property("Json") ++ .HasColumnName("Value"); ++ ++ b.Property("Name"); ++ ++ b.Property("TextId"); ++ ++ b.Property("TimeCreated"); ++ ++ b.Property("Type"); ++ ++ b.HasKey("Id"); ++ ++ b.ToTable("ServerVariables"); ++ }); ++ ++ modelBuilder.Entity("Intersect.GameObjects.ShopBase", b => ++ { ++ b.Property("Id") ++ .ValueGeneratedOnAdd(); ++ ++ b.Property("BuyingWhitelist"); ++ ++ b.Property("DefaultCurrencyId") ++ .HasColumnName("DefaultCurrency"); ++ ++ b.Property("Folder"); ++ ++ b.Property("JsonBuyingItems") ++ .HasColumnName("BuyingItems"); ++ ++ b.Property("JsonSellingItems") ++ .HasColumnName("SellingItems"); ++ ++ b.Property("Name"); ++ ++ b.Property("TimeCreated"); ++ ++ b.HasKey("Id"); ++ ++ b.ToTable("Shops"); ++ }); ++ ++ modelBuilder.Entity("Intersect.GameObjects.SpellBase", b => ++ { ++ b.Property("Id") ++ .ValueGeneratedOnAdd(); ++ ++ b.Property("Bound"); ++ ++ b.Property("CastAnimationId") ++ .HasColumnName("CastAnimation"); ++ ++ b.Property("CastDuration"); ++ ++ b.Property("CooldownDuration"); ++ ++ b.Property("Description"); ++ ++ b.Property("EventId") ++ .HasColumnName("Event"); ++ ++ b.Property("Folder"); ++ ++ b.Property("HitAnimationId") ++ .HasColumnName("HitAnimation"); ++ ++ b.Property("Icon"); ++ ++ b.Property("JsonCastRequirements") ++ .HasColumnName("CastRequirements"); ++ ++ b.Property("Name"); ++ ++ b.Property("SpellType"); ++ ++ b.Property("TimeCreated"); ++ ++ b.Property("VitalCostJson") ++ .HasColumnName("VitalCost"); ++ ++ b.HasKey("Id"); ++ ++ b.ToTable("Spells"); ++ }); ++ ++ modelBuilder.Entity("Intersect.GameObjects.TilesetBase", b => ++ { ++ b.Property("Id") ++ .ValueGeneratedOnAdd(); ++ ++ b.Property("Name"); ++ ++ b.Property("TimeCreated"); ++ ++ b.HasKey("Id"); ++ ++ b.ToTable("Tilesets"); ++ }); ++ ++ modelBuilder.Entity("Intersect.GameObjects.TimeBase", b => ++ { ++ b.Property("Id") ++ .ValueGeneratedOnAdd(); ++ ++ b.Property("DaylightHuesJson") ++ .HasColumnName("DaylightHues"); ++ ++ b.Property("RangeInterval"); ++ ++ b.Property("Rate"); ++ ++ b.Property("SyncTime"); ++ ++ b.HasKey("Id"); ++ ++ b.ToTable("Time"); ++ }); ++ ++ modelBuilder.Entity("Intersect.Server.Maps.MapInstance", b => ++ { ++ b.Property("Id") ++ .ValueGeneratedOnAdd(); ++ ++ b.Property("AHue"); ++ ++ b.Property("AttributeData") ++ .HasColumnName("Attributes"); ++ ++ b.Property("BHue"); ++ ++ b.Property("Brightness"); ++ ++ b.Property("Down"); ++ ++ b.Property("EventIdsJson") ++ .HasColumnName("Events"); ++ ++ b.Property("Fog"); ++ ++ b.Property("FogTransparency"); ++ ++ b.Property("FogXSpeed"); ++ ++ b.Property("FogYSpeed"); ++ ++ b.Property("GHue"); ++ ++ b.Property("IsIndoors"); ++ ++ b.Property("Left"); ++ ++ b.Property("LightsJson") ++ .HasColumnName("Lights"); ++ ++ b.Property("Music"); ++ ++ b.Property("Name"); ++ ++ b.Property("NpcSpawnsJson") ++ .HasColumnName("NpcSpawns"); ++ ++ b.Property("OverlayGraphic"); ++ ++ b.Property("Panorama"); ++ ++ b.Property("PlayerLightColorJson") ++ .HasColumnName("PlayerLightColor"); ++ ++ b.Property("PlayerLightExpand"); ++ ++ b.Property("PlayerLightIntensity"); ++ ++ b.Property("PlayerLightSize"); ++ ++ b.Property("RHue"); ++ ++ b.Property("Revision"); ++ ++ b.Property("Right"); ++ ++ b.Property("Sound"); ++ ++ b.Property("TileData"); ++ ++ b.Property("TimeCreated"); ++ ++ b.Property("Up"); ++ ++ b.Property("WeatherAnimationId") ++ .HasColumnName("WeatherAnimation"); ++ ++ b.Property("WeatherIntensity"); ++ ++ b.Property("WeatherXSpeed"); ++ ++ b.Property("WeatherYSpeed"); ++ ++ b.Property("ZoneType"); ++ ++ b.HasKey("Id"); ++ ++ b.ToTable("Maps"); ++ }); ++ ++ modelBuilder.Entity("Intersect.GameObjects.AnimationBase", b => ++ { ++ b.OwnsOne("Intersect.GameObjects.AnimationLayer", "Lower", b1 => ++ { ++ b1.Property("AnimationBaseId"); ++ ++ b1.Property("AlternateRenderLayer"); ++ ++ b1.Property("DisableRotations"); ++ ++ b1.Property("FrameCount"); ++ ++ b1.Property("FrameSpeed"); ++ ++ b1.Property("Light"); ++ ++ b1.Property("LoopCount"); ++ ++ b1.Property("Sprite"); ++ ++ b1.Property("XFrames"); ++ ++ b1.Property("YFrames"); ++ ++ b1.ToTable("Animations"); ++ ++ b1.HasOne("Intersect.GameObjects.AnimationBase") ++ .WithOne("Lower") ++ .HasForeignKey("Intersect.GameObjects.AnimationLayer", "AnimationBaseId") ++ .OnDelete(DeleteBehavior.Cascade); ++ }); ++ ++ b.OwnsOne("Intersect.GameObjects.AnimationLayer", "Upper", b1 => ++ { ++ b1.Property("AnimationBaseId"); ++ ++ b1.Property("AlternateRenderLayer"); ++ ++ b1.Property("DisableRotations"); ++ ++ b1.Property("FrameCount"); ++ ++ b1.Property("FrameSpeed"); ++ ++ b1.Property("Light"); ++ ++ b1.Property("LoopCount"); ++ ++ b1.Property("Sprite"); ++ ++ b1.Property("XFrames"); ++ ++ b1.Property("YFrames"); ++ ++ b1.ToTable("Animations"); ++ ++ b1.HasOne("Intersect.GameObjects.AnimationBase") ++ .WithOne("Upper") ++ .HasForeignKey("Intersect.GameObjects.AnimationLayer", "AnimationBaseId") ++ .OnDelete(DeleteBehavior.Cascade); ++ }); ++ }); ++ ++ modelBuilder.Entity("Intersect.GameObjects.ItemBase", b => ++ { ++ b.OwnsOne("Intersect.GameObjects.ConsumableData", "Consumable", b1 => ++ { ++ b1.Property("ItemBaseId"); ++ ++ b1.Property("Percentage"); ++ ++ b1.Property("Type"); ++ ++ b1.Property("Value"); ++ ++ b1.ToTable("Items"); ++ ++ b1.HasOne("Intersect.GameObjects.ItemBase") ++ .WithOne("Consumable") ++ .HasForeignKey("Intersect.GameObjects.ConsumableData", "ItemBaseId") ++ .OnDelete(DeleteBehavior.Cascade); ++ }); ++ ++ b.OwnsOne("Intersect.GameObjects.EffectData", "Effect", b1 => ++ { ++ b1.Property("ItemBaseId"); ++ ++ b1.Property("Percentage"); ++ ++ b1.Property("Type"); ++ ++ b1.ToTable("Items"); ++ ++ b1.HasOne("Intersect.GameObjects.ItemBase") ++ .WithOne("Effect") ++ .HasForeignKey("Intersect.GameObjects.EffectData", "ItemBaseId") ++ .OnDelete(DeleteBehavior.Cascade); ++ }); ++ }); ++ ++ modelBuilder.Entity("Intersect.GameObjects.ResourceBase", b => ++ { ++ b.OwnsOne("Intersect.GameObjects.ResourceState", "Exhausted", b1 => ++ { ++ b1.Property("ResourceBaseId"); ++ ++ b1.Property("Graphic"); ++ ++ b1.Property("GraphicFromTileset"); ++ ++ b1.Property("Height"); ++ ++ b1.Property("RenderBelowEntities"); ++ ++ b1.Property("Width"); ++ ++ b1.Property("X"); ++ ++ b1.Property("Y"); ++ ++ b1.ToTable("Resources"); ++ ++ b1.HasOne("Intersect.GameObjects.ResourceBase") ++ .WithOne("Exhausted") ++ .HasForeignKey("Intersect.GameObjects.ResourceState", "ResourceBaseId") ++ .OnDelete(DeleteBehavior.Cascade); ++ }); ++ ++ b.OwnsOne("Intersect.GameObjects.ResourceState", "Initial", b1 => ++ { ++ b1.Property("ResourceBaseId"); ++ ++ b1.Property("Graphic"); ++ ++ b1.Property("GraphicFromTileset"); ++ ++ b1.Property("Height"); ++ ++ b1.Property("RenderBelowEntities"); ++ ++ b1.Property("Width"); ++ ++ b1.Property("X"); ++ ++ b1.Property("Y"); ++ ++ b1.ToTable("Resources"); ++ ++ b1.HasOne("Intersect.GameObjects.ResourceBase") ++ .WithOne("Initial") ++ .HasForeignKey("Intersect.GameObjects.ResourceState", "ResourceBaseId") ++ .OnDelete(DeleteBehavior.Cascade); ++ }); ++ }); ++ ++ modelBuilder.Entity("Intersect.GameObjects.SpellBase", b => ++ { ++ b.OwnsOne("Intersect.GameObjects.SpellCombatData", "Combat", b1 => ++ { ++ b1.Property("SpellBaseId"); ++ ++ b1.Property("CastRange"); ++ ++ b1.Property("CritChance"); ++ ++ b1.Property("CritMultiplier"); ++ ++ b1.Property("DamageType"); ++ ++ b1.Property("Duration"); ++ ++ b1.Property("Effect"); ++ ++ b1.Property("Friendly"); ++ ++ b1.Property("HitRadius"); ++ ++ b1.Property("HoTDoT"); ++ ++ b1.Property("HotDotInterval"); ++ ++ b1.Property("OnHitDuration") ++ .HasColumnName("OnHit"); ++ ++ b1.Property("PercentageStatDiffJson") ++ .HasColumnName("PercentageStatDiff"); ++ ++ b1.Property("ProjectileId") ++ .HasColumnName("Projectile"); ++ ++ b1.Property("Scaling"); ++ ++ b1.Property("ScalingStat"); ++ ++ b1.Property("StatDiffJson") ++ .HasColumnName("StatDiff"); ++ ++ b1.Property("TargetType"); ++ ++ b1.Property("TransformSprite"); ++ ++ b1.Property("TrapDuration") ++ .HasColumnName("Trap"); ++ ++ b1.Property("VitalDiffJson") ++ .HasColumnName("VitalDiff"); ++ ++ b1.ToTable("Spells"); ++ ++ b1.HasOne("Intersect.GameObjects.SpellBase") ++ .WithOne("Combat") ++ .HasForeignKey("Intersect.GameObjects.SpellCombatData", "SpellBaseId") ++ .OnDelete(DeleteBehavior.Cascade); ++ }); ++ ++ b.OwnsOne("Intersect.GameObjects.SpellDashOpts", "Dash", b1 => ++ { ++ b1.Property("SpellBaseId"); ++ ++ b1.Property("IgnoreActiveResources"); ++ ++ b1.Property("IgnoreInactiveResources"); ++ ++ b1.Property("IgnoreMapBlocks"); ++ ++ b1.Property("IgnoreZDimensionAttributes"); ++ ++ b1.ToTable("Spells"); ++ ++ b1.HasOne("Intersect.GameObjects.SpellBase") ++ .WithOne("Dash") ++ .HasForeignKey("Intersect.GameObjects.SpellDashOpts", "SpellBaseId") ++ .OnDelete(DeleteBehavior.Cascade); ++ }); ++ ++ b.OwnsOne("Intersect.GameObjects.SpellWarpData", "Warp", b1 => ++ { ++ b1.Property("SpellBaseId"); ++ ++ b1.Property("Dir"); ++ ++ b1.Property("MapId"); ++ ++ b1.Property("X"); ++ ++ b1.Property("Y"); ++ ++ b1.ToTable("Spells"); ++ ++ b1.HasOne("Intersect.GameObjects.SpellBase") ++ .WithOne("Warp") ++ .HasForeignKey("Intersect.GameObjects.SpellWarpData", "SpellBaseId") ++ .OnDelete(DeleteBehavior.Cascade); ++ }); ++ }); ++#pragma warning restore 612, 618 ++ } ++ } ++} +diff --git a/Intersect.Server/Migrations/Game/20200402142818_PlayerHair_ClassEdits.cs b/Intersect.Server/Migrations/Game/20200402142818_PlayerHair_ClassEdits.cs +new file mode 100644 +index 00000000..169282c2 +--- /dev/null ++++ b/Intersect.Server/Migrations/Game/20200402142818_PlayerHair_ClassEdits.cs +@@ -0,0 +1,22 @@ ++using Microsoft.EntityFrameworkCore.Migrations; ++ ++namespace Intersect.Server.Migrations.Game ++{ ++ public partial class PlayerHair_ClassEdits : Migration ++ { ++ protected override void Up(MigrationBuilder migrationBuilder) ++ { ++ migrationBuilder.AddColumn( ++ name: "CustomSpriteLayers", ++ table: "Classes", ++ nullable: true); ++ } ++ ++ protected override void Down(MigrationBuilder migrationBuilder) ++ { ++ migrationBuilder.DropColumn( ++ name: "CustomSpriteLayers", ++ table: "Classes"); ++ } ++ } ++} +diff --git a/Intersect.Server/Migrations/Game/GameContextModelSnapshot.cs b/Intersect.Server/Migrations/Game/GameContextModelSnapshot.cs +index fbfd65a8..111b315d 100644 +--- a/Intersect.Server/Migrations/Game/GameContextModelSnapshot.cs ++++ b/Intersect.Server/Migrations/Game/GameContextModelSnapshot.cs +@@ -75,6 +75,9 @@ protected override void BuildModel(ModelBuilder modelBuilder) + b.Property("JsonBaseVitals") + .HasColumnName("BaseVitals"); + ++ b.Property("JsonCustomSpriteLayers") ++ .HasColumnName("CustomSpriteLayers"); ++ + b.Property("JsonItems") + .HasColumnName("Items"); + +diff --git a/Intersect.Server/Migrations/PlayerContextModelSnapshot.cs b/Intersect.Server/Migrations/PlayerContextModelSnapshot.cs +index 80857543..4999e9ac 100644 +--- a/Intersect.Server/Migrations/PlayerContextModelSnapshot.cs ++++ b/Intersect.Server/Migrations/PlayerContextModelSnapshot.cs +@@ -329,6 +329,9 @@ protected override void BuildModel(ModelBuilder modelBuilder) + + b.Property("ClassId"); + ++ b.Property("CustomSpriteLayersJson") ++ .HasColumnName("CustomSpriteLayers"); ++ + b.Property("Dir"); + + b.Property("EquipmentJson") +diff --git a/Intersect.Server/Networking/PacketHandler.cs b/Intersect.Server/Networking/PacketHandler.cs +index 5814f5e7..94b6e6d5 100644 +--- a/Intersect.Server/Networking/PacketHandler.cs ++++ b/Intersect.Server/Networking/PacketHandler.cs +@@ -1106,6 +1106,12 @@ public void HandlePacket(Client client, Player player, CreateCharacterPacket pac + newChar.Gender = classBase.Sprites[spriteIndex].Gender; + } + ++ // Get our custom layers from the packet. ++ for (var i = 0; i < (int)Enums.CustomSpriteLayers.CustomCount; i++) ++ { ++ newChar.CustomSpriteLayers[i] = packet.CustomSpriteLayers[i] != -1 ? classBase.CustomSpriteLayers[(Enums.CustomSpriteLayers)i][packet.CustomSpriteLayers[i]].Texture : String.Empty; ++ } ++ + client.LoadCharacter(newChar); + + newChar.SetVital(Vitals.Health, classBase.BaseVital[(int) Vitals.Health]); +diff --git a/Intersect.Server/Networking/PacketSender.cs b/Intersect.Server/Networking/PacketSender.cs +index 9c1f7b58..86c620be 100644 +--- a/Intersect.Server/Networking/PacketSender.cs ++++ b/Intersect.Server/Networking/PacketSender.cs +@@ -339,9 +339,11 @@ public static void SendEntityDataTo(Player player, Entity en) + } + + //If a player, send equipment to all (for paperdolls) ++ //Also send Custom Sprite Layers + if (en.GetType() == typeof(Player)) + { + SendPlayerEquipmentTo(player, (Player) en); ++ SendCustomSpriteLayersTo(player, (Player) en); + } + + if (en.GetType() == typeof(Npc)) +@@ -371,6 +373,7 @@ public static void SendMapEntitiesTo(Player player, List entities) + player.SendPacket(new MapEntitiesPacket(enPackets.ToArray())); + + SendMapEntityEquipmentTo(player, sendEntities); //Send the equipment of each player ++ SendMapCustomSpriteLayersTo(player, sendEntities); //Send the custom sprite layers of each player. + + for (var i = 0; i < sendEntities.Count; i++) + { +@@ -396,6 +399,21 @@ public static void SendMapEntityEquipmentTo(Player player, List entities + } + } + ++ public static void SendMapCustomSpriteLayersTo(Player player, List entities) ++ { ++ for (var i = 0; i < entities.Count; i++) ++ { ++ if (entities[i] != null && entities[i] != player) ++ { ++ //If a player, send equipment to all (for paperdolls) ++ if (entities[i].GetType() == typeof(Player) && player != entities[i]) ++ { ++ SendCustomSpriteLayersTo(player, (Player)entities[i]); ++ } ++ } ++ } ++ } ++ + //EntityDataPacket + public static void SendEntityDataToProximity(Entity en, Player except = null) + { +@@ -422,6 +440,7 @@ public static void SendEntityDataToProximity(Entity en, Player except = null) + if (en.GetType() == typeof(Player)) + { + SendPlayerEquipmentToProximity((Player) en); ++ SendCustomSpriteLayersToProximity((Player) en); + } + + if (en.GetType() == typeof(Npc)) +@@ -934,6 +953,22 @@ public static void SendPlayerSpellUpdate(Player player, int slot) + player.SendPacket(new SpellUpdatePacket(slot, player.Spells[slot].SpellId)); + } + ++ //CustomSpriteLayerPacket ++ public static CustomSpriteLayersPacket GenerateCustomSpriteLayersPacket(Player en) ++ { ++ return new CustomSpriteLayersPacket(en.Id, en.CustomSpriteLayers); ++ } ++ ++ public static void SendCustomSpriteLayersTo(Player forPlayer, Player en) ++ { ++ forPlayer.SendPacket(GenerateCustomSpriteLayersPacket(en)); ++ } ++ ++ public static void SendCustomSpriteLayersToProximity(Player en) ++ { ++ SendDataToProximity(en.MapId, GenerateCustomSpriteLayersPacket(en)); ++ } ++ + //EquipmentPacket + public static EquipmentPacket GenerateEquipmentPacket(Player forPlayer, Player en) + { +@@ -1045,7 +1080,7 @@ public static void SendPlayerCharacters(Client client) + characters.Add( + new CharacterPacket( + character.Id, character.Name, character.Sprite, character.Face, character.Level, +- ClassBase.GetName(character.ClassId), equipment ++ ClassBase.GetName(character.ClassId), equipment, character.CustomSpriteLayers + ) + ); + }