protected void Move(Vector3Int dirToMove) { var dest = mobTile.LocalPositionServer + dirToMove; if (mobTile.customNetTransform.Push(dirToMove.To2Int(), context: gameObject) == false) { //New doors DoorMasterController tryGetDoorMaster = mobTile.Matrix.GetFirst <DoorMasterController>(dest, true); if (tryGetDoorMaster) { tryGetDoorMaster.Bump(gameObject); } //Old doors DoorController tryGetDoor = mobTile.Matrix.GetFirst <DoorController>(dest, true); if (tryGetDoor) { tryGetDoor.MobTryOpen(gameObject); } } if (rotatable != null) { rotatable.SetFaceDirectionLocalVictor(dirToMove.To2Int()); } }
public void NewLinkDoor(DoorMasterController doorController) { NewdoorControllers.Add(doorController); OnTextBroadcastReceived(StatusDisplayChannel.DoorTimer); if (stateSync == MountedMonitorState.Image) { stateSync = MountedMonitorState.StatusText; } }
public void NewAddDoorControllerFromScene(DoorMasterController doorController) { if (NewdoorControllers.Contains(doorController)) { NewdoorControllers.Remove(doorController); } else { NewdoorControllers.Add(doorController); } }
/// <summary> /// General use movement for npcs /// 0 = no move (1 - 8 are directions to move in reading from left to right) /// </summary> /// <param name="act"></param> protected void PerformMoveAction(int act) { if (act == 0) { performingDecision = false; } else { Vector2Int dirToMove = Vector2Int.zero; int count = 1; for (int y = 1; y > -2; y--) { for (int x = -1; x < 2; x++) { if (count == act) { dirToMove.x += x; dirToMove.y += y; y = -100; break; } else { count++; } } } if (dirToMove == Vector2Int.zero) { performingDecision = false; return; } var dest = registerObj.LocalPositionServer + (Vector3Int)dirToMove; if (!cnt.Push(dirToMove, context: gameObject)) { //Path is blocked try again performingDecision = false; DoorController tryGetDoor = registerObj.Matrix.GetFirst <DoorController>( dest, true); if (tryGetDoor) { tryGetDoor.MobTryOpen(gameObject); } //New doors DoorMasterController tryGetDoorMaster = registerObj.Matrix.GetFirst <DoorMasterController>( dest, true); if (tryGetDoorMaster) { tryGetDoorMaster.Bump(gameObject); } } else { OnPushSolid(dest); } if (directional != null) { directional.FaceDirection(Orientation.From(dirToMove)); } } }
protected virtual void Awake() { master = GetComponentInParent <DoorMasterController>(); }