骑砍2霸主MOD开发(11)-瓦兰迪亚火骑兵

一.火焰灼烧Timer

    public class FlameCavalryTimer_1 : PLCommonBasicMissionTimer
    {
        private Mission _mission;

        public FlameCavalryTimer_1(Mission mission, float triggerInterval, bool isTriggerOnce) : base(triggerInterval, isTriggerOnce)
        {
            _mission = mission;
        }

        public override void TriggerTimerScript()
        {
            try
            {
                BrunEnemyAround();
            }
            catch (Exception ex)
            {
                File.AppendAllLines(PLModuleConstans.ModuleCrashLogPath, new string[] { ex.ToString(), ex.Message, ex.StackTrace });
            }
        }

        private void BrunEnemyAround()
        {
            _mission.Agents.ForEach(cavalryAgent =>
            {
                if (cavalryAgent.IsHuman && cavalryAgent.Team.IsFriendOf(_mission.PlayerTeam))
                {
                    MBList<Agent> enemyAgentList = new MBList<Agent>();
                    _mission.GetNearbyEnemyAgents(new Vec2(cavalryAgent.Frame.origin.x, cavalryAgent.Frame.origin.y), 2f, cavalryAgent.Team, enemyAgentList);
                    foreach (Agent enemyAgent in enemyAgentList)
                    {
                        PLDamageUtilities.GiveDamageToEnemey(cavalryAgent, enemyAgent, 60);
                    }
                }
            });
        }
    }

二.火骑兵Timer

    public class FlameCavalryTimer_2 : PLCommonBasicMissionTimer
    {
        private Mission _mission;

        public FlameCavalryTimer_2(Mission mission, float triggerInterval, bool isTriggerOnce) : base(triggerInterval, isTriggerOnce)
        {
            _mission = mission;
        }

        public override void TriggerTimerScript()
        {
            try
            {
                InitCavalryFlame();
            }
            catch (Exception ex)
            {
                File.AppendAllLines(PLModuleConstans.ModuleCrashLogPath, new string[] { ex.ToString(), ex.Message, ex.StackTrace });
            }
        }

        private void InitCavalryFlame()
        {
            InformationManager.DisplayMessage(new InformationMessage("InitCavalryFlame"));
            _mission.Agents.ForEach(cavalryAgent =>
            {
                if (cavalryAgent.IsHuman && cavalryAgent.Team.IsFriendOf(_mission.PlayerTeam))
                {
                    if (!MissionAgentBehavior._cavalryFlamesMap.ContainsKey(cavalryAgent))
                    {
                        GameEntity emptyEntity = GameEntity.CreateEmpty(_mission.Scene);
                        MatrixFrame agentFrame = cavalryAgent.Frame;
                        emptyEntity.SetFrame(ref agentFrame);
                        emptyEntity.AddParticleSystemComponent("psys_airplane_fire_2");
                        MissionAgentBehavior._cavalryFlamesMap.Add(cavalryAgent, emptyEntity);
                    }
                }
            });
        }
    }

    public class FlameCavalryTimer_3 : PLCommonBasicMissionTimer
    {
        private Mission _mission;

        public FlameCavalryTimer_3(Mission mission, float triggerInterval, bool isTriggerOnce) : base(triggerInterval, isTriggerOnce)
        {
            _mission = mission;
        }

        public override void TriggerTimerScript()
        {
            try
            {
                SyncCavalryFlame();
            }
            catch (Exception ex)
            {
                File.AppendAllLines(PLModuleConstans.ModuleCrashLogPath, new string[] { ex.ToString(), ex.Message, ex.StackTrace });
            }
        }
        private void SyncCavalryFlame()
        {
            for (int i = 0; i < MissionAgentBehavior._cavalryFlamesMap.Count; i++)
            {
                Agent cavalryAgent = MissionAgentBehavior._cavalryFlamesMap.ElementAt(i).Key;
                GameEntity flame = MissionAgentBehavior._cavalryFlamesMap.ElementAt(i).Value;
                MatrixFrame agentFrame = cavalryAgent.Frame;
                flame.SetFrame(ref agentFrame);
            }
        }
    }

相关推荐

  1. 2霸主MOD开发(11)-骑兵

    2024-06-08 12:40:04       8 阅读
  2. 2霸主MOD开发(12)-游戏实例GameEntity

    2024-06-08 12:40:04       12 阅读
  3. 2霸主MOD开发(5)-游戏事件

    2024-06-08 12:40:04       14 阅读
  4. 2霸主MOD开发(14)-进击的巨人

    2024-06-08 12:40:04       11 阅读
  5. 2霸主MOD开发(4)-游戏场景(scene)制作

    2024-06-08 12:40:04       17 阅读
  6. 2霸主MOD开发(8)-action_sets.xml骨骼动画

    2024-06-08 12:40:04       13 阅读
  7. 战团MOD开发(19)-ID掩码算法

    2024-06-08 12:40:04       38 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-06-08 12:40:04       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-08 12:40:04       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-08 12:40:04       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-08 12:40:04       20 阅读

热门阅读

  1. C#面:Server.UrlEncode、HttpUtility.UrlDecode的区别

    2024-06-08 12:40:04       8 阅读
  2. MySQL-锁

    MySQL-锁

    2024-06-08 12:40:04      9 阅读
  3. Dijkstra算法(迪杰斯特拉算法)

    2024-06-08 12:40:04       9 阅读
  4. 如何使用Python中的random模块生成随机数

    2024-06-08 12:40:04       11 阅读
  5. 【Docker学习】docker push简述

    2024-06-08 12:40:04       9 阅读
  6. BCS2024│云原生安全论坛启动

    2024-06-08 12:40:04       10 阅读
  7. docker 命令

    2024-06-08 12:40:04       7 阅读
  8. Docker image pandoc/core from a Node.js Express application

    2024-06-08 12:40:04       7 阅读
  9. 04Docker网络基础配置

    2024-06-08 12:40:04       7 阅读
  10. docker_如何推送镜像到仓库(hub.docker.com)

    2024-06-08 12:40:04       10 阅读
  11. psql导入数据报错排查

    2024-06-08 12:40:04       9 阅读
  12. 鸿蒙 Harmony ArkTs开发教程三 流程控制

    2024-06-08 12:40:04       7 阅读
  13. Hatch 现代化的项目管理、构建工具

    2024-06-08 12:40:04       7 阅读
  14. webpack

    2024-06-08 12:40:04       11 阅读