コード例 #1
0
        private void UpdateTemplate(MyGuiScreenInventory sender, MyGuiScreenInventorySaveResult saveresult)
        {
            Debug.Assert(m_selectedTemplate != null);

            m_selectedTemplate.Builder = saveresult.SmallShipsObjectBuilders[saveresult.CurrentIndex].Builder;
            sender.OnSave -= UpdateTemplate;
        }
コード例 #2
0
        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);
            }
        }
コード例 #3
0
        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();
            }
        }
コード例 #4
0
 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;
 }
コード例 #5
0
        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;
        }
コード例 #6
0
        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);
            }
        }
コード例 #7
0
        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);
        }
コード例 #8
0
        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);
        }
コード例 #9
0
        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);
            }
        }
コード例 #10
0
 private void OnEditBotFromScreen(MyGuiScreenInventory sender, MyGuiScreenInventorySaveResult saveResult)
 {
     MySmallShipBuilderWithName resultBuilder = saveResult.SmallShipsObjectBuilders[saveResult.CurrentIndex];
     m_inventoryBuilder = resultBuilder.Builder;
 }
コード例 #11
0
        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);
            }
        }
コード例 #12
0
        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;
        }
コード例 #13
0
        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);
        }
コード例 #14
0
        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();
            }
        }
コード例 #15
0
        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);
            }
        }
コード例 #16
0
        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;
        }
コード例 #17
0
        private void OnEditBotFromScreen(MyGuiScreenInventory sender, MyGuiScreenInventorySaveResult saveResult)
        {
            MySmallShipBuilderWithName resultBuilder = saveResult.SmallShipsObjectBuilders[saveResult.CurrentIndex];

            m_inventoryBuilder = resultBuilder.Builder;
        }
コード例 #18
0
        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);
            }
        }        
コード例 #19
0
        private void UpdateTemplate(MyGuiScreenInventory sender, MyGuiScreenInventorySaveResult saveresult)
        {
            Debug.Assert(m_selectedTemplate != null);

            m_selectedTemplate.Builder = saveresult.SmallShipsObjectBuilders[saveresult.CurrentIndex].Builder;
            sender.OnSave -= UpdateTemplate;
        }
コード例 #20
0
        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);
        }
コード例 #21
0
 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);
     }
 }        
コード例 #22
0
        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);
            }
        }
コード例 #23
0
 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);
 }
コード例 #24
0
 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;
 }