示例#1
0
        public void StopRepairProgress(GameObject _repairer)
        {
            if ((repairers.Count == 0) || (_repairer != repairer))
            {
                return;
            }

            // remove repairer and toggle its progress bar
            pawnRepairUI.ToggleProgressBar();
            repairers.RemoveAt(0);

            // check if the room is fixed
            if (!IsDamaged || repairers.Count == 0)
            {
                repairers.Clear();
                repairer     = null;
                pawnRepairUI = null;
                repairFill   = 0;
                StopCoroutine("RepairRoom");
            }
            else if (repairers.Count > 0)
            {
                // if it's not fixed, transfer the job to another unit if there's any
                repairer     = repairers[0];
                pawnRepairUI = repairer.GetComponent <PawnUIManager>();
            }
        }
示例#2
0
        public virtual void Start()
        {
            // set room layer mask
            roomLayerMask = LayerMask.GetMask("Aimable");

            // set periodic check
            onPeriodicCheck += CheckCurrentRoom;

            // set state
            state = State.Idle;

            // set crewmember's ship
            ship = GetComponentInParent <Ship>();

            ship.onShipDestroyed += Destroy;

            // get pathfinder
            path = this.GetComponent <PathFinding>();
            // get pawn ui manager
            pawnUI = this.GetComponent <PawnUIManager>();

            isDestinationSet = false;

            // set crewmember initial stats
            SetupMemberStats();

            // set health and progress bar
            SetupUIElements();
        }
示例#3
0
        public void StopFixingBreach(GameObject _breachfixer)
        {
            if ((breachFixers.Count == 0) || (_breachfixer != breachFixer))
            {
                return;
            }

            // remove repairer and toggle its progress bar
            pawnBreachFixerUI.ToggleProgressBar();
            breachFixers.RemoveAt(0);

            // check if the room is fixed
            if (!IsBreached || breachFixers.Count == 0)
            {
                breachFixers.Clear();
                breachFixer       = null;
                pawnBreachFixerUI = null;
                breachFixingFill  = 0;
                StopCoroutine("FixRoomBreach");
            }
            else if (breachFixers.Count > 0)
            {
                // if it's not fixed, transfer the job to another unit if there's any
                breachFixer       = breachFixers[0];
                pawnBreachFixerUI = breachFixer.GetComponent <PawnUIManager>();
            }
        }
示例#4
0
        public void Repair(GameObject _repairer)
        {
            repairers.Add(_repairer);

            if (repairers.Count == 1)
            {
                repairer     = _repairer;
                pawnRepairUI = repairer.GetComponent <PawnUIManager>();
                StartCoroutine("RepairRoom");
            }
        }
示例#5
0
        public void RepairBreach(GameObject _breachFixer)
        {
            breachFixers.Add(_breachFixer);

            if (breachFixers.Count == 1)
            {
                breachFixer       = _breachFixer;
                pawnBreachFixerUI = breachFixer.GetComponent <PawnUIManager>();
                StartCoroutine("FixRoomBreach");
            }
        }
示例#6
0
        public void ExtinguishFire(GameObject _firefighter)
        {
            firefighters.Add(_firefighter);

            if (firefighters.Count == 1)
            {
                firefighter       = _firefighter;
                pawnFirefighterUI = firefighter.GetComponent <PawnUIManager>();
                StartCoroutine("ExtinguishRoomFire");
            }
        }
示例#7
0
        public void StopExtinguishingFire(GameObject _firefighter)
        {
            if ((firefighters.Count == 0) || (_firefighter != firefighter))
            {
                return;
            }

            pawnFirefighterUI.ToggleProgressBar();
            firefighters.Clear();
            firefighter       = null;
            pawnFirefighterUI = null;
            extinguishFill    = 0;
            StopCoroutine("ExtinguishRoomFire");
        }