private void UpdateTemplate(MyGuiScreenInventory sender, MyGuiScreenInventorySaveResult saveresult) { Debug.Assert(m_selectedTemplate != null); m_selectedTemplate.Builder = saveresult.SmallShipsObjectBuilders[saveresult.CurrentIndex].Builder; sender.OnSave -= UpdateTemplate; }
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 void OnEditButtonClick(MyGuiControlButton sender) { var selectedItem = m_templatesListbox.GetSelectedItem(); if (selectedItem != null) { var selectedType = (MyMwcObjectBuilder_SmallShip_TypesEnum)m_shipTypeCombobox.GetSelectedKey(); m_selectedTemplate = MySmallShipTemplates.GetTemplate(selectedType, selectedItem.Value); var builders = new List <MySmallShipBuilderWithName> { new MySmallShipBuilderWithName(m_selectedTemplate.Builder) }; var inventory = new MyInventory(); inventory.FillInventoryWithAllItems(null, 100); var gui = new MyGuiScreenInventory( builders, 0, inventory.GetObjectBuilder(false), MyTextsWrapper.Get(MyTextsWrapperEnum.AllItemsInventory)); gui.OnSave += UpdateTemplate; MyGuiManager.AddScreen(gui); } else { WarnNotSelected(); } }
private static void Clear() { m_otherSideInventoryOwner = null; m_player = null; m_shipsInventoryOwner = null; m_tradeForMoney = false; m_entityDetector = null; m_detectedAction = null; m_currentInventoryScreen.OnSave -= Save; m_currentInventoryScreen.Closed -= OnInventoryScreenClosed; m_currentInventoryScreen = null; }
private void AddTemplate(MyGuiScreenInventory sender, MyGuiScreenInventorySaveResult saveresult) { var newID = MySmallShipTemplates.GenerateNewID(); MySmallShipTemplates.AddTemplate(new MySmallShipTemplate( newID, new StringBuilder(m_newName), saveresult.SmallShipsObjectBuilders[saveresult.CurrentIndex].Builder, false)); UpdateControls(); sender.OnSave -= AddTemplate; }
private void OnAddBotFromScreen(MyGuiScreenInventory sender, MyGuiScreenInventorySaveResult saveResult) { bool isTemplate = !saveResult.WasAnythingTransfered && saveResult.SmallShipsObjectBuilders[saveResult.CurrentIndex].UserData != null; MySmallShipBuilderWithName resultBuilder = saveResult.SmallShipsObjectBuilders[saveResult.CurrentIndex]; if (isTemplate) { AddBot(resultBuilder.Builder, (MySmallShipTemplate)resultBuilder.UserData); } else { AddBot(resultBuilder.Builder); } }
private void OnInventoryClick(MyGuiControlButton sender) { MyInventory inventory = new MyInventory(); inventory.FillInventoryWithAllItems(null, 100); List <MySmallShipBuilderWithName> tempList = new List <MySmallShipBuilderWithName>(); tempList.Add(new MySmallShipBuilderWithName(m_bot.GetObjectBuilder(true) as MyMwcObjectBuilder_SmallShip_Bot)); MyGuiScreenInventory inventoryScreen = new MyGuiScreenInventory(tempList, 0, inventory.GetObjectBuilder(false), null, true); inventoryScreen.OnSave += OnEditBotFromScreen; MyGuiManager.AddScreen(inventoryScreen); }
private void OnAddClick(MyGuiControlButton sender) { //List<MySmallShipBuilderWithName> builders = new List<MySmallShipBuilderWithName>(); //for (int i = 0; i < MyGuiSmallShipHelpers.MyMwcObjectBuilder_SmallShip_TypesEnumValues.Length; i++) //{ // builders.Add(new MySmallShipBuilderWithName(MyMwcObjectBuilder_SmallShip_Bot.CreateObjectBuilderWithAllItems( // (MyMwcObjectBuilder_SmallShip_TypesEnum)MyGuiSmallShipHelpers.MyMwcObjectBuilder_SmallShip_TypesEnumValues.GetValue(i)))); //} List <MySmallShipBuilderWithName> builders = GetTemplatesForCombobox(); MyInventory inventory = new MyInventory(); inventory.FillInventoryWithAllItems(null, 100); MyGuiScreenInventory inventoryScreen = new MyGuiScreenInventory(builders, 0, inventory.GetObjectBuilder(false), MyTextsWrapper.Get(MyTextsWrapperEnum.AllItemsInventory), true); inventoryScreen.OnSave += OnAddBotFromScreen; MyGuiManager.AddScreen(inventoryScreen); }
private void OnInventoryClick(MyGuiControlButton sender) { var selected = m_selectShipsListbox.GetSelectedItem(); if (selected != null) { BotTemplate template = m_bots[selected.Key]; int? selectedIndex = null; var builders = GetTemplatesForCombobox(template.m_builder, out selectedIndex); Debug.Assert(selectedIndex != null, "This shouldn't happen!"); if (selectedIndex == null) { selectedIndex = 0; } MyInventory inventory = new MyInventory(); inventory.FillInventoryWithAllItems(null, 100); MyGuiScreenInventory inventoryScreen = new MyGuiScreenInventory(builders, selectedIndex.Value, inventory.GetObjectBuilder(false), null, true); inventoryScreen.OnSave += OnEditBotFromScreen; MyGuiManager.AddScreen(inventoryScreen); } }
private void OnEditBotFromScreen(MyGuiScreenInventory sender, MyGuiScreenInventorySaveResult saveResult) { MySmallShipBuilderWithName resultBuilder = saveResult.SmallShipsObjectBuilders[saveResult.CurrentIndex]; m_inventoryBuilder = resultBuilder.Builder; }
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); } }
public static MyGuiScreenInventory OpenInventory(MyGuiScreenInventoryType inventoryScreenType, MyEntity otherSide = null, MySmallShipInteractionActionEnum?action = null) { MyMwcLog.WriteLine("OpenInventory()"); // return harvester when opening inventory, harvester can update inventory, which would not propagete to inventory screen and closing inventory would override those changes var harvester = MySession.PlayerShip.Weapons.GetMountedHarvestingDevice(); if (harvester != null && harvester.CurrentState != MyHarvestingDeviceEnum.InsideShip) { harvester.Shot(null); } StringBuilder otherSideInventoryName = null; MyInventory otherSideInventory = null; List <MySmallShipBuilderWithName> shipsObjectBuilders = null; bool closeOtherSideInventory = false; m_inventoryScreenType = inventoryScreenType; m_shipsInventoryOwner = MySession.Static; m_player = MySession.Static.Player; m_detectedEntity = otherSide; m_detectedAction = action; shipsObjectBuilders = new List <MySmallShipBuilderWithName>(); shipsObjectBuilders.Add(new MySmallShipBuilderWithName(MySession.PlayerShip.GetObjectBuilder(true) as MyMwcObjectBuilder_SmallShip_Player)); switch (m_inventoryScreenType) { case MyGuiScreenInventoryType.GodEditor: LoadGodEditorInventory(ref otherSideInventory, ref otherSideInventoryName, ref shipsObjectBuilders); closeOtherSideInventory = true; break; case MyGuiScreenInventoryType.InGameEditor: LoadIngameEditorInventory(ref otherSideInventory, ref otherSideInventoryName); break; case MyGuiScreenInventoryType.Game: LoadGameInventory(ref otherSideInventory, ref otherSideInventoryName, ref shipsObjectBuilders); break; } var currentShipBuilder = shipsObjectBuilders[0]; shipsObjectBuilders.Sort((x, y) => ((int)x.Builder.ShipType).CompareTo((int)y.Builder.ShipType)); m_curentIndex = shipsObjectBuilders.IndexOf(currentShipBuilder); MyMwcObjectBuilder_Inventory otherSideInventoryBuilder = otherSideInventory != null?otherSideInventory.GetObjectBuilder(true) : null; if (closeOtherSideInventory) { Debug.Assert(otherSideInventory != null); otherSideInventory.Close(); } m_currentInventoryScreen = new MyGuiScreenInventory(shipsObjectBuilders, m_curentIndex, m_player.Money, m_tradeForMoney, otherSideInventoryBuilder, otherSideInventoryName, m_inventoryScreenType); m_currentInventoryScreen.OnSave += Save; m_currentInventoryScreen.Closed += OnInventoryScreenClosed; MyGuiScreenGamePlay.Static.HideSelectAmmo(); return(m_currentInventoryScreen); }
private void OnEditButtonClick(MyGuiControlButton sender) { var selectedItem = m_templatesListbox.GetSelectedItem(); if (selectedItem != null) { var selectedType = (MyMwcObjectBuilder_SmallShip_TypesEnum) m_shipTypeCombobox.GetSelectedKey(); m_selectedTemplate = MySmallShipTemplates.GetTemplate(selectedType, selectedItem.Value); var builders = new List<MySmallShipBuilderWithName> { new MySmallShipBuilderWithName(m_selectedTemplate.Builder) }; var inventory = new MyInventory(); inventory.FillInventoryWithAllItems(null, 100); var gui = new MyGuiScreenInventory( builders, 0, inventory.GetObjectBuilder(false), MyTextsWrapper.Get(MyTextsWrapperEnum.AllItemsInventory)); gui.OnSave += UpdateTemplate; MyGuiManager.AddScreen(gui); } else { WarnNotSelected(); } }
private static void Save(MyGuiScreenInventory sender, MyGuiScreenInventorySaveResult saveResult) { // save money if (m_tradeForMoney) { m_player.Money = saveResult.Money; } bool isTradingWithMotherShip = IsTradingWithMothership(); List <MyInventoryItem> itemsToMothership = new List <MyInventoryItem>(); // save ships for (int i = 0; i < saveResult.SmallShipsObjectBuilders.Count; i++) { MyMwcObjectBuilder_SmallShip shipBuilder = saveResult.SmallShipsObjectBuilders[i].Builder; if (i == saveResult.CurrentIndex) { if (m_curentIndex == saveResult.CurrentIndex) { // we want init weapons only when weapons are not same if (!WeaponBuildersAreSame(m_player.Ship.Weapons.GetWeaponsObjectBuilders(true), shipBuilder.Weapons)) { m_player.Ship.Weapons.Init(shipBuilder.Weapons, shipBuilder.AssignmentOfAmmo); } m_player.Ship.Inventory.Init(shipBuilder.Inventory); m_player.Ship.Armor = shipBuilder.Armor; m_player.Ship.Engine = shipBuilder.Engine; } else { var oldShip = m_player.Ship; m_player.Ship.MarkForClose(); if (MyMultiplayerGameplay.IsRunning) { MyMultiplayerGameplay.Static.Respawn(shipBuilder, m_player.Ship.WorldMatrix); } else { var ship = MyEntities.CreateFromObjectBuilderAndAdd(null, shipBuilder, m_player.Ship.WorldMatrix); } // Update bots - bot logic runs on host MyBotCoordinator.ChangeShip(oldShip, m_player.Ship); } } else { if (isTradingWithMotherShip) { MyInventoryItem shipInventoryItem = MyInventory.CreateInventoryItemFromObjectBuilder(shipBuilder); itemsToMothership.Add(shipInventoryItem); //m_shipsInventoryOwner.Inventory.AddInventoryItem(shipInventoryItem); } } } // save other side inventory if (m_inventoryScreenType != MyGuiScreenInventoryType.GodEditor) { if (m_otherSideInventoryOwner != null) { if (isTradingWithMotherShip) { for (int i = saveResult.OtherSideInventoryObjectBuilder.InventoryItems.Count - 1; i >= 0; i--) { MyMwcObjectBuilder_InventoryItem itemBuilder = saveResult.OtherSideInventoryObjectBuilder.InventoryItems[i]; if (itemBuilder.IsTemporaryItem) { saveResult.OtherSideInventoryObjectBuilder.InventoryItems.RemoveAt(i); // because smallships was added when ships were saved if (itemBuilder.ItemObjectBuilder.GetObjectBuilderType() != MyMwcObjectBuilderTypeEnum.SmallShip_Player) { itemsToMothership.Add(MyInventory.CreateInventoryItemFromInventoryItemObjectBuilder(itemBuilder)); } } } } m_otherSideInventoryOwner.Inventory.Init(saveResult.OtherSideInventoryObjectBuilder); } } if (isTradingWithMotherShip) { m_shipsInventoryOwner.Inventory.AddInventoryItems(itemsToMothership); } }
public static MyGuiScreenInventory OpenInventory(MyGuiScreenInventoryType inventoryScreenType, MyEntity otherSide = null, MySmallShipInteractionActionEnum? action = null) { MyMwcLog.WriteLine("OpenInventory()"); // return harvester when opening inventory, harvester can update inventory, which would not propagete to inventory screen and closing inventory would override those changes var harvester = MySession.PlayerShip.Weapons.GetMountedHarvestingDevice(); if (harvester != null && harvester.CurrentState != MyHarvestingDeviceEnum.InsideShip) harvester.Shot(null); StringBuilder otherSideInventoryName = null; MyInventory otherSideInventory = null; List<MySmallShipBuilderWithName> shipsObjectBuilders = null; bool closeOtherSideInventory = false; m_inventoryScreenType = inventoryScreenType; m_shipsInventoryOwner = MySession.Static; m_player = MySession.Static.Player; m_detectedEntity = otherSide; m_detectedAction = action; shipsObjectBuilders = new List<MySmallShipBuilderWithName>(); shipsObjectBuilders.Add(new MySmallShipBuilderWithName(MySession.PlayerShip.GetObjectBuilder(true) as MyMwcObjectBuilder_SmallShip_Player)); switch(m_inventoryScreenType) { case MyGuiScreenInventoryType.GodEditor: LoadGodEditorInventory(ref otherSideInventory, ref otherSideInventoryName, ref shipsObjectBuilders); closeOtherSideInventory = true; break; case MyGuiScreenInventoryType.InGameEditor: LoadIngameEditorInventory(ref otherSideInventory, ref otherSideInventoryName); break; case MyGuiScreenInventoryType.Game: LoadGameInventory(ref otherSideInventory, ref otherSideInventoryName, ref shipsObjectBuilders); break; } var currentShipBuilder = shipsObjectBuilders[0]; shipsObjectBuilders.Sort((x, y) => ((int)x.Builder.ShipType).CompareTo((int)y.Builder.ShipType)); m_curentIndex = shipsObjectBuilders.IndexOf(currentShipBuilder); MyMwcObjectBuilder_Inventory otherSideInventoryBuilder = otherSideInventory != null ? otherSideInventory.GetObjectBuilder(true) : null; if (closeOtherSideInventory) { Debug.Assert(otherSideInventory != null); otherSideInventory.Close(); } m_currentInventoryScreen = new MyGuiScreenInventory(shipsObjectBuilders, m_curentIndex, m_player.Money, m_tradeForMoney, otherSideInventoryBuilder, otherSideInventoryName, m_inventoryScreenType); m_currentInventoryScreen.OnSave += Save; m_currentInventoryScreen.Closed += OnInventoryScreenClosed; MyGuiScreenGamePlay.Static.HideSelectAmmo(); return m_currentInventoryScreen; }
private void OnInventoryClick(MyGuiControlButton sender) { MyInventory inventory = new MyInventory(); inventory.FillInventoryWithAllItems(null, 100); List<MySmallShipBuilderWithName> tempList = new List<MySmallShipBuilderWithName>(); tempList.Add(new MySmallShipBuilderWithName(m_bot.GetObjectBuilder(true) as MyMwcObjectBuilder_SmallShip_Bot)); MyGuiScreenInventory inventoryScreen = new MyGuiScreenInventory(tempList, 0, inventory.GetObjectBuilder(false), null, true); inventoryScreen.OnSave += OnEditBotFromScreen; MyGuiManager.AddScreen(inventoryScreen); }
private static void Save(MyGuiScreenInventory sender, MyGuiScreenInventorySaveResult saveResult) { // save money if (m_tradeForMoney) { m_player.Money = saveResult.Money; } bool isTradingWithMotherShip = IsTradingWithMothership(); List<MyInventoryItem> itemsToMothership = new List<MyInventoryItem>(); // save ships for (int i = 0; i < saveResult.SmallShipsObjectBuilders.Count; i++) { MyMwcObjectBuilder_SmallShip shipBuilder = saveResult.SmallShipsObjectBuilders[i].Builder; if (i == saveResult.CurrentIndex) { if (m_curentIndex == saveResult.CurrentIndex) { // we want init weapons only when weapons are not same if (!WeaponBuildersAreSame(m_player.Ship.Weapons.GetWeaponsObjectBuilders(true), shipBuilder.Weapons)) { m_player.Ship.Weapons.Init(shipBuilder.Weapons, shipBuilder.AssignmentOfAmmo); } m_player.Ship.Inventory.Init(shipBuilder.Inventory); m_player.Ship.Armor = shipBuilder.Armor; m_player.Ship.Engine = shipBuilder.Engine; } else { var oldShip = m_player.Ship; m_player.Ship.MarkForClose(); if (MyMultiplayerGameplay.IsRunning) { MyMultiplayerGameplay.Static.Respawn(shipBuilder, m_player.Ship.WorldMatrix); } else { var ship = MyEntities.CreateFromObjectBuilderAndAdd(null, shipBuilder, m_player.Ship.WorldMatrix); } // Update bots - bot logic runs on host MyBotCoordinator.ChangeShip(oldShip, m_player.Ship); } } else { if (isTradingWithMotherShip) { MyInventoryItem shipInventoryItem = MyInventory.CreateInventoryItemFromObjectBuilder(shipBuilder); itemsToMothership.Add(shipInventoryItem); //m_shipsInventoryOwner.Inventory.AddInventoryItem(shipInventoryItem); } } } // save other side inventory if (m_inventoryScreenType != MyGuiScreenInventoryType.GodEditor) { if (m_otherSideInventoryOwner != null) { if (isTradingWithMotherShip) { for (int i = saveResult.OtherSideInventoryObjectBuilder.InventoryItems.Count - 1; i >= 0; i--) { MyMwcObjectBuilder_InventoryItem itemBuilder = saveResult.OtherSideInventoryObjectBuilder.InventoryItems[i]; if (itemBuilder.IsTemporaryItem) { saveResult.OtherSideInventoryObjectBuilder.InventoryItems.RemoveAt(i); // because smallships was added when ships were saved if (itemBuilder.ItemObjectBuilder.GetObjectBuilderType() != MyMwcObjectBuilderTypeEnum.SmallShip_Player) { itemsToMothership.Add(MyInventory.CreateInventoryItemFromInventoryItemObjectBuilder(itemBuilder)); } } } } m_otherSideInventoryOwner.Inventory.Init(saveResult.OtherSideInventoryObjectBuilder); } } if (isTradingWithMotherShip) { m_shipsInventoryOwner.Inventory.AddInventoryItems(itemsToMothership); } }
private void OnAddClick(MyGuiControlButton sender) { //List<MySmallShipBuilderWithName> builders = new List<MySmallShipBuilderWithName>(); //for (int i = 0; i < MyGuiSmallShipHelpers.MyMwcObjectBuilder_SmallShip_TypesEnumValues.Length; i++) //{ // builders.Add(new MySmallShipBuilderWithName(MyMwcObjectBuilder_SmallShip_Bot.CreateObjectBuilderWithAllItems( // (MyMwcObjectBuilder_SmallShip_TypesEnum)MyGuiSmallShipHelpers.MyMwcObjectBuilder_SmallShip_TypesEnumValues.GetValue(i)))); //} List<MySmallShipBuilderWithName> builders = GetTemplatesForCombobox(); MyInventory inventory = new MyInventory(); inventory.FillInventoryWithAllItems(null, 100); MyGuiScreenInventory inventoryScreen = new MyGuiScreenInventory(builders, 0, inventory.GetObjectBuilder(false), MyTextsWrapper.Get(MyTextsWrapperEnum.AllItemsInventory), true); inventoryScreen.OnSave += OnAddBotFromScreen; MyGuiManager.AddScreen(inventoryScreen); }