Survivalcraft API 1.8.2.3 v1.8.2.3
Survivalcraft 2.4
载入中...
搜索中...
未找到
SubsystemBombBlockBehavior.cs
浏览该文件的文档.
1using Engine;
3
4namespace Game {
7
9
11
13
15
16 public Dictionary<Projectile, bool> m_projectiles = [];
17
18 public override int[] HandledBlocks => [];
19
21
22 public override void Load(ValuesDictionary valuesDictionary) {
23 base.Load(valuesDictionary);
24 m_subsystemGameInfo = Project.FindSubsystem<SubsystemGameInfo>(true);
25 m_subsystemTime = Project.FindSubsystem<SubsystemTime>(true);
29 foreach (Projectile projectile in m_subsystemProjectiles.Projectiles) {
30 ScanProjectile(projectile);
31 }
32 m_subsystemProjectiles.ProjectileAdded += projectile => { ScanProjectile(projectile); };
33 m_subsystemProjectiles.ProjectileRemoved += projectile => { m_projectiles.Remove(projectile); };
34 }
35
36 public void ScanProjectile(Projectile projectile) {
37 if (!m_projectiles.ContainsKey(projectile)) {
38 int num = Terrain.ExtractContents(projectile.Value);
39 if (m_subsystemBlockBehaviors.GetBlockBehaviors(Terrain.ExtractContents(projectile.Value)).Contains(this)) {
40 m_projectiles.Add(projectile, true);
41 projectile.ProjectileStoppedAction = ProjectileStoppedAction.DoNothing;
42 Color color = num == 228 ? new Color(255, 140, 192) : Color.White;
44 projectile,
45 new Vector3(0f, 0.25f, 0.1f),
46 new SmokeTrailParticleSystem(20, 0.33f, float.MaxValue, color)
47 );
48 }
49 }
50 }
51
52 public virtual void Update(float dt) {
53 if (m_subsystemTime.PeriodicGameTimeEvent(0.1, 0.0)) {
54 foreach (Projectile key in m_projectiles.Keys) {
55 if (m_subsystemGameInfo.TotalElapsedGameTime - key.CreationTime > 5.0) {
56 m_subsystemExplosions.TryExplodeBlock(
60 key.Value
61 );
62 key.ToRemove = true;
63 }
64 }
65 }
66 }
67 }
68}
Engine.Color Color
Engine.Vector3 Vector3
override void Load(ValuesDictionary valuesDictionary)
static int ExtractContents(int value)
static int ToCell(float x)
ValuesDictionary ValuesDictionary
static Color White