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(); }
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"); }
public void ResetDamage() { _repairState = RepairState.Repaired; StopDamageEffects(); _repairEffectTrigger.StopTrigger(); }
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); }
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(); } }
public void Repair() { Debug.Log("Point repair successful!"); _repairState = RepairState.Repaired; StopDamageEffects(); //_repairEffectTrigger.Trigger(); RepairedEvent?.Invoke(this, EventArgs.Empty); gameObject.SetActive(false); }
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; } } }
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(); } }
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(); } }
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; } }
public void SetRepairState(RepairState state) { screwBar.fillAmount = state.RepairRatio; }
private void UpdateRepairState(RepairState state) { repairImage.materialForRendering.SetFloat("Vector1_6967C50C", 1.0f - state.RepairRatio); }