dxruby_sdl 0.0.4 → 0.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +8 -8
- data/.rubocop.yml +9 -0
- data/.travis.yml +2 -1
- data/Guardfile +1 -1
- data/README.md +41 -17
- data/lib/dxruby_sdl/color.rb +2 -2
- data/lib/dxruby_sdl/font.rb +132 -11
- data/lib/dxruby_sdl/image.rb +49 -3
- data/lib/dxruby_sdl/input.rb +40 -24
- data/lib/dxruby_sdl/sound.rb +20 -3
- data/lib/dxruby_sdl/sound_effect.rb +4 -0
- data/lib/dxruby_sdl/sprite.rb +178 -0
- data/lib/dxruby_sdl/version.rb +1 -1
- data/lib/dxruby_sdl/window.rb +46 -7
- data/lib/dxruby_sdl.rb +3 -0
- data/spec/{dxruby_sdl → lib/dxruby_sdl}/color_spec.rb +2 -2
- data/spec/lib/dxruby_sdl/font_spec.rb +40 -0
- data/spec/{dxruby_sdl → lib/dxruby_sdl}/image_spec.rb +47 -4
- data/spec/{dxruby_sdl → lib/dxruby_sdl}/input_spec.rb +82 -43
- data/spec/{dxruby_sdl → lib/dxruby_sdl}/sound_effect_spec.rb +0 -0
- data/spec/{dxruby_sdl → lib/dxruby_sdl}/sound_spec.rb +0 -0
- data/spec/lib/dxruby_sdl/sprite_spec.rb +570 -0
- data/spec/{dxruby_sdl → lib/dxruby_sdl}/window__draw_spec.rb +64 -5
- data/spec/{dxruby_sdl → lib/dxruby_sdl}/window_spec.rb +32 -0
- data/spec/{dxruby_sdl_spec.rb → lib/dxruby_sdl_spec.rb} +0 -0
- data/spec/{dxruby_spec.rb → lib/dxruby_spec.rb} +4 -0
- data/spec/spec_helper.rb +9 -0
- metadata +25 -22
- data/spec/dxruby_sdl/font_spec.rb +0 -13
    
        checksums.yaml
    CHANGED
    
    | @@ -1,15 +1,15 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            !binary "U0hBMQ==":
         | 
| 3 3 | 
             
              metadata.gz: !binary |-
         | 
| 4 | 
            -
                 | 
| 4 | 
            +
                Mzg1MmJhMGFhODU4MmYzZmY5M2QyOTdjYWJiMGJmNWI0ZTA3MmZmMg==
         | 
| 5 5 | 
             
              data.tar.gz: !binary |-
         | 
| 6 | 
            -
                 | 
| 6 | 
            +
                ZmUwNmU2ZjgwZWY1NTIyMmRjMzBhNDg2MzY0OGU5NDBiNDhkZjhlZA==
         | 
| 7 7 | 
             
            !binary "U0hBNTEy":
         | 
| 8 8 | 
             
              metadata.gz: !binary |-
         | 
| 9 | 
            -
                 | 
| 10 | 
            -
                 | 
| 11 | 
            -
                 | 
| 9 | 
            +
                YzFhNGIyM2E0Y2MxMmE3N2RhYTE0NmY4MzhkYzg2NTAzOTY1MTg5Yzc3NmNl
         | 
| 10 | 
            +
                MDAyMzJkOGI3ZTFhNjgwNzVmZWUzNDI4NTU5Y2VkNjYwNTgyOWU0NDNmYzE2
         | 
| 11 | 
            +
                NTliNWY0NDhmY2MxMDE0MTQzNjI0MTA2OGQ4YWJiNWRlNGJmOWM=
         | 
| 12 12 | 
             
              data.tar.gz: !binary |-
         | 
| 13 | 
            -
                 | 
| 14 | 
            -
                 | 
| 15 | 
            -
                 | 
| 13 | 
            +
                OTllMjA5YzFjZGM3M2JiZGZjYjA5Y2JjNGUzMjY3NzY4OGE2ZDVjNTVlMmEz
         | 
| 14 | 
            +
                YWMyMDI5ZDU3MDRiYTM5NDFhZWM2N2MxNzg1ZGJiMzY5M2U3NjQ0YzI5YTQ0
         | 
| 15 | 
            +
                YWMxNDVjYmIxMDgwODZmMTJhMGY0NTVlNWMzN2UwYjM1ZjZlNzI=
         | 
    
        data/.rubocop.yml
    CHANGED
    
    
    
        data/.travis.yml
    CHANGED
    
    | @@ -8,4 +8,5 @@ env: | |
| 8 8 |  | 
| 9 9 | 
             
            before_install:
         | 
| 10 10 | 
             
             - sudo apt-get update -qq
         | 
| 11 | 
            -
             - sudo apt-get install -qq libsdl1.2-dev libsdl-mixer1.2-dev timidity libsdl-ttf2.0-dev libsdl-sge-dev  | 
| 11 | 
            +
             - sudo apt-get install -qq libsdl1.2-dev libsdl-image1.2-dev libsdl-mixer1.2-dev timidity libsdl-ttf2.0-dev libsdl-sge-dev fonts-horai-umefont fonts-ipafont
         | 
| 12 | 
            +
             | 
    
        data/Guardfile
    CHANGED
    
    | @@ -10,7 +10,7 @@ if /darwin/ =~ RUBY_PLATFORM | |
| 10 10 | 
             
            end
         | 
| 11 11 | 
             
            guard :rspec, rspec_option do
         | 
| 12 12 | 
             
              watch(%r{^spec/.+_spec\.rb$})
         | 
| 13 | 
            -
              watch(%r{^lib/(.+)\.rb$}) { |m| "spec/#{m[1]}_spec.rb" }
         | 
| 13 | 
            +
              watch(%r{^lib/(.+)\.rb$}) { |m| "spec/lib/#{m[1]}_spec.rb" }
         | 
| 14 14 | 
             
              watch('spec/spec_helper.rb') { "spec" }
         | 
| 15 15 | 
             
              watch(%r{^spec/support/(.+)\.rb$}) { "spec" }
         | 
| 16 16 | 
             
            end
         | 
    
        data/README.md
    CHANGED
    
    | @@ -1,5 +1,6 @@ | |
| 1 1 | 
             
            # dxruby_sdl
         | 
| 2 2 |  | 
| 3 | 
            +
            [](http://badge.fury.io/rb/dxruby_sdl)
         | 
| 3 4 | 
             
            [](https://travis-ci.org/takaokouji/dxruby_sdl)
         | 
| 4 5 | 
             
            [](https://coveralls.io/r/takaokouji/dxruby_sdl?branch=master)
         | 
| 5 6 | 
             
            [](https://gemnasium.com/takaokouji/dxruby_sdl)
         | 
| @@ -8,41 +9,64 @@ | |
| 8 9 | 
             
            `dxruby_sdl` is a ruby library for 2D graphics and game. It has same
         | 
| 9 10 | 
             
            DXRuby API. It use SDL/Ruby.
         | 
| 10 11 |  | 
| 12 | 
            +
            Current API compatibility status: http://dxruby-apis.herokuapp.com/en/
         | 
| 13 | 
            +
             | 
| 11 14 | 
             
            ## Installation
         | 
| 12 15 |  | 
| 13 | 
            -
            ### SDL  | 
| 16 | 
            +
            ### SDL, SGE, etc...
         | 
| 17 | 
            +
             | 
| 18 | 
            +
            #### Mac OS X
         | 
| 19 | 
            +
             | 
| 20 | 
            +
            (1) SDL
         | 
| 21 | 
            +
             | 
| 22 | 
            +
            ```
         | 
| 23 | 
            +
            (if you use MacPorts.)
         | 
| 24 | 
            +
            $ sudo port install libsdl libsdl_image libsdl_mixer libsdl_sound libsdl_ttf
         | 
| 25 | 
            +
            ```
         | 
| 26 | 
            +
             | 
| 27 | 
            +
            (2) SGE
         | 
| 14 28 |  | 
| 15 | 
            -
             | 
| 29 | 
            +
            ```
         | 
| 30 | 
            +
            $ curl -O http://www.digitalfanatics.org/cal/sge/files/sge030809.tar.gz
         | 
| 31 | 
            +
            $ tar xvzf sge030809.tar.gz
         | 
| 32 | 
            +
            $ cd sge030809
         | 
| 33 | 
            +
            $ curl https://gist.github.com/steved555/963525/raw/7b638e4100f9dd1a9d00560b98ea2ddd4375b2b0/sge_030809_freetype.patch | patch
         | 
| 34 | 
            +
            $ curl https://gist.github.com/steved555/963524/raw/c03396e1fb8bb87e9f4ba92597d087f730c6c48b/sge_030809_cmap.patch | patch
         | 
| 35 | 
            +
            $ curl https://gist.github.com/steved555/963522/raw/5b277a0a6b08a1c077fbe2c96eead4ef1d761856/sge-030809-build.patch | patch
         | 
| 36 | 
            +
            $ sed -i -e 's/-soname/-install_name/g' Makefile
         | 
| 37 | 
            +
            $ make
         | 
| 38 | 
            +
            $ sudo make install
         | 
| 39 | 
            +
            ```
         | 
| 16 40 |  | 
| 17 | 
            -
             | 
| 41 | 
            +
            (3) MS PGohic (DXRuby's default font)
         | 
| 18 42 |  | 
| 19 | 
            -
             | 
| 43 | 
            +
            Install Microsoft Office:mac from http://www.microsoft.com/japan/mac.
         | 
| 20 44 |  | 
| 21 | 
            -
             | 
| 45 | 
            +
            #### Linux
         | 
| 22 46 |  | 
| 23 | 
            -
             | 
| 24 | 
            -
             | 
| 25 | 
            -
             | 
| 26 | 
            -
                curl https://gist.github.com/steved555/963525/raw/7b638e4100f9dd1a9d00560b98ea2ddd4375b2b0/sge_030809_freetype.patch | patch
         | 
| 27 | 
            -
                curl https://gist.github.com/steved555/963524/raw/c03396e1fb8bb87e9f4ba92597d087f730c6c48b/sge_030809_cmap.patch | patch
         | 
| 28 | 
            -
                curl https://gist.github.com/steved555/963522/raw/5b277a0a6b08a1c077fbe2c96eead4ef1d761856/sge-030809-build.patch | patch
         | 
| 29 | 
            -
                sed -i -e 's/-soname/-install_name/g' Makefile
         | 
| 30 | 
            -
                make
         | 
| 31 | 
            -
                sudo make install
         | 
| 47 | 
            +
            ```
         | 
| 48 | 
            +
            $ sudo apt-get install libsdl1.2-dev libsdl-image1.2-dev libsdl-mixer1.2-dev timidity libsdl-ttf2.0-dev libsdl-sge-dev fonts-horai-umefont fonts-ipafont
         | 
| 49 | 
            +
            ```
         | 
| 32 50 |  | 
| 33 51 | 
             
            ### dxruby_sdl
         | 
| 34 52 |  | 
| 35 53 | 
             
            Add this line to your application's Gemfile:
         | 
| 36 54 |  | 
| 37 | 
            -
             | 
| 55 | 
            +
            ```
         | 
| 56 | 
            +
            gem 'dxruby_sdl'
         | 
| 57 | 
            +
            ```
         | 
| 38 58 |  | 
| 39 59 | 
             
            And then execute:
         | 
| 40 60 |  | 
| 41 | 
            -
             | 
| 61 | 
            +
            ```
         | 
| 62 | 
            +
            $ bundle
         | 
| 63 | 
            +
            ```
         | 
| 42 64 |  | 
| 43 65 | 
             
            Or install it yourself as:
         | 
| 44 66 |  | 
| 45 | 
            -
             | 
| 67 | 
            +
            ```
         | 
| 68 | 
            +
            $ gem install dxruby_sdl
         | 
| 69 | 
            +
            ```
         | 
| 46 70 |  | 
| 47 71 | 
             
            ## Usage
         | 
| 48 72 |  | 
    
        data/lib/dxruby_sdl/color.rb
    CHANGED
    
    | @@ -8,7 +8,7 @@ module DXRubySDL | |
| 8 8 | 
             
                  if color.length == 4
         | 
| 9 9 | 
             
                    return color[0..2]
         | 
| 10 10 | 
             
                  else
         | 
| 11 | 
            -
                    color
         | 
| 11 | 
            +
                    return color
         | 
| 12 12 | 
             
                  end
         | 
| 13 13 | 
             
                end
         | 
| 14 14 |  | 
| @@ -16,7 +16,7 @@ module DXRubySDL | |
| 16 16 | 
             
                  if color.length == 4
         | 
| 17 17 | 
             
                    return color[3]
         | 
| 18 18 | 
             
                  else
         | 
| 19 | 
            -
                    return  | 
| 19 | 
            +
                    return nil
         | 
| 20 20 | 
             
                  end
         | 
| 21 21 | 
             
                end
         | 
| 22 22 | 
             
              end
         | 
    
        data/lib/dxruby_sdl/font.rb
    CHANGED
    
    | @@ -5,33 +5,154 @@ module DXRubySDL | |
| 5 5 | 
             
                attr_reader :size
         | 
| 6 6 | 
             
                attr_reader :_ttf
         | 
| 7 7 |  | 
| 8 | 
            +
                @font_cache = {}
         | 
| 9 | 
            +
             | 
| 8 10 | 
             
                def initialize(size, fontname = '', hash = {})
         | 
| 9 11 | 
             
                  @size = size
         | 
| 10 12 |  | 
| 11 13 | 
             
                  if !SDL::TTF.init?
         | 
| 12 14 | 
             
                    SDL::TTF.init
         | 
| 13 15 | 
             
                  end
         | 
| 14 | 
            -
                  if !(path = FONTS[fontname | 
| 16 | 
            +
                  if !(path = (FONTS[fontname] || FONT_ALIASES[fontname]))
         | 
| 15 17 | 
             
                    path = FONTS.first.last
         | 
| 16 18 | 
             
                  end
         | 
| 17 | 
            -
                   | 
| 19 | 
            +
                  font_cache = Font.instance_variable_get('@font_cache')
         | 
| 20 | 
            +
                  args = [path, size]
         | 
| 21 | 
            +
                  if font_cache.key?(args)
         | 
| 22 | 
            +
                    @_ttf = font_cache[args]
         | 
| 23 | 
            +
                  else
         | 
| 24 | 
            +
                    @_ttf = font_cache[args] = SDL::TTF.open(*args)
         | 
| 25 | 
            +
                  end
         | 
| 18 26 | 
             
                end
         | 
| 19 27 |  | 
| 28 | 
            +
                def get_width(string)
         | 
| 29 | 
            +
                  return @_ttf.text_size(string).first
         | 
| 30 | 
            +
                end
         | 
| 31 | 
            +
             | 
| 32 | 
            +
                alias_method :getWidth, :get_width
         | 
| 33 | 
            +
             | 
| 20 34 | 
             
                private
         | 
| 21 35 |  | 
| 36 | 
            +
                FONTS = {}
         | 
| 37 | 
            +
                private_constant :FONTS
         | 
| 38 | 
            +
             | 
| 39 | 
            +
                FONT_ALIASES = {}
         | 
| 40 | 
            +
                private_constant :FONT_ALIASES
         | 
| 41 | 
            +
             | 
| 22 42 | 
             
                # :nocov:
         | 
| 23 43 | 
             
                if /darwin/ =~ RUBY_PLATFORM
         | 
| 24 | 
            -
                   | 
| 25 | 
            -
                     | 
| 26 | 
            -
             | 
| 27 | 
            -
             | 
| 28 | 
            -
             | 
| 44 | 
            +
                  font_info =
         | 
| 45 | 
            +
                    [
         | 
| 46 | 
            +
                     %w[
         | 
| 47 | 
            +
                       MS\ Pゴシック
         | 
| 48 | 
            +
                       /Library/Fonts/Microsoft/MS\ PGothic.ttf
         | 
| 49 | 
            +
                       MS\ Pゴシック
         | 
| 50 | 
            +
                       MS\ PGothic
         | 
| 51 | 
            +
                     ],
         | 
| 52 | 
            +
                     %w[
         | 
| 53 | 
            +
                       MS\ ゴシック
         | 
| 54 | 
            +
                       /Library/Fonts/Microsoft/MS\ Gothic.ttf
         | 
| 55 | 
            +
                       MS\ ゴシック
         | 
| 56 | 
            +
                       MS\ Gothic
         | 
| 57 | 
            +
                     ],
         | 
| 58 | 
            +
                     %w[
         | 
| 59 | 
            +
                       MS\ P明朝
         | 
| 60 | 
            +
                       /Library/Fonts/Microsoft/MS\ PMincho.ttf
         | 
| 61 | 
            +
                       MS\ P明朝
         | 
| 62 | 
            +
                       MS\ PMincho
         | 
| 63 | 
            +
                     ],
         | 
| 64 | 
            +
                     %w[
         | 
| 65 | 
            +
                       MS\ 明朝
         | 
| 66 | 
            +
                       /Library/Fonts/Microsoft/MS\ Mincho.ttf
         | 
| 67 | 
            +
                       MS\ 明朝
         | 
| 68 | 
            +
                       MS\ Mincho
         | 
| 69 | 
            +
                     ],
         | 
| 70 | 
            +
                     %w[
         | 
| 71 | 
            +
                       osaka
         | 
| 72 | 
            +
                       /Library/Fonts/osaka.ttf
         | 
| 73 | 
            +
                     ],
         | 
| 74 | 
            +
                     %w[
         | 
| 75 | 
            +
                       IPA\ Pゴシック
         | 
| 76 | 
            +
                       /Library/Fonts/ipagp.ttf
         | 
| 77 | 
            +
                       IPA\ PGothic
         | 
| 78 | 
            +
                       ipagp
         | 
| 79 | 
            +
                     ],
         | 
| 80 | 
            +
                     %w[
         | 
| 81 | 
            +
                       IPA\ ゴシック
         | 
| 82 | 
            +
                       /Library/Fonts/ipag.ttf
         | 
| 83 | 
            +
                       IPA\ Gothic
         | 
| 84 | 
            +
                       ipag
         | 
| 85 | 
            +
                     ],
         | 
| 86 | 
            +
                    ]
         | 
| 29 87 | 
             
                elsif /linux/ =~ RUBY_PLATFORM
         | 
| 30 | 
            -
                   | 
| 31 | 
            -
                     | 
| 32 | 
            -
             | 
| 33 | 
            -
             | 
| 88 | 
            +
                  font_info =
         | 
| 89 | 
            +
                    [
         | 
| 90 | 
            +
                     %w[
         | 
| 91 | 
            +
                       梅Pゴシック
         | 
| 92 | 
            +
                       /usr/share/fonts/truetype/horai-umefont/ume-pgo4.ttf
         | 
| 93 | 
            +
                       ume-pgo4
         | 
| 94 | 
            +
                       MS\ Pゴシック
         | 
| 95 | 
            +
                       MS\ Pゴシック
         | 
| 96 | 
            +
                       MS\ PGothic
         | 
| 97 | 
            +
                     ],
         | 
| 98 | 
            +
                     %w[
         | 
| 99 | 
            +
                       梅ゴシック
         | 
| 100 | 
            +
                       /usr/share/fonts/truetype/horai-umefont/ume-tgo4.ttf
         | 
| 101 | 
            +
                       ume-tgo4
         | 
| 102 | 
            +
                       MS\ ゴシック
         | 
| 103 | 
            +
                       MS\ ゴシック
         | 
| 104 | 
            +
                       MS\ Gothic
         | 
| 105 | 
            +
                     ],
         | 
| 106 | 
            +
                     %w[
         | 
| 107 | 
            +
                       梅P明朝
         | 
| 108 | 
            +
                       /usr/share/fonts/truetype/horai-umefont/ume-pmo3.ttf
         | 
| 109 | 
            +
                       ume-pmo3
         | 
| 110 | 
            +
                       MS\ P明朝
         | 
| 111 | 
            +
                       MS\ P明朝
         | 
| 112 | 
            +
                       MS\ PMincho
         | 
| 113 | 
            +
                     ],
         | 
| 114 | 
            +
                     %w[
         | 
| 115 | 
            +
                       梅明朝
         | 
| 116 | 
            +
                       /usr/share/fonts/truetype/horai-umefont/ume-tmo3.ttf
         | 
| 117 | 
            +
                       ume-tmo3
         | 
| 118 | 
            +
                       MS\ 明朝
         | 
| 119 | 
            +
                       MS\ 明朝
         | 
| 120 | 
            +
                       MS\ Mincho
         | 
| 121 | 
            +
                     ],
         | 
| 122 | 
            +
                     %w[
         | 
| 123 | 
            +
                       IPA\ Pゴシック
         | 
| 124 | 
            +
                       /usr/share/fonts/opentype/ipafont-gothic/ipagp.ttf
         | 
| 125 | 
            +
                       IPA\ PGothic
         | 
| 126 | 
            +
                       ipagp
         | 
| 127 | 
            +
                     ],
         | 
| 128 | 
            +
                     %w[
         | 
| 129 | 
            +
                       IPA\ ゴシック
         | 
| 130 | 
            +
                       /usr/share/fonts/opentype/ipafont-gothic/ipag.ttf
         | 
| 131 | 
            +
                       IPA\ Gothic
         | 
| 132 | 
            +
                       ipag
         | 
| 133 | 
            +
                     ],
         | 
| 134 | 
            +
                     %w[
         | 
| 135 | 
            +
                       IPA\ P明朝
         | 
| 136 | 
            +
                       /usr/share/fonts/opentype/ipafont-mincho/ipamp.ttf
         | 
| 137 | 
            +
                       IPA\ PMincho
         | 
| 138 | 
            +
                       ipamp
         | 
| 139 | 
            +
                     ],
         | 
| 140 | 
            +
                     %w[
         | 
| 141 | 
            +
                       IPA\ 明朝
         | 
| 142 | 
            +
                       /usr/share/fonts/opentype/ipafont-mincho/ipam.ttf
         | 
| 143 | 
            +
                       IPA\ Mincho
         | 
| 144 | 
            +
                       ipam
         | 
| 145 | 
            +
                     ],
         | 
| 146 | 
            +
                    ]
         | 
| 34 147 | 
             
                end
         | 
| 35 148 | 
             
                # :nocov:
         | 
| 149 | 
            +
                font_info.each do |name, path, *aliases|
         | 
| 150 | 
            +
                  if File.exist?(path)
         | 
| 151 | 
            +
                    FONTS[name] = path
         | 
| 152 | 
            +
                    aliases.each do |a|
         | 
| 153 | 
            +
                      FONT_ALIASES[a] = path
         | 
| 154 | 
            +
                    end
         | 
| 155 | 
            +
                  end
         | 
| 156 | 
            +
                end
         | 
| 36 157 | 
             
              end
         | 
| 37 158 | 
             
            end
         | 
    
        data/lib/dxruby_sdl/image.rb
    CHANGED
    
    | @@ -31,6 +31,7 @@ module DXRubySDL | |
| 31 31 |  | 
| 32 32 | 
             
                def initialize(width, height, color = [0, 0, 0, 0])
         | 
| 33 33 | 
             
                  @color = color
         | 
| 34 | 
            +
                  @_surface_is_dirty = false
         | 
| 34 35 |  | 
| 35 36 | 
             
                  if width == 0 && height == 0
         | 
| 36 37 | 
             
                    return
         | 
| @@ -39,6 +40,14 @@ module DXRubySDL | |
| 39 40 | 
             
                  @_surface =
         | 
| 40 41 | 
             
                    SDL::Surface.new(SDL::SWSURFACE, width, height, Window.send(:screen))
         | 
| 41 42 | 
             
                  @_surface.fill_rect(0, 0, width, height, @color)
         | 
| 43 | 
            +
                  @_surface_is_dirty = true
         | 
| 44 | 
            +
                end
         | 
| 45 | 
            +
             | 
| 46 | 
            +
                def _surface_display_format_alpha
         | 
| 47 | 
            +
                  if @_surface_is_dirty
         | 
| 48 | 
            +
                    @_surface = @_surface.display_format_alpha
         | 
| 49 | 
            +
                    @_surface_is_dirty = false
         | 
| 50 | 
            +
                  end
         | 
| 42 51 | 
             
                end
         | 
| 43 52 |  | 
| 44 53 | 
             
                def width
         | 
| @@ -49,6 +58,16 @@ module DXRubySDL | |
| 49 58 | 
             
                  return @_surface.h
         | 
| 50 59 | 
             
                end
         | 
| 51 60 |  | 
| 61 | 
            +
                def set_color_key(color)
         | 
| 62 | 
            +
                  @_surface.set_color_key(SDL::SRCCOLORKEY | SDL::RLEACCEL, color)
         | 
| 63 | 
            +
                  @_surface_is_dirty = true
         | 
| 64 | 
            +
                end
         | 
| 65 | 
            +
             | 
| 66 | 
            +
                def compare(x, y, color)
         | 
| 67 | 
            +
                  pixel = lock { @_surface.get_pixel(x, y) }
         | 
| 68 | 
            +
                  return @_surface.format.get_rgb(pixel) == color
         | 
| 69 | 
            +
                end
         | 
| 70 | 
            +
             | 
| 52 71 | 
             
                def slice(x, y, width, height)
         | 
| 53 72 | 
             
                  s = @_surface.copy_rect(x, y, width, height)
         | 
| 54 73 | 
             
                  image = Image.new(0, 0)
         | 
| @@ -61,6 +80,7 @@ module DXRubySDL | |
| 61 80 | 
             
                    @_surface.draw_line(x1, y1, x2, y2,
         | 
| 62 81 | 
             
                                        to_sdl_color(color), true, to_sdl_alpha(color))
         | 
| 63 82 | 
             
                  end
         | 
| 83 | 
            +
                  @_surface_is_dirty = true
         | 
| 64 84 | 
             
                  return self
         | 
| 65 85 | 
             
                end
         | 
| 66 86 |  | 
| @@ -69,6 +89,7 @@ module DXRubySDL | |
| 69 89 | 
             
                    @_surface.draw_circle(x, y, r, to_sdl_color(color), false, true,
         | 
| 70 90 | 
             
                                          to_sdl_alpha(color))
         | 
| 71 91 | 
             
                  end
         | 
| 92 | 
            +
                  @_surface_is_dirty = true
         | 
| 72 93 | 
             
                  return self
         | 
| 73 94 | 
             
                end
         | 
| 74 95 |  | 
| @@ -77,6 +98,7 @@ module DXRubySDL | |
| 77 98 | 
             
                    @_surface.draw_circle(x, y, r, to_sdl_color(color), true, false,
         | 
| 78 99 | 
             
                                          to_sdl_alpha(color))
         | 
| 79 100 | 
             
                  end
         | 
| 101 | 
            +
                  @_surface_is_dirty = true
         | 
| 80 102 | 
             
                  return self
         | 
| 81 103 | 
             
                end
         | 
| 82 104 |  | 
| @@ -89,6 +111,7 @@ module DXRubySDL | |
| 89 111 | 
             
                    @_surface.draw_rect(x, y, w, h, to_sdl_color(color), false,
         | 
| 90 112 | 
             
                                        to_sdl_alpha(color))
         | 
| 91 113 | 
             
                  end
         | 
| 114 | 
            +
                  @_surface_is_dirty = true
         | 
| 92 115 | 
             
                  return self
         | 
| 93 116 | 
             
                end
         | 
| 94 117 |  | 
| @@ -101,18 +124,41 @@ module DXRubySDL | |
| 101 124 | 
             
                    @_surface.draw_rect(x, y, w, h, to_sdl_color(color), true,
         | 
| 102 125 | 
             
                                        to_sdl_alpha(color))
         | 
| 103 126 | 
             
                  end
         | 
| 127 | 
            +
                  @_surface_is_dirty = true
         | 
| 128 | 
            +
                  return self
         | 
| 129 | 
            +
                end
         | 
| 130 | 
            +
             | 
| 131 | 
            +
                def clear
         | 
| 132 | 
            +
                  @_surface.fill_rect(0, 0, width, height, @color)
         | 
| 133 | 
            +
                  @_surface_is_dirty = true
         | 
| 134 | 
            +
                end
         | 
| 135 | 
            +
             | 
| 136 | 
            +
                def draw_font(x, y, string, font, color = [255, 255, 255])
         | 
| 137 | 
            +
                  if string.empty?
         | 
| 138 | 
            +
                    return
         | 
| 139 | 
            +
                  end
         | 
| 140 | 
            +
                  r, g, b = *color
         | 
| 141 | 
            +
                  h = font._ttf.height + 1
         | 
| 142 | 
            +
                  string.lines.each.with_index do |line, i|
         | 
| 143 | 
            +
                    line.chomp!
         | 
| 144 | 
            +
                    if line.empty?
         | 
| 145 | 
            +
                      next
         | 
| 146 | 
            +
                    end
         | 
| 147 | 
            +
                    font._ttf.draw_blended_utf8(@_surface, line, x, y + i * h, r, g, b)
         | 
| 148 | 
            +
                  end
         | 
| 149 | 
            +
                  @_surface_is_dirty = true
         | 
| 104 150 | 
             
                  return self
         | 
| 105 151 | 
             
                end
         | 
| 106 152 |  | 
| 107 | 
            -
                # rubocop:disable SymbolName
         | 
| 108 153 | 
             
                class << self
         | 
| 109 154 | 
             
                  alias_method :loadTiles, :load_tiles
         | 
| 110 155 | 
             
                  alias_method :load_to_array, :load_tiles
         | 
| 111 156 | 
             
                  alias_method :loadToArray, :load_to_array
         | 
| 112 157 | 
             
                end
         | 
| 158 | 
            +
                alias_method :setColorKey, :set_color_key
         | 
| 113 159 | 
             
                alias_method :circleFill, :circle_fill
         | 
| 114 160 | 
             
                alias_method :boxFill, :box_fill
         | 
| 115 | 
            -
                 | 
| 161 | 
            +
                alias_method :drawFont, :draw_font
         | 
| 116 162 |  | 
| 117 163 | 
             
                private
         | 
| 118 164 |  | 
| @@ -122,7 +168,7 @@ module DXRubySDL | |
| 122 168 | 
             
                  else
         | 
| 123 169 | 
             
                    begin
         | 
| 124 170 | 
             
                      @_surface.lock
         | 
| 125 | 
            -
                      yield
         | 
| 171 | 
            +
                      return yield
         | 
| 126 172 | 
             
                    ensure
         | 
| 127 173 | 
             
                      @_surface.unlock
         | 
| 128 174 | 
             
                    end
         | 
    
        data/lib/dxruby_sdl/input.rb
    CHANGED
    
    | @@ -1,5 +1,7 @@ | |
| 1 1 | 
             
            # -*- coding: utf-8 -*-
         | 
| 2 2 |  | 
| 3 | 
            +
            require 'set'
         | 
| 4 | 
            +
             | 
| 3 5 | 
             
            module DXRubySDL
         | 
| 4 6 | 
             
              module Input
         | 
| 5 7 | 
             
                module_function
         | 
| @@ -98,7 +100,10 @@ module DXRubySDL | |
| 98 100 | 
             
                  return SDL::Mouse.state[index] && !@last_mouse_state[index]
         | 
| 99 101 | 
             
                end
         | 
| 100 102 |  | 
| 101 | 
            -
                 | 
| 103 | 
            +
                def keys
         | 
| 104 | 
            +
                  return @keys
         | 
| 105 | 
            +
                end
         | 
| 106 | 
            +
             | 
| 102 107 | 
             
                class << self
         | 
| 103 108 | 
             
                  alias_method :setRepeat, :set_repeat
         | 
| 104 109 | 
             
                  alias_method :padDown?, :pad_down?
         | 
| @@ -110,12 +115,12 @@ module DXRubySDL | |
| 110 115 | 
             
                  alias_method :mouseDown?, :mouse_down?
         | 
| 111 116 | 
             
                  alias_method :mousePush?, :mouse_push?
         | 
| 112 117 | 
             
                end
         | 
| 113 | 
            -
                # rubocop:enable SymbolName
         | 
| 114 118 |  | 
| 115 119 | 
             
                private
         | 
| 116 120 |  | 
| 117 | 
            -
                @ | 
| 118 | 
            -
                @ | 
| 121 | 
            +
                @keys = Set.new
         | 
| 122 | 
            +
                @checked_keys = Set.new
         | 
| 123 | 
            +
                @down_keys = Set.new
         | 
| 119 124 | 
             
                @last_mouse_state = [false, false, false]
         | 
| 120 125 | 
             
                @joysticks = []
         | 
| 121 126 |  | 
| @@ -123,7 +128,7 @@ module DXRubySDL | |
| 123 128 |  | 
| 124 129 | 
             
                  private
         | 
| 125 130 |  | 
| 126 | 
            -
                   | 
| 131 | 
            +
                  SDL_KEY_TABLE = {}
         | 
| 127 132 | 
             
                  replace_table = {
         | 
| 128 133 | 
             
                    'BACK' => 'BACKSPACE',
         | 
| 129 134 | 
             
                    'ADD' => 'PLUS',
         | 
| @@ -156,40 +161,35 @@ module DXRubySDL | |
| 156 161 | 
             
                      end
         | 
| 157 162 | 
             
                    end
         | 
| 158 163 | 
             
                    begin
         | 
| 159 | 
            -
                       | 
| 164 | 
            +
                      SDL_KEY_TABLE[DXRubySDL.const_get(k)] =
         | 
| 165 | 
            +
                        SDL::Key.const_get(name.to_sym)
         | 
| 160 166 | 
             
                    rescue NameError
         | 
| 161 167 | 
             
                    end
         | 
| 162 168 | 
             
                  end
         | 
| 163 | 
            -
                  private_constant : | 
| 169 | 
            +
                  private_constant :SDL_KEY_TABLE
         | 
| 170 | 
            +
             | 
| 171 | 
            +
                  DXRUBY_KEY_TABLE = SDL_KEY_TABLE.invert
         | 
| 172 | 
            +
                  private_constant :DXRUBY_KEY_TABLE
         | 
| 164 173 |  | 
| 165 174 | 
             
                  def store_last_state
         | 
| 166 | 
            -
                     | 
| 167 | 
            -
                     | 
| 168 | 
            -
                      SDL::Key.scan
         | 
| 169 | 
            -
                      keys.each do |key|
         | 
| 170 | 
            -
                        if SDL::Key.press?(key)
         | 
| 171 | 
            -
                          @current_key_state.add(key)
         | 
| 172 | 
            -
                        end
         | 
| 173 | 
            -
                      end
         | 
| 174 | 
            -
                    end
         | 
| 175 | 
            -
                    @last_key_state = @current_key_state
         | 
| 176 | 
            -
                    @current_key_state = Set.new
         | 
| 175 | 
            +
                    @down_keys.merge(@checked_keys)
         | 
| 176 | 
            +
                    @checked_keys.clear
         | 
| 177 177 | 
             
                    @last_mouse_state = SDL::Mouse.state
         | 
| 178 178 | 
             
                  end
         | 
| 179 179 |  | 
| 180 180 | 
             
                  def sdl_key_press?(key)
         | 
| 181 | 
            -
                     | 
| 182 | 
            -
                    if  | 
| 183 | 
            -
                      @ | 
| 181 | 
            +
                    dkey = to_dxruby_key(key)
         | 
| 182 | 
            +
                    if @keys.include?(dkey)
         | 
| 183 | 
            +
                      @checked_keys.add(dkey)
         | 
| 184 184 | 
             
                      return true
         | 
| 185 185 | 
             
                    else
         | 
| 186 | 
            -
                      @current_key_state.delete(key)
         | 
| 187 186 | 
             
                      return false
         | 
| 188 187 | 
             
                    end
         | 
| 189 188 | 
             
                  end
         | 
| 190 189 |  | 
| 191 190 | 
             
                  def sdl_key_push?(key)
         | 
| 192 | 
            -
                     | 
| 191 | 
            +
                    dkey = to_dxruby_key(key)
         | 
| 192 | 
            +
                    return sdl_key_press?(key) && !@down_keys.include?(dkey)
         | 
| 193 193 | 
             
                  end
         | 
| 194 194 |  | 
| 195 195 | 
             
                  def joystick(pad_number)
         | 
| @@ -203,7 +203,23 @@ module DXRubySDL | |
| 203 203 | 
             
                  end
         | 
| 204 204 |  | 
| 205 205 | 
             
                  def to_sdl_key(key_code)
         | 
| 206 | 
            -
                    return  | 
| 206 | 
            +
                    return SDL_KEY_TABLE[key_code]
         | 
| 207 | 
            +
                  end
         | 
| 208 | 
            +
             | 
| 209 | 
            +
                  def to_dxruby_key(key_code)
         | 
| 210 | 
            +
                    return DXRUBY_KEY_TABLE[key_code]
         | 
| 211 | 
            +
                  end
         | 
| 212 | 
            +
             | 
| 213 | 
            +
                  def handle_key_event(event)
         | 
| 214 | 
            +
                    dkey = to_dxruby_key(event.sym)
         | 
| 215 | 
            +
                    case event
         | 
| 216 | 
            +
                    when SDL::Event::KeyDown
         | 
| 217 | 
            +
                      @keys.add(dkey)
         | 
| 218 | 
            +
                    when SDL::Event::KeyUp
         | 
| 219 | 
            +
                      @keys.delete(dkey)
         | 
| 220 | 
            +
                      @checked_keys.delete(dkey)
         | 
| 221 | 
            +
                      @down_keys.delete(dkey)
         | 
| 222 | 
            +
                    end
         | 
| 207 223 | 
             
                  end
         | 
| 208 224 | 
             
                end
         | 
| 209 225 | 
             
              end
         | 
    
        data/lib/dxruby_sdl/sound.rb
    CHANGED
    
    | @@ -1,7 +1,11 @@ | |
| 1 1 | 
             
            # -*- coding: utf-8 -*-
         | 
| 2 2 |  | 
| 3 | 
            +
            require 'forwardable'
         | 
| 4 | 
            +
             | 
| 3 5 | 
             
            module DXRubySDL
         | 
| 4 6 | 
             
              class Sound
         | 
| 7 | 
            +
                extend Forwardable
         | 
| 8 | 
            +
             | 
| 5 9 | 
             
                @sdl_mixer_openend = false
         | 
| 6 10 |  | 
| 7 11 | 
             
                def initialize(filename)
         | 
| @@ -17,9 +21,9 @@ module DXRubySDL | |
| 17 21 | 
             
                  end
         | 
| 18 22 | 
             
                end
         | 
| 19 23 |  | 
| 20 | 
            -
                 | 
| 21 | 
            -
             | 
| 22 | 
            -
                 | 
| 24 | 
            +
                def_delegators :@sound, :play, :set_volume
         | 
| 25 | 
            +
             | 
| 26 | 
            +
                alias_method :setVolume, :set_volume
         | 
| 23 27 |  | 
| 24 28 | 
             
                private
         | 
| 25 29 |  | 
| @@ -31,10 +35,16 @@ module DXRubySDL | |
| 31 35 | 
             
                  def play
         | 
| 32 36 | 
             
                    SDL::Mixer.play_music(@music, -1)
         | 
| 33 37 | 
             
                  end
         | 
| 38 | 
            +
             | 
| 39 | 
            +
                  def set_volume(volume, time = 0)
         | 
| 40 | 
            +
                    raise NotImplementedError, 'Sound#set_volume(volume, time) with MIDI'
         | 
| 41 | 
            +
                  end
         | 
| 34 42 | 
             
                end
         | 
| 35 43 | 
             
                private_constant :Music
         | 
| 36 44 |  | 
| 37 45 | 
             
                class Wave
         | 
| 46 | 
            +
                  extend Forwardable
         | 
| 47 | 
            +
             | 
| 38 48 | 
             
                  def initialize(filename)
         | 
| 39 49 | 
             
                    @wave = SDL::Mixer::Wave.load(filename)
         | 
| 40 50 | 
             
                    @last_played_channel = nil
         | 
| @@ -48,6 +58,13 @@ module DXRubySDL | |
| 48 58 | 
             
                      retry
         | 
| 49 59 | 
             
                    end
         | 
| 50 60 | 
             
                  end
         | 
| 61 | 
            +
             | 
| 62 | 
            +
                  def set_volume(volume, time = 0)
         | 
| 63 | 
            +
                    if time > 0
         | 
| 64 | 
            +
                      raise NotImplementedError, 'Sound#set_volume(volume, time != 0)'
         | 
| 65 | 
            +
                    end
         | 
| 66 | 
            +
                    @wave.set_volume(volume)
         | 
| 67 | 
            +
                  end
         | 
| 51 68 | 
             
                end
         | 
| 52 69 | 
             
                private_constant :Wave
         | 
| 53 70 | 
             
              end
         |