Client LuaCsForBarotrauma
BarotraumaClient/ClientSource/Characters/AI/Wreck/WreckAI.cs
2 using Microsoft.Xna.Framework;
3 using System.Collections.Generic;
5 
6 namespace Barotrauma
7 {
8  partial class WreckAI : IServerSerializable
9  {
10  private CoroutineHandle fadeOutRoutine;
11  partial void FadeOutColors()
12  {
13  if (fadeOutRoutine != null)
14  {
15  CoroutineManager.StopCoroutines(fadeOutRoutine);
16  }
17  fadeOutRoutine = CoroutineManager.StartCoroutine(FadeOutColors(Config.DeadEntityColorFadeOutTime));
18  }
19 
20  private IEnumerable<CoroutineStatus> FadeOutColors(float time)
21  {
22 
23  Dictionary<MapEntity, Color> originalColors = new Dictionary<MapEntity, Color>();
24  foreach (var item in thalamusItems)
25  {
26  originalColors.Add(item, item.SpriteColor);
27  }
28  foreach (var structure in thalamusStructures)
29  {
30  originalColors.Add(structure, structure.SpriteColor);
31  }
32 
33  float timer = 0;
34  while (timer < time)
35  {
36  timer += CoroutineManager.DeltaTime;
37  float m = MathHelper.Lerp(1, Config.DeadEntityColorMultiplier, MathUtils.InverseLerp(0, time, timer));
38  foreach (var item in thalamusItems)
39  {
40  if (item.Color.A == 0) { continue; }
41  if (item.Prefab.BrokenSprites.None())
42  {
43  Color c = originalColors[item];
44  item.SpriteColor = new Color(c.R / 255f * m, c.G / 255f * m, c.B / 255f * m, c.A / 255f);
45  }
46  }
47  foreach (var structure in thalamusStructures)
48  {
49  Color c = originalColors[structure];
50  structure.SpriteColor = new Color(c.R / 255f * m, c.G / 255f * m, c.B / 255f * m, c.A / 255f);
51  }
52  yield return CoroutineStatus.Running;
53  }
54  yield return CoroutineStatus.Success;
55  }
56 
57  public void ClientEventRead(IReadMessage msg, float sendingTime)
58  {
59  IsAlive = msg.ReadBoolean();
60  }
61  }
62 }
void ClientEventRead(IReadMessage msg, float sendingTime)
Interface for entities that the server can send events to the clients