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); }
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); }
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()); } } }