123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137 |
- using System.Collections.Generic;
- using CommonLang;
- using XmdsCommonServer.Plugin;
- using CommonAI.Zone.Instance;
- using XmdsCommonServer.Plugin.Scene;
- using System;
- using CommonAI.Zone.Helper;
- namespace XmdsCommonSkill.Plugin.FunctionEvent
- {
- /// <summary>
- /// 玩家触发aoi
- /// </summary>
- public class XmdsBattleFunctionEventAOI_99993 : XmdsBattleFunctionEventBase
- {
- public static int EventID = 99993;
- public class ParamsData
- {
- public struct UnitCreateInfo
- {
- public int id;
- public int force;
- public bool relativePos;
- public float x;
- public float y;
- }
- public bool bindTeam;
- public bool canSeeMe;
- public bool canSeeOther;
- public bool deadExit;
- //退出aoi需要消灭的阵营
- public int killForce;
- public List<UnitCreateInfo> units;
- }
- //private ParamsData mParams;
- // 队伍拉人半径
- public static int TeamRadius = 5;
- public override int GetEventID()
- {
- return EventID;
- }
- protected override bool OnInit()
- {
- return true;
- }
- public override object CreateParams()
- {
- return new ParamsData();
- }
- private T ObjectDict2ValueByKey<T>(IDictionary<string, object> dict, string key, T defaultVal)
- {
- if (dict == null)
- {
- return defaultVal;
- }
- object ret;
- if (dict.TryGetValue(key, out ret))
- {
- return (T)System.Convert.ChangeType(ret, typeof(T));
- }
- else
- {
- return defaultVal;
- }
- }
- protected override void OnTriggerEvent(XmdsVirtual target, XmdsVirtual sender)
- {
- //InstancePlayer player = target.mUnit as InstancePlayer;
- //if(player == null)
- //{
- // return;
- //}
- //mParams = (ParamsData)data;
- //XmdsPlayerAOI aoi = new XmdsPlayerAOI(player, mParams.canSeeMe, mParams.canSeeOther);
- //player.setAoiStatus(aoi);
- //int killForce = mParams.killForce;
- //aoi.DeadExit = mParams.deadExit;
- //var handle = new ObjectAoiStatus.OnObjectLeaveHandler((a, o)=>
- //{
- // if (aoi.GetUnitCountByForce(killForce) == 0)
- // {
- // aoi.Cleanup();
- // player.setAoiStatus(null);
- // }
- //});
- //aoi.OnObjectLeave += handle;
- //var zone = player.Parent;
- //// 以TeamRadius为半径将队友拉入位面
- //if (mParams.bindTeam && target.TeamListCount > 0)
- //{
- // var teamList = target.TeamList;
- // foreach (var uuid in teamList)
- // {
- // var p = zone.getPlayerByUUID(uuid);
- // if (p != null && CMath.intersectRound(player.X, player.Y, TeamRadius, p.X, p.Y, p.Info.BodySize))
- // {
- // p.setAoiStatus(aoi);
- // }
- // }
- //}
- //if(mParams.units != null)
- //{
- // foreach (var item in mParams.units)
- // {
- // var unitInfo = zone.Templates.getUnit(item.id);
- // if(unitInfo != null)
- // {
- // float x = item.x, y = item.y;
- // if (item.relativePos)
- // {
- // x = player.X + item.x;
- // y = player.Y + item.y;
- // }
- // float d = (float)(Math.Atan2(player.Y - y, player.X - x));
- // var unit = zone.AddUnit(unitInfo, "打华仔", (byte)item.force, player.Level, x, y, d);
- // if (unit != null)
- // {
- // unit.setAoiStatus(player.AoiStatus);
- // }
- // }
- // }
- //}
- }
- }
- }
|