예제 #1
0
        public void flip_horiz(EAxesFlipType _ft)
#endif
        {
            m_CHR_attr.ForEach(delegate(CHR_data_attr _attr)
            {
#if DEF_NES || DEF_PCE
                _attr.hflip();
#elif DEF_SMS
                m_CHR_data.get_data()[_attr.CHR_ind].transform(CHR_data.ETransform.t_hflip);

                if (_8x16_mode && _attr.CHR_ind + 1 < m_CHR_data.get_data().Count)
                {
                    m_CHR_data.get_data()[_attr.CHR_ind + 1].transform(CHR_data.ETransform.t_hflip);
                }

                if (_transform_pos)
#endif
                {
                    switch (_ft)
                    {
                    case sprite_data.EAxesFlipType.aft_LOCAL_AXES:
                        {
                            int center = m_size_x >> 1;
                            _attr.x    = center - (_attr.x - center) - utils.CONST_CHR_SIDE_PIXELS_CNT;
                        }
                        break;

                    case sprite_data.EAxesFlipType.aft_GLOABL_AXES:
                        {
                            _attr.x = (-_attr.x - utils.CONST_CHR_SIDE_PIXELS_CNT) - m_offset_x;
                        }
                        break;
                    }
                }
            });

#if DEF_SMS
            if (_transform_pos)
#endif
            {
                if (_ft == sprite_data.EAxesFlipType.aft_GLOABL_AXES)
                {
                    // find a minimal X value
                    int min_x = int.MaxValue;

                    m_CHR_attr.ForEach(delegate(CHR_data_attr _attr)
                    {
                        if (min_x > _attr.x)
                        {
                            min_x = _attr.x;
                        }
                    });

                    // attr.x -= min_X
                    m_CHR_attr.ForEach(delegate(CHR_data_attr _attr)
                    {
                        _attr.x -= min_x;
                    });

                    m_offset_x = min_x;
                }
            }
        }
예제 #2
0
 public void flip_horiz(EAxesFlipType _ft, bool _transform_pos, bool _8x16_mode)
예제 #3
0
        public void flip_vert(EAxesFlipType _ft)
#endif
        {
            m_CHR_attr.ForEach(delegate(CHR_data_attr _attr)
            {
#if DEF_NES || DEF_PCE
                _attr.vflip();
#elif DEF_SMS
                m_CHR_data.get_data()[_attr.CHR_ind].transform(CHR_data.ETransform.t_vflip);

                if (_8x16_mode && _attr.CHR_ind + 1 < m_CHR_data.get_data().Count)
                {
                    m_CHR_data.get_data()[_attr.CHR_ind + 1].transform(CHR_data.ETransform.t_vflip);

                    m_CHR_data.swap_CHRs(_attr.CHR_ind, _attr.CHR_ind + 1);
                }

                if (_transform_pos)
#endif
                {
                    switch (_ft)
                    {
                    case sprite_data.EAxesFlipType.aft_LOCAL_AXES:
                        {
                            int center = m_size_y >> 1;
                            _attr.y    = center - (_attr.y - center) - utils.CONST_CHR_SIDE_PIXELS_CNT;
                        }
                        break;

                    case sprite_data.EAxesFlipType.aft_GLOABL_AXES:
                        {
                            _attr.y = (-_attr.y - utils.CONST_CHR_SIDE_PIXELS_CNT) - m_offset_y;
#if !DEF_PCE
                            if (_8x16_mode)
                            {
                                _attr.y -= utils.CONST_CHR_SIDE_PIXELS_CNT;
                            }
#endif
                        }
                        break;
                    }
                }
            });

#if DEF_SMS
            if (_transform_pos)
#endif
            {
                if (_ft == sprite_data.EAxesFlipType.aft_GLOABL_AXES)
                {
                    // find a minimal Y value
                    int min_y = int.MaxValue;

                    m_CHR_attr.ForEach(delegate(CHR_data_attr _attr)
                    {
                        if (min_y > _attr.y)
                        {
                            min_y = _attr.y;
                        }
                    });

                    // attr.y -= min_y
                    m_CHR_attr.ForEach(delegate(CHR_data_attr _attr)
                    {
                        _attr.y -= min_y;
                    });

                    m_offset_y = min_y;
                }
            }
        }
예제 #4
0
 public void flip_horiz(EAxesFlipType _ft)
예제 #5
0
 public void flip_vert(EAxesFlipType _ft, bool _8x16_mode)