コード例 #1
0
        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;
            }
        }
コード例 #2
0
        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());
        }
コード例 #3
0
        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("");
            }
        }