// // Block.swift // Privyet // // Created by Amy Bowersox on 5/23/20. // Copyright © 2020 Erbosoft Metaverse Design Solutions. All rights reserved. // import Foundation import SpriteKit // Colors that may be applied to blocks (whcih controls the sprite image they use) enum BlockColor: Int, CustomStringConvertible, CaseIterable { case Blue = 0, Orange, Purple, Red, Teal, Yellow, Green var spriteName: String { switch self { case .Blue: return "blue" case .Orange: return "orange" case .Purple: return "purple" case .Red: return "red" case .Teal: return "teal" case .Yellow: return "yellow" case .Green: return "green" } } var description: String { return self.spriteName } static func random() -> BlockColor { return BlockColor.allCases.shuffled().first! } } // Represents a single block in the game. class Block: Hashable, CustomStringConvertible { // Constants let color: BlockColor // Properties var column: Int var row: Int var sprite: SKSpriteNode? var spriteName: String { return color.spriteName } static func == (lhs: Block, rhs: Block) -> Bool { return lhs.column == rhs.column && lhs.row == rhs.row && lhs.color.rawValue == rhs.color.rawValue } func hash(into hasher: inout Hasher) { hasher.combine(column) hasher.combine(row) } var description: String { return "\(color): [\(column), \(row)]" } init(column: Int, row: Int, color: BlockColor) { self.column = column self.row = row self.color = color } }