public static MyToolbarItem ToItem(ToolbarItem msgItem)
        {
            MyToolbarItem item = null;

            if (string.IsNullOrEmpty(msgItem.GroupName))
            {
                MyTerminalBlock block;
                if (MyEntities.TryGetEntityById(msgItem.EntityID, out block))
                {
                    var builder = MyToolbarItemFactory.TerminalBlockObjectBuilderFromBlock(block);
                    builder.Action     = msgItem.Action;
                    builder.Parameters = msgItem.Parameters;
                    item = MyToolbarItemFactory.CreateToolbarItem(builder);
                }
            }
            else
            {
                MyCubeBlock parent;
                if (MyEntities.TryGetEntityById(msgItem.EntityID, out parent))
                {
                    var grid      = parent.CubeGrid;
                    var groupName = msgItem.GroupName;
                    var group     = grid.GridSystems.TerminalSystem.BlockGroups.Find(x => x.Name.ToString() == groupName);
                    if (group != null)
                    {
                        var builder = MyToolbarItemFactory.TerminalGroupObjectBuilderFromGroup(@group);
                        builder.Action        = msgItem.Action;
                        builder.Parameters    = msgItem.Parameters;
                        builder.BlockEntityId = msgItem.EntityID;
                        item = MyToolbarItemFactory.CreateToolbarItem(builder);
                    }
                }
            }
            return(item);
        }
Esempio n. 2
0
        static void OnChangeSlotItemRequest(ref PlayerToolbarChangeSlotMsg msg, MyNetworkClient sender)
        {
            var playerId = new PlayerId(sender.SteamUserId, msg.PlayerSerialId);

            if (!MySession.Static.Toolbars.ContainsToolbar(playerId))
            {
                return;
            }

            MyDefinitionBase def;

            MyDefinitionManager.Static.TryGetDefinition(msg.DefId, out def);
            if (def == null)
            {
                return;
            }

            var ob      = MyToolbarItemFactory.ObjectBuilderFromDefinition(def);
            var tItem   = MyToolbarItemFactory.CreateToolbarItem(ob);
            var toolbar = MySession.Static.Toolbars.TryGetPlayerToolbar(playerId);

            if (toolbar == null)
            {
                return;
            }
            toolbar.SetItemAtIndex(msg.Index, tItem);
        }
Esempio n. 3
0
        public override void Init(MyObjectBuilder_CubeBlock objectBuilder, MyCubeGrid cubeGrid)
        {
            SyncFlag = true;

            base.Init(objectBuilder, cubeGrid);

            var builder = (MyObjectBuilder_AirVent)objectBuilder;

            InitializeConveyorEndpoint();
            NeedsUpdate = MyEntityUpdateEnum.EACH_FRAME | MyEntityUpdateEnum.EACH_10TH_FRAME | MyEntityUpdateEnum.EACH_100TH_FRAME;

            SourceComp.Init(BlockDefinition.ResourceSourceGroup, new MyResourceSourceInfo {
                ResourceTypeId = m_oxygenGasId, DefinedOutput = BlockDefinition.VentilationCapacityPerSecond, ProductionToCapacityMultiplier = 1
            });
            SourceComp.OutputChanged += Source_OutputChanged;
            var sinkDataList = new List <MyResourceSinkInfo>
            {
                new MyResourceSinkInfo {
                    ResourceTypeId = MyResourceDistributorComponent.ElectricityId, MaxRequiredInput = BlockDefinition.OperationalPowerConsumption, RequiredInputFunc = ComputeRequiredPower
                },
                new MyResourceSinkInfo {
                    ResourceTypeId = m_oxygenGasId, MaxRequiredInput = BlockDefinition.VentilationCapacityPerSecond, RequiredInputFunc = () => VentingCapacity(1f)
                },
            };

            ResourceSink.Init(
                BlockDefinition.ResourceSinkGroup,
                sinkDataList);
            ResourceSink.IsPoweredChanged    += PowerReceiver_IsPoweredChanged;
            ResourceSink.CurrentInputChanged += Sink_CurrentInputChanged;

            m_updateCounter        = 0;
            m_lastOutputUpdateTime = m_updateCounter;
            m_lastInputUpdateTime  = m_updateCounter;
            m_nextGasTransfer      = 0f;

            m_actionToolbar             = new MyToolbar(MyToolbarType.ButtonPanel, 2, 1);
            m_actionToolbar.DrawNumbers = false;
            m_actionToolbar.Init(null, this);

            if (builder.OnFullAction != null)
            {
                m_onFullAction = MyToolbarItemFactory.CreateToolbarItem(builder.OnFullAction);
            }

            if (builder.OnEmptyAction != null)
            {
                m_onEmptyAction = MyToolbarItemFactory.CreateToolbarItem(builder.OnEmptyAction);
            }

            UpdateEmissivity();
            UdpateTexts();

            AddDebugRenderComponent(new Components.MyDebugRenderComponentDrawConveyorEndpoint(m_conveyorEndpoint));

            SlimBlock.ComponentStack.IsFunctionalChanged += ComponentStack_IsFunctionalChanged;
            IsWorkingChanged += MyAirVent_IsWorkingChanged;

            SetDepressurizing(builder.IsDepressurizing);
        }
Esempio n. 4
0
        static void OnChangeSlotItemRequest(int playerSerialId, int index, DefinitionIdBlit defId)
        {
            ulong senderId = GetSenderIdSafe();
            var   playerId = new PlayerId(senderId, playerSerialId);

            if (!MySession.Static.Toolbars.ContainsToolbar(playerId))
            {
                return;
            }

            MyDefinitionBase def;

            MyDefinitionManager.Static.TryGetDefinition(defId, out def);
            if (def == null)
            {
                return;
            }

            var ob      = MyToolbarItemFactory.ObjectBuilderFromDefinition(def);
            var tItem   = MyToolbarItemFactory.CreateToolbarItem(ob);
            var toolbar = MySession.Static.Toolbars.TryGetPlayerToolbar(playerId);

            if (toolbar == null)
            {
                return;
            }
            toolbar.SetItemAtIndex(index, tItem);
        }
Esempio n. 5
0
            private static void OnToolbarItemChanged(MySyncAirVent sync, ref ChangeToolbarItemMsg msg, MyNetworkClient sender)
            {
                MyToolbarItem item = null;

                if (msg.Item.EntityID != 0)
                {
                    if (string.IsNullOrEmpty(msg.Item.GroupName))
                    {
                        MyTerminalBlock block;
                        if (MyEntities.TryGetEntityById <MyTerminalBlock>(msg.Item.EntityID, out block))
                        {
                            var builder = MyToolbarItemFactory.TerminalBlockObjectBuilderFromBlock(block);
                            builder.Action     = msg.Item.Action;
                            builder.Parameters = msg.Item.Parameters;
                            item = MyToolbarItemFactory.CreateToolbarItem(builder);
                        }
                    }
                    else
                    {
                        MyAirVent parent;
                        if (MyEntities.TryGetEntityById <MyAirVent>(msg.Item.EntityID, out parent))
                        {
                            var grid      = parent.CubeGrid;
                            var groupName = msg.Item.GroupName;
                            var group     = grid.GridSystems.TerminalSystem.BlockGroups.Find((x) => x.Name.ToString() == groupName);
                            if (group != null)
                            {
                                var builder = MyToolbarItemFactory.TerminalGroupObjectBuilderFromGroup(group);
                                builder.Action        = msg.Item.Action;
                                builder.BlockEntityId = msg.Item.EntityID;
                                builder.Parameters    = msg.Item.Parameters;
                                item = MyToolbarItemFactory.CreateToolbarItem(builder);
                            }
                        }
                    }
                }

                if (msg.Index == 0)
                {
                    sync.m_airVent.m_onFullAction = item;
                }
                else
                {
                    sync.m_airVent.m_onEmptyAction = item;
                }
                sync.m_airVent.RaisePropertiesChanged();

                if (Sync.IsServer)
                {
                    Sync.Layer.SendMessageToAllButOne(ref msg, sender.SteamUserId);
                }
            }
Esempio n. 6
0
        private void SetToolbarItem <T>(MyDefinitionId id, ToolbarLocation toolbarLocation)
            where T : MyObjectBuilder_ToolbarItemDefinition, new()
        {
            var toolbarItemBuilder = MyObjectBuilderSerializer.CreateNewObject <T>();

            toolbarItemBuilder.DefinitionId = id;

            var toolbar = m_session.Character.Toolbar;

            toolbar.SwitchToPage(toolbarLocation.Page);
            var item = MyToolbarItemFactory.CreateToolbarItem(toolbarItemBuilder);

            toolbar.SetItemAtSlot(toolbarLocation.Slot, item);
        }
Esempio n. 7
0
        private void SetToolbarItem <T>(int slot, int page, MyDefinitionId id)
            where T : MyObjectBuilder_ToolbarItemDefinition, new()
        {
            var toolbarItemBuilder = MyObjectBuilderSerializer.CreateNewObject <T>();

            toolbarItemBuilder.DefinitionId = id;

            var toolbar = m_session.Character.Toolbar;
            var owner   = toolbar.Owner;

            //toolbar.Owner = m_session.Character;
            toolbar.SwitchToPage(page);
            var item = MyToolbarItemFactory.CreateToolbarItem(toolbarItemBuilder);

            toolbar.SetItemAtSlot(slot, item);
        }
Esempio n. 8
0
        void SendToolbarItemChanged(ToolbarItem sentItem, int index)
        {
            m_syncing = true;
            MyToolbarItem item = null;

            if (sentItem.EntityID != 0)
            {
                if (string.IsNullOrEmpty(sentItem.GroupName))
                {
                    MyTerminalBlock block;
                    if (MyEntities.TryGetEntityById <MyTerminalBlock>(sentItem.EntityID, out block))
                    {
                        var builder = MyToolbarItemFactory.TerminalBlockObjectBuilderFromBlock(block);
                        builder._Action    = sentItem.Action;
                        builder.Parameters = sentItem.Parameters;
                        item = MyToolbarItemFactory.CreateToolbarItem(builder);
                    }
                }
                else
                {
                    var grid      = CubeGrid;
                    var groupName = sentItem.GroupName;
                    var group     = grid.GridSystems.TerminalSystem.BlockGroups.Find((x) => x.Name.ToString() == groupName);
                    if (group != null)
                    {
                        var builder = MyToolbarItemFactory.TerminalGroupObjectBuilderFromGroup(group);
                        builder._Action       = sentItem.Action;
                        builder.BlockEntityId = sentItem.EntityID;
                        builder.Parameters    = sentItem.Parameters;
                        item = MyToolbarItemFactory.CreateToolbarItem(builder);
                    }
                }
            }

            if (index == 0)
            {
                m_onFullAction = item;
            }
            else
            {
                m_onEmptyAction = item;
            }
            RaisePropertiesChanged();
            m_syncing = false;
        }
Esempio n. 9
0
        static void OnChangeSlotBuilderItemRequest(ref PlayerToolbarChangeSlotBuilderMsg msg, MyNetworkClient sender)
        {
            var playerId = new PlayerId(sender.SteamUserId, msg.PlayerSerialId);

            if (!MySession.Static.Toolbars.ContainsToolbar(playerId))
            {
                return;
            }

            var tItem   = MyToolbarItemFactory.CreateToolbarItem(msg.itemBuilder);
            var toolbar = MySession.Static.Toolbars.TryGetPlayerToolbar(playerId);

            if (toolbar == null)
            {
                return;
            }
            toolbar.SetItemAtIndex(msg.Index, tItem);
        }
Esempio n. 10
0
            private static void OnToolbarItemChanged(MySyncTimerBlock sync, ref ChangeToolbarItemMsg msg, MyNetworkClient sender)
            {
                sync.m_syncing = true;
                MyToolbarItem item = null;

                if (msg.Item.EntityID != 0)
                {
                    if (string.IsNullOrEmpty(msg.Item.GroupName))
                    {
                        MyTerminalBlock block;
                        if (MyEntities.TryGetEntityById <MyTerminalBlock>(msg.Item.EntityID, out block))
                        {
                            var builder = MyToolbarItemFactory.TerminalBlockObjectBuilderFromBlock(block);
                            builder.Action = msg.Item.Action;
                            item           = MyToolbarItemFactory.CreateToolbarItem(builder);
                        }
                    }
                    else
                    {
                        MyTimerBlock parent;
                        if (MyEntities.TryGetEntityById <MyTimerBlock>(msg.Item.EntityID, out parent))
                        {
                            var grid      = parent.CubeGrid;
                            var groupName = msg.Item.GroupName;
                            var group     = grid.GridSystems.TerminalSystem.BlockGroups.Find((x) => x.Name.ToString() == groupName);;
                            if (group != null)
                            {
                                var builder = MyToolbarItemFactory.TerminalGroupObjectBuilderFromGroup(group);
                                builder.Action        = msg.Item.Action;
                                builder.BlockEntityId = msg.Item.EntityID;
                                item = MyToolbarItemFactory.CreateToolbarItem(builder);
                            }
                        }
                    }
                }
                sync.m_timer.Toolbar.SetItemAtIndex(msg.Index, item);
                sync.m_syncing = false;
                if (Sync.IsServer)
                {
                    Sync.Layer.SendMessageToAll(ref msg);
                }
            }
Esempio n. 11
0
        static void OnChangeSlotBuilderItemRequest(int playerSerialId, int index,
                                                   [Serialize(MyObjectFlags.Dynamic, DynamicSerializerType = typeof(MyObjectBuilderDynamicSerializer))] MyObjectBuilder_ToolbarItem itemBuilder)
        {
            ulong senderId = GetSenderIdSafe();
            var   playerId = new PlayerId(senderId, playerSerialId);

            if (!MySession.Static.Toolbars.ContainsToolbar(playerId))
            {
                return;
            }

            var tItem   = MyToolbarItemFactory.CreateToolbarItem(itemBuilder);
            var toolbar = MySession.Static.Toolbars.TryGetPlayerToolbar(playerId);

            if (toolbar == null)
            {
                return;
            }
            toolbar.SetItemAtIndex(index, tItem);
        }
Esempio n. 12
0
        public override void Init(MyObjectBuilder_CubeBlock objectBuilder, MyCubeGrid cubeGrid)
        {
            SyncFlag = true;

            base.Init(objectBuilder, cubeGrid);

            var builder = (MyObjectBuilder_AirVent)objectBuilder;

            m_isDepressurizing = builder.IsDepressurizing;

            InitializeConveyorEndpoint();
            NeedsUpdate = MyEntityUpdateEnum.EACH_10TH_FRAME | MyEntityUpdateEnum.EACH_100TH_FRAME;

            PowerReceiver = new MyPowerReceiver(
                MyConsumerGroupEnum.Factory,
                false,
                BlockDefinition.OperationalPowerConsumption,
                ComputeRequiredPower);
            PowerReceiver.IsPoweredChanged += PowerReceiver_IsPoweredChanged;
            PowerReceiver.Update();

            m_actionToolbar             = new MyToolbar(MyToolbarType.ButtonPanel, 2, 1);
            m_actionToolbar.DrawNumbers = false;
            m_actionToolbar.Init(null, this);

            if (builder.OnFullAction != null)
            {
                m_onFullAction = MyToolbarItemFactory.CreateToolbarItem(builder.OnFullAction);
            }
            if (builder.OnEmptyAction != null)
            {
                m_onEmptyAction = MyToolbarItemFactory.CreateToolbarItem(builder.OnEmptyAction);
            }

            UpdateEmissivity();
            UdpateTexts();

            AddDebugRenderComponent(new Components.MyDebugRenderComponentDrawConveyorEndpoint(m_conveyorEndpoint));

            SlimBlock.ComponentStack.IsFunctionalChanged += ComponentStack_IsFunctionalChanged;
        }
Esempio n. 13
0
        public static MyToolbarItem ToItem(ToolbarItem msgItem)
        {
            MyToolbarItem item = null;

            if (msgItem.GunId != null)
            {
                MyObjectBuilder_ToolbarItemWeapon data = MyToolbarItemFactory.WeaponObjectBuilder();
                data.defId = msgItem.GunId.Value;
                item       = MyToolbarItemFactory.CreateToolbarItem(data);
            }
            else if (string.IsNullOrEmpty(msgItem.GroupName))
            {
                MyTerminalBlock block;
                if (Sandbox.Game.Entities.MyEntities.TryGetEntityById <MyTerminalBlock>(msgItem.EntityID, out block, false))
                {
                    MyObjectBuilder_ToolbarItemTerminalBlock data = MyToolbarItemFactory.TerminalBlockObjectBuilderFromBlock(block);
                    data._Action    = msgItem.Action;
                    data.Parameters = msgItem.Parameters;
                    item            = MyToolbarItemFactory.CreateToolbarItem(data);
                }
            }
            else
            {
                MyCubeBlock block2;
                if (Sandbox.Game.Entities.MyEntities.TryGetEntityById <MyCubeBlock>(msgItem.EntityID, out block2, false))
                {
                    string       groupName = msgItem.GroupName;
                    MyBlockGroup group     = block2.CubeGrid.GridSystems.TerminalSystem.BlockGroups.Find(x => x.Name.ToString() == groupName);
                    if (group != null)
                    {
                        MyObjectBuilder_ToolbarItemTerminalGroup data = MyToolbarItemFactory.TerminalGroupObjectBuilderFromGroup(group);
                        data._Action       = msgItem.Action;
                        data.Parameters    = msgItem.Parameters;
                        data.BlockEntityId = msgItem.EntityID;
                        item = MyToolbarItemFactory.CreateToolbarItem(data);
                    }
                }
            }
            return(item);
        }