Beispiel #1
0
        //private void DrawCircleAttack(DrawingContext ctx, GameObject obj)
        //{
        //    ctx.DrawCircleWithPoint(obj.Location, obj.Heading, 11.0f, Color.FromArgb(100, Color.Red), Color.FromArgb(100, Color.Red));
        //}

        //private void DrawSideAttack(DrawingContext ctx, GameObject obj)
        //{
        //    ctx.DrawSideAttackAgroLine(obj.Location, obj.Heading, 5.0f, 50.0f, Color.FromArgb(100, Color.Blue));
        //}

        //private void DrawSliceAttack(DrawingContext ctx, GameObject obj)
        //{
        //    ctx.DrawAgroLine(obj.Location, obj.Heading + (float)Math.PI / 2, 5.0f, 100.0f, Color.FromArgb(100, Color.Yellow), Color.FromArgb(100, Color.Yellow));
        //}

        private void Drawing(DrawingContext ctx)
        {
            if (QuestLogManager.InCutscene)
            {
                return;
            }

            //Gameobject list is threadstatic, always need to pulse otherwise new objects wont show up
            GameObjectManager.Update();

            if (SelfDrawing != null)
            {
                SelfDrawing.Drawing(ctx, Core.Me);
            }

            if (TargetDrawing != null && Core.Me.CurrentTarget != null)
            {
                TargetDrawing.Drawing(ctx, Core.Me.CurrentTarget);
            }

            foreach (GameObject obj in GameObjectManager.GameObjects)
            {
                if (!obj.IsValid)
                {
                    continue;
                }

                if (obj.IsMe)
                {
                    continue;
                }

                if (skipObjects.Contains(obj.NpcId))
                {
                    continue;
                }

                if (NpcDrawing.ContainsKey(obj.NpcId))
                {
                    IDrawCommand d = NpcDrawing[obj.NpcId];
                    if (d != null)
                    {
                        d.Drawing(ctx, obj);
                    }

                    continue;
                }

                if (skipGameType.Contains(obj.Type))
                {
                    continue;
                }

                if (CustomObjectTypesDrawing.ContainsKey(obj.Type))
                {
                    IDrawCommand d = CustomObjectTypesDrawing[obj.Type];
                    if (d != null)
                    {
                        d.Drawing(ctx, obj);
                    }

                    continue;
                }

                var gameCharacter = obj as Character;
                if (gameCharacter != null && HostileDrawing != null)
                {
                    if (gameCharacter.StatusFlags.HasFlag(ff14bot.Enums.StatusFlags.Hostile))
                    {
                        HostileDrawing.Drawing(ctx, obj);
                        continue;
                    }
                }

                if (AllDrawing != null)
                {
                    AllDrawing.Drawing(ctx, obj);
                }
            }

            foreach (GatherNode g in this.GatherNodes)
            {
                g.Drawing(ctx, null);
            }

            customPoints.Drawing(ctx, null);

            cacheDrawManager.Draw(ctx);
        }