public static BeamSheet GetBeam(string num) { IEffectAnim sheet; if (vfxCache.TryGetValue("Beam-" + num, out sheet)) { return((BeamSheet)sheet); } try { if (System.IO.File.Exists(String.Format(BEAM_PATTERN, num))) { using (FileStream stream = File.OpenRead(String.Format(BEAM_PATTERN, num))) { using (BinaryReader reader = new BinaryReader(stream)) { sheet = BeamSheet.Load(reader); vfxCache.Add("Beam-" + num, sheet); return((BeamSheet)sheet); } } } } catch (Exception ex) { DiagManager.Instance.LogError(new Exception("Error loading " + String.Format(BEAM_PATTERN, num) + "\n", ex)); } BeamSheet newSheet = BeamSheet.LoadError(); vfxCache.Add("Beam-" + num, newSheet); return(newSheet); }
public override void Draw(SpriteBatch spriteBatch, Loc offset) { if (Finished) { return; } Loc drawLoc = MapLoc - offset + new Loc(GraphicsManager.TileSize / 2); BeamSheet sheet = GraphicsManager.GetBeam(Anim.AnimIndex); sheet.DrawColumn(spriteBatch, new Vector2(drawLoc.X, drawLoc.Y - LocHeight), Anim.GetCurrentFrame(ActionTime, sheet.TotalFrames), Color.White * ((float)Anim.Alpha / 255)); }