public override void FindTarget(PlayerController controller, ActorInstance.Trigger triggerInst, ref List <CharacterPawn> targets) { if (triggerInst.parentRoom != null && triggerInst.parentRoom.PawnsInRoom != null) { targets.AddRange(triggerInst.parentRoom.PawnsInRoom); } }
public virtual ActorInstance.Trigger GenerateTrigger() { ActorInstance.Trigger trigger = null; if (TriggerType != null) { trigger = new ActorInstance.Trigger(TriggerType); trigger.socket = this; } return(trigger); }
public virtual void FindTarget(PlayerController controller, ActorInstance.Trigger instance, ref List <CharacterPawn> targets) { targets.Clear(); if (targetFinder == null) { targets.Add(controller.Pawn); } else { targetFinder.FindTarget(controller, instance, ref targets); } }
public override bool Check(ActorInstance.Trigger trigger) { if (NameList != null) { foreach (string name in NameList) { if (trigger.parentRoom.RoomProp.roomName.Equals(name)) { return(true); } } } return(false); }
protected override void _OnLoad(ActorInstance.ActorBase actor) { base._OnLoad(actor); ActorInstance.Room roomInst = actor as ActorInstance.Room; if (roomInst != null) { roomInst.mono = roomInst.actorTrans.GetComponent <RoomMono>(); } else { Debug.LogErrorFormat("Room {0} OnLoad an actor which is NOT a room instance!", name); } int index = 0; //init connectors foreach (ConnectorSocket socket in ConnectorSockets) { ActorInstance.Trigger trig = socket.GenerateTrigger(); ActorInstance.Connector connector = trig as ActorInstance.Connector; if (roomInst.ConnectorList == null) { roomInst.ConnectorList = new List <ActorInstance.Connector>(); } if (connector == null) { Debug.LogErrorFormat("{0} connector {1} is null!", roomName, index); } else { roomInst.ConnectorList.Add(connector); connector.parentRoom = roomInst; connector.SetParent(roomInst.actorTrans, socket.LocalPosition, Quaternion.Euler(socket.LocalEulerRotation)); } index++; } //init triggers foreach (TriggerSocket socket in TriggerSockets) { ActorInstance.Trigger trigger = socket.GenerateTrigger(); trigger.parentRoom = roomInst; trigger.SetParent(roomInst.actorTrans, socket.LocalPosition, Quaternion.Euler(socket.LocalEulerRotation)); } }
public override bool Check(ActorInstance.Trigger trigger) { if (base.Check(trigger)) { return(true); } ActorInstance.Connector conn = trigger as ActorInstance.Connector; if (conn != null && conn.ConnectType == Connector.CONNECTOR_TYPE.NO_WAY) //window { if (GameLoader.Instance.GetRoomByLogicPosition(conn.ConnectToPos) == null) { //windows which has no room at the other side return(true); } } return(false); }
protected override void _OnLoad(ActorInstance.ActorBase actor) { base._OnLoad(actor); ActorInstance.Trigger triggerInst = actor as ActorInstance.Trigger; if (triggerInst != null) { triggerInst.mono = triggerInst.actorTrans.GetComponent <TriggerMono>(); if (!AutoEnable) { triggerInst.mono.Enable(false); } if (!ShowByDefault) { triggerInst.mono.Show(false); } if (CanRemoteTrigger) { GameLoader.Instance.RegisterRemoteTrigger(triggerInst); } } else { Debug.LogErrorFormat("Trigger {0} OnLoad an actor which is NOT a trigger instance!", name); } if (EntryEvents != null) { foreach (var e in EntryEvents) { e.Init(); } } if (ExitEvents != null) { foreach (var e in ExitEvents) { e.Init(); } } }
public virtual void FindTarget(PlayerController controller, ActorInstance.Trigger instance, ref List <CharacterPawn> targets) { }
public virtual bool Check(ActorInstance.Trigger trigger) { return(true); }