public static void Open(string filename) { if (Playing) { return; } btnPlay.Enabled = btnStop.Enabled = false; if (m_GZIn != null) { m_GZIn.Close(); } try { m_GZIn = new GZBlockIn(filename); //new BinaryReader( new FileStream( filename, FileMode.Open, FileAccess.Read, FileShare.Read ) ); m_Version = m_GZIn.Raw.ReadByte(); if (m_Version > PlayerVersion) { m_GZIn.Close(); m_GZIn = null; MessageBox.Show(Engine.MainWindow, Language.GetString(LocString.WrongVer), "Version Mismatch", MessageBoxButtons.OK, MessageBoxIcon.Stop); return; } m_GZIn.IsCompressed = m_Version > 1; byte[] filehash = m_GZIn.Raw.ReadBytes(16); DateTime created = DateTime.FromFileTime(m_GZIn.Raw.ReadInt64()); TimeSpan len = TimeSpan.FromMilliseconds(m_GZIn.Raw.ReadInt32()); string player = m_GZIn.Compressed.ReadString(); string shard = m_GZIn.Compressed.ReadString(); System.Net.IPAddress ip = System.Net.IPAddress.Any; try { if (m_Version > 1) { ip = new System.Net.IPAddress((long)m_GZIn.Compressed.ReadUInt32()); } } catch { } m_StartPos = (int)m_GZIn.Position; long rawPos = m_GZIn.RawStream.Position; m_GZIn.RawStream.Seek(1 + 16, SeekOrigin.Begin); using (MD5 md5 = MD5.Create()) { byte[] check = md5.ComputeHash(m_GZIn.RawStream); for (int i = 0; i < check.Length; i++) { if (check[i] != filehash[i]) { m_GZIn.Close(); m_GZIn = null; MessageBox.Show(Engine.MainWindow, Language.GetString(LocString.VideoCorrupt), "Damaged File", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } } } m_GZIn.RawStream.Seek(rawPos, SeekOrigin.Begin); m_CurLength = len; m_Elapsed = TimeSpan.Zero; UpdateTimeText(); m_RPVInfo = lblPlay.Text = String.Format("File: {0}\nLength: {1} ({2})\nDate: {3}\nRecorded by \"{4}\" on \"{5}\" ({6})\n", Path.GetFileName(filename), Utility.FormatTime((int)len.TotalSeconds), Utility.FormatSize(m_GZIn.RawStream.Length), created.ToString("M-dd-yy @ h:mmtt"), player, shard, ip); btnClose.Enabled = btnPlay.Enabled = btnStop.Enabled = true; tbPos.Maximum = (int)len.TotalSeconds; tbPos.Minimum = 0; } catch (Exception e) { if (e is FileNotFoundException) { MessageBox.Show(Engine.MainWindow, e.Message, "File not found.", MessageBoxButtons.OK, MessageBoxIcon.Error); } else { Engine.LogCrash(e); MessageBox.Show(Engine.MainWindow, Language.GetString(LocString.ReadError), "Read Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } m_GZIn.Close(); m_GZIn = null; return; } }
public virtual void UpdateTitleBar() { if (!ClientRunning) { return; } StringBuilder sb = TitleBarBuilder; PlayerData p = World.Player; if (p.Name != m_LastPlayerName) { m_LastPlayerName = p.Name; Engine.MainWindow.UpdateTitle(); } sb.Replace(@"{shard}", World.ShardName); sb.Replace(@"{str}", p.Str.ToString()); sb.Replace(@"{hpmax}", p.HitsMax.ToString()); sb.Replace(@"{dex}", World.Player.Dex.ToString()); sb.Replace(@"{stammax}", World.Player.StamMax.ToString()); sb.Replace(@"{int}", World.Player.Int.ToString()); sb.Replace(@"{manamax}", World.Player.ManaMax.ToString()); sb.Replace(@"{ar}", p.AR.ToString()); sb.Replace(@"{tithe}", p.Tithe.ToString()); sb.Replace(@"{physresist}", p.AR.ToString()); sb.Replace(@"{fireresist}", p.FireResistance.ToString()); sb.Replace(@"{coldresist}", p.ColdResistance.ToString()); sb.Replace(@"{poisonresist}", p.PoisonResistance.ToString()); sb.Replace(@"{energyresist}", p.EnergyResistance.ToString()); sb.Replace(@"{luck}", p.Luck.ToString()); sb.Replace(@"{damage}", String.Format("{0}-{1}", p.DamageMin, p.DamageMax)); sb.Replace(@"{maxweight}", World.Player.MaxWeight.ToString()); sb.Replace(@"{followers}", World.Player.Followers.ToString()); sb.Replace(@"{followersmax}", World.Player.FollowersMax.ToString()); sb.Replace(@"{gold}", World.Player.Gold.ToString()); //sb.Replace(@"{gps}", GoldPerHourTimer.Running ? $"{GoldPerHourTimer.GoldPerSecond:N2}" : "-"); //sb.Replace(@"{gpm}", GoldPerHourTimer.Running ? $"{GoldPerHourTimer.GoldPerMinute:N2}" : "-"); //sb.Replace(@"{gph}", GoldPerHourTimer.Running ? $"{GoldPerHourTimer.GoldPerHour:N2}" : "-"); //sb.Replace(@"{goldtotal}", GoldPerHourTimer.Running ? $"{GoldPerHourTimer.GoldSinceStart}" : "-"); //sb.Replace(@"{goldtotalmin}", GoldPerHourTimer.Running ? $"{GoldPerHourTimer.TotalMinutes:N2} min" : "-"); //sb.Replace(@"{skill}", SkillTimer.Running ? $"{SkillTimer.Count}" : "-"); //sb.Replace(@"{gate}", GateTimer.Running ? $"{GateTimer.Count}" : "-"); sb.Replace(@"{stealthsteps}", StealthSteps.Counting ? StealthSteps.Count.ToString() : "-"); //Client.ConnectionStart != DateTime.MinValue ) //time = (int)((DateTime.UtcNow - Client.ConnectionStart).TotalSeconds); sb.Replace(@"{uptime}", ConnectionStart != DateTime.MinValue ? Utility.FormatTime((int)((DateTime.UtcNow - ConnectionStart).TotalSeconds)) : "-"); // sb.Replace(@"{dps}", DamageTracker.Running ? $"{DamageTracker.DamagePerSecond:N2}" : "-"); //sb.Replace(@"{maxdps}", DamageTracker.Running ? $"{DamageTracker.MaxDamagePerSecond:N2}" : "-"); //sb.Replace(@"{maxdamagedealt}", DamageTracker.Running ? $"{DamageTracker.MaxSingleDamageDealt}" : "-"); //sb.Replace(@"{maxdamagetaken}", DamageTracker.Running ? $"{DamageTracker.MaxSingleDamageTaken}" : "-"); //sb.Replace(@"{totaldamagedealt}", DamageTracker.Running ? $"{DamageTracker.TotalDamageDealt}" : "-"); //sb.Replace(@"{totaldamagetaken}", DamageTracker.Running ? $"{DamageTracker.TotalDamageTaken}" : "-"); string buffList = string.Empty; #if notimplemented if (BuffsTimer.Running) { StringBuilder buffs = new StringBuilder(); foreach (BuffsDebuffs buff in World.Player.BuffsDebuffs) { int timeLeft = 0; if (buff.Duration > 0) { TimeSpan diff = DateTime.UtcNow - buff.Timestamp; timeLeft = buff.Duration - (int)diff.TotalSeconds; } buffs.Append(timeLeft <= 0 ? $"{buff.ClilocMessage1}, " : $"{buff.ClilocMessage1} ({timeLeft}), "); } buffs.Length = buffs.Length - 2; buffList = buffs.ToString(); sb.Replace(@"{buffsdebuffs}", buffList); } else { sb.Replace(@"{buffsdebuffs}", "-"); } #endif SetTitleStr(sb.ToString()); }
private void UpdateTitleBar() { if (!m_Ready) { return; } if (World.Player != null && Config.GetBool("TitleBarDisplay")) { // reuse the same sb each time for less damn allocations m_TBBuilder.Remove(0, m_TBBuilder.Length); m_TBBuilder.Insert(0, Config.GetString("TitleBarText")); StringBuilder sb = m_TBBuilder; //StringBuilder sb = new StringBuilder( Config.GetString( "TitleBarText" ) ); // m_TitleCapacity PlayerData p = World.Player; if (p.Name != m_LastPlayerName) { m_LastPlayerName = p.Name; Engine.MainWindow.UpdateTitle(); } sb.Replace(@"{char}", Config.GetBool("ShowNotoHue") ? $"~#{p.GetNotorietyColor() & 0x00FFFFFF:X6}{p.Name}~#~" : p.Name); sb.Replace(@"{shard}", World.ShardName); sb.Replace(@"{crimtime}", p.CriminalTime != 0 ? $"~^C0C0C0{p.CriminalTime}~#~" : "-"); sb.Replace(@"{str}", p.Str.ToString()); sb.Replace(@"{hpmax}", p.HitsMax.ToString()); sb.Replace(@"{hp}", p.Poisoned ? $"~#FF8000{p.Hits}~#~" : EncodeColorStat(p.Hits, p.HitsMax)); sb.Replace(@"{dex}", World.Player.Dex.ToString()); sb.Replace(@"{stammax}", World.Player.StamMax.ToString()); sb.Replace(@"{stam}", EncodeColorStat(p.Stam, p.StamMax)); sb.Replace(@"{int}", World.Player.Int.ToString()); sb.Replace(@"{manamax}", World.Player.ManaMax.ToString()); sb.Replace(@"{mana}", EncodeColorStat(p.Mana, p.ManaMax)); sb.Replace(@"{ar}", p.AR.ToString()); sb.Replace(@"{tithe}", p.Tithe.ToString()); sb.Replace(@"{physresist}", p.AR.ToString()); sb.Replace(@"{fireresist}", p.FireResistance.ToString()); sb.Replace(@"{coldresist}", p.ColdResistance.ToString()); sb.Replace(@"{poisonresist}", p.PoisonResistance.ToString()); sb.Replace(@"{energyresist}", p.EnergyResistance.ToString()); sb.Replace(@"{luck}", p.Luck.ToString()); sb.Replace(@"{damage}", String.Format("{0}-{1}", p.DamageMin, p.DamageMax)); sb.Replace(@"{weight}", World.Player.Weight >= World.Player.MaxWeight ? $"~#FF0000{World.Player.Weight}~#~" : World.Player.Weight.ToString()); sb.Replace(@"{maxweight}", World.Player.MaxWeight.ToString()); sb.Replace(@"{followers}", World.Player.Followers.ToString()); sb.Replace(@"{followersmax}", World.Player.FollowersMax.ToString()); sb.Replace(@"{gold}", World.Player.Gold.ToString()); sb.Replace(@"{gps}", GoldPerHourTimer.Running ? $"{GoldPerHourTimer.GoldPerSecond:N2}" : "-"); sb.Replace(@"{gpm}", GoldPerHourTimer.Running ? $"{GoldPerHourTimer.GoldPerMinute:N2}" : "-"); sb.Replace(@"{gph}", GoldPerHourTimer.Running ? $"{GoldPerHourTimer.GoldPerHour:N2}" : "-"); sb.Replace(@"{goldtotal}", GoldPerHourTimer.Running ? $"{GoldPerHourTimer.GoldSinceStart}" : "-"); sb.Replace(@"{goldtotalmin}", GoldPerHourTimer.Running ? $"{GoldPerHourTimer.TotalMinutes:N2} min" : "-"); sb.Replace(@"{bandage}", BandageTimer.Running ? $"~#FF8000{BandageTimer.Count}~#~" : "-"); sb.Replace(@"{skill}", SkillTimer.Running ? $"{SkillTimer.Count}" : "-"); sb.Replace(@"{gate}", GateTimer.Running ? $"{GateTimer.Count}" : "-"); sb.Replace(@"{stealthsteps}", StealthSteps.Counting ? StealthSteps.Count.ToString() : "-"); //Client.ConnectionStart != DateTime.MinValue ) //time = (int)((DateTime.UtcNow - Client.ConnectionStart).TotalSeconds); sb.Replace(@"{uptime}", ConnectionStart != DateTime.MinValue ? Utility.FormatTime((int)((DateTime.UtcNow - ConnectionStart).TotalSeconds)) : "-"); sb.Replace(@"{dps}", DamageTracker.Running ? $"{DamageTracker.DamagePerSecond:N2}" : "-"); sb.Replace(@"{maxdps}", DamageTracker.Running ? $"{DamageTracker.MaxDamagePerSecond:N2}" : "-"); sb.Replace(@"{maxdamagedealt}", DamageTracker.Running ? $"{DamageTracker.MaxSingleDamageDealt}" : "-"); sb.Replace(@"{maxdamagetaken}", DamageTracker.Running ? $"{DamageTracker.MaxSingleDamageTaken}" : "-"); sb.Replace(@"{totaldamagedealt}", DamageTracker.Running ? $"{DamageTracker.TotalDamageDealt}" : "-"); sb.Replace(@"{totaldamagetaken}", DamageTracker.Running ? $"{DamageTracker.TotalDamageTaken}" : "-"); string buffList = string.Empty; if (BuffsTimer.Running) { StringBuilder buffs = new StringBuilder(); foreach (BuffsDebuffs buff in World.Player.BuffsDebuffs) { int timeLeft = 0; if (buff.Duration > 0) { TimeSpan diff = DateTime.UtcNow - buff.Timestamp; timeLeft = buff.Duration - (int)diff.TotalSeconds; } buffs.Append(timeLeft <= 0 ? $"{buff.ClilocMessage1}, " : $"{buff.ClilocMessage1} ({timeLeft}), "); } buffs.Length = buffs.Length - 2; buffList = buffs.ToString(); sb.Replace(@"{buffsdebuffs}", buffList); } else { sb.Replace(@"{buffsdebuffs}", "-"); buffList = string.Empty; } string statStr = String.Format("{0}{1:X2}{2:X2}{3:X2}", (int)(p.GetStatusCode()), (int)(World.Player.HitsMax == 0 ? 0 : (double)World.Player.Hits / World.Player.HitsMax * 99), (int)(World.Player.ManaMax == 0 ? 0 : (double)World.Player.Mana / World.Player.ManaMax * 99), (int)(World.Player.StamMax == 0 ? 0 : (double)World.Player.Stam / World.Player.StamMax * 99)); sb.Replace(@"{statbar}", $"~SR{statStr}"); sb.Replace(@"{mediumstatbar}", $"~SL{statStr}"); sb.Replace(@"{largestatbar}", $"~SX{statStr}"); bool dispImg = Config.GetBool("TitlebarImages"); for (int i = 0; i < Counter.List.Count; i++) { Counter c = Counter.List[i]; if (c.Enabled) { sb.Replace($"{{{c.Format}}}", c.GetTitlebarString(dispImg && c.DisplayImage)); } } SetTitleStr(sb.ToString()); } else { SetTitleStr(""); } }