Tetris/Tetris Mac/TetrisWindow.swift

56 lines
1.5 KiB
Swift

//
// TetrisWindow.swift
// Tetris Mac
//
// Created by Shadowfacts on 4/5/20.
// Copyright © 2020 Shadowfacts. All rights reserved.
//
import Cocoa
import TetrisKit
import Carbon
class TetrisWindow: NSWindow {
let gameController = GameController()
init() {
super.init(contentRect: NSRect(x: 0, y: 0, width: 634, height: 804),
styleMask: [.titled, .closable, .miniaturizable, .resizable, .fullSizeContentView],
backing: .buffered,
defer: false)
setFrameAutosaveName("Main Window")
contentViewController = TetrisViewController(gameController: gameController)
title = "Tetris"
}
override func keyDown(with event: NSEvent) {
switch Int(event.keyCode) {
case kVK_LeftArrow:
gameController.left()
case kVK_RightArrow:
gameController.right()
case kVK_UpArrow:
gameController.rotate(direction: .clockwise)
case kVK_DownArrow:
gameController.drop()
case kVK_Space:
gameController.togglePause()
default:
super.keyDown(with: event)
}
}
override func flagsChanged(with event: NSEvent) {
if event.modifierFlags.contains(.control) {
gameController.rotate(direction: .counterClockwise)
} else if event.modifierFlags.contains(.shift) {
gameController.hold()
} else {
super.flagsChanged(with: event)
}
}
}