private void GenerateSmallShipPreviews(int sizeInPixels, DirectoryInfo directoryInfo) { var directoryGuiHelpers = Directory.CreateDirectory(Path.Combine(directoryInfo.FullName, "GuiHelpers")); int index = 1; foreach (MyMwcObjectBuilder_SmallShip_TypesEnum enumValue in MyGuiSmallShipHelpers.MyMwcObjectBuilder_SmallShip_TypesEnumValues) { Debug.WriteLine(string.Format("Exporting SmallShip Preview {0}/{1} ..", index++, MyGuiSmallShipHelpers.MyMwcObjectBuilder_SmallShip_TypesEnumValues.Length)); var modelEnum = MyShipTypeConstants.GetShipTypeProperties(enumValue).Visual.ModelLod0Enum; var model = MyModels.GetModelForDraw(modelEnum); string assetName = Path.GetFileName(MyModels.GetModelAssetName(modelEnum)); var result = RenderModelPreview(model, sizeInPixels, sizeInPixels); string fileName = Path.Combine(directoryGuiHelpers.FullName, string.Format("{0}.dds", assetName)); if (File.Exists(fileName)) { File.Delete(fileName); } //TODO //MyDDSFile.DDSToFile(fileName, true, result, false); } }
private void OnGenerateListOfAssets(MyGuiControlButton sender) { string trimPath = @"Models2\"; foreach (MyMwcObjectBuilderTypeEnum enumValue in MyGuiPrefabHelpers.MyMwcPrefabTypesEnumValues) { foreach (int prefabId in MyMwcObjectBuilder_Base.GetObjectBuilderIDs(enumValue)) { MyGuiPrefabHelper prefabModuleHelper = MyGuiObjectBuilderHelpers.GetGuiHelper(enumValue, prefabId) as MyGuiPrefabHelper; MyPrefabConfiguration config = MyPrefabConstants.GetPrefabConfiguration(enumValue, prefabId); string assetName = MyModels.GetModelAssetName(config.ModelLod0Enum); int trimIndex = assetName.IndexOf(trimPath); if (trimIndex >= 0) { assetName = assetName.Substring(trimIndex + trimPath.Length); } MyMwcLog.WriteLine(string.Format("{0};{1}", prefabModuleHelper.Description, assetName)); } } foreach (MyMwcObjectBuilder_SmallShip_TypesEnum enumValue in MyGuiSmallShipHelpers.MyMwcObjectBuilder_SmallShip_TypesEnumValues) { MyGuiSmallShipHelperSmallShip smallShipHelper = MyGuiObjectBuilderHelpers.GetGuiHelper(MyMwcObjectBuilderTypeEnum.SmallShip, (int)enumValue) as MyGuiSmallShipHelperSmallShip; var properties = MyShipTypeConstants.GetShipTypeProperties(enumValue); string assetName = MyModels.GetModelAssetName(properties.Visual.ModelLod0Enum); int trimIndex = assetName.IndexOf(trimPath); if (trimIndex >= 0) { assetName = assetName.Substring(trimIndex + trimPath.Length); } MyMwcLog.WriteLine(string.Format("{0};{1}", smallShipHelper.Description, assetName)); } }
private bool GetSafePositionForSpawn(MyMwcObjectBuilder_SmallShip_TypesEnum shipType, out Vector3?safePosition) { var shipRadius = MyModels.GetModelOnlyData(MyShipTypeConstants.GetShipTypeProperties(shipType).Visual.ModelLod0Enum).BoundingSphere.Radius; for (int c = MAX_SPAWN_ATTEMPTS; c-- != 0;) { Vector3 randomPointInSphere = MyMwcUtils.GetRandomVector3Normalized() * MyMwcUtils.GetRandomFloat(0, 1) * BoundingSphereRadius; // Random point in sphere Vector3 newTestPos = GetPosition() + randomPointInSphere; BoundingSphere bsphere = new BoundingSphere(newTestPos, shipRadius); MyEntity col = MyEntities.GetIntersectionWithSphere(ref bsphere); if (col == null) { safePosition = newTestPos; return(true); } } safePosition = null; return(false); }
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 static void LoadGodEditorInventory(ref MyInventory otherSideInventory, ref StringBuilder otherSideInventoryName, ref List <MySmallShipBuilderWithName> shipsObjectBuilders) { otherSideInventory = new MyInventory(); otherSideInventory.FillInventoryWithAllItems(null, 100, true); otherSideInventoryName = MyTextsWrapper.Get(MyTextsWrapperEnum.AllItemsInventory); foreach (MyMwcObjectBuilder_SmallShip_TypesEnum shipType in Enum.GetValues(typeof(MyMwcObjectBuilder_SmallShip_TypesEnum))) { if (MySession.PlayerShip.ShipType != shipType) { MyMwcObjectBuilder_SmallShip_Player playerShipBuilder = MyMwcObjectBuilder_SmallShip_Player.CreateObjectBuilderWithAllItems(shipType, MySession.PlayerShip.Faction, MyShipTypeConstants.GetShipTypeProperties(shipType).GamePlay.CargoCapacity); shipsObjectBuilders.Add(new MySmallShipBuilderWithName(playerShipBuilder)); } } }
/// <summary> /// Fills inventory with all items /// </summary> /// <param name="maxItems">Max items limit</param> public void FillInventoryWithAllItems(int?maxItems = null, int?increaseMaxItemsAbout = null, bool loadSmallShips = false) { if (maxItems != null) { MaxItems = maxItems.Value; } MyInventoryItem inventoryItem; List <MyInventoryItem> inventoryItemsToAdd = new List <MyInventoryItem>(); // ammo foreach (MyMwcObjectBuilder_SmallShip_Ammo_TypesEnum item in MyGuiSmallShipHelpers.MyMwcObjectBuilder_SmallShip_Ammo_TypesEnumValues) { inventoryItem = MyInventory.CreateInventoryItemFromObjectBuilder(new MyMwcObjectBuilder_SmallShip_Ammo(item)); inventoryItem.Amount = inventoryItem.MaxAmount; inventoryItemsToAdd.Add(inventoryItem); } // engines foreach (MyMwcObjectBuilder_SmallShip_Engine_TypesEnum item in MyGuiSmallShipHelpers.MyMwcObjectBuilder_SmallShip_Engine_TypesEnumValues) { inventoryItem = MyInventory.CreateInventoryItemFromObjectBuilder(new MyMwcObjectBuilder_SmallShip_Engine(item)); inventoryItemsToAdd.Add(inventoryItem); } // weapons foreach (MyMwcObjectBuilder_SmallShip_Weapon_TypesEnum item in MyGuiSmallShipHelpers.MyMwcObjectBuilder_SmallShip_Weapon_TypesEnumValues) { inventoryItem = MyInventory.CreateInventoryItemFromObjectBuilder(new MyMwcObjectBuilder_SmallShip_Weapon(item)); inventoryItemsToAdd.Add(inventoryItem); } // tools foreach (MyMwcObjectBuilder_SmallShip_Tool_TypesEnum item in MyGuiSmallShipHelpers.MyMwcObjectBuilder_SmallShip_ToolEnumValues) { inventoryItem = MyInventory.CreateInventoryItemFromObjectBuilder(new MyMwcObjectBuilder_SmallShip_Tool(item)); inventoryItem.Amount = inventoryItem.MaxAmount; inventoryItemsToAdd.Add(inventoryItem); } // armors foreach (MyMwcObjectBuilder_SmallShip_Armor_TypesEnum item in Enum.GetValues(typeof(MyMwcObjectBuilder_SmallShip_Armor_TypesEnum))) { inventoryItem = MyInventory.CreateInventoryItemFromObjectBuilder(new MyMwcObjectBuilder_SmallShip_Armor(item)); inventoryItemsToAdd.Add(inventoryItem); } // radars foreach (MyMwcObjectBuilder_SmallShip_Radar_TypesEnum item in Enum.GetValues(typeof(MyMwcObjectBuilder_SmallShip_Radar_TypesEnum))) { inventoryItem = MyInventory.CreateInventoryItemFromObjectBuilder(new MyMwcObjectBuilder_SmallShip_Radar(item)); inventoryItemsToAdd.Add(inventoryItem); } // blueprints foreach (MyMwcObjectBuilder_Blueprint_TypesEnum item in Enum.GetValues(typeof(MyMwcObjectBuilder_Blueprint_TypesEnum))) { inventoryItem = MyInventory.CreateInventoryItemFromObjectBuilder(new MyMwcObjectBuilder_Blueprint(item)); inventoryItemsToAdd.Add(inventoryItem); } //ore foreach (MyMwcObjectBuilder_Ore_TypesEnum item in Enum.GetValues(typeof(MyMwcObjectBuilder_Ore_TypesEnum))) { inventoryItem = MyInventory.CreateInventoryItemFromObjectBuilder(new MyMwcObjectBuilder_Ore(item)); inventoryItem.Amount = 1; inventoryItemsToAdd.Add(inventoryItem); } // fakeId foreach (MyMwcObjectBuilder_FactionEnum item in Enum.GetValues(typeof(MyMwcObjectBuilder_FactionEnum))) { inventoryItem = MyInventory.CreateInventoryItemFromObjectBuilder(new MyMwcObjectBuilder_FalseId(item)); inventoryItemsToAdd.Add(inventoryItem); } // hacking tool foreach (MyMwcObjectBuilder_SmallShip_HackingTool_TypesEnum item in Enum.GetValues(typeof(MyMwcObjectBuilder_SmallShip_HackingTool_TypesEnum))) { inventoryItem = MyInventory.CreateInventoryItemFromObjectBuilder(new MyMwcObjectBuilder_SmallShip_HackingTool(item)); inventoryItemsToAdd.Add(inventoryItem); } // drone foreach (MyMwcObjectBuilder_Drone_TypesEnum droneType in Enum.GetValues(typeof(MyMwcObjectBuilder_Drone_TypesEnum))) { var droneBuilder = new MyMwcObjectBuilder_Drone(droneType); inventoryItem = CreateInventoryItemFromObjectBuilder(droneBuilder); inventoryItem.Amount = inventoryItem.MaxAmount; inventoryItemsToAdd.Add(inventoryItem); } // playerships if (loadSmallShips) { foreach (MyMwcObjectBuilder_SmallShip_TypesEnum shipType in Enum.GetValues(typeof(MyMwcObjectBuilder_SmallShip_TypesEnum))) { inventoryItem = MyInventory.CreateInventoryItemFromObjectBuilder(MyMwcObjectBuilder_SmallShip_Player.CreateDefaultShip(shipType, MySession.PlayerShip.Faction, MyShipTypeConstants.GetShipTypeProperties(shipType).GamePlay.CargoCapacity)); inventoryItemsToAdd.Add(inventoryItem); } } //// prefabs //foreach(MyMwcObjectBuilder_Prefab_TypesEnum item in Enum.GetValues(typeof(MyMwcObjectBuilder_Prefab_TypesEnum))) { // inventoryItem = MyInventory.CreateInventoryItemFromObjectBuilder(new MyMwcObjectBuilder_Prefab(item, new MyMwcVector3Short(0, 0, 0), new Vector3(0, 0, 0), MyGameplayConstants.MAXHEALTH_PREFAB)); // inventoryItemsToAdd.Add(inventoryItem); //} //// small debris //foreach (MyMwcObjectBuilder_SmallDebris_TypesEnum item in Enum.GetValues(typeof(MyMwcObjectBuilder_SmallDebris_TypesEnum))) //{ // inventoryItem = MyInventory.CreateInventoryItemFromObjectBuilder(new MyMwcObjectBuilder_SmallDebris(item, true)); // inventoryItemsToAdd.Add(inventoryItem); //} // foundation factory inventoryItem = MyInventory.CreateInventoryItemFromObjectBuilder(MyMwcObjectBuilder_Base.CreateNewObject(MyMwcObjectBuilderTypeEnum.PrefabFoundationFactory, (int)MyMwcObjectBuilder_PrefabFoundationFactory_TypesEnum.DEFAULT)); inventoryItemsToAdd.Add(inventoryItem); if (maxItems != null && !UnlimitedCapacity) { while (inventoryItemsToAdd.Count > maxItems.Value) { int lastIndex = inventoryItemsToAdd.Count - 1; inventoryItem = inventoryItemsToAdd[lastIndex]; inventoryItemsToAdd.RemoveAt(lastIndex); MyInventory.CloseInventoryItem(inventoryItem); } } else { if (inventoryItemsToAdd.Count > MaxItems) { MaxItems = inventoryItemsToAdd.Count; } } if (increaseMaxItemsAbout != null) { MaxItems += increaseMaxItemsAbout.Value; } AddInventoryItems(inventoryItemsToAdd); }
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 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(); } }