Tetris/Tetris Mac/TetrisWindow.swift

56 lines
1.5 KiB
Swift
Raw Normal View History

2019-10-16 23:57:56 +00:00
//
2020-04-05 18:57:06 +00:00
// TetrisWindow.swift
2019-10-16 23:57:56 +00:00
// Tetris Mac
//
2020-04-05 18:57:06 +00:00
// Created by Shadowfacts on 4/5/20.
// Copyright © 2020 Shadowfacts. All rights reserved.
2019-10-16 23:57:56 +00:00
//
import Cocoa
import TetrisKit
2020-04-05 18:57:06 +00:00
import Carbon
2019-10-16 23:57:56 +00:00
2020-04-05 18:57:06 +00:00
class TetrisWindow: NSWindow {
2019-10-16 23:57:56 +00:00
2020-04-05 18:57:06 +00:00
let gameController = GameController()
2019-10-16 23:57:56 +00:00
2020-04-05 18:57:06 +00:00
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"
2019-10-16 23:57:56 +00:00
}
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()
2019-10-20 14:23:32 +00:00
case kVK_Space:
gameController.togglePause()
2019-10-16 23:57:56 +00:00
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)
}
}
2020-04-05 18:57:06 +00:00
2019-10-16 23:57:56 +00:00
}