private void OnHarvest(Harvestable.Harvest.ReceivedRequest request) { var payload = request.Payload; var nowHealth = health.Data.CurrentHealth; float resTaken = 0; if (nowHealth > payload.ResourcesNeed) { resTaken = payload.ResourcesNeed; nowHealth -= payload.ResourcesNeed; } else { resTaken = nowHealth; nowHealth = 0; } var update = new HarvestResponse() { ResourcesTaken = resTaken }; cmdReceiver.SendHarvestResponse(request.RequestId, update); //Debug.Log("OnHarvest ResourceNeed<"+payload.ResourcesNeed+"> Harvester<"+payload.Harvester.Id+">"); var update2 = new Health.Update { CurrentHealth = nowHealth }; health.SendUpdate(update2); }
private void SendHealthUpdate(int value) { Health.Update update = new Health.Update { Health = value }; healthWriter.SendUpdate(update); }
public static void SetCanBeChanged(this HealthWriter health, bool canBeChanged) { var update = new Health.Update() { CanBeChanged = canBeChanged }; health.SendUpdate(update); }
private void TakeDamageFromFire() { var update = new Health.Update() { CurrentHealth = health.Data.CurrentHealth - SimulationSettings.FireDamagePerTick }; health.SendUpdate(update); }
public static void SetCurrentHealth(this HealthWriter health, int newHealth) { if (health.Data.CanBeChanged) { var update = new Health.Update() { CurrentHealth = Mathf.Max(newHealth, 0) }; health.SendUpdate(update); } }
public void newBorn() { // 如果是儿童,一些属性要适当缩小 float ratioChild = 1.0f; if (age.Data.Age < age.Data.GrowUpAge) { ratioChild = SimulationSettings.NPCChildhoodMinWeekness; } var update = new DinoAttrs.Update { IsDead = false, OriginalAgression = ScriptableAnimalStats.agression, OriginalDominance = ScriptableAnimalStats.dominance, OriginalScent = ScriptableAnimalStats.scent, OriginPosition = transform.position.ToVector3f(), LastHatchTime = 0, CurrentFood = Random.Range(ScriptableAnimalStats.foodStorage * SimulationSettings.NPCOriginalMinFoodRate * ratioChild, ScriptableAnimalStats.foodStorage * ratioChild), // 儿童 MaxFood = ScriptableAnimalStats.foodStorage * ratioChild, // 儿童 Power = ScriptableAnimalStats.power * ratioChild, // 儿童 LiveCost = ScriptableAnimalStats.liveCost * ratioChild, // 儿童 }; attrsWriter.SendUpdate(update); // 小恐龙的生命值也要打折扣 var update3 = new Health.Update { CurrentHealth = ScriptableAnimalStats.toughness * ratioChild, // 儿童 CanBeChanged = true, MaxHealth = ScriptableAnimalStats.toughness * ratioChild, // 儿童 }; health.SendUpdate(update3); }
public static void AddCurrentHealthDelta(this HealthWriter health, int delta) { if (health.Data.CanBeChanged) { if (health.TryingToDecreaseHealthBelowZero(delta)) { return; } var update = new Health.Update() { CurrentHealth = Mathf.Max(health.Data.CurrentHealth + delta, 0) }; health.SendUpdate(update); } }
public override void Enter() { // 进入这个状态的时候,要把树的血设置满 var update = new Health.Update { CurrentHealth = SimulationSettings.TreeMaxHealth }; health.SendUpdate(update); var update2 = new Flammable.Update { CanBeIgnited = true }; flammable.SendUpdate(update2); flammable.OnUpdate += (OnFlammableUpdated); health.OnUpdate += (OnHealthUpdated); }