Esempio n. 1
0
        public object GetResult()
        {
            FormatConfigTable();
            ProbabilityFormatedItem item = null;

            float rand = Random(m_TotalProbability);

            for (int i = 0; i < m_FormatedTable.Count; ++i)
            {
                item = m_FormatedTable[i];

                if (rand > item.from && rand <= item.to)
                {
                    //命中
                    return(m_ConfigTable[item.index].data);
                }
            }

            return(null);
        }
Esempio n. 2
0
        void FormatConfigTable()
        {
            if (!m_Dirty)
            {
                return;
            }

            m_Dirty = false;

            if (m_FormatedTable == null)
            {
                m_FormatedTable = new List <ProbabilityFormatedItem>();
            }
            else
            {
                m_FormatedTable.Clear();
            }

            ProbabilityFormatedItem item = null;
            float totalProbability       = 0;
            float last = 0;

            for (int i = 0; i < m_ConfigTable.Count; ++i)
            {
                last              = totalProbability;
                totalProbability += m_ConfigTable[i].probability;

                item       = new ProbabilityFormatedItem();
                item.from  = last;
                item.to    = totalProbability;
                item.index = i;

                m_FormatedTable.Add(item);
            }

            m_TotalProbability = totalProbability;
        }