Beispiel #1
0
        public void Damage()
        {
            _repairState = RepairState.UnRepaired;

            gameObject.SetActive(true);

            switch (_damageType)
            {
            case DamageType.Fire:
            case DamageType.Damaged:
            case DamageType.Loose:
                _currentDamageType = _damageType;
                break;

            case DamageType.Random:
                _currentDamageType = (DamageType)PartyParrotManager.Instance.Random.Next(DamageTypeCount);
                break;

                /*case DamageType.Stacked:
                 *  break;*/
            }

            // TODO: make overrides something we can do from the debug menu
            //_currentDamageType = DamageType.Damaged;

            InitDamage();
        }
Beispiel #2
0
 public void RestoreCriticalState()
 {
     criticalState = 1f;
     repairState   = RepairState.GOOD;
     ApplyCriticalState();
     ChangeCriticalSpeed();
 }
    void Awake()
    {
        homeSet         = false;
        survivorFood    = 0;
        survivorWater   = 0;
        survivorBandage = 0;
        survivorScrap   = 0;

        survivorHealth    = 100;
        survivorHunger    = 90;
        survivorThirst    = 90;
        survivorTiredness = 90;

        wayPointsList = new List <Vector3>();

        collectState  = new CollectState(this);
        buildState    = new BuildState(this);
        nourrishState = new NourrishState(this);
        fightState    = new FightState(this);
        repairState   = new RepairState(this);
        sleepState    = new SleepState(this);
        homeState     = new HomeState(this);
        healState     = new HealState(this);
        currentMap    = GameObject.Find("Map");
    }
Beispiel #4
0
        public void ResetDamage()
        {
            _repairState = RepairState.Repaired;

            StopDamageEffects();

            _repairEffectTrigger.StopTrigger();
        }
Beispiel #5
0
    private void ConstructFSM()
    {
        PatrolState patrol = new PatrolState(this);

        patrol.AddTransition(Transition.SawPlayer, FSMStateID.Chasing);
        patrol.AddTransition(Transition.ReachPlayer, FSMStateID.Attacking);
        patrol.AddTransition(Transition.NoHealth, FSMStateID.Dead);
        patrol.AddTransition(Transition.GotBored, FSMStateID.Bored);
        patrol.AddTransition(Transition.WantsTimeOff, FSMStateID.OffDuty);
        patrol.AddTransition(Transition.Hurt, FSMStateID.Repairing);
        patrol.AddTransition(Transition.WantsToHide, FSMStateID.Hiding);

        ChaseState chase = new ChaseState(this);

        chase.AddTransition(Transition.LostPlayer, FSMStateID.Patrolling);
        chase.AddTransition(Transition.ReachPlayer, FSMStateID.Attacking);
        chase.AddTransition(Transition.NoHealth, FSMStateID.Dead);
        chase.AddTransition(Transition.Hurt, FSMStateID.Repairing);

        AttackState attack = new AttackState(this);

        attack.AddTransition(Transition.LostPlayer, FSMStateID.Patrolling);
        attack.AddTransition(Transition.SawPlayer, FSMStateID.Chasing);
        attack.AddTransition(Transition.NoHealth, FSMStateID.Dead);
        attack.AddTransition(Transition.Hurt, FSMStateID.Repairing);

        OffDutyState offduty = new OffDutyState(rigidbody.transform, this);

        offduty.AddTransition(Transition.SawPlayer, FSMStateID.Chasing);
        offduty.AddTransition(Transition.RestedLongEnough, FSMStateID.Patrolling);
        offduty.AddTransition(Transition.NoHealth, FSMStateID.Dead);
        offduty.AddTransition(Transition.WantsToHide, FSMStateID.Hiding);

        RepairState repair = new RepairState(this);

        repair.AddTransition(Transition.Healed, FSMStateID.Patrolling);
        repair.AddTransition(Transition.NoHealth, FSMStateID.Dead);

        HideState hide = new HideState(this);

        hide.AddTransition(Transition.ReachPlayer, FSMStateID.Attacking);
        hide.AddTransition(Transition.RestedLongEnough, FSMStateID.Patrolling);

        DeadState dead = new DeadState();

        dead.AddTransition(Transition.NoHealth, FSMStateID.Dead);


        AddFSMState(patrol);
        AddFSMState(chase);
        AddFSMState(attack);
        AddFSMState(offduty);
        AddFSMState(repair);
        AddFSMState(hide);
        AddFSMState(dead);
    }
Beispiel #6
0
 private void EnterWorkingState()
 {
     State       = RepairState.Working;
     TimeToBreak = Random.Range(MinTimeToBreak, MaxTimeToBreak);
     elapsedTime = 0.0f;
     if (ItemToBreak != null)
     {
         ItemToBreak.sprite = WorkingSprite;
     }
     if (BrokenEffekt != null)
     {
         BrokenEffekt.Stop();
     }
 }
Beispiel #7
0
        public void Repair()
        {
            Debug.Log("Point repair successful!");

            _repairState = RepairState.Repaired;

            StopDamageEffects();

            //_repairEffectTrigger.Trigger();

            RepairedEvent?.Invoke(this, EventArgs.Empty);

            gameObject.SetActive(false);
        }
Beispiel #8
0
    public void SpawnVersion(RepairState newState)
    {
        currentState = newState;
        if (spawnedVersion != null)
        {
            HilightMaterialSwitcher     hmatSwitcher    = spawnedVersion.GetComponentInChildren <HilightMaterialSwitcher>();
            HilightAllMaterialsSwitcher hmatAllSwitcher = spawnedVersion.GetComponentInChildren <HilightAllMaterialsSwitcher>();
            if (hmatSwitcher != null)
            {
                GetComponent <Interactable>().hilightChangedDelegate -= hmatSwitcher.OnHilightChanged;
            }
            if (hmatAllSwitcher != null)
            {
                GetComponent <Interactable>().hilightChangedDelegate -= hmatAllSwitcher.OnHilightChanged;
            }
            Destroy(spawnedVersion.gameObject);
        }
        switch (newState)
        {
        case RepairState.Repaired:
            spawnedVersion = Instantiate(repairedPrefab, transform);
            break;

        case RepairState.Twisted:
            spawnedVersion = Instantiate(twistedPrefab, transform);
            break;

        case RepairState.Unpainted:
            spawnedVersion = Instantiate(unpaintedPrefab, transform);
            break;

        case RepairState.Damaged:
            spawnedVersion = Instantiate(damagedPrefab, transform);
            break;
        }
        {
            HilightMaterialSwitcher     hmatSwitcher    = spawnedVersion.GetComponentInChildren <HilightMaterialSwitcher>();
            HilightAllMaterialsSwitcher hmatAllSwitcher = spawnedVersion.GetComponentInChildren <HilightAllMaterialsSwitcher>();
            if (hmatSwitcher != null)
            {
                GetComponent <Interactable>().hilightChangedDelegate += hmatSwitcher.OnHilightChanged;
            }
            if (hmatAllSwitcher != null)
            {
                GetComponent <Interactable>().hilightChangedDelegate += hmatAllSwitcher.OnHilightChanged;
            }
        }
    }
Beispiel #9
0
 private void EnterBrokenState()
 {
     State  = RepairState.Broken;
     Damage = 1.0f;
     if ((BrokenClip != null) && (GetComponent <AudioSource>() is AudioSource src))
     {
         src.PlayOneShot(BrokenClip);
     }
     if (ItemToBreak != null)
     {
         ItemToBreak.sprite = DamagedSprite;
     }
     if (BrokenEffekt != null)
     {
         BrokenEffekt.Play();
     }
 }
Beispiel #10
0
    protected virtual void SetCriticalState()
    {
        RepairState lastRepairState = repairState;

        if (criticalState < criticalRepairState && repairState != RepairState.CRITICAL)
        {
            repairState = RepairState.CRITICAL;
        }
        else if (criticalState < noNeedRepairState && criticalState >= criticalRepairState && repairState != RepairState.NEEDREPAIR)
        {
            repairState = RepairState.NEEDREPAIR;
        }
        else if (criticalState >= noNeedRepairState && repairState != RepairState.GOOD)
        {
            repairState = RepairState.GOOD;
        }

        if (lastRepairState != repairState)
        {
            ApplyCriticalState();
            ChangeCriticalSpeed();
        }
    }
Beispiel #11
0
 protected void Start()
 {
     rState     = RepairState.Normal;
     Anim       = GetComponent <Animator>();
     Audio_Cues = transform.GetComponentsInChildren <AudioSource>();
 }
    void Update()
    {
        if (!PlayerData.instance.PlayerShip)
        {
            return;
        }

        Ship ship = PlayerData.instance.PlayerShip;

        switch (ship.State)
        {
        case Ship.ShipState.COMBAT:
            this.state = RepairState.COMBAT;
            break;

        case Ship.ShipState.REPAIR:
            this.state = RepairState.REPAIR;
            break;

        default:
            if (ship.DeltaPosition.magnitude != 0 || ship.DeltaRotation != 0)
            {
                this.state = RepairState.COMBAT;
            }
            else
            {
                this.state = RepairState.IDLE;
            }
            break;
        }

        switch (state)
        {
        case RepairState.IDLE:
            Icon.sprite = RepairIdle;
            Icon.color  = new Color(1, 1, 1, 1);
            break;

        case RepairState.REPAIR:
            Icon.sprite = RepairActive;
            Icon.color  = new Color(1, 1, 1, Intensity);

            if (Intensity >= 1)
            {
                direction = -1;
            }
            if (Intensity <= 0)
            {
                direction = 1;
            }

            Intensity += Time.deltaTime * direction;

            break;

        case RepairState.COMBAT:
            Icon.sprite = RepairCombat;
            Icon.color  = new Color(1, 1, 1, 1);
            break;
        }
    }
Beispiel #13
0
 public void SetRepairState(RepairState state)
 {
     screwBar.fillAmount = state.RepairRatio;
 }
Beispiel #14
0
 private void UpdateRepairState(RepairState state)
 {
     repairImage.materialForRendering.SetFloat("Vector1_6967C50C", 1.0f - state.RepairRatio);
 }