public static void RunSpawnProcessor(BaseDeconstructable baseDeconstructable, Base latestBase, Int3 latestCell, GameObject finishedPiece) { TechType techType = (TechType)baseDeconstructable.ReflectionGet("recipe"); if (processorsByType.TryGetValue(techType, out BasePieceSpawnProcessor processor)) { Log.Info($"Found custom BasePieceSpawnProcessor for {techType}"); processor.SpawnPostProcess(latestBase, latestCell, finishedPiece); } }
public static BasePieceSpawnProcessor From(BaseDeconstructable baseDeconstructable) { TechType techType = (TechType)baseDeconstructable.ReflectionGet("recipe"); if (processorsByType.TryGetValue(techType, out BasePieceSpawnProcessor processor)) { Log.Info("Found custom BasePieceSpawnProcessor for " + techType); return(processor); } return(noOpProcessor); }
private Optional <GameObject> FindSecondLadderPiece(Base latestBase, Int3 cellToSearch) { Transform cellTransform = latestBase.GetCellObject(cellToSearch); foreach (Transform child in cellTransform) { NitroxEntity id = child.GetComponent <NitroxEntity>(); BaseDeconstructable baseDeconstructable = child.GetComponent <BaseDeconstructable>(); bool isNewBasePiece = (id == null && baseDeconstructable != null); if (isNewBasePiece) { TechType techType = (TechType)baseDeconstructable.ReflectionGet("recipe"); if (techType == TechType.BaseLadder) { return(Optional <GameObject> .Of(child.gameObject)); } } } return(Optional <GameObject> .Empty()); }