void InitPasswordLock() { List <LostSectorPortal> solutionPortals = new List <LostSectorPortal>(); foreach (IndexDirection2.DirectionEnum d in _solution) { IndexDirection2 dir = IndexDirection2.FromDirectionEnum(d); LostSectorPortal portal = DirectionToPortal(dir); solutionPortals.Add(portal); } _passwordLock = new PasswordLock(solutionPortals.ToArray()); _passwordLock.CorrectEntryCallback += OnCorrectEntryAddedToSequence; _passwordLock.IncorrectEntryCallback += OnIncorrectEntryAddedToSequence; _passwordLock.CorrectPasswordEnteredCallback += OnSequenceCompleted; }
public void PlayerEnteredPortal(LostSectorPortal portal) { if (portal == _entrance) { if (!_hasEnteredLostSector) { OnEnteredLostSector(); } return; } if (!_hasEnteredLostSector || HasSolutionSequenceBeenCompleted) { return; } AddEntryToSequence(portal); if (HasSolutionSequenceBeenCompleted) { return; } if (portal == _escapeExit) { OnExitedLostSector(); } else if (portal == _rightPortal) { WarpObjects(_warpedObjects, new Vector3(-_sectorWidth, 0, 0)); } else if (portal == _leftPortal) { WarpObjects(_warpedObjects, new Vector3(_sectorWidth, 0, 0)); } else if (portal == _upPortal) { WarpObjects(_warpedObjects, new Vector3(0, 0, -_sectorHeight)); } else if (portal == _downPortal) { WarpObjects(_warpedObjects, new Vector3(0, 0, _sectorHeight)); } }
void AddEntryToSequence(LostSectorPortal entry) { _passwordLock.InputNextEntry(entry); }
IndexDirection2 PortalToDirection(LostSectorPortal portal) { return(_directionToPortal.FirstOrDefault(p => p.Value == portal).Key); }