public override ActorInstance.Trigger GenerateTrigger() { ActorInstance.Connector conn = null; if (TriggerType != null) { conn = new ActorInstance.Connector(TriggerType as Connector); conn.socket = this; } return(conn); }
public override bool CheckPlayer(CharacterPawn pawn, ActorInstance.ActorBase actor) { ActorInstance.Connector door = actor as ActorInstance.Connector; if (door != null && door.otherConnector != null) { string fromRoom = door.otherConnector.parentRoom.RoomProp.roomName; foreach (string name in RoomFromList) { if (fromRoom.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); }