public static bool TryGetBlock(uint id, out CPBlock block) { if (IsValidID(id)) { block = ToBlock(id); return(true); } block = null; return(false); }
private static T SetupDoorBase <T>(CPBlock block, SecurityDoor door) where T : CPContext, new() { Vector3 position = door.m_bioScanAlign.position; if (!PhysicsUtil.SlamPos(ref position, Vector3.down, 4.0f, LayerManager.MASK_LEVELGEN, false, 0f, 1.0f)) { return(null); } return(SetupBase <T>(block, door.Gate.ProgressionSourceArea, position, door.transform)); }
private static T SetupBase <T>(CPBlock block, LG_Area area, Vector3 position, Transform parent) where T : CPContext, new() { var context = new T() { }; if (IsBuildDone) { CreatePuzzleInstance(); } else { BuildQueue += CreatePuzzleInstance; } return(context); void CreatePuzzleInstance() { context.Instance = ChainedPuzzleManager.CreatePuzzleInstance(block, area, position, parent); context.Instance.add_OnPuzzleSolved(new Action(context.Solved_Internal)); context.Setup(position); } }
private static T SetupTerminalBase <T>(CPBlock block, Terminal terminal) where T : CPContext, new() { return(SetupBase <T>(block, terminal.SpawnNode.m_area, terminal.m_wardenObjectiveSecurityScanAlign.position, terminal.m_wardenObjectiveSecurityScanAlign)); }
public static T SetupTerminal <T>(CPBlock block, Terminal terminal) where T : CPContext, new() => SetupTerminalBase <T>(block, terminal);
public static CPContext SetupTerminal(CPBlock block, Terminal terminal) => SetupTerminalBase <CPContext>(block, terminal);
public static T SetupDoor <T>(CPBlock block, SecurityDoor door) where T : CPContext, new() => SetupDoorBase <T>(block, door);
public static CPContext SetupDoor(CPBlock block, SecurityDoor door) => SetupDoorBase <CPContext>(block, door);
private static CPBlock ToBlock(uint id) => CPBlock.GetBlock(id);
public static bool IsValidID(uint id) => CPBlock.HasBlock(id);
public static CPContext Setup(CPBlock block, LG_Area area, Vector3 position, Transform parent) => SetupBase <CPContext>(block, area, position, parent);
/// <summary> /// Create ChainedPuzzle Instance /// </summary> /// <typeparam name="T">ChainedPuzzleContext Type (derived or not)</typeparam> /// <param name="block">Block to use for puzzle</param> /// <param name="area">Area for chainedpuzzle</param> /// <param name="position">Initial Position for spawn</param> /// <param name="parent">Parent</param> /// <returns></returns> public static T Setup <T>(CPBlock block, LG_Area area, Vector3 position, Transform parent) where T : CPContext, new() => SetupBase <T>(block, area, position, parent);