/// <summary> /// 初期化処理 /// </summary> /// <param name="parent">ゲームクラス</param> public override void Init(PitchPitch parent) { base.Init(parent); parent.Player.Init(parent); // 各種フラグのリセット IsPaused = false; _isCleared = false; _isOver = false; _pauseSelectedIdx = 0; _clearSelectedIdx = 0; #region 色 initColor(_map.MapInfo.ForegroundColor, _map.MapInfo.BackgroundColor, _map.MapInfo.StrongColor); #endregion #region View/Map/Player _mapMargin = (int)(_viewRect.Width * 3 / 4.0) * _map.MapInfo.PlayerVx; Console.WriteLine(_mapMargin); _view.Width = _viewRect.Width; _view.Height = _viewRect.Height; _map.Init(parent, new Size(_view.Width, _view.Height)); _view.X = -_mapMargin; _view.Y = (long)(_map.Height / 2.0 - _view.Height / 2.0); _map.SetView(_view); _parent.Player.X = _playerXRatio * _view.Width - _mapMargin; _parent.Player.Y = _map.Height / 2.0; _parent.Player.Vx = _map.MapInfo.PlayerVx; _prevX = _parent.Player.X; _view.X = -_mapMargin; // BGM if (_map.Bgm != null) { SdlDotNet.Audio.MusicPlayer.Load(_map.Bgm); int ivol = (int)(128 * _map.BgmVolume / 100.0); ivol = ivol < 0 ? 0 : (ivol > 128 ? 128 : ivol); SdlDotNet.Audio.MusicPlayer.Volume = ivol; } #endregion #region メニュー作成 if (_map.HasEnd) { _pauseMenuItems = new MenuItem[] { new MenuItem(Key.Escape, Properties.Resources.MenuItem_ResumeGame), new MenuItem(Key.R, Properties.Resources.MenuItem_RetryStage), new MenuItem(Key.M, Properties.Resources.MenuItem_MapSelect), new MenuItem(Key.T, Properties.Resources.MenuItem_ReturnTitle) }; } else { _pauseMenuItems = new MenuItem[] { new MenuItem(Key.Escape, Properties.Resources.MenuItem_ResumeGame), new MenuItem(Key.M, Properties.Resources.MenuItem_MapSelect), new MenuItem(Key.T, Properties.Resources.MenuItem_ReturnTitle) }; } _pauseMenuSurfaces = new SurfaceCollection(); _pauseMenuRects = new Rectangle[_pauseMenuItems.Length]; ImageUtil.CreateStrMenu(_pauseMenuItems, _backColor, ref _pauseMenuSurfaces, ref _pauseMenuRects); _clearMenuSurfaces = new SurfaceCollection(); _clearMenuRects = new Rectangle[_clearMenuItems.Length]; ImageUtil.CreateStrMenu(_clearMenuItems, _foreColor, ref _clearMenuSurfaces, ref _clearMenuRects); #endregion #region ピッチ設定 if (_map.MapInfo.PitchType == map.PitchType.Fixed) { _isFixedPitchMap = true; _maxFreq = _map.MapInfo.MaxPitch; _minFreq = _map.MapInfo.MinPitch; if (_map.MapInfo.OctaveLevel != 0) { _maxFreq *= Math.Pow(2, _map.MapInfo.OctaveLevel); _minFreq *= Math.Pow(2, _map.MapInfo.OctaveLevel); } } else { _isFixedPitchMap = false; _minFreq = Config.Instance.MinFreq; _maxFreq = Config.Instance.MaxFreq; } _maxFreqLog = Math.Log(_maxFreq); _minFreqLog = Math.Log(_minFreq); #endregion createKeyRects(); _prevProcTime = Environment.TickCount; }