Esempio n. 1
0
        internal void TryApplyEachEffOfMain(int idx, SkEntity tar, SkRuntimeInfo skrt)
        {
            SkEffect eff = idx < _effMainEachTime.Length ? _effMainEachTime [idx] : _effMainEachTime [_effMainEachTime.Length - 1];

            if (eff != null)
            {
                eff.Apply(tar, skrt);
            }
        }
Esempio n. 2
0
        internal static SkEffect[] ToSkEffectArray(string desc)
        {
            string[] strNums = desc.Split(new char[] { ';' });
            int      n       = strNums.Length;

            SkEffect[] effs = new SkEffect[n];
            for (int i = 0; i < n; i++)
            {
                effs[i] = null;
                int id = Convert.ToInt32(strNums[i]);
                SkEffect.s_SkEffectTbl.TryGetValue(id, out effs[i]);
            }
            return(effs);
        }
Esempio n. 3
0
        public static void LoadData()
        {
            if (s_SkEffectTbl != null)
            {
                return;
            }

            SqliteDataReader reader = LocalDatabase.Instance.ReadFullTable("skEffect");

            //reader.Read(); // skip title if needed
            s_SkEffectTbl = new Dictionary <int, SkEffect>();
            while (reader.Read())
            {
                SkEffect skEffect = new SkEffect();
                skEffect._id       = Convert.ToInt32(reader.GetString(reader.GetOrdinal("_id")));
                skEffect._anms     = reader.GetString(reader.GetOrdinal("_anms")).Split(',');
                skEffect._seId     = Convert.ToInt32(reader.GetString(reader.GetOrdinal("_seId")));
                skEffect._emitId   = Convert.ToInt32(reader.GetString(reader.GetOrdinal("_emitId")));
                skEffect._repelEff = Convert.ToBoolean(reader.GetString(reader.GetOrdinal("_spEff")));
                skEffect._camEffId = Convert.ToInt32(reader.GetString(reader.GetOrdinal("_camEffId")));
                try{
                    skEffect._procEffId = Convert.ToInt32(reader.GetString(reader.GetOrdinal("_procEff")));
                }catch {
                }
                {                // EffId s
                    string[] strEffIds = reader.GetString(reader.GetOrdinal("_effId")).Split(',');
                    skEffect._effId = new int[strEffIds.Length];
                    for (int i = 0; i < strEffIds.Length; i++)
                    {
                        skEffect._effId[i] = Convert.ToInt32(strEffIds[i]);
                    }
                }

                s_SkEffectTbl.Add(skEffect._id, skEffect);
            }
        }
Esempio n. 4
0
        public static void LoadData()
        {
            if (s_SkillTbl != null)
            {
                return;
            }
#if DBG_COL_ATK
            SkDebug.LoadIds();
#endif
            SkEffect.LoadData();
            SkBuff.LoadData();
            SkTriggerEvent.LoadData();

            SqliteDataReader reader = LocalDatabase.Instance.ReadFullTable("skMain");
            //reader.Read(); // skip title if needed
            s_SkillTbl = new Dictionary <int, SkData>();
            while (reader.Read())
            {
                SkData skill = new SkData();
                skill._id                = Convert.ToInt32(reader.GetString(reader.GetOrdinal("_id")));
                skill._desc              = Convert.ToInt32(reader.GetString(reader.GetOrdinal("_desc")));
                skill._icon              = reader.GetString(reader.GetOrdinal("_icon"));
                skill._name              = reader.GetString(reader.GetOrdinal("_name"));
                skill._interruptable     = reader.GetString(reader.GetOrdinal("_interruptable")).Equals("1");
                skill._coolingTime       = Convert.ToSingle(reader.GetString(reader.GetOrdinal("_coolingTime")));
                skill._coolingTimeType   = Convert.ToInt32(reader.GetString(reader.GetOrdinal("_coolingTimeType")));
                skill._coolingTimeShared = Convert.ToSingle(reader.GetString(reader.GetOrdinal("_coolingTimeShared")));

                skill._pretimeOfPrepare = Convert.ToSingle(reader.GetString(reader.GetOrdinal("_pretimeOfPrepare")));
                skill._postimeOfPrepare = Convert.ToSingle(reader.GetString(reader.GetOrdinal("_postimeOfPrepare")));
                SkEffect.s_SkEffectTbl.TryGetValue(Convert.ToInt32(reader.GetString(reader.GetOrdinal("_effPrepare"))), out skill._effPrepare);

                skill._condToLoop      = SkCond.Create(reader.GetString(reader.GetOrdinal("_cond")));
                skill._pretimeOfMain   = ToSingleArray(reader.GetString(reader.GetOrdinal("_pretimeOfMain")));
                skill._timeOfMain      = ToSingleArray(reader.GetString(reader.GetOrdinal("_timeOfMain")));
                skill._postimeOfMain   = ToSingleArray(reader.GetString(reader.GetOrdinal("_postimeOfMain")));
                skill._effMainEachTime = ToSkEffectArray(reader.GetString(reader.GetOrdinal("_effMainEachTime")));
                SkEffect.s_SkEffectTbl.TryGetValue(Convert.ToInt32(reader.GetString(reader.GetOrdinal("_effMainOneTime"))), out skill._effMainOneTime);

                string[] strEventsList = reader.GetString(reader.GetOrdinal("_triggerEvents")).Split(';');
                foreach (string strEvents in strEventsList)
                {
                    List <SkTriggerEvent> curEvents = new List <SkTriggerEvent>();
                    string[] strCurEvents           = strEvents.Split(',');
                    foreach (string strEvent in strCurEvents)
                    {
                        int            eventId = Convert.ToInt32(strEvent);
                        SkTriggerEvent curEvent;
                        SkTriggerEvent.s_SkTriggerEventTbl.TryGetValue(eventId, out curEvent);
                        if (curEvent != null)
                        {
                            curEvents.Add(curEvent);
                        }
                    }
                    skill._events.Add(curEvents);
                }

                skill._pretimeOfEnding = Convert.ToSingle(reader.GetString(reader.GetOrdinal("_pretimeOfEnding")));
                skill._postimeOfEnding = Convert.ToSingle(reader.GetString(reader.GetOrdinal("_postimeOfEnding")));
                SkEffect.s_SkEffectTbl.TryGetValue(Convert.ToInt32(reader.GetString(reader.GetOrdinal("_effEnding"))), out skill._effEnding);

                try{
                    s_SkillTbl.Add(skill._id, skill);
                }catch (Exception e)     {
                    Debug.LogError("Exception on skMain " + skill._id + " " + e);
                }
            }

            new Thread(new ThreadStart(SkInst.s_ExpCompiler.Compile)).Start();
            //SkInst.s_ExpCompiler.Compile();
        }