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
|
|
|
}
|