} // end of GetHelpDescription() /// <summary> /// Activates the AddItem help card. /// </summary> /// <param name="parent">Parent pie selector.</param> /// <param name="typeName">This is the string that identifies the type of the object we're getting help for. This is used to get the correct help data from the Help class.</param> /// <param name="objectName">This the displayed name of the object/actor. This comes from the Strings class and may be localized.</param> public void Activate(PieSelector parent, string typeName, string objectName) { ToolTipManager.Clear(); if (typeName == null || objectName == null) { return; } this.parent = parent; if (state != States.Active) { // Ensure we have valid help before activating. shared.actorHelp = Help.GetActorHelp(typeName); if (shared.actorHelp == null || shared.actorHelp.upid == null) { return; } // Do stack handling here. If we do it in the update object we have no // clue which order things get pushed and popped and madness ensues. CommandStack.Push(commandMap); state = States.Active; shared.curActorName = objectName; if (shared.actorHelp.description != null) { shared.descBlob.RawText = shared.actorHelp.description.Trim(); } shared.SetUpGrid(); if (shared.examplesGrid != null) { shared.examplesGrid.Active = true; } // Always start the description at the beginning. shared.topLine = 0; shared.descOffset = 0; // Get the current scene thumbnail. shared.thumbnail = InGame.inGame.SmallThumbNail; // Tell InGame we're using the thumbnail so no need to do full render. InGame.inGame.RenderWorldAsThumbnail = true; HelpOverlay.Push(@"HelpCardAddItem"); timerInstrument = Instrumentation.StartTimer(Instrumentation.TimerId.AddItemHelpCards); } } // end of Activate
public void AddUISelector(List <GameObject> childList, out UiSelector uiSelector, bool ignorePaths) { // // Set up the pie menu for choosing new objects to add to the scene. // uiSelector = new PieSelector(null, "Sim.EditObjects.PickThing"); // Size used for all items. Vector2 size = new Vector2(1.0f, 1.0f); // Boku var boku = ActorManager.GetActor("BokuBot"); uiSelector.AddItem(new ActorMenuItem(uiSelector, boku.LocalizedName, boku.MenuTextureFile, boku, size, radialOffset)); // Rover var rover = ActorManager.GetActor("Rover"); uiSelector.AddItem(new ActorMenuItem(uiSelector, rover.LocalizedName, rover.MenuTextureFile, rover, size, radialOffset)); // Fruit var fruit = ActorManager.GetActor("Fruit"); uiSelector.AddItem(new ActorMenuItem(uiSelector, fruit.LocalizedName, fruit.MenuTextureFile, fruit, size, radialOffset)); #region BotGroup1 { RenderObject group = new ActorMenuItem(uiSelector, null, @"Textures\Tiles\group.botsI", null, size, radialOffset); UiSelector selectorGroup = new PieSelector(group, "Sim.EditObjects.PickToken"); // move it out front ITransform transformSelector = selectorGroup as ITransform; transformSelector.Local.Translation = new Vector3(0.0f, 0.0f, sizeMenuItem); transformSelector.Compose(); selectorGroup.ComposeDefault += NewItemSelectorComposeDefault; selectorGroup.Select += SelectNewItemSelector; selectorGroup.Cancel += CancelNewItemSelector; uiSelector.AddGroup(group, selectorGroup); // bot group items var actors = ActorManager.GetActorsInGroup("BotGroup1"); for (int i = 0; i < actors.Count; i++) { selectorGroup.AddItem(new ActorMenuItem(selectorGroup, actors[i].LocalizedName, actors[i].MenuTextureFile, actors[i], size, groupRadialOffset)); } } #endregion #region BotGroup2 // some might think a subroutine would be a better way to structure this... { RenderObject group = new ActorMenuItem(uiSelector, null, @"Textures\Tiles\group.botsII", null, size, radialOffset); UiSelector selectorGroup = new PieSelector(group, "Sim.EditObjects.PickToken"); // move it out front ITransform transformSelector = selectorGroup as ITransform; transformSelector.Local.Translation = new Vector3(0.0f, 0.0f, sizeMenuItem); transformSelector.Compose(); selectorGroup.ComposeDefault += NewItemSelectorComposeDefault; selectorGroup.Select += SelectNewItemSelector; selectorGroup.Cancel += CancelNewItemSelector; uiSelector.AddGroup(group, selectorGroup); // bot group items var actors = ActorManager.GetActorsInGroup("BotGroup2"); for (int i = 0; i < actors.Count; i++) { selectorGroup.AddItem(new ActorMenuItem(selectorGroup, actors[i].LocalizedName, actors[i].MenuTextureFile, actors[i], size, groupRadialOffset)); } } #endregion #region objects group (star, coin, heart) { RenderObject group = new ActorMenuItem(uiSelector, null, @"Textures\Tiles\group.objects", null, size, radialOffset); UiSelector selectorGroup = new PieSelector(group, "Sim.EditObjects.PickToken"); // move it out front ITransform transformSelector = selectorGroup as ITransform; transformSelector.Local.Translation = new Vector3(0.0f, 0.0f, sizeMenuItem); transformSelector.Compose(); selectorGroup.ComposeDefault += NewItemSelectorComposeDefault; selectorGroup.Select += SelectNewItemSelector; selectorGroup.Cancel += CancelNewItemSelector; uiSelector.AddGroup(group, selectorGroup); var actors = ActorManager.GetActorsInGroup("ObjectGroup"); for (int i = 0; i < actors.Count; i++) { selectorGroup.AddItem(new ActorMenuItem(selectorGroup, actors[i].LocalizedName, actors[i].MenuTextureFile, actors[i], size, groupRadialOffset)); } } #endregion #region trees group // trees group // { RenderObject group = new ActorMenuItem(uiSelector, null, @"filter.tree", null, size, radialOffset); UiSelector selectorGroup = new PieSelector(group, "Sim.EditObjects.PickTree"); // move it out front ITransform transformSelector = selectorGroup as ITransform; transformSelector.Local.Translation = new Vector3(0.0f, 0.0f, sizeMenuItem); transformSelector.Compose(); selectorGroup.ComposeDefault += NewItemSelectorComposeDefault; selectorGroup.Select += SelectNewItemSelector; selectorGroup.Cancel += CancelNewItemSelector; uiSelector.AddGroup(group, selectorGroup); // Trees group items var actors = ActorManager.GetActorsInGroup("TreeGroup"); for (int i = 0; i < actors.Count; i++) { selectorGroup.AddItem(new ActorMenuItem(selectorGroup, actors[i].LocalizedName, actors[i].MenuTextureFile, actors[i], size, groupRadialOffset)); } } #endregion #region pipe group { RenderObject group = new ActorMenuItem(uiSelector, null, @"filter.pipe", null, size, radialOffset); UiSelector selectorGroup = new PieSelector(group, "Sim.EditObjects.PickPipe"); // move it out front ITransform transformSelector = selectorGroup as ITransform; transformSelector.Local.Translation = new Vector3(0.0f, 0.0f, sizeMenuItem); transformSelector.Compose(); selectorGroup.ComposeDefault += NewItemSelectorComposeDefault; selectorGroup.Select += SelectNewItemSelector; selectorGroup.Cancel += CancelNewItemSelector; uiSelector.AddGroup(group, selectorGroup); // Trees group items var actors = ActorManager.GetActorsInGroup("PipeGroup"); for (int i = 0; i < actors.Count; i++) { selectorGroup.AddItem(new ActorMenuItem(selectorGroup, actors[i].LocalizedName, actors[i].MenuTextureFile, actors[i], size, groupRadialOffset)); } } #endregion #region underwater group // underwater group // { RenderObject group = new ActorMenuItem(uiSelector, null, @"filter.underwater", null, size, radialOffset); UiSelector selectorGroup = new PieSelector(group, "Sim.EditObjects.PickUnderwater"); // move it out front ITransform transformSelector = selectorGroup as ITransform; transformSelector.Local.Translation = new Vector3(0.0f, 0.0f, sizeMenuItem); transformSelector.Compose(); selectorGroup.ComposeDefault += NewItemSelectorComposeDefault; selectorGroup.Select += SelectNewItemSelector; selectorGroup.Cancel += CancelNewItemSelector; uiSelector.AddGroup(group, selectorGroup); // Trees group items var actors = ActorManager.GetActorsInGroup("UnderwaterGroup"); for (int i = 0; i < actors.Count; i++) { selectorGroup.AddItem(new ActorMenuItem(selectorGroup, actors[i].LocalizedName, actors[i].MenuTextureFile, actors[i], size, groupRadialOffset)); } } #endregion #region rock group // rock group // { var rock = ActorManager.GetActor("Rock"); RenderObject group = new ActorMenuItem(uiSelector, rock.LocalizedName, @"filter.rock", null, size, radialOffset); UiSelector selectorGroup = new PieSelector(group, "Sim.EditObjects.PickRock"); // move it out front ITransform transformSelector = selectorGroup as ITransform; transformSelector.Local.Translation = new Vector3(0.0f, 0.0f, sizeMenuItem); transformSelector.Compose(); selectorGroup.ComposeDefault += NewItemSelectorComposeDefault; selectorGroup.Select += SelectNewItemSelector; selectorGroup.Cancel += CancelNewItemSelector; uiSelector.AddGroup(group, selectorGroup); // Trees group items var actors = ActorManager.GetActorsInGroup("RockGroup"); for (int i = 0; i < actors.Count; i++) { selectorGroup.AddItem(new ActorMenuItem(selectorGroup, actors[i].LocalizedName, actors[i].MenuTextureFile, actors[i], size, groupRadialOffset)); } } #endregion // WayPoint #region waypoint group if (!ignorePaths) { RenderObject group = new ActorMenuItem(uiSelector, null, @"Textures\Tiles\modifier.waypointwhite", null, size, radialOffset); UiSelector selectorGroup = new PieSelector(group, "Sim.EditObjects.PickToken"); ITransform transformSelector = selectorGroup as ITransform; transformSelector.Local.Translation = new Vector3(0.0f, 0.0f, sizeMenuItem); transformSelector.Compose(); selectorGroup.ComposeDefault += NewItemSelectorComposeDefault; selectorGroup.Select += SelectNewItemSelector; selectorGroup.Cancel += CancelNewItemSelector; uiSelector.AddGroup(group, selectorGroup); selectorGroup.AddItem(new ActorMenuItem(selectorGroup, Strings.Localize("actorNames.pathGeneric"), @"filter.pathplain", null, size, radialOffset)); selectorGroup.AddItem(new ActorMenuItem(selectorGroup, Strings.Localize("actorNames.pathRoad"), @"filter.pathroad", null, size, radialOffset)); selectorGroup.AddItem(new ActorMenuItem(selectorGroup, Strings.Localize("actorNames.pathWall"), @"filter.pathwall", null, size, radialOffset)); selectorGroup.AddItem(new ActorMenuItem(selectorGroup, Strings.Localize("actorNames.pathVeggie"), @"filter.pathflora", null, size, radialOffset)); //uiSelector.AddItem(new ActorMenuItem(uiSelector, Strings.Localize("actorNames.wayPoint"), null, @"modifier.waypointwhite", null, size, radialOffset)); // move the selector into position { //ITransform transformSelector = uiSelector as ITransform; //transformSelector.Local.RotationY = MathHelper.ToRadians(14.0f); //transformSelector.Local.RotationX = MathHelper.ToRadians(14.0f); //transformSelector.Compose(); } // Add the selector to the child list. } #endregion waypoint group uiSelector.ComposeDefault += NewItemSelectorComposeDefault; uiSelector.Select += SelectNewItemSelector; uiSelector.Cancel += CancelNewItemSelector; childList.Add(uiSelector); } // end of AddUISelector()