Beispiel #1
0
    public static void AddWarningGragh(SkillWarningGraghMessage message)
    {
        if (!message.casterActor)
        {
            return;
        }
        Skill skillData = DataReader <Skill> .Get(message.skillID);

        if (skillData == null)
        {
            return;
        }
        XPoint caster = new XPoint
        {
            position = message.casterActor.FixTransform.get_position(),
            rotation = message.casterActor.FixTransform.get_rotation()
        };
        GraghMessage gragh = WarningGraghHandler.MarkWarningGraghByDynamicWarningArea(caster, message.targetPoint, skillData.dynamicWarningAreaOffset, skillData.dynamicWarningArea);

        if (gragh == null)
        {
            return;
        }
        int fxID = 0;

        fxID = FXManager.Instance.PlayFX((gragh.graghShape != GraghShape.Sector) ? 1104 : 1103, null, gragh.Center, gragh.fixBasePoint.rotation, message.casterActor.RealActionSpeed, 1f, 0, false, 0, null, delegate(ActorFX fx)
        {
            if (fx != null)
            {
                fx.VecterScale = ((gragh.graghShape != GraghShape.Sector) ? new Vector3(gragh.width, 1f, gragh.height) : new Vector3(gragh.range, 1f, gragh.range));
            }
            WarningGraghHandler.warningFxTimer.Add(TimerHeap.AddTimer((uint)skillData.skillWarningTime, 0, delegate
            {
                FXManager.Instance.DeleteFX(fxID);
            }));
        }, 1f, FXClassification.Normal);
        message.casterActor.FixFXSystem.AddActionFX(fxID);
    }
Beispiel #2
0
        protected List <ActorModel> CheckCandidatesByEffectShape(List <ActorModel> candidates, Actor casterActor, XPoint basePoint, Effect effectData)
        {
            List <ActorModel> list = new List <ActorModel>();

            if (casterActor == null)
            {
                return(list);
            }
            if (basePoint == null)
            {
                return(list);
            }
            GraghMessage graghMessage  = null;
            GraghMessage graghMessage2 = null;
            bool         flag          = true;
            XPoint       xPoint        = basePoint.ApplyOffset(effectData.offset).ApplyOffset(effectData.offset2).ApplyForwardFix(effectData.forwardFixAngle);

            if (effectData.range.get_Count() > 2)
            {
                int num = Mathf.Abs(effectData.range.get_Item(0));
                if (num != 1)
                {
                    if (num == 2)
                    {
                        graghMessage = new GraghMessage(new XPoint
                        {
                            position = xPoint.position,
                            rotation = xPoint.rotation
                        }, GraghShape.Rect, 0f, 0f, (float)effectData.range.get_Item(1) * 0.01f, (float)effectData.range.get_Item(2) * 0.01f);
                    }
                }
                else
                {
                    graghMessage = new GraghMessage(new XPoint
                    {
                        position = xPoint.position,
                        rotation = xPoint.rotation
                    }, GraghShape.Sector, (float)effectData.range.get_Item(1) * 0.01f, (float)effectData.range.get_Item(2), 0f, 0f);
                }
            }
            if (effectData.range2.get_Count() > 2)
            {
                if (effectData.range2.get_Item(0) < 0)
                {
                    flag = false;
                }
                int num = Mathf.Abs(effectData.range2.get_Item(0));
                if (num != 1)
                {
                    if (num == 2)
                    {
                        graghMessage2 = new GraghMessage(new XPoint
                        {
                            position = xPoint.position,
                            rotation = xPoint.rotation
                        }, GraghShape.Rect, 0f, 0f, (float)effectData.range2.get_Item(1) * 0.01f, (float)effectData.range2.get_Item(2) * 0.01f);
                    }
                }
                else
                {
                    graghMessage2 = new GraghMessage(new XPoint
                    {
                        position = xPoint.position,
                        rotation = xPoint.rotation
                    }, GraghShape.Sector, (float)effectData.range2.get_Item(1) * 0.01f, (float)effectData.range2.get_Item(2), 0f, 0f);
                }
            }
            if (graghMessage != null)
            {
                graghMessage.DrawShape(Color.get_red());
            }
            if (graghMessage2 != null)
            {
                if (flag)
                {
                    graghMessage2.DrawShape(Color.get_red());
                }
                else
                {
                    graghMessage2.DrawShape(Color.get_blue());
                }
            }
            for (int i = 0; i < candidates.get_Count(); i++)
            {
                if (!(candidates.get_Item(i) == null))
                {
                    bool  flag2     = false;
                    float hitRadius = XUtility.GetHitRadius(candidates.get_Item(i).get_transform());
                    bool  flag3     = graghMessage != null && graghMessage.InArea(candidates.get_Item(i).get_transform().get_position(), hitRadius);
                    bool  flag4     = graghMessage2 != null && graghMessage2.InArea(candidates.get_Item(i).get_transform().get_position(), hitRadius);
                    if (flag)
                    {
                        if (flag3 || flag4)
                        {
                            flag2 = true;
                        }
                    }
                    else if (flag3 && !flag4)
                    {
                        flag2 = true;
                    }
                    if (flag2)
                    {
                        list.Add(candidates.get_Item(i));
                    }
                }
            }
            return(list);
        }
Beispiel #3
0
    protected Hashtable CheckCandidatesByEffectShape(List <EntityParent> candidates, List <ContainerGear> containers, Actor casterActor, XPoint basePoint, Effect effectData)
    {
        Hashtable hashtable = new Hashtable();

        if (casterActor == null)
        {
            return(hashtable);
        }
        if (basePoint == null)
        {
            return(hashtable);
        }
        List <EntityParent>  list          = new List <EntityParent>();
        List <ContainerGear> list2         = new List <ContainerGear>();
        GraghMessage         graghMessage  = null;
        GraghMessage         graghMessage2 = null;
        bool   flag   = true;
        XPoint xPoint = basePoint.ApplyOffset(effectData.offset).ApplyOffset(effectData.offset2).ApplyForwardFix(effectData.forwardFixAngle);

        if (effectData.range.get_Count() > 2)
        {
            int num = Mathf.Abs(effectData.range.get_Item(0));
            if (num != 1)
            {
                if (num == 2)
                {
                    graghMessage = new GraghMessage(new XPoint
                    {
                        position = xPoint.position,
                        rotation = xPoint.rotation
                    }, GraghShape.Rect, 0f, 0f, (float)effectData.range.get_Item(1) * 0.01f, (float)effectData.range.get_Item(2) * 0.01f);
                }
            }
            else
            {
                graghMessage = new GraghMessage(new XPoint
                {
                    position = xPoint.position,
                    rotation = xPoint.rotation
                }, GraghShape.Sector, (float)effectData.range.get_Item(1) * 0.01f, (float)effectData.range.get_Item(2), 0f, 0f);
            }
        }
        if (effectData.range2.get_Count() > 2)
        {
            if (effectData.range2.get_Item(0) < 0)
            {
                flag = false;
            }
            int num = Mathf.Abs(effectData.range2.get_Item(0));
            if (num != 1)
            {
                if (num == 2)
                {
                    graghMessage2 = new GraghMessage(new XPoint
                    {
                        position = xPoint.position,
                        rotation = xPoint.rotation
                    }, GraghShape.Rect, 0f, 0f, (float)effectData.range2.get_Item(1) * 0.01f, (float)effectData.range2.get_Item(2) * 0.01f);
                }
            }
            else
            {
                graghMessage2 = new GraghMessage(new XPoint
                {
                    position = xPoint.position,
                    rotation = xPoint.rotation
                }, GraghShape.Sector, (float)effectData.range2.get_Item(1) * 0.01f, (float)effectData.range2.get_Item(2), 0f, 0f);
            }
        }
        if (graghMessage != null)
        {
            graghMessage.DrawShape(Color.get_red());
        }
        if (graghMessage2 != null)
        {
            if (flag)
            {
                graghMessage2.DrawShape(Color.get_red());
            }
            else
            {
                graghMessage2.DrawShape(Color.get_blue());
            }
        }
        for (int i = 0; i < candidates.get_Count(); i++)
        {
            if (candidates.get_Item(i) != null)
            {
                if (candidates.get_Item(i).Actor)
                {
                    bool  flag2     = false;
                    float hitRadius = XUtility.GetHitRadius(candidates.get_Item(i).Actor.FixTransform);
                    bool  flag3     = graghMessage != null && graghMessage.InArea(candidates.get_Item(i).Actor.FixTransform.get_position(), hitRadius);
                    bool  flag4     = graghMessage2 != null && graghMessage2.InArea(candidates.get_Item(i).Actor.FixTransform.get_position(), hitRadius);
                    if (flag)
                    {
                        if (flag3 || flag4)
                        {
                            flag2 = true;
                        }
                    }
                    else if (flag3 && !flag4)
                    {
                        flag2 = true;
                    }
                    if (flag2)
                    {
                        list.Add(candidates.get_Item(i));
                    }
                }
            }
        }
        for (int j = 0; j < containers.get_Count(); j++)
        {
            if (containers.get_Item(j))
            {
                if (containers.get_Item(j).get_gameObject())
                {
                    bool flag5 = false;
                    bool flag6 = graghMessage != null && graghMessage.InArea(containers.get_Item(j).get_transform().get_position(), containers.get_Item(j).hitRange);
                    bool flag7 = graghMessage2 != null && graghMessage2.InArea(containers.get_Item(j).get_transform().get_position(), containers.get_Item(j).hitRange);
                    if (flag)
                    {
                        if (flag6 || flag7)
                        {
                            flag5 = true;
                        }
                    }
                    else if (flag6 && !flag7)
                    {
                        flag5 = true;
                    }
                    if (flag5)
                    {
                        list2.Add(containers.get_Item(j));
                    }
                }
            }
        }
        hashtable.Add("Entity", list);
        hashtable.Add("Container", list2);
        return(hashtable);
    }
        protected void DrawServerRange(BattleAction_UpdateEffect data)
        {
            if (this.owner.Actor.FixTransform == null)
            {
                return;
            }
            Effect effect = DataReader <Effect> .Get(data.effectId);

            GameObject gameObject = GameObject.Find("ServerEffectPainter");

            if (gameObject == null)
            {
                gameObject = new GameObject();
                gameObject.set_name("ServerEffectPainter");
            }
            gameObject.get_transform().set_position(new Vector3(data.pos.x * 0.01f, this.owner.Actor.FixTransform.get_position().y, data.pos.y * 0.01f));
            gameObject.get_transform().set_forward(new Vector3(data.vector.x, 0f, data.vector.y));
            XPoint xPoint = new XPoint
            {
                position = gameObject.get_transform().get_position(),
                rotation = gameObject.get_transform().get_rotation()
            };
            XPoint       theFixBasePoint = xPoint.ApplyOffset(effect.offset).ApplyOffset(effect.offset2).ApplyForwardFix(effect.forwardFixAngle);
            GraghMessage graghMessage    = null;
            GraghMessage graghMessage2   = null;
            bool         flag            = true;

            if (effect.range.get_Count() > 2)
            {
                int num = Mathf.Abs(effect.range.get_Item(0));
                if (num != 1)
                {
                    if (num == 2)
                    {
                        graghMessage = new GraghMessage(theFixBasePoint, GraghShape.Rect, 0f, 0f, (float)effect.range.get_Item(1) * 0.01f, (float)effect.range.get_Item(2) * 0.01f);
                    }
                }
                else
                {
                    graghMessage = new GraghMessage(theFixBasePoint, GraghShape.Sector, (float)effect.range.get_Item(1) * 0.01f, (float)effect.range.get_Item(2), 0f, 0f);
                }
            }
            if (effect.range2.get_Count() > 2)
            {
                if (effect.range2.get_Item(0) < 0)
                {
                    flag = false;
                }
                int num = Mathf.Abs(effect.range2.get_Item(0));
                if (num != 1)
                {
                    if (num == 2)
                    {
                        graghMessage2 = new GraghMessage(theFixBasePoint, GraghShape.Rect, 0f, 0f, (float)effect.range2.get_Item(1) * 0.01f, (float)effect.range2.get_Item(2) * 0.01f);
                    }
                }
                else
                {
                    graghMessage2 = new GraghMessage(theFixBasePoint, GraghShape.Sector, (float)effect.range2.get_Item(1) * 0.01f, (float)effect.range2.get_Item(2), 0f, 0f);
                }
            }
            if (graghMessage != null)
            {
                graghMessage.DrawShape(Color.get_black());
            }
            if (graghMessage2 != null)
            {
                if (flag)
                {
                    graghMessage2.DrawShape(Color.get_black());
                }
                else
                {
                    graghMessage2.DrawShape(Color.get_black());
                }
            }
        }