Exemple #1
0
        protected void ProduceEvents(PrepareRoundItem pri)
        {
            float curTime = m_timer.NextTimeStamp();

            foreach (N2.PrepareRoundAction item in pri.ActionList)
            {
                N2.BattleRoundAction_ActiveSkill skillEvent = item.CommandSkill;
                ProduceEvents(skillEvent, "CommandSkill");
                m_timer.NextTimeStampSkill();
            }
        }
Exemple #2
0
        protected void ProduceEvents(N2.BattleRoundAction_ActiveSkill skillEvent, string prefix = "")
        {
            //UtilLog.Log("ProduceEvents ActiveSkill "+prefix);
            if (!string.IsNullOrEmpty(skillEvent.Caster))
            {
                if (skillEvent.Effects.Count == 0 &&
                    skillEvent.Targets.Count == 0)
                {
                    return;
                }

                //UtilLog.Log("found caster " + skillEvent.Caster);
                ActiveSkillEventArgs args = new ActiveSkillEventArgs();
                //ev = new ReplayEvent(prefix, reportFromationTable.GetEffectStatePattern(prefix));
                args.PlayerID = int.Parse(skillEvent.GetPlayerID());
                args.Caster   = int.Parse(skillEvent.GetCasterID());
                args.SkillID  = skillEvent.SkillID;
                //todo ,could not get effect/effectType ID here right now
                //args.EffectID = skillEvent.
                //args.EffectTypeID = skillEvent.
                if (skillEvent.Targets != null && skillEvent.Targets.Count > 0)
                {
                    string targetStr = skillEvent.Targets[0];
                    args.Targets.Add(int.Parse(targetStr.Substring(targetStr.IndexOf("-") + 1)));
                    if (skillEvent.Targets.Count > 1)
                    {
                        for (int i = 1; i < skillEvent.Targets.Count; i++)
                        {
                            targetStr = skillEvent.Targets[i];
                            args.Targets.Add(int.Parse(targetStr.Substring(targetStr.IndexOf("-") + 1)));
                        }
                    }
                }

                int internalEventType = EVENT_ActiveSkill;
                if (prefix.Equals("CommandSkill"))
                {
                    internalEventType = EVENT_CommandSkill;
                }
                else if (prefix.Equals("PassiveSkill"))
                {
                    internalEventType = EVENT_PassiveSkill;
                }
                else if (prefix.Equals("NormalAttack"))
                {
                    internalEventType = EVENT_NormalAttack;
                }
                else if (prefix.Equals("BeforeAction"))
                {
                    internalEventType = EVENT_BeforeAction;
                }
                else if (prefix.Equals("RoundBegin"))
                {
                    internalEventType = EVENT_RoundBegin;
                }
                else if (prefix.Equals("RoundEnd"))
                {
                    internalEventType = EVENT_RoundEnd;
                }


                //UtilLog.Log("prefix:" + prefix + " eventType:"+ internalEventType+"/" + EventManager.GetEventType(internalEventType));
                m_eventQueue.Enqueue(new EventItem(m_timer.GetCurrent(), internalEventType, args));
                //UtilLog.Log(m_eventQueue.Last().ToString());
            }
            else
            {
                //UtilLog.Log("no caster " );
            }

            if (skillEvent.Effects != null)
            {
                ProduceEvents(skillEvent.Effects, skillEvent.SkillID);
            }
        }