2014-10-29 00:47:51 -04:00
//
// SettingsViewController . m
2015-05-12 21:48:30 -04:00
// Moonlight
2014-10-29 00:47:51 -04:00
//
// Created by Diego Waxemberg on 10 / 27 / 14.
2015-05-12 21:48:30 -04:00
// Copyright ( c ) 2014 Moonlight Stream . All rights reserved .
2014-10-29 00:47:51 -04:00
//
# import "SettingsViewController.h"
# import "Settings.h"
# import "DataManager.h"
2015-02-24 00:02:37 -05:00
# define BITRATE_INTERVAL 500 // in kbps
2014-10-29 00:47:51 -04:00
@ implementation SettingsViewController {
NSInteger _bitrate ;
}
2015-02-24 00:02:37 -05:00
static NSString * bitrateFormat = @ "Bitrate: %.1f Mbps" ;
2014-10-29 00:47:51 -04:00
- ( void ) viewDidLoad {
[ super viewDidLoad ] ;
DataManager * dataMan = [ [ DataManager alloc ] init ] ;
Settings * currentSettings = [ dataMan retrieveSettings ] ;
2015-01-09 00:45:56 -05:00
// Bitrate is persisted in kbps
2015-02-24 00:02:37 -05:00
_bitrate = [ currentSettings . bitrate integerValue ] ;
2014-10-29 00:47:51 -04:00
NSInteger framerate = [ currentSettings . framerate integerValue ] = = 30 ? 0 : 1 ;
2015-01-10 11:44:22 -05:00
NSInteger resolution ;
if ( [ currentSettings . height integerValue ] = = 720 ) {
resolution = 0 ;
} else if ( [ currentSettings . height integerValue ] = = 1080 ) {
resolution = 1 ;
} else {
resolution = 2 ;
}
2014-12-29 13:03:07 -05:00
NSInteger onscreenControls = [ currentSettings . onscreenControls integerValue ] ;
2014-10-29 00:47:51 -04:00
[ self . resolutionSelector setSelectedSegmentIndex : resolution ] ;
[ self . framerateSelector setSelectedSegmentIndex : framerate ] ;
2014-12-29 13:03:07 -05:00
[ self . onscreenControlSelector setSelectedSegmentIndex : onscreenControls ] ;
2015-04-06 00:48:54 -04:00
[ self . bitrateSlider setValue : ( _bitrate / BITRATE_INTERVAL ) animated : YES ] ;
2014-10-29 00:47:51 -04:00
[ self . bitrateSlider addTarget : self action : @ selector ( bitrateSliderMoved ) forControlEvents : UIControlEventValueChanged ] ;
2015-02-24 00:02:37 -05:00
[ self updateBitrateText ] ;
2014-10-29 00:47:51 -04:00
}
- ( void ) bitrateSliderMoved {
2015-02-24 00:02:37 -05:00
_bitrate = BITRATE_INTERVAL * ( int ) self . bitrateSlider . value ;
[ self updateBitrateText ] ;
2014-10-29 00:47:51 -04:00
}
2015-02-24 00:02:37 -05:00
- ( void ) updateBitrateText {
// Display bitrate in Mbps
[ self . bitrateLabel setText : [ NSString stringWithFormat : bitrateFormat , _bitrate / 1000. ] ] ;
}
2014-10-29 00:47:51 -04:00
- ( void ) saveSettings {
DataManager * dataMan = [ [ DataManager alloc ] init ] ;
NSInteger framerate = [ self . framerateSelector selectedSegmentIndex ] = = 0 ? 30 : 60 ;
2014-12-27 02:42:14 +01:00
NSInteger height ;
NSInteger width ;
if ( [ self . resolutionSelector selectedSegmentIndex ] = = 2 ) {
// Get screen native resolution
2014-12-27 03:21:32 +01:00
height = [ UIScreen mainScreen ] . bounds . size . height * [ UIScreen mainScreen ] . scale ;
width = [ UIScreen mainScreen ] . bounds . size . width * [ UIScreen mainScreen ] . scale ;
2014-12-27 02:42:14 +01:00
2015-01-10 11:55:12 -05:00
UIAlertController * alertResolution = [ UIAlertController alertControllerWithTitle : @ "Native resolution" message : [ NSString stringWithFormat : @ "You must select the following resolution in the game settings: %lix%li" , ( long ) width , ( long ) height ] preferredStyle : UIAlertControllerStyleAlert ] ;
[ alertResolution addAction : [ UIAlertAction actionWithTitle : @ "Ok" style : UIAlertActionStyleCancel handler : nil ] ] ;
[ self presentViewController : alertResolution animated : YES completion : nil ] ;
2014-12-27 02:42:14 +01:00
}
else
{
height = [ self . resolutionSelector selectedSegmentIndex ] = = 0 ? 720 : 1080 ;
width = height = = 720 ? 1280 : 1920 ;
}
2014-12-31 19:13:54 -05:00
NSInteger onscreenControls = [ self . onscreenControlSelector selectedSegmentIndex ] ;
2014-12-29 13:03:07 -05:00
[ dataMan saveSettingsWithBitrate : _bitrate framerate : framerate height : height width : width onscreenControls : onscreenControls ] ;
2014-10-29 00:47:51 -04:00
}
- ( void ) didReceiveMemoryWarning {
[ super didReceiveMemoryWarning ] ;
// Dispose of any resources that can be recreated .
}
# pragma mark - Navigation
- ( void ) prepareForSegue : ( UIStoryboardSegue * ) segue sender : ( id ) sender {
}
@ end