Пример #1
0
        // calculate origin for screen as an index into the level
        int CalcScreenIndex()
        {
            var flick = _gamedef.GetSetting(OptionSetting.flickscreen, (Pair <int, int>)null);
            var zoom  = _gamedef.GetSetting(OptionSetting.zoomscreen, (Pair <int, int>)null);

            if ((flick == null && zoom == null) || !PlayerIndexes.Any())
            {
                return(0);
            }
            var pindex = PlayerIndexes[0];
            var width  = _level.Width;
            var height = _level.Height;

            if (flick != null)
            {
                var x = flick.Item1 * (pindex % width / flick.Item1);
                var y = flick.Item2 * (pindex / width / flick.Item2);
                return(width * y + x);
            }
            else
            {
                var x = Math.Max(0, Math.Min(width - zoom.Item1, pindex % width - zoom.Item1 / 2));
                var y = Math.Max(0, Math.Min(height - zoom.Item2, pindex / width - zoom.Item2 / 2));
                return(width * y + x);
            }
        }