Core/Scenes: Implemented spell created SceneObjects

Port From (https://github.com/TrinityCore/TrinityCore/commit/d7302ffd1499433fef2cc4e824ae9443c3d2c79f)
This commit is contained in:
hondacrx
2021-10-11 17:21:33 -04:00
parent b0528d1ad3
commit d2bcc321f5
11 changed files with 374 additions and 17 deletions
+67
View File
@@ -31,6 +31,7 @@ namespace Game.Maps
public virtual void Visit(IList<WorldObject> objs) { }
public virtual void Visit(IList<Creature> objs) { }
public virtual void Visit(IList<AreaTrigger> objs) { }
public virtual void Visit(IList<SceneObject> objs) { }
public virtual void Visit(IList<Conversation> objs) { }
public virtual void Visit(IList<GameObject> objs) { }
public virtual void Visit(IList<DynamicObject> objs) { }
@@ -66,6 +67,7 @@ namespace Game.Maps
public void Visit(IList<WorldObject> collection) { _notifier.Visit(collection); }
public void Visit(IList<Creature> creatures) { _notifier.Visit(creatures); }
public void Visit(IList<AreaTrigger> areatriggers) { _notifier.Visit(areatriggers); }
public void Visit(IList<SceneObject> sceneObjects) { _notifier.Visit(sceneObjects); }
public void Visit(IList<Conversation> conversations) { _notifier.Visit(conversations); }
public void Visit(IList<GameObject> gameobjects) { _notifier.Visit(gameobjects); }
public void Visit(IList<DynamicObject> dynamicobjects) { _notifier.Visit(dynamicobjects); }
@@ -767,6 +769,19 @@ namespace Game.Maps
}
}
public override void Visit(IList<SceneObject> objs)
{
if (!i_mapTypeMask.HasAnyFlag(GridMapTypeMask.SceneObject))
return;
for (var i = 0; i < objs.Count; ++i)
{
SceneObject sceneObject = objs[i];
if (sceneObject.IsInPhase(_searcher))
i_do.Invoke(sceneObject);
}
}
public override void Visit(IList<Conversation> objs)
{
if (!i_mapTypeMask.HasAnyFlag(GridMapTypeMask.Conversation))
@@ -1129,6 +1144,29 @@ namespace Game.Maps
}
}
public override void Visit(IList<SceneObject> objs)
{
if (!i_mapTypeMask.HasAnyFlag(GridMapTypeMask.SceneObject))
return;
// already found
if (i_object)
return;
for (var i = 0; i < objs.Count; ++i)
{
SceneObject sceneObject = objs[i];
if (!sceneObject.IsInPhase(_searcher))
continue;
if (i_check.Invoke(sceneObject))
{
i_object = sceneObject;
return;
}
}
}
public override void Visit(IList<Conversation> objs)
{
if (!i_mapTypeMask.HasAnyFlag(GridMapTypeMask.Conversation))
@@ -1264,6 +1302,22 @@ namespace Game.Maps
}
}
public override void Visit(IList<SceneObject> objs)
{
if (!i_mapTypeMask.HasAnyFlag(GridMapTypeMask.SceneObject))
return;
for (var i = 0; i < objs.Count; ++i)
{
SceneObject sceneObject = objs[i];
if (!sceneObject.IsInPhase(_searcher))
continue;
if (i_check.Invoke(sceneObject))
i_object = sceneObject;
}
}
public override void Visit(IList<Conversation> objs)
{
if (!i_mapTypeMask.HasAnyFlag(GridMapTypeMask.Conversation))
@@ -1375,6 +1429,19 @@ namespace Game.Maps
}
}
public override void Visit(IList<SceneObject> objs)
{
if (!i_mapTypeMask.HasAnyFlag(GridMapTypeMask.Conversation))
return;
for (var i = 0; i < objs.Count; ++i)
{
SceneObject sceneObject = objs[i];
if (i_check.Invoke(sceneObject))
i_objects.Add(sceneObject);
}
}
public override void Visit(IList<Conversation> objs)
{
if (!i_mapTypeMask.HasAnyFlag(GridMapTypeMask.Conversation))