OSDN Git Service

コード整形
[kcd/KCD.git] / KCD / GameViewController.swift
index 2e633a8..0528ab6 100644 (file)
@@ -11,27 +11,32 @@ import WebKit
 import JavaScriptCore
 
 fileprivate extension Selector {
+    
     static let reloadContent = #selector(GameViewController.reloadContent(_:))
     static let deleteCacheAndReload = #selector(GameViewController.deleteCacheAndReload(_:))
     static let screenShot = #selector(GameViewController.screenShot(_:))
 }
 
-class GameViewController: NSViewController {
+final class GameViewController: NSViewController {
+    
     private static let gamePageURL = "http://www.dmm.com/netgame/social/-/gadgets/=/app_id=854854/"
     private static let loginPageURLPrefix = "https://www.dmm.com/my/-/login/=/"
     
     @IBOutlet var webView: WebView!
     
     override var nibName: String! {
+        
         return "GameViewController"
     }
     
     fileprivate var flashTopLeft = NSPoint(x: 2600, y: 1445)
     private var clipView: NSClipView {
+        
         return view as! NSClipView  // swiftlint:disable:this force_cast
     }
     
     override func viewDidLoad() {
+        
         super.viewDidLoad()
         
         clipView.documentView = webView
@@ -43,23 +48,31 @@ class GameViewController: NSViewController {
         webView.applicationNameForUserAgent = AppDelegate.shared.appNameForUserAgent
         webView.mainFrameURL = GameViewController.gamePageURL
     }
+    
     func adjustFlash() {
+        
         webView.superview?.scroll(flashTopLeft)
     }
     
     @IBAction func reloadContent(_ sender: AnyObject?) {
+        
         guard let _ = webView.mainFrameURL
             else {
                 webView.mainFrameURL = GameViewController.gamePageURL
                 return
         }
+        
         // ゲームページでない場合はゲームページを表示する
         if webView.mainFrameURL != GameViewController.gamePageURL {
+            
             webView.mainFrameURL = GameViewController.gamePageURL
+            
             return
         }
         if webView.mainFrameURL.hasPrefix(GameViewController.loginPageURLPrefix) {
+            
             webView.reload(sender)
+            
             return
         }
         
@@ -67,8 +80,10 @@ class GameViewController: NSViewController {
         
         let prevDate = UserDefaults.standard.prevReloadDate
         if let prevDate = prevDate {
+            
             let now = Date(timeIntervalSinceNow: 0.0)
             if now.timeIntervalSince(prevDate) < 1 * 60 {
+                
                 let untilDate = prevDate.addingTimeInterval(1 * 60)
                 let date = DateFormatter.localizedString(from: untilDate, dateStyle: .none, timeStyle: .medium)
                 let alert = NSAlert()
@@ -85,11 +100,15 @@ class GameViewController: NSViewController {
         
         UserDefaults.standard.prevReloadDate = Date(timeIntervalSinceNow: 0.0)
     }
+    
     @IBAction func deleteCacheAndReload(_ sender: AnyObject?) {
+        
         let panel = ProgressPanel()
+        
         guard let window = view.window,
             let panelWindow = panel.window
             else { return }
+        
         panel.title = ""
         panel.message = NSLocalizedString("Deleting caches...", comment: "Deleting caches...")
         panel.animate = true
@@ -100,41 +119,57 @@ class GameViewController: NSViewController {
         
         window.endSheet(panelWindow)
     }
+    
     @IBAction func screenShot(_ sender: AnyObject?) {
+        
         let frame = webView.visibleRect
         let screenshotBorder = UserDefaults.standard.screenShotBorderWidth
         let f = frame.insetBy(dx: -screenshotBorder, dy: -screenshotBorder)
+        
         guard let rep = webView.bitmapImageRepForCachingDisplay(in: f) else { return }
+        
         webView.cacheDisplay(in: frame, to: rep)
         AppDelegate.shared.registerScreenshot(rep, fromOnScreen: .zero)
     }
     
     override func validateMenuItem(_ menuItem: NSMenuItem) -> Bool {
+        
         if menuItem.action == .reloadContent {
+            
             guard let _ = webView.mainFrame,
                 let frameURL = webView.mainFrameURL
                 else { return true }
+            
             switch frameURL {
             case GameViewController.gamePageURL:
                 menuItem.title = NSLocalizedString("Reload", comment: "Reload menu, reload")
+                
             case let s where s.hasPrefix(GameViewController.loginPageURLPrefix):
                 menuItem.title = NSLocalizedString("Reload", comment: "Reload menu, reload")
+                
             default:
                 menuItem.title = NSLocalizedString("Back To Game", comment: "Reload menu, back to game")
             }
+            
             return true
         }
+        
         if menuItem.action == .deleteCacheAndReload {
+            
             return true
         }
+        
         if menuItem.action == .screenShot {
+            
             return true
         }
+        
         return false
     }
 }
 
 extension GameViewController: WebFrameLoadDelegate, WebUIDelegate {
+    
     private static let excludeMenuItemTag = [
         WebMenuItemTagOpenLinkInNewWindow,
         WebMenuItemTagDownloadLinkToDisk,
@@ -147,18 +182,28 @@ extension GameViewController: WebFrameLoadDelegate, WebUIDelegate {
     ]
     
     func webView(_ sender: WebView!, didFinishLoadFor frame: WebFrame!) {
-        guard let path = frame.dataSource?.initialRequest.url?.path else { return }
+        
+        guard let path = frame.dataSource?.initialRequest.url?.path
+            else { return }
         
         let handler: (JSContext?, JSValue?) -> Void = { (_, exception) in
+            
             if let exception = exception {
+                
                 print("Caught exception in evaluteScript -> \(exception)")
+                
             } else {
+                
                 print("Caught exception in evaluteScript")
+                
             }
         }
         
         if path.hasSuffix("gadgets/ifr") {
-            guard let context = frame.javaScriptContext else { return }
+            
+            guard let context = frame.javaScriptContext
+                else { return }
+            
             context.exceptionHandler = handler
             context.evaluateScript(
                 ["var emb = document.getElementById('flashWrap');",
@@ -171,8 +216,12 @@ extension GameViewController: WebFrameLoadDelegate, WebUIDelegate {
             let left = context.objectForKeyedSubscript("aleft").toDouble()
             flashTopLeft = NSPoint(x: CGFloat(left), y: webView.frame.size.height - CGFloat(top) - 480)
         }
+        
         if path.hasSuffix("app_id=854854") {
-            guard let context = frame.javaScriptContext else { return }
+            
+            guard let context = frame.javaScriptContext
+                else { return }
+            
             context.exceptionHandler = handler
             context.evaluateScript(
                 ["var iframe = document.getElementById('game_frame');",
@@ -186,10 +235,14 @@ extension GameViewController: WebFrameLoadDelegate, WebUIDelegate {
                     .reduce("", +)
             )
             let validIframe = context.objectForKeyedSubscript("validIframe").toInt32()
-            guard validIframe != 0 else { return }
+            
+            guard validIframe != 0
+                else { return }
+            
             let top = context.objectForKeyedSubscript("atop").toDouble()
             let left = context.objectForKeyedSubscript("aleft").toDouble()
             flashTopLeft = NSPoint(x: flashTopLeft.x + CGFloat(left), y: flashTopLeft.y - CGFloat(top))
+            
             adjustFlash()
         }
     }
@@ -197,8 +250,13 @@ extension GameViewController: WebFrameLoadDelegate, WebUIDelegate {
     func webView(_ sender: WebView!,
                  contextMenuItemsForElement element: [AnyHashable: Any]!,
                  defaultMenuItems: [Any]!) -> [Any]! {
-        guard let menuItems = defaultMenuItems as? [NSMenuItem] else { return [] }
+        
+        guard let menuItems = defaultMenuItems as? [NSMenuItem]
+            else { return [] }
+        
+        // TODO: use filter
         return menuItems.flatMap {
+            
             GameViewController.excludeMenuItemTag.contains($0.tag) ? nil : $0
         }
     }