public void Start(Builder_Disruption builder) { this.m_effectOwner = builder.EffectOwner; for (int index = 0; index < builder.Affected_Blocks.Length; index++) { IMyEntity entity; if (!MyAPIGateway.Entities.TryGetEntityById(builder.Affected_Blocks[index], out entity) || !(entity is IMyCubeBlock)) { Logger.DebugLog("Block is not in world: " + builder.Affected_Blocks[index], Rynchodon.Logger.severity.WARNING); continue; } IMyCubeBlock block = (IMyCubeBlock)entity; StartEffect(block); // save/load will change ownership from long.MinValue to 0L ((MyCubeBlock)block).ChangeOwner(m_effectOwner, MyOwnershipShareModeEnum.Faction); m_affected.Add(block, builder.Affected_Owner[index]); block.SetDamageEffect(true); } if (m_affected.Count != 0) { Logger.DebugLog("Added old effect from builder"); m_expire = builder.Expires.ToTimeSpan(); UpdateManager.Register(UpdateFrequency, UpdateEffect); AllDisruptions.Add(this); } }
public Builder_Disruption GetBuilder() { Builder_Disruption result = new Builder_Disruption() { Type = GetType().Name, EffectOwner = m_effectOwner, Expires = new SerializableGameTime(m_expire) }; result.Affected_Blocks = new long[m_affected.Count]; result.Affected_Owner = new MyIDModule[m_affected.Count]; int index = 0; foreach (var pair in m_affected) { result.Affected_Blocks[index] = pair.Key.EntityId; result.Affected_Owner[index++] = pair.Value; } return result; }
public Builder_Disruption GetBuilder() { Builder_Disruption result = new Builder_Disruption() { Type = GetType().Name, EffectOwner = m_effectOwner, Expires = new SerializableGameTime(m_expire) }; result.Affected_Blocks = new long[m_affected.Count]; result.Affected_Owner = new MyIDModule[m_affected.Count]; int index = 0; foreach (var pair in m_affected) { result.Affected_Blocks[index] = pair.Key.EntityId; result.Affected_Owner[index++] = pair.Value; } return(result); }
public void Start(Builder_Disruption builder) { this.m_logger = new Logger(GetType().Name); this.m_effectOwner = builder.EffectOwner; for (int index = 0; index < builder.Affected_Blocks.Length; index++) { IMyEntity entity; if (!MyAPIGateway.Entities.TryGetEntityById(builder.Affected_Blocks[index], out entity) || !(entity is IMyCubeBlock)) { m_logger.debugLog("Block is not in world: " + builder.Affected_Blocks[index], Logger.severity.WARNING); continue; } IMyCubeBlock block = (IMyCubeBlock)entity; StartEffect(block); // save/load will change ownership from long.MinValue to 0L ((MyCubeBlock)block).ChangeOwner(m_effectOwner, MyOwnershipShareModeEnum.Faction); m_affected.Add(block, builder.Affected_Owner[index]); block.SetDamageEffect(true); } if (m_affected.Count != 0) { m_logger.debugLog("Added old effect from builder"); m_expire = builder.Expires.ToTimeSpan(); UpdateManager.Register(UpdateFrequency, UpdateEffect); AllDisruptions.Add(this); } }