private void NewNameChosen(ScreenResult result, string resultText) { if (result == ScreenResult.Ok) { m_newName = resultText; var selectedType = (MyMwcObjectBuilder_SmallShip_TypesEnum)m_shipTypeCombobox.GetSelectedKey(); var builders = new List <MySmallShipBuilderWithName> { new MySmallShipBuilderWithName(MyMwcObjectBuilder_SmallShip_Bot.CreateObjectBuilderWithAllItems(selectedType, MyShipTypeConstants.GetShipTypeProperties(selectedType).GamePlay.CargoCapacity)) }; var inventory = new MyInventory(); inventory.FillInventoryWithAllItems(null, 100); var gui = new MyGuiScreenInventory( builders, 0, inventory.GetObjectBuilder(false), MyTextsWrapper.Get(MyTextsWrapperEnum.AllItemsInventory)); gui.OnSave += AddTemplate; MyGuiManager.AddScreen(gui); } }
private MySmallShipBot CreateShip(MyMwcObjectBuilder_SmallShip_Bot bldr, Vector3 position) { MySmallShipBot bot = CreateBotFromBuilder(bldr, position); MyEntities.Add(bot); SetBotPath(bot); return(bot); }
private void AddBot(MyMwcObjectBuilder_SmallShip bldr) { BotTemplate newTemplate = new BotTemplate(); MyMwcObjectBuilder_SmallShip_Bot botBuilder = bldr as MyMwcObjectBuilder_SmallShip_Bot; System.Diagnostics.Debug.Assert(botBuilder != null); newTemplate.m_builder = new MyMwcObjectBuilder_SmallShip_Bot( bldr.ShipType, bldr.Inventory, bldr.Weapons, bldr.Engine, bldr.AssignmentOfAmmo, bldr.Armor, bldr.Radar, bldr.ShipMaxHealth, bldr.ShipHealthRatio, bldr.ArmorHealth, bldr.Oxygen, bldr.Fuel, bldr.ReflectorLight, bldr.ReflectorLongRange, bldr.Faction, botBuilder != null ? botBuilder.AITemplate : MyAITemplateEnum.DEFAULT, botBuilder != null ? botBuilder.Aggressivity : 0, botBuilder != null ? botBuilder.SeeDistance : 1000, botBuilder != null ? botBuilder.SleepDistance : 1000, MyPatrolMode.CYCLE, null, BotBehaviorType.IDLE, MyLightsConstants.MAX_SPOTLIGHT_SHADOW_RANGE, 0, false, true); // faction will be assigned after spawnpoint genertation MyGuiObjectBuilderHelpers.GetGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip, (int)bldr.ShipType); //m_comboItems.AddItem(i, MyGuiObjectBuilderHelpers.GetGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip, bldr.ShipType); // MyMwcObjectBuilderTypeEnum.SmallShip, (int)m_inventory.SmallShips[i]).Description); newTemplate.m_name = ((MyGuiSmallShipHelperSmallShip)MyGuiObjectBuilderHelpers.GetGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip, (int)bldr.ShipType)).Name.ToString();//bldr.ShipType.ToString(); // find nearest new non template index int index = -1; foreach (int key in m_bots.Keys) { if (index < key && key < TEMPLATE_INDEX_OFFSET) { index = key; } } index++; AddBot(index, newTemplate); }
private List <MySmallShipBuilderWithName> GetTemplatesForCombobox(MyMwcObjectBuilder_SmallShip_Bot selectedBuilder, out int?selectedIndex) { int?foundedIndex = null; int currentIndex = 0; List <MySmallShipBuilderWithName> templatesForCombobox = new List <MySmallShipBuilderWithName>(); for (int i = 0; i < MyGuiSmallShipHelpers.MyMwcObjectBuilder_SmallShip_TypesEnumValues.Length; i++) { MyMwcObjectBuilder_SmallShip_TypesEnum shipType = (MyMwcObjectBuilder_SmallShip_TypesEnum)MyGuiSmallShipHelpers.MyMwcObjectBuilder_SmallShip_TypesEnumValues.GetValue(i); StringBuilder templateName; // insert no teplate templateName = GetTemplatePrefix(shipType); templateName.Append("NO TEMPLATE"); MyMwcObjectBuilder_SmallShip_Bot builderToAdd = null; if (selectedBuilder != null && selectedBuilder.ShipTemplateID == null && selectedBuilder.ShipType == shipType) { builderToAdd = selectedBuilder; foundedIndex = currentIndex; } else { builderToAdd = MyMwcObjectBuilder_SmallShip_Bot.CreateObjectBuilderWithAllItems(shipType, MyShipTypeConstants.GetShipTypeProperties(shipType).GamePlay.CargoCapacity); if (selectedBuilder != null) { builderToAdd.CopyBotParameters(selectedBuilder); } } templatesForCombobox.Add(new MySmallShipBuilderWithName(templateName, builderToAdd)); currentIndex++; // real templates foreach (MySmallShipTemplate template in MySmallShipTemplates.GetTemplatesForType(shipType)) { if (selectedBuilder != null && selectedBuilder.ShipTemplateID != null && selectedBuilder.ShipTemplateID.Value == template.ID) { foundedIndex = currentIndex; } builderToAdd = new MyMwcObjectBuilder_SmallShip_Bot(template.Builder); if (selectedBuilder != null) { builderToAdd.CopyBotParameters(selectedBuilder); } templateName = GetTemplatePrefix(shipType); MyMwcUtils.AppendStringBuilder(templateName, template.Name); templatesForCombobox.Add(new MySmallShipBuilderWithName(templateName, builderToAdd, template)); currentIndex++; } } selectedIndex = foundedIndex; return(templatesForCombobox); }
public MyGuiScreenEditorSmallShip(MyMwcObjectBuilder_SmallShip_Bot botBuilder, List <MySmallShipBuilderWithName> templateBuilders, int selectedIndex) : base(null, new Vector2(0.5f, 0.5f), MyGuiConstants.SCREEN_BACKGROUND_COLOR, null, MyTextsWrapperEnum.EditSmallShip) { m_botBuilder = botBuilder; m_templatesBuilders = templateBuilders; Init(); m_selectShipFactionCombobox.SelectItemByKey((int)m_botBuilder.Faction); m_selectAITemplateCombobox.SelectItemByKey((int)m_botBuilder.AITemplate); m_aggresivitySlider.SetValue(m_botBuilder.Aggressivity); m_seeDistanceSlider.SetValue(m_botBuilder.SeeDistance); m_selectSmallShipCombobox.SelectItemByIndex(selectedIndex); }
private void AddBot(MyMwcObjectBuilder_SmallShip bldr, MySmallShipTemplate smallShipTemplate) { BotTemplate newTemplate = new BotTemplate(); MyMwcObjectBuilder_SmallShip_Bot botBuilder = bldr as MyMwcObjectBuilder_SmallShip_Bot; newTemplate.m_builder = new MyMwcObjectBuilder_SmallShip_Bot( smallShipTemplate.Builder.ShipType, null, null, null, smallShipTemplate.Builder.AssignmentOfAmmo, null, null, smallShipTemplate.Builder.ShipMaxHealth, smallShipTemplate.Builder.ShipHealthRatio, smallShipTemplate.Builder.ArmorHealth, smallShipTemplate.Builder.Oxygen, smallShipTemplate.Builder.Fuel, smallShipTemplate.Builder.ReflectorLight, smallShipTemplate.Builder.ReflectorLongRange, smallShipTemplate.Builder.Faction, botBuilder != null ? botBuilder.AITemplate : MyAITemplateEnum.DEFAULT, botBuilder != null ? botBuilder.Aggressivity : 0, botBuilder != null ? botBuilder.SeeDistance : 1000, botBuilder != null ? botBuilder.SleepDistance : 1000, MyPatrolMode.CYCLE, null, BotBehaviorType.IDLE, MyLightsConstants.MAX_SPOTLIGHT_SHADOW_RANGE, 0, false, true); // faction will be assigned after spawnpoint genertation newTemplate.m_builder.ShipTemplateID = smallShipTemplate.ID; newTemplate.m_name = smallShipTemplate.Name.ToString(); // find nearest new non template index int index = -1; foreach (int key in m_bots.Keys) { if (index < key && key < TEMPLATE_INDEX_OFFSET) { index = key; } } index++; AddBot(index, newTemplate); }
private void OnEditBot(MyMwcObjectBuilder_SmallShip bldr) { BotTemplate newTemplate = new BotTemplate(); MyMwcObjectBuilder_SmallShip_Bot botBuilder = bldr as MyMwcObjectBuilder_SmallShip_Bot; System.Diagnostics.Debug.Assert(botBuilder != null); newTemplate.m_builder = new MyMwcObjectBuilder_SmallShip_Bot( bldr.ShipType, bldr.Inventory, bldr.Weapons, bldr.Engine, bldr.AssignmentOfAmmo, bldr.Armor, bldr.Radar, bldr.ShipMaxHealth, bldr.ShipHealthRatio, bldr.ArmorHealth, bldr.Oxygen, bldr.Fuel, bldr.ReflectorLight, bldr.ReflectorLongRange, bldr.Faction, botBuilder != null ? botBuilder.AITemplate : MyAITemplateEnum.DEFAULT, botBuilder != null ? botBuilder.Aggressivity : 0, botBuilder != null ? botBuilder.SeeDistance : 1000, botBuilder != null ? botBuilder.SleepDistance : 1000, MyPatrolMode.CYCLE, null, BotBehaviorType.IDLE, MyLightsConstants.MAX_SPOTLIGHT_SHADOW_RANGE, bldr.AIPriority, false, true); // faction will be assigned after spawnpoint genertation newTemplate.m_name = bldr.ShipType.ToString(); int key = m_selectShipsListbox.GetSelectedItem().Key; m_selectShipsListbox.RemoveItem(key); var itemName = MyGuiObjectBuilderHelpers.GetGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip, (int)newTemplate.m_builder.ShipType).Description; m_selectShipsListbox.AddItem(key, itemName); m_bots[key] = newTemplate; }
private void OnEditBot(MyMwcObjectBuilder_SmallShip bldr, MySmallShipTemplate smallShipTemplate) { BotTemplate newTemplate = new BotTemplate(); MyMwcObjectBuilder_SmallShip_Bot botBuilder = bldr as MyMwcObjectBuilder_SmallShip_Bot; newTemplate.m_builder = new MyMwcObjectBuilder_SmallShip_Bot( smallShipTemplate.Builder.ShipType, null, null, null, smallShipTemplate.Builder.AssignmentOfAmmo, null, null, smallShipTemplate.Builder.ShipMaxHealth, smallShipTemplate.Builder.ShipHealthRatio, smallShipTemplate.Builder.ArmorHealth, smallShipTemplate.Builder.Oxygen, smallShipTemplate.Builder.Fuel, smallShipTemplate.Builder.ReflectorLight, smallShipTemplate.Builder.ReflectorLongRange, smallShipTemplate.Builder.Faction, botBuilder != null ? botBuilder.AITemplate : MyAITemplateEnum.DEFAULT, botBuilder != null ? botBuilder.Aggressivity : 0, botBuilder != null ? botBuilder.SeeDistance : 1000, botBuilder != null ? botBuilder.SleepDistance : 1000, MyPatrolMode.CYCLE, null, BotBehaviorType.IDLE, MyLightsConstants.MAX_SPOTLIGHT_SHADOW_RANGE, bldr.AIPriority, false, true); // faction will be assigned after spawnpoint genertation newTemplate.m_builder.ShipTemplateID = smallShipTemplate.ID; newTemplate.m_name = smallShipTemplate.Name.ToString(); int key = m_selectShipsListbox.GetSelectedItem().Key; m_selectShipsListbox.RemoveItem(key); m_selectShipsListbox.AddItem(key, smallShipTemplate.Name); m_bots[key] = newTemplate; }
private MySmallShipBot CreateBotFromBuilder(MyMwcObjectBuilder_SmallShip_Bot bldr, Vector3 position) { //hax bldr.ArmorHealth = MyGameplayConstants.HEALTH_BASIC; bldr.ShipMaxHealth = MyGameplayConstants.HEALTH_BASIC; bldr.Fuel = float.MaxValue; bldr.Oxygen = float.MaxValue; bldr.OwnerId = this.EntityId.Value.NumericValue; if (bldr.ShipTemplateID != null) { var shipTemplate = MySmallShipTemplates.GetTemplateForSpawn(bldr.ShipTemplateID.Value); Debug.Assert(shipTemplate != null, string.Format("ShipTemplate {0} was not found!", bldr.ShipTemplateID.Value)); if (shipTemplate != null) { shipTemplate.ApplyToSmallShipBuilder(bldr); } } bldr.Faction = this.Faction; MySmallShipBot bot = (MySmallShipBot)MyEntities.CreateFromObjectBuilder(null, bldr, Matrix.CreateWorld(position, Vector3.Backward, Vector3.Up)); return(bot); }
// Read this object from message-in internal override bool Read(BinaryReader binaryReader, EndPoint senderEndPoint, int gameVersion) { if (base.Read(binaryReader, senderEndPoint, gameVersion) == false) { return(NetworkError()); } // NumberOfTemplates (why?) int?tempcount = MyMwcMessageIn.ReadInt32Ex(binaryReader, senderEndPoint); if (tempcount == null) { return(NetworkError()); } m_numberOfTemplates = tempcount.Value; MyMwcLog.IfNetVerbose_AddToLog("NumberOfTemplates: " + m_numberOfTemplates); // Bot Templates for (int c = 0; c < m_numberOfTemplates; c++) { MyMwcObjectBuilder_SmallShip_Bot nb = MyMwcObjectBuilder_Base.ReadAndCreateNewObject(binaryReader, senderEndPoint) as MyMwcObjectBuilder_SmallShip_Bot; if (nb == null || nb.Read(binaryReader, senderEndPoint, gameVersion) == false) { return(NetworkError()); } ShipTemplates.Add(nb); } // WayPointPath string pWPP = MyMwcMessageIn.ReadStringEx(binaryReader, senderEndPoint); if (pWPP == null) { return(NetworkError()); } WayPointPath = pWPP; MyMwcLog.IfNetVerbose_AddToLog("WayPointPath: " + WayPointPath); // Faction int?pFaction = MyMwcMessageIn.ReadInt32Ex(binaryReader, senderEndPoint); if (pFaction == null) { return(NetworkError()); } Faction = (MyMwcObjectBuilder_FactionEnum)pFaction.Value; MyMwcLog.IfNetVerbose_AddToLog("Faction: " + Faction); // SpawnInGroups bool?spawnInGroups = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint); if (spawnInGroups == null) { return(NetworkError()); } SpawnInGroups = spawnInGroups.Value; MyMwcLog.IfNetVerbose_AddToLog("SpawnInGroups: " + SpawnInGroups); // SpawnCount int?spawnCount = MyMwcMessageIn.ReadInt32Ex(binaryReader, senderEndPoint); if (spawnCount == null) { return(NetworkError()); } SpawnCount = spawnCount.Value; MyMwcLog.IfNetVerbose_AddToLog("SpawnCount: " + SpawnCount); // FirstSpawnTimer float?firstSpawnTimer = MyMwcMessageIn.ReadFloat(binaryReader); if (firstSpawnTimer == null) { return(NetworkError()); } FirstSpawnTimer = firstSpawnTimer.Value; MyMwcLog.IfNetVerbose_AddToLog("FirstSpawnTimer: " + FirstSpawnTimer); // RespawnTimer float?respawnTimer = MyMwcMessageIn.ReadFloat(binaryReader); if (respawnTimer == null) { return(NetworkError()); } RespawnTimer = respawnTimer.Value; MyMwcLog.IfNetVerbose_AddToLog("RespawnTimer: " + RespawnTimer); // BoundingRadius float?pBR = MyMwcMessageIn.ReadFloat(binaryReader); if (pBR == null) { return(NetworkError()); } BoundingRadius = pBR.Value; MyMwcLog.IfNetVerbose_AddToLog("BoundingRadius: " + BoundingRadius); // Activated bool?activated = MyMwcMessageIn.ReadBoolEx(binaryReader, senderEndPoint); if (activated == null) { return(NetworkError()); } Activated = activated.Value; MyMwcLog.IfNetVerbose_AddToLog("Activated: " + Activated); // Patrol mode int?patrolMode = MyMwcMessageIn.ReadByteEx(binaryReader, senderEndPoint); if (patrolMode == null) { return(NetworkError()); } PatrolMode = (MyPatrolMode)patrolMode.Value; MyMwcLog.IfNetVerbose_AddToLog("PatrolMode: " + PatrolMode); return(true); }
public override void OnOkClick(MyGuiControlButton sender) { base.OnOkClick(sender); if (m_botBuilder != null) { m_botBuilder.Faction = (MyMwcObjectBuilder_FactionEnum)m_selectShipFactionCombobox.GetSelectedKey(); m_botBuilder.AITemplate = (MyAITemplateEnum)m_selectAITemplateCombobox.GetSelectedKey(); m_botBuilder.Aggressivity = m_aggresivitySlider.GetValue(); m_botBuilder.SeeDistance = m_seeDistanceSlider.GetValue(); var templateBuilder = m_templatesBuilders[m_selectSmallShipCombobox.GetSelectedKey()]; bool isTemplate = templateBuilder.UserData != null; if (isTemplate) { var template = templateBuilder.UserData as MySmallShipTemplate; if (m_botBuilder.ShipTemplateID == null) { if (m_inventoryBuilder == null) { m_botBuilder.Inventory = null; m_botBuilder.Weapons = null; m_botBuilder.Engine = null; m_botBuilder.Armor = null; m_botBuilder.Radar = null; } else { m_botBuilder.Inventory = m_inventoryBuilder.Inventory; m_botBuilder.Weapons = m_inventoryBuilder.Weapons; m_botBuilder.Engine = m_inventoryBuilder.Engine; m_botBuilder.Armor = m_inventoryBuilder.Armor; m_botBuilder.Radar = m_inventoryBuilder.Radar; } } m_botBuilder.ShipTemplateID = template.ID; } else { var builderWithAllItems = MyMwcObjectBuilder_SmallShip_Bot.CreateObjectBuilderWithAllItems(templateBuilder.Builder.ShipType, MyShipTypeConstants.GetShipTypeProperties(templateBuilder.Builder.ShipType).GamePlay.CargoCapacity); if (m_botBuilder.ShipTemplateID != null) { m_botBuilder.Inventory = builderWithAllItems.Inventory; m_botBuilder.Weapons = builderWithAllItems.Weapons; m_botBuilder.Engine = builderWithAllItems.Engine; m_botBuilder.Armor = builderWithAllItems.Armor; m_botBuilder.Radar = builderWithAllItems.Radar; } m_botBuilder.ShipTemplateID = null; } m_botBuilder.ShipType = templateBuilder.Builder.ShipType; CloseAndCallOnOk(); } else if (m_bot != null) // edit SmallShip { Matrix matrix = m_bot.WorldMatrix; MyMwcObjectBuilder_SmallShip_Bot botBuilder = m_bot.GetObjectBuilder(true) as MyMwcObjectBuilder_SmallShip_Bot; System.Diagnostics.Debug.Assert(botBuilder != null); botBuilder.Faction = (MyMwcObjectBuilder_FactionEnum)m_selectShipFactionCombobox.GetSelectedKey(); botBuilder.AITemplate = (MyAITemplateEnum)m_selectAITemplateCombobox.GetSelectedKey(); botBuilder.Aggressivity = m_aggresivitySlider.GetValue(); botBuilder.SeeDistance = m_seeDistanceSlider.GetValue(); botBuilder.ShipType = (MyMwcObjectBuilder_SmallShip_TypesEnum)m_selectSmallShipCombobox.GetSelectedKey(); if (m_inventoryBuilder != null) { botBuilder.Inventory = m_inventoryBuilder.Inventory; botBuilder.Weapons = m_inventoryBuilder.Weapons; botBuilder.Engine = m_inventoryBuilder.Engine; botBuilder.Armor = m_inventoryBuilder.Armor; botBuilder.Radar = m_inventoryBuilder.Radar; } MyEditorGizmo.ClearSelection(); m_newBotBuilderToInit = botBuilder; m_newBotWorldMatrixToInit = matrix; m_bot.MarkForClose(); m_bot.OnClose += OnOldBodClose; } else // create SmallShip { MyMwcObjectBuilder_SmallShip_TypesEnum shipType = (MyMwcObjectBuilder_SmallShip_TypesEnum) Enum.ToObject(typeof(MyMwcObjectBuilder_SmallShip_TypesEnum), m_selectSmallShipCombobox.GetSelectedKey()); MyMwcObjectBuilder_FactionEnum shipFaction = (MyMwcObjectBuilder_FactionEnum) Enum.ToObject(typeof(MyMwcObjectBuilder_FactionEnum), m_selectShipFactionCombobox.GetSelectedKey()); MyMwcPositionAndOrientation positionAndOrientation = new MyMwcPositionAndOrientation(m_newObjectPosition, Vector3.Forward, Vector3.Up); MyMwcObjectBuilder_SmallShip_Bot botBuilder = MyEditor.CreateDefaultBotObjectBuilder(positionAndOrientation.Position, positionAndOrientation.Forward, positionAndOrientation.Up, shipType, shipFaction); botBuilder.AITemplate = (MyAITemplateEnum)m_selectAITemplateCombobox.GetSelectedKey(); botBuilder.Aggressivity = m_aggresivitySlider.GetValue(); botBuilder.SeeDistance = m_seeDistanceSlider.GetValue(); MyEditor.Static.CreateFromObjectBuilder(botBuilder, Matrix.CreateWorld(m_newObjectPosition, Vector3.Forward, Vector3.Up), m_screenPosition); CloseAndCallOnOk(); } }