Exemple #1
0
        protected void hitTest()
        {
            int    mw = _map.ChipData.ChipWidth;
            int    mh = _map.ChipData.ChipHeight;
            PointD pp = convertToViewCoord(_parent.Player.X, _parent.Player.Y);

            foreach (map.Chip chip in _map.EnumViewChipData())
            {
                if (chip.Hardness <= 0)
                {
                    continue;
                }

                if (_parent.Player.Hit(chip, pp, mw, mh))
                {
                    double     plog  = _minFreqLog + (_maxFreqLog - _minFreqLog) * (Constants.StageViewHeight - _parent.Player.Y) / (double)Constants.StageViewHeight;
                    double     pitch = Math.Pow(Math.E, plog);
                    ToneResult tone  = ToneAnalyzer.Analyze(pitch, 1.0);
                    ResourceManager.SoundExplosion[tone.ToneIdx.ToString("D2")].Play();

                    _parent.Player.Y   = _map.GetDefaultY(pp.X);
                    _parent.Player.Rad = _parent.Player.MinRadius;
                    break;
                }
            }
        }