void OnEnable() { var tileMaterialsGUID = AssetDatabase.FindAssets("EditorTileMaterials")[0]; var tileMaterialsPath = AssetDatabase.GUIDToAssetPath(tileMaterialsGUID); tileMaterials = AssetDatabase.LoadAssetAtPath<DebugTileMaterials>(tileMaterialsPath); tileAppearance = serializedObject.FindProperty("appearance"); oldTileApprearance = (TileAppearance)tileAppearance.intValue; tileProperties = serializedObject.FindProperty("properties"); oldTileProperties = (TileProperty)tileProperties.intValue; }
public bool Dig() { if ((properties & TileProperty.Hole) == TileProperty.Hole || (properties & TileProperty.Crater) == TileProperty.Crater) { return false; } appearance = TileAppearance.Hole; properties = properties | TileProperty.Hole; ChangeModel(); heatmapUpdateTimer.Restart(); return true; }
public bool Detonate() { if ((properties & TileProperty.Landmine) == TileProperty.Landmine) { appearance = TileAppearance.Crater; properties = properties ^ TileProperty.Landmine; properties = properties | TileProperty.Crater; ChangeModel(); Camera.main.GetComponent<ShakeScript>().Shake(); GameObject.Instantiate(GameObject.FindGameObjectWithTag("Game Manager").GetComponent<TilePrefabHelpScript>().explosionPrefab, transform.position, Quaternion.LookRotation(Vector3.up)); heatmapUpdateTimer.Restart(); return true; } return false; }
public GameObject ChangeState(TileAppearance state) { switch (state) { case TileAppearance.Normal: return SetAppearance(startingPrefabs); case TileAppearance.Hole: return SetAppearance(holePrefabs); case TileAppearance.Crater: return SetAppearance(craterPrefabs); case TileAppearance.Obstacle: return SetAppearance(obstaclePrefabs); default: return null; } }
/// <summary> /// Marks a specific tile within the room as being visible /// at the given time. /// </summary> /// <param name="pos">Position of the tile to mark as visible.</param> /// <param name="appearance">Appearance of the tile at the time /// of being seen.</param> /// <param name="time">Time at which the tile was seen.</param> public void Reveal(Position pos, TileAppearance appearance, ulong time) { _mask[pos.X, pos.Y] = Math.Max(_mask[pos.X, pos.Y], time); _tiles[pos.X, pos.Y] = appearance; LastVisibleTime = Math.Max(LastVisibleTime, time); }