public ItemSettingComponent(PPDDevice device, PPDFramework.Resource.ResourceManager resourceManager, ISound sound) : base(device) { this.resourceManager = resourceManager; this.sound = sound; this.AddChild(back = new PictureObject(device, resourceManager, Utility.Path.Combine("dialog_back.png"))); this.AddChild(new RectangleComponent(device, resourceManager, PPDColors.Black) { RectangleHeight = 450, RectangleWidth = 800, Alpha = 0.75f }); back.AddChild(new TextureString(device, Utility.Language["ManualUse"], 16, true, PPDColors.White) { Position = new Vector2(200, 80) }); back.AddChild(new TextureString(device, Utility.Language["AutoUse"], 16, true, PPDColors.White) { Position = new Vector2(600, 80) }); back.AddChild(new LineRectangleComponent(device, resourceManager, PPDColors.White) { Position = new SharpDX.Vector2(50, 100), RectangleHeight = 310, RectangleWidth = 300 }); back.AddChild(new LineRectangleComponent(device, resourceManager, PPDColors.White) { Position = new SharpDX.Vector2(450, 100), RectangleHeight = 310, RectangleWidth = 300 }); back.AddChild(manualUseSprite = new SpriteObject(device) { Position = new SharpDX.Vector2(60, 105) }); back.AddChild(autoUseSprite = new SpriteObject(device) { Position = new SharpDX.Vector2(460, 105) }); back.AddChild(new TextureString(device, Utility.Language["ItemUseSetting"], 30, PPDColors.White) { Position = new Vector2(35, 30) }); Inputed += ItemSettingComponent_Inputed; GotFocused += ItemSettingComponent_GotFocused; for (int i = 0; i < ItemUseManager.Manager.AutoUseItemTypes.Length; i++) { autoUseSprite.AddChild(new UseItemComponent(device, resourceManager, ItemUseManager.Manager.AutoUseItemTypes[i]) { Position = new SharpDX.Vector2(0, i * 20) }); } var itemTypeArray = (ItemType[])Enum.GetValues(typeof(ItemType)); int addedCount = 0; for (int i = 1; i < itemTypeArray.Length; i++) { if (Array.IndexOf(ItemUseManager.Manager.AutoUseItemTypes, itemTypeArray[i]) < 0) { manualUseSprite.AddChild(new UseItemComponent(device, resourceManager, itemTypeArray[i]) { Position = new SharpDX.Vector2(0, addedCount * 20) }); addedCount++; } } if (manualUseSprite.ChildrenCount > 0) { current = manualUseSprite[0] as UseItemComponent; } else { current = autoUseSprite[0] as UseItemComponent; } current.Selected = true; }
void ItemSettingComponent_Inputed(IFocusable sender, InputEventArgs args) { if (args.InputInfo.IsPressed(ButtonType.Cross)) { sound.Play(PPDSetting.DefaultSounds[2], -1000); FocusManager.RemoveFocus(); } else if (args.InputInfo.IsPressed(ButtonType.Down)) { current.Selected = false; SpriteObject targetSprite = CurrentIsInManual ? manualUseSprite : autoUseSprite; var index = targetSprite.IndexOf(current); index++; if (index >= targetSprite.ChildrenCount) { index = 0; } current = targetSprite[index] as UseItemComponent; current.Selected = true; sound.Play(PPDSetting.DefaultSounds[0], -1000); } else if (args.InputInfo.IsPressed(ButtonType.Up)) { current.Selected = false; SpriteObject targetSprite = CurrentIsInManual ? manualUseSprite : autoUseSprite; var index = targetSprite.IndexOf(current); index--; if (index < 0) { index = targetSprite.ChildrenCount - 1; } current = targetSprite[index] as UseItemComponent; current.Selected = true; sound.Play(PPDSetting.DefaultSounds[0], -1000); } else if (args.InputInfo.IsPressed(ButtonType.Left)) { if (!CurrentIsInManual && manualUseSprite.ChildrenCount > 0) { current.Selected = false; var index = autoUseSprite.IndexOf(current); if (index >= manualUseSprite.ChildrenCount) { index = manualUseSprite.ChildrenCount - 1; } current = manualUseSprite[index] as UseItemComponent; current.Selected = true; sound.Play(PPDSetting.DefaultSounds[0], -1000); } } else if (args.InputInfo.IsPressed(ButtonType.Right)) { if (CurrentIsInManual && autoUseSprite.ChildrenCount > 0) { current.Selected = false; var index = manualUseSprite.IndexOf(current); if (index >= autoUseSprite.ChildrenCount) { index = autoUseSprite.ChildrenCount - 1; } current = autoUseSprite[index] as UseItemComponent; current.Selected = true; sound.Play(PPDSetting.DefaultSounds[0], -1000); } } else if (args.InputInfo.IsPressed(ButtonType.Circle) || args.InputInfo.IsPressed(ButtonType.Triangle) || args.InputInfo.IsPressed(ButtonType.Square)) { bool isInManual = CurrentIsInManual; current.Parent.RemoveChild(current); if (isInManual) { autoUseSprite.AddChild(current); } else { manualUseSprite.AddChild(current); } AdjustPositions(); ItemUseManager.Manager.ToggleAutoUse(current.ItemType); sound.Play(PPDSetting.DefaultSounds[3], -1000); } }