Пример #1
0
        public static bool Add(ResourceTransaction rt, Mobile player)
        {
            if (!(m_History[player] is ArrayList))
            {
                LoadHistory(player);
            }

            int count = 0;

            foreach (ResourceTransaction r in (ArrayList)m_History[player])
            {
                if (r.TransactionID == rt.TransactionID && r.TransType == rt.TransType)
                {
                    break;
                }
                count++;
            }

            // fear not, this is just a sh!tload of casts and indexes
            if (count < ((ArrayList)m_History[player]).Count)
            {
                ((ResourceTransaction)((ArrayList)m_History[player])[count]).Amount += rt.Amount;
            }
            else
            {
                ((ArrayList)m_History[player]).Insert(0, rt);
            }
            if (((ArrayList)m_History[player]).Count > 50)
            {
                ((ArrayList)m_History[player]).RemoveRange(49, ((ArrayList)m_History[player]).Count - 50);
            }

            m_TransactionStack--;
            if (m_TransactionStack == 0)
            {
                m_TransID++;
            }

            // log
            if (m_LogLevel > 0)
            {
                try
                {
                    if (!Directory.Exists("Saves/ResourcePool"))
                    {
                        Directory.CreateDirectory("Saves/ResourcePool");
                    }
                    if (!Directory.Exists("Saves/ResourcePool/TransactionHistories"))
                    {
                        Directory.CreateDirectory("Saves/ResourcePool/TransactionHistories");
                    }

                    BinaryFileWriter writer = new BinaryFileWriter(new FileStream("Saves/ResourcePool/MasterHistory.dat", FileMode.Append, FileAccess.Write, FileShare.Read), true);
                    rt.Serialize(writer);
                    writer.Close();
                }
                catch (Exception e)
                {
                    LogHelper.LogException(e);
                    Console.WriteLine("ResourceLogger error: Failed to open MasterHistory.dat for writing.");
                    Console.WriteLine(e.ToString());
                }
            }

            return(true);
        }
Пример #2
0
		public static bool Add(ResourceTransaction rt, Mobile player)
		{
			if (!(m_History[player] is ArrayList))
				LoadHistory(player);

			int count = 0;
			foreach (ResourceTransaction r in (ArrayList)m_History[player])
			{
				if (r.TransactionID == rt.TransactionID && r.TransType == rt.TransType)
					break;
				count++;
			}
			
			// fear not, this is just a sh!tload of casts and indexes
			if (count < ((ArrayList)m_History[player]).Count)
				((ResourceTransaction)((ArrayList)m_History[player])[count]).Amount += rt.Amount;
			else
				((ArrayList)m_History[player]).Insert(0, rt);
			if (((ArrayList)m_History[player]).Count > 50)
				((ArrayList)m_History[player]).RemoveRange(49, ((ArrayList)m_History[player]).Count - 50);

			m_TransactionStack--;
			if (m_TransactionStack == 0)
				m_TransID++;
			
			// log
			if (m_LogLevel > 0)
			{
				try
				{
					if (!Directory.Exists("Saves/ResourcePool"))
						Directory.CreateDirectory("Saves/ResourcePool");
					if (!Directory.Exists("Saves/ResourcePool/TransactionHistories"))
						Directory.CreateDirectory("Saves/ResourcePool/TransactionHistories");
					
					BinaryFileWriter writer = new BinaryFileWriter(new FileStream("Saves/ResourcePool/MasterHistory.dat", FileMode.Append, FileAccess.Write, FileShare.Read), true);
					rt.Serialize(writer);
					writer.Close();
				}
				catch (Exception e)
				{
					LogHelper.LogException(e);
					Console.WriteLine("ResourceLogger error: Failed to open MasterHistory.dat for writing.");
					Console.WriteLine(e.ToString());
				}
			}

			return true;
		}