public FormScreen(ScreenManager manager, Form baseForm, World world) : base(manager) { OpeningTransition = new NoneTransition(Transition.Types.Opening); ClosingTransition = new NoneTransition(Transition.Types.Closing); World = world; Form = baseForm; IsSubmitted = false; }
private void ReconstructLocTileDataPanel() { locTileDataSubmitButton = null; locTileRemoveButton = null; locTileDataPanel.RemoveAllControl(); if (selectedLocTile != null && selectedLocTile is IEditable) { IEditable ent = (IEditable)selectedLocTile; locTileDataForm = ent.GetEditingForm(); Sprite buttonSprite = World.Resources.GetSprite("button_idle"); Sprite[] buttonSpriteTab = new Sprite[] { buttonSprite, World.Resources.GetSprite("button_over"), World.Resources.GetSprite("button_pressed") }; Rectangle nextRectangle = new Rectangle(120, locTileAddButton.Bound.Bottom + 5, locTileDataPanel.Bound.Width - 120 - 5, 25); foreach (KeyValuePair<string, object> pair in locTileDataForm.Datas) { locTileDataPanel.AddControl(pair.Key + "T", new TextBlock(this, new Vector2(0, nextRectangle.Y), pair.Key)); if (pair.Value is string || pair.Value is int || pair.Value is float) { locTileDataPanel.AddControl(pair.Key, new TextBox(this, nextRectangle, buttonSpriteTab)); ((TextBox)locTileDataPanel.SubControls[pair.Key]).Text = pair.Value.ToString(); } else if (pair.Value is bool) { locTileDataPanel.AddControl(pair.Key, new ToggleButton(this, nextRectangle, buttonSpriteTab)); ((ToggleButton)locTileDataPanel.SubControls[pair.Key]).SetState((bool)pair.Value); } else if (pair.Value is Point) { Rectangle rect = nextRectangle; rect.Width = nextRectangle.Width / 2 - 5; locTileDataPanel.AddControl(pair.Key, new TextBox(this, rect, buttonSpriteTab)); ((TextBox)locTileDataPanel.SubControls[pair.Key]).Text = ((Point)(pair.Value)).X.ToString(); rect.X += rect.Width + 10; locTileDataPanel.AddControl(pair.Key + "_Y", new TextBox(this, rect, buttonSpriteTab)); ((TextBox)locTileDataPanel.SubControls[pair.Key + "_Y"]).Text = ((Point)(pair.Value)).Y.ToString(); } else if (pair.Value is Enum) { Type enumType = pair.Value.GetType(); ListButton control = new ListButton(this, nextRectangle, buttonSprite, new List<string>(Enum.GetNames(enumType))); control.SelectValue(Enum.GetName(enumType, pair.Value)); locTileDataPanel.AddControl(pair.Key, control); } else if (pair.Value is Controller) { ListButton control = new ListButton(this, nextRectangle, buttonSprite, new List<string>(Entity.Controllers.GetAll())); control.SelectValue(Entity.Controllers.GetName((Controller)pair.Value)); locTileDataPanel.AddControl(pair.Key, control); } else if (pair.Value is Sprite) { Rectangle rect = nextRectangle; rect.Right -= 30; ListButton control = new ListButton(this, rect, buttonSprite, new List<string>(World.Resources.Sprites.Keys)); control.SelectValue(World.Resources.GetName((Sprite)pair.Value)); locTileDataPanel.AddControl(pair.Key, control); rect.Left = rect.Right; rect.Right += 30; rect.Left += 10; Button button = new Button(this, rect, buttonSpriteTab); button.Text = "..."; locTileDataPanel.AddControl("addSprite_" + pair.Key, button); } else if (pair.Value is Animation) { Rectangle rect = nextRectangle; rect.Right -= 30; ListButton control = new ListButton(this, rect, buttonSprite, new List<string>(World.Resources.Animations.Keys)); control.SelectValue(World.Resources.GetName((Animation)pair.Value)); locTileDataPanel.AddControl(pair.Key, control); rect.Left = rect.Right; rect.Right += 30; rect.Left += 10; Button button = new Button(this, rect, buttonSpriteTab); button.Text = "..."; locTileDataPanel.AddControl("addAnimation_" + pair.Key, button); } nextRectangle.Y += 30; } nextRectangle.Width = 65; locTileDataSubmitButton = new Button(this, nextRectangle, buttonSpriteTab); locTileDataSubmitButton.Text = "Submit"; locTileDataPanel.AddControl("submitButton", locTileDataSubmitButton); nextRectangle.X = 0; nextRectangle.Width = 75; locTileRemoveButton = new Button(this, nextRectangle, buttonSpriteTab) { Text = "Remove" }; locTileDataPanel.AddControl("locTileRemoveButton", locTileRemoveButton); } }