Example #1
0
        /// <summary>
        /// Call Update() on every object in Entity.list
        /// </summary>
        public static void UpdateAll(float deltaTime, Camera cam)
        {
            foreach (Hull hull in Hull.hullList)
            {
                hull.Update(deltaTime, cam);
            }

            foreach (Structure structure in Structure.WallList)
            {
                structure.Update(deltaTime, cam);
            }


            //update gaps in random order, because otherwise in rooms with multiple gaps
            //the water/air will always tend to flow through the first gap in the list,
            //which may lead to weird behavior like water draining down only through
            //one gap in a room even if there are several
            foreach (Gap gap in Gap.GapList.OrderBy(g => Rand.Int(int.MaxValue)))
            {
                gap.Update(deltaTime, cam);
            }

            Powered.UpdatePower(deltaTime);
            foreach (Item item in Item.ItemList)
            {
                item.Update(deltaTime, cam);
            }

            UpdateAllProjSpecific(deltaTime);

            Spawner?.Update();
        }
Example #2
0
 public Gadget(float price, Powered.Power power)
 {
     _Price              = price;
     _Switches           = new Switch();
     _Buttons            = new Buttons();
     _Lights             = new Lights();
     _painted            = new Painted();
     _power              = new Powered();
     _power.DefaultPower = power;
 }
Example #3
0
 // Use this for initialization
 protected virtual void Start()
 {
     if (m_providesPower)
     {
         Collider[] colliders = Physics.OverlapSphere(transform.position, 0.1f);
         foreach (var c in colliders)
         {
             Powered p = c.GetComponentInParent <Powered>();
             if (p && p != this && p.m_recievesPower)
             {
                 Debug.Log(p.gameObject.name);
                 p.m_sources.Add(this);
                 break;
             }
         }
     }
 }
Example #4
0
    protected override void Start()
    {
        if (Application.isPlaying)
        {
            base.Start();
            //m_terminus.AddSource(this);

            if (m_recievesPower)
            {
                Collider[] colliders = Physics.OverlapSphere(transform.position, 0.1f);
                foreach (var c in colliders)
                {
                    Powered p = c.GetComponentInParent <Powered>();
                    if (p && p != this && p.providesPower)
                    {
                        m_sources.Add(p);
                        break;
                    }
                }
            }
        }
    }
Example #5
0
        public override void Start()
        {
            base.Start();

            radioSpeakerName = TextManager.Get("Tutorial.Radio.Speaker");
            engineer         = Character.Controlled;

            var toolbox = engineer.Inventory.FindItemByIdentifier("toolbox");

            toolbox.Unequip(engineer);
            engineer.Inventory.RemoveItem(toolbox);

            var repairOrder = Order.PrefabList.Find(order => order.AITag == "repairsystems");

            engineer_repairIcon      = repairOrder.SymbolSprite;
            engineer_repairIconColor = repairOrder.Color;

            var reactorOrder = Order.PrefabList.Find(order => order.AITag == "operatereactor");

            engineer_reactorIcon      = reactorOrder.SymbolSprite;
            engineer_reactorIconColor = reactorOrder.Color;

            // Other tutorial items
            tutorial_securityFinalDoorLight = Item.ItemList.Find(i => i.HasTag("tutorial_securityfinaldoorlight")).GetComponent <LightComponent>();
            tutorial_mechanicFinalDoorLight = Item.ItemList.Find(i => i.HasTag("tutorial_mechanicfinaldoorlight")).GetComponent <LightComponent>();
            tutorial_submarineSteering      = Item.ItemList.Find(i => i.HasTag("command")).GetComponent <Steering>();

            tutorial_submarineSteering.CanBeSelected = false;
            foreach (ItemComponent ic in tutorial_submarineSteering.Item.Components)
            {
                ic.CanBeSelected = false;
            }

            SetDoorAccess(null, tutorial_securityFinalDoorLight, false);
            SetDoorAccess(null, tutorial_mechanicFinalDoorLight, false);

            // Room 2
            engineer_equipmentObjectiveSensor = Item.ItemList.Find(i => i.HasTag("engineer_equipmentobjectivesensor")).GetComponent <MotionSensor>();
            engineer_equipmentCabinet         = Item.ItemList.Find(i => i.HasTag("engineer_equipmentcabinet")).GetComponent <ItemContainer>();
            engineer_firstDoor      = Item.ItemList.Find(i => i.HasTag("engineer_firstdoor")).GetComponent <Door>();
            engineer_firstDoorLight = Item.ItemList.Find(i => i.HasTag("engineer_firstdoorlight")).GetComponent <LightComponent>();

            SetDoorAccess(engineer_firstDoor, engineer_firstDoorLight, false);

            // Room 3
            engineer_reactorObjectiveSensor = Item.ItemList.Find(i => i.HasTag("engineer_reactorobjectivesensor")).GetComponent <MotionSensor>();
            tutorial_oxygenGenerator        = Item.ItemList.Find(i => i.HasTag("tutorial_oxygengenerator")).GetComponent <Powered>();
            engineer_reactor                       = Item.ItemList.Find(i => i.HasTag("engineer_reactor")).GetComponent <Reactor>();
            engineer_reactor.FireDelay             = engineer_reactor.MeltdownDelay = float.PositiveInfinity;
            engineer_reactor.FuelConsumptionRate   = 0.0f;
            engineer_reactor.OnOffSwitch.BarScroll = 1f;
            reactorOperatedProperly                = false;

            engineer_secondDoor      = Item.ItemList.Find(i => i.HasTag("engineer_seconddoor")).GetComponent <Door>();;
            engineer_secondDoorLight = Item.ItemList.Find(i => i.HasTag("engineer_seconddoorlight")).GetComponent <LightComponent>();

            SetDoorAccess(engineer_secondDoor, engineer_secondDoorLight, false);

            // Room 4
            engineer_repairJunctionBoxObjectiveSensor = Item.ItemList.Find(i => i.HasTag("engineer_repairjunctionboxobjectivesensor")).GetComponent <MotionSensor>();
            engineer_brokenJunctionBox = Item.ItemList.Find(i => i.HasTag("engineer_brokenjunctionbox"));
            engineer_thirdDoor         = Item.ItemList.Find(i => i.HasTag("engineer_thirddoor")).GetComponent <Door>();
            engineer_thirdDoorLight    = Item.ItemList.Find(i => i.HasTag("engineer_thirddoorlight")).GetComponent <LightComponent>();

            engineer_brokenJunctionBox.Indestructible = false;
            engineer_brokenJunctionBox.Condition      = 0f;

            SetDoorAccess(engineer_thirdDoor, engineer_thirdDoorLight, false);

            // Room 5
            engineer_disconnectedJunctionBoxObjectiveSensor = Item.ItemList.Find(i => i.HasTag("engineer_disconnectedjunctionboxobjectivesensor")).GetComponent <MotionSensor>();

            engineer_disconnectedJunctionBoxes    = new PowerTransfer[4];
            engineer_disconnectedConnectionPanels = new ConnectionPanel[4];

            for (int i = 0; i < engineer_disconnectedJunctionBoxes.Length; i++)
            {
                engineer_disconnectedJunctionBoxes[i]           = Item.ItemList.Find(item => item.HasTag($"engineer_disconnectedjunctionbox_{i + 1}")).GetComponent <PowerTransfer>();
                engineer_disconnectedConnectionPanels[i]        = engineer_disconnectedJunctionBoxes[i].Item.GetComponent <ConnectionPanel>();
                engineer_disconnectedConnectionPanels[i].Locked = false;

                for (int j = 0; j < engineer_disconnectedJunctionBoxes[i].PowerConnections.Count; j++)
                {
                    foreach (Wire wire in engineer_disconnectedJunctionBoxes[i].PowerConnections[j].Wires)
                    {
                        if (wire == null)
                        {
                            continue;
                        }
                        wire.Locked = true;
                    }
                }
            }

            engineer_wire_1             = Item.ItemList.Find(i => i.HasTag("engineer_wire_1"));
            engineer_wire_1.SpriteColor = Color.Transparent;
            engineer_wire_2             = Item.ItemList.Find(i => i.HasTag("engineer_wire_2"));
            engineer_wire_2.SpriteColor = Color.Transparent;
            engineer_lamp_1             = Item.ItemList.Find(i => i.HasTag("engineer_lamp_1")).GetComponent <Powered>();
            engineer_lamp_2             = Item.ItemList.Find(i => i.HasTag("engineer_lamp_2")).GetComponent <Powered>();
            engineer_fourthDoor         = Item.ItemList.Find(i => i.HasTag("engineer_fourthdoor")).GetComponent <Door>();
            engineer_fourthDoorLight    = Item.ItemList.Find(i => i.HasTag("engineer_fourthdoorlight")).GetComponent <LightComponent>();
            SetDoorAccess(engineer_fourthDoor, engineer_fourthDoorLight, false);

            // Room 6
            engineer_workingPump = Item.ItemList.Find(i => i.HasTag("engineer_workingpump")).GetComponent <Pump>();
            engineer_workingPump.Item.CurrentHull.WaterVolume += engineer_workingPump.Item.CurrentHull.Volume;
            engineer_workingPump.IsActive = true;
            tutorial_lockedDoor_1         = Item.ItemList.Find(i => i.HasTag("tutorial_lockeddoor_1")).GetComponent <Door>();
            SetDoorAccess(tutorial_lockedDoor_1, null, true);

            // Submarine
            tutorial_submarineDoor      = Item.ItemList.Find(i => i.HasTag("tutorial_submarinedoor")).GetComponent <Door>();
            tutorial_submarineDoorLight = Item.ItemList.Find(i => i.HasTag("tutorial_submarinedoorlight")).GetComponent <LightComponent>();
            SetDoorAccess(tutorial_submarineDoor, tutorial_submarineDoorLight, true);

            tutorial_enteredSubmarineSensor = Item.ItemList.Find(i => i.HasTag("tutorial_enteredsubmarinesensor")).GetComponent <MotionSensor>();
            engineer_submarineJunctionBox_1 = Item.ItemList.Find(i => i.HasTag("engineer_submarinejunctionbox_1"));
            engineer_submarineJunctionBox_2 = Item.ItemList.Find(i => i.HasTag("engineer_submarinejunctionbox_2"));
            engineer_submarineJunctionBox_3 = Item.ItemList.Find(i => i.HasTag("engineer_submarinejunctionbox_3"));
            engineer_submarineReactor       = Item.ItemList.Find(i => i.HasTag("engineer_submarinereactor")).GetComponent <Reactor>();
            engineer_submarineReactor.OnOffSwitch.BarScrollValue = .25f;
            engineer_submarineReactor.IsActive = engineer_submarineReactor.AutoTemp = false;

            engineer_submarineJunctionBox_1.Indestructible = false;
            engineer_submarineJunctionBox_1.Condition      = 0f;
            engineer_submarineJunctionBox_2.Indestructible = false;
            engineer_submarineJunctionBox_2.Condition      = 0f;
            engineer_submarineJunctionBox_3.Indestructible = false;
            engineer_submarineJunctionBox_3.Condition      = 0f;
        }
Example #6
0
 public void AddSource(Powered powered)
 {
     m_sources.Add(powered);
 }