using System; using System.Collections.Generic; using System.Text; using System.Drawing; using Rmake.Rendering.ComponentLayer; using Rmake.Model.Engine; using Rmake.API.Interfaces.Model; namespace Rmake.GameRendering { public class MenuWindowView : GameRenderingView { private PlayingGame game = null; private GameRenderingFactory factory = null; private WindowViewWrapper windowView = null; private TextWindowView textWindowView = null; private TextWindowView goldTextWindowView = null; private SelectWindowView mainSelectView = null; private SelectWindowView subSelectView = null; private CharacterListView characterListView = null; private CharacterStatusView charaterStatusView = null; public SelectWindowView MainSelectWindow { get { return mainSelectView; } } public SelectWindowView SubSelectWindow { get { return subSelectView; } set { if (value != null) { subSelectView = value; LayerIndex = LayerIndex; } } } public CharacterListView CharacterList { get { return characterListView; } } public CharacterStatusView CharacterStatus { get { return charaterStatusView; } } public TextWindowView TextWindow { get { return textWindowView; } } public TextWindowView GoldWindow { get { return goldTextWindowView; } } public const int Menu = 0; public MenuWindowView(GameRenderingFactory factory, PlayingGame game) { this.factory = factory; this.game = game; // 外枠の初期化 this.windowView = factory.CreateWindowViewWrapper( game.EditingGame.Materials.GetSystemImage(), false); this.windowView.Rect = new Rectangle(0, 0, 640, 480); // textWindowView の初期化 this.textWindowView = factory.CreateTextWindowView( game.EditingGame.Materials.GetSystemImage().GetFullName(), false); this.textWindowView.Rect = new Rectangle(176, 0, 464, 80); this.textWindowView.Visible = true; // mainSelectView の初期化 this.mainSelectView = factory.CreateSelectWindowView(game.EditingGame.Materials.GetSystemImage(), true, 6); String[] mainMenuItems = new String[] { "アイテム", "魔法", "ステータス", "セーブ", "ロード", "終了"}; for (int i = 0; i < mainMenuItems.Length; i++) { this.mainSelectView.SetOption(i, mainMenuItems[i], Int32.Parse("FFFFFFFF", System.Globalization.NumberStyles.HexNumber)); } this.mainSelectView.Rect = new Rectangle(0, 0, 192, 160); // subSelectView this.subSelectView = factory.CreateSelectWindowView(game.EditingGame.Materials.GetSystemImage(), true, 2); this.subSelectView.Rect = new Rectangle(0, 144, 192, 288); // goldTextWindowView の初期化 this.goldTextWindowView = factory.CreateTextWindowView( game.EditingGame.Materials.GetSystemImage().GetFullName(), false); this.goldTextWindowView.Rect = new Rectangle(0, 416, 192, 64); this.goldTextWindowView.DrawText("G: " + game.CurrentParty.Money, Int32.Parse("FFFFFFFF", System.Globalization.NumberStyles.HexNumber)); // characterListView の初期化 this.characterListView = factory.CreateCharacterListView(game); } public void ShowCharacterStatus(ICharacter character) { if (this.charaterStatusView == null) { this.charaterStatusView = factory.CreateCharacterStatusView(game, character); } this.charaterStatusView.Visible = true; } public void CloseCharacterStatus() { if (this.charaterStatusView != null) { GameRenderingInitializer.GetInstance().Manager.DeleteRenderingView(this.charaterStatusView); this.charaterStatusView = null; } } internal override void AddLayer(LayerView layer) { /* layer.AddGameRenderingView(windowView); layer.AddGameRenderingView(textWindowView); layer.AddGameRenderingView(mainSelectView); layer.AddGameRenderingView(subSelectView); layer.AddGameRenderingView(goldTextWindowView); */ //layer.AddGameRenderingView(characterListView); base.AddLayer(layer); } internal override void RemoveLayer(LayerView layer) { base.RemoveLayer(layer); } internal override void Render(GameRenderingManager manager) { //this.LayerIndex = this.LayerIndex; base.Render(manager); mainSelectView.Render(manager); } /* internal override void Render(GameRenderingManager manager) { } * */ internal override void SetVisible(bool visible) { windowView.Visible = visible; textWindowView.Visible = false; mainSelectView.Visible = visible; subSelectView.Visible = visible; goldTextWindowView.Visible = visible; characterListView.Visible = visible; if (charaterStatusView != null) { charaterStatusView.Visible = visible; } } internal override int LayerIndex { get { return windowView.LayerIndex; } set { windowView.LayerIndex = value; textWindowView.LayerIndex = value + 2; mainSelectView.LayerIndex = value + 2; subSelectView.LayerIndex = value + 2; goldTextWindowView.LayerIndex = value + 2; characterListView.LayerIndex = value + 2; if (charaterStatusView != null) { charaterStatusView.LayerIndex = value + 3; } } } internal override void Finalize(GameRenderingManager manager) { manager.DeleteRenderingView(windowView); manager.DeleteRenderingView(textWindowView); manager.DeleteRenderingView(mainSelectView); manager.DeleteRenderingView(subSelectView); manager.DeleteRenderingView(goldTextWindowView); manager.DeleteRenderingView(characterListView); if (charaterStatusView != null) { manager.DeleteRenderingView(charaterStatusView); } } } }