private ShieldBuildingInfo GetShieldBuildingInfo(Entity building, ShieldLoadReason reason, object cookie) { ShieldBuildingInfo shieldBuildingInfo; if (!this.buildings.ContainsKey(building)) { if (reason == ShieldLoadReason.StopEffect) { return(null); } shieldBuildingInfo = this.LoadEffectsForBuilding(building); } else { shieldBuildingInfo = this.buildings[building]; if (shieldBuildingInfo.LoadComplete) { return(shieldBuildingInfo); } if (reason == ShieldLoadReason.StopEffect) { this.CleanupShield(building); return(null); } } if (reason != ShieldLoadReason.CreateEffect && shieldBuildingInfo.Reasons.Count == 0) { shieldBuildingInfo.Reasons.Add(new ShieldReason(ShieldLoadReason.CreateEffect, null)); } shieldBuildingInfo.Reasons.Add(new ShieldReason(reason, cookie)); return(null); }
public ShieldReason(ShieldLoadReason reason, object cookie) { this.Reason = reason; this.Cookie = cookie; }