public void removeMedicalRoom(Medbay medicalRoom)
 {
     lock (allMedicalRooms) {
         allMedicalRooms.Remove(medicalRoom);
         logger.WriteLine("Medical Room Removed Event: Medical Room " + medicalRoom + " removed!");
     }
 }
 public void addMedicalRoom(Medbay medicalRoom)
 {
     lock (allMedicalRooms) {
         allMedicalRooms.Add(medicalRoom);
         logger.WriteLine("Medical Room Added Event: Medical Room " + medicalRoom + " added!");
     }
 }
Ejemplo n.º 3
0
        private void GenerateShipObjects()
        {
            TiledMapObject[] objects = _tiledMap.GetLayer <TiledMapObjectLayer>("Breakables").Objects;

            // Loops through Objects created in Tiled
            foreach (TiledMapObject obj in objects)
            {
                // Default asset for this object. Defined by Custom Property called 'sprite' in Tiled
                if (!obj.Properties.TryGetValue("sprite", out string assetName))
                {
                    continue;
                }
                // Load sprite with given asset path/name
                Sprite sprite = new Sprite(_game.Content.Load <Texture2D>(assetName));

                // Some sprites have a broken representation of them (ie Hull and O2 Vent).
                // So we should attempt to load a broken representation of this asset if at specified in Tiled Custom Property 'broken_sprite'
                // The BreakableComponent class should also cater for and skip 'null' BrokenSprites where applicable
                Sprite brokenSprite = null;
                if (obj.Properties.TryGetValue("broken_sprite", out string brokenAssetName))
                {
                    brokenSprite = new Sprite(_game.Content.Load <Texture2D>(brokenAssetName));
                }

                string type = string.Empty;
                // If no valid Custom Property called 'item' is set for the required item, default it to screwdriver.
                // This is to ensure that the gameplay can flow as expected.
                if (!obj.Properties.TryGetValue("item", out type))
                {
                    type = "screwdriver";
                }

                // Parse 'type' to Enum of 'ItemType'. Assumes a valid entry.
                ItemType item = (ItemType)Enum.Parse(typeof(ItemType), type, true);

                Vector2 pos = Vector2.Zero;
                pos.X = obj.Position.X + sprite.Origin.X;
                pos.Y = obj.Position.Y + sprite.Origin.Y;

                BreakableComponent b = new BreakableComponent(sprite, pos, item, obj.Name, brokenSprite);
                switch (obj.Type)
                {
                case "O2Component":
                    b.OnComponentActivated += TurnOffO2;
                    b.OnComponentFixed     += TurnOnO2;
                    break;

                case "Medbay":
                    Medbay m = new Medbay(sprite, pos, item, obj.Name, brokenSprite);
                    m.OnComponentInteracted += HealPlayer;
                    b = m;
                    break;

                case "Shield":
                    b.OnComponentActivated += TurnOffShield;
                    b.OnComponentFixed     += TurnOnShield;
                    break;

                case "GravityGenerator":
                    b.OnComponentActivated += TurnOffGravity;
                    b.OnComponentFixed     += TurnOnGravity;
                    break;

                case "Hull":
                    Hull h = new Hull(sprite, pos, item, obj.Name, brokenSprite);
                    b = h;
                    break;
                }
                if (b != null)
                {
                    _entities.Add(b);
                }
            }
        }