chingu 0.7.6.1 → 0.7.6.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{chingu}
8
- s.version = "0.7.6.1"
8
+ s.version = "0.7.6.2"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["ippa"]
12
- s.date = %q{2010-06-17}
12
+ s.date = %q{2010-06-18}
13
13
  s.description = %q{OpenGL accelerated 2D game framework for Ruby. Builds on Gosu (Ruby/C++) which provides all the core functionality. Chingu adds simple yet powerful game states, prettier input handling, deployment safe asset-handling, a basic re-usable game object and stackable game logic.}
14
14
  s.email = %q{ippa@rubylicio.us}
15
15
  s.extra_rdoc_files = [
@@ -13,7 +13,7 @@ class Game < Chingu::Window
13
13
  super(600,400)
14
14
  self.caption = "Testing out new module-based traits (SPACE for more spaceships)"
15
15
  self.input = { :space => :create_thing, :esc => :exit }
16
- Gosu::enable_undocumented_retrofication
16
+ retrofy
17
17
  create_thing(200,200)
18
18
  end
19
19
 
@@ -14,8 +14,8 @@ class Game < Chingu::Window
14
14
  super
15
15
  @factor = 6
16
16
  self.input = { :escape => :exit }
17
- Gosu::enable_undocumented_retrofication
18
- self.caption = "Chingu::Animation / retrofy example. Move with arrows!"
17
+ self.caption = "Chingu::Animation / retrofy example. Move with arrows!"
18
+ retrofy
19
19
  Droid.create(:x => $window.width/2, :y => $window.height/2)
20
20
  end
21
21
  end
@@ -2,7 +2,7 @@
2
2
  - CogWheel:
3
3
  :x: 1088.0
4
4
  :y: 352.0
5
- :angle: 244.888555657521
5
+ :angle: 261.503276348003
6
6
  :zorder: 95
7
7
  :factor_x: 1.68525252525252
8
8
  :factor_y: 1.68525252525252
@@ -10,7 +10,7 @@
10
10
  - CogWheel:
11
11
  :x: 448.0
12
12
  :y: 416.0
13
- :angle: 230.558601188561
13
+ :angle: 213.943880498079
14
14
  :zorder: 88
15
15
  :factor_x: 1.68525252525252
16
16
  :factor_y: 1.68525252525252
@@ -932,13 +932,13 @@
932
932
  :y: 64.0
933
933
  :angle: 0
934
934
  :zorder: 100
935
- :factor_x: 1.44144144144144
936
- :factor_y: 1.44144144144144
935
+ :factor_x: 1.15315315315315
936
+ :factor_y: 1.51496462905859
937
937
  :color: 4294967295
938
938
  - CogWheel:
939
939
  :x: 1792.0
940
940
  :y: 320.0
941
- :angle: 199.112003270741
941
+ :angle: 182.497282580259
942
942
  :zorder: 95
943
943
  :factor_x: 1.68525252525252
944
944
  :factor_y: 1.68525252525252
@@ -954,7 +954,7 @@
954
954
  - CogWheel:
955
955
  :x: 2464.0
956
956
  :y: 288.0
957
- :angle: 357.54187620404
957
+ :angle: 14.156596894522
958
958
  :zorder: 95
959
959
  :factor_x: 1.68525252525252
960
960
  :factor_y: 1.68525252525252
@@ -962,7 +962,7 @@
962
962
  - CogWheel:
963
963
  :x: 2460.0
964
964
  :y: 960.0
965
- :angle: 201.112003270741
965
+ :angle: 184.497282580259
966
966
  :zorder: 95
967
967
  :factor_x: 1.68525252525252
968
968
  :factor_y: 1.68525252525252
@@ -1074,7 +1074,7 @@
1074
1074
  - Saw:
1075
1075
  :x: 2304.0
1076
1076
  :y: 42973.9722397467
1077
- :angle: 244.651419558422
1077
+ :angle: 148.973186119936
1078
1078
  :zorder: 100
1079
1079
  :factor_x: 0.317794486215539
1080
1080
  :factor_y: 0.320401002506266
@@ -1082,7 +1082,7 @@
1082
1082
  - Saw:
1083
1083
  :x: 2016.0
1084
1084
  :y: 32173.9806240522
1085
- :angle: 130.22068444929
1085
+ :angle: 341.066180171485
1086
1086
  :zorder: 100
1087
1087
  :factor_x: 0.398395989974937
1088
1088
  :factor_y: 0.401002506265664
@@ -1090,7 +1090,7 @@
1090
1090
  - Saw:
1091
1091
  :x: 1696.0
1092
1092
  :y: 14500.9946086338
1093
- :angle: 324.233721499835
1093
+ :angle: 51.8801650144799
1094
1094
  :zorder: 100
1095
1095
  :factor_x: 0.958395989974934
1096
1096
  :factor_y: 0.961002506265664
@@ -1098,7 +1098,7 @@
1098
1098
  - Saw:
1099
1099
  :x: 1056.0
1100
1100
  :y: 24036.9954416873
1101
- :angle: 193.151996227564
1101
+ :angle: 324.855862936146
1102
1102
  :zorder: 100
1103
1103
  :factor_x: 0.637794486215539
1104
1104
  :factor_y: 0.640401002506266
@@ -1106,7 +1106,7 @@
1106
1106
  - Saw:
1107
1107
  :x: 1344.0
1108
1108
  :y: 24036.9954416873
1109
- :angle: 196.151996227565
1109
+ :angle: 327.855862936147
1110
1110
  :zorder: 100
1111
1111
  :factor_x: 0.637794486215539
1112
1112
  :factor_y: 0.640401002506266
@@ -1362,7 +1362,7 @@
1362
1362
  - Saw:
1363
1363
  :x: 2176.0
1364
1364
  :y: 42813.9722397467
1365
- :angle: 247.651419558422
1365
+ :angle: 151.973186119936
1366
1366
  :zorder: 100
1367
1367
  :factor_x: 0.317794486215539
1368
1368
  :factor_y: 0.320401002506266
@@ -1370,7 +1370,7 @@
1370
1370
  - Saw:
1371
1371
  :x: 1280.0
1372
1372
  :y: 30824.098278027
1373
- :angle: 92.0967151668047
1373
+ :angle: 268.052196057188
1374
1374
  :zorder: 100
1375
1375
  :factor_x: 0.47739348370927
1376
1376
  :factor_y: 0.48
@@ -1378,7 +1378,7 @@
1378
1378
  - Saw:
1379
1379
  :x: 1055.0
1380
1380
  :y: 91481.6743590043
1381
- :angle: 202.536947145858
1381
+ :angle: 19.6523317612529
1382
1382
  :zorder: 100
1383
1383
  :factor_x: 0.156390977443606
1384
1384
  :factor_y: 0.158997493734336
@@ -1386,7 +1386,7 @@
1386
1386
  - Saw:
1387
1387
  :x: 960.0
1388
1388
  :y: 91545.6743590044
1389
- :angle: 205.536947145856
1389
+ :angle: 22.6523317612509
1390
1390
  :zorder: 100
1391
1391
  :factor_x: 0.156390977443606
1392
1392
  :factor_y: 0.158997493734336
@@ -1394,7 +1394,7 @@
1394
1394
  - Saw:
1395
1395
  :x: 1120.0
1396
1396
  :y: 91545.6743590044
1397
- :angle: 205.536947145856
1397
+ :angle: 22.6523317612509
1398
1398
  :zorder: 100
1399
1399
  :factor_x: 0.156390977443606
1400
1400
  :factor_y: 0.158997493734336
@@ -1402,7 +1402,7 @@
1402
1402
  - Saw:
1403
1403
  :x: 864.0
1404
1404
  :y: 91481.6743590043
1405
- :angle: 208.536947145856
1405
+ :angle: 25.6523317612509
1406
1406
  :zorder: 100
1407
1407
  :factor_x: 0.156390977443606
1408
1408
  :factor_y: 0.158997493734336
@@ -1410,7 +1410,7 @@
1410
1410
  - Saw:
1411
1411
  :x: 1247.0
1412
1412
  :y: 27755.9489495749
1413
- :angle: 107.917046020636
1413
+ :angle: 283.946457785343
1414
1414
  :zorder: 100
1415
1415
  :factor_x: 0.477192982456137
1416
1416
  :factor_y: 0.479799498746867
@@ -1418,7 +1418,7 @@
1418
1418
  - Saw:
1419
1419
  :x: 1088.0
1420
1420
  :y: 54674.3885593251
1421
- :angle: 248.721133764806
1421
+ :angle: 243.763506646168
1422
1422
  :zorder: 100
1423
1423
  :factor_x: 0.236591478696738
1424
1424
  :factor_y: 0.239197994987469
@@ -1426,7 +1426,7 @@
1426
1426
  - Saw:
1427
1427
  :x: 960.0
1428
1428
  :y: 54674.3885593251
1429
- :angle: 251.721133764807
1429
+ :angle: 246.763506646169
1430
1430
  :zorder: 100
1431
1431
  :factor_x: 0.236591478696738
1432
1432
  :factor_y: 0.239197994987469
@@ -1545,88 +1545,88 @@
1545
1545
  :color: 4294967295
1546
1546
  - Saw:
1547
1547
  :x: 2272.0
1548
- :y: 1486.65953699044
1549
- :angle: 295.794413689238
1548
+ :y: 1545.89456467036
1549
+ :angle: 146.639909411433
1550
1550
  :zorder: 100
1551
1551
  :factor_x: 0.398395989974937
1552
1552
  :factor_y: 0.401002506265664
1553
1553
  :color: 4294967295
1554
1554
  - Saw:
1555
1555
  :x: 1792.0
1556
- :y: 1457.122269646
1557
- :angle: 247.355008787115
1556
+ :y: 1492.18378106955
1557
+ :angle: 352.539543057765
1558
1558
  :zorder: 100
1559
1559
  :factor_x: 0.79859649122807
1560
1560
  :factor_y: 0.801203007518797
1561
1561
  :color: 4294967295
1562
1562
  - Saw:
1563
1563
  :x: 2112.0
1564
- :y: 1515.61720067452
1565
- :angle: 57.317747058639
1564
+ :y: 1472.55311973017
1565
+ :angle: 50.5639527921968
1566
1566
  :zorder: 100
1567
1567
  :factor_x: 0.237794486215539
1568
1568
  :factor_y: 0.240401002506266
1569
1569
  :color: 4294967295
1570
1570
  - Saw:
1571
1571
  :x: 1504.0
1572
- :y: 1509.95012679627
1573
- :angle: 10.0118343201395
1572
+ :y: 1475.21132713439
1573
+ :angle: 4.15384615445959
1574
1574
  :zorder: 100
1575
1575
  :factor_x: 0.23719298245614
1576
1576
  :factor_y: 0.239799498746867
1577
1577
  :color: 4294967295
1578
1578
  - Saw:
1579
1579
  :x: 1344.0
1580
- :y: 1513.27726120035
1581
- :angle: 13.0118343201416
1580
+ :y: 1470.10650887575
1581
+ :angle: 7.15384615446169
1582
1582
  :zorder: 100
1583
1583
  :factor_x: 0.23719298245614
1584
1584
  :factor_y: 0.239799498746867
1585
1585
  :color: 4294967295
1586
1586
  - Saw:
1587
1587
  :x: 1152.0
1588
- :y: 1544.73245984785
1589
- :angle: 16.0118343201395
1588
+ :y: 1442.5380388842
1589
+ :angle: 10.1538461544596
1590
1590
  :zorder: 100
1591
1591
  :factor_x: 0.23719298245614
1592
1592
  :factor_y: 0.239799498746867
1593
1593
  :color: 4294967295
1594
1594
  - Saw:
1595
1595
  :x: 992.0
1596
- :y: 1447.47254150702
1597
- :angle: 215.427837857925
1596
+ :y: 1484.67432950191
1597
+ :angle: 30.4853091222945
1598
1598
  :zorder: 100
1599
1599
  :factor_x: 0.156992481203007
1600
1600
  :factor_y: 0.159598997493734
1601
1601
  :color: 4294967295
1602
1602
  - Saw:
1603
1603
  :x: 800.0
1604
- :y: 1447.47254150702
1605
- :angle: 218.427837857925
1604
+ :y: 1484.67432950191
1605
+ :angle: 33.4853091222945
1606
1606
  :zorder: 100
1607
1607
  :factor_x: 0.156992481203007
1608
1608
  :factor_y: 0.159598997493734
1609
1609
  :color: 4294967295
1610
1610
  - Saw:
1611
1611
  :x: 1248.0
1612
- :y: 1476.34100946372
1613
- :angle: 280.677823822402
1612
+ :y: 1538.26656151419
1613
+ :angle: 184.999590383916
1614
1614
  :zorder: 100
1615
1615
  :factor_x: 0.317794486215539
1616
1616
  :factor_y: 0.320401002506266
1617
1617
  :color: 4294967295
1618
1618
  - Saw:
1619
1619
  :x: 928.0
1620
- :y: 1415.77522349937
1621
- :angle: 221.427837857925
1620
+ :y: 1516.67432950192
1621
+ :angle: 36.4853091222945
1622
1622
  :zorder: 100
1623
1623
  :factor_x: 0.156992481203007
1624
1624
  :factor_y: 0.159598997493734
1625
1625
  :color: 4294967295
1626
1626
  - Saw:
1627
1627
  :x: 672.0
1628
- :y: 1467.90102171139
1629
- :angle: 218.427837857925
1628
+ :y: 1454.14495530015
1629
+ :angle: 33.4853091222945
1630
1630
  :zorder: 100
1631
1631
  :factor_x: 0.156992481203007
1632
1632
  :factor_y: 0.159598997493734
@@ -162,13 +162,13 @@ class Droid < Chingu::GameObject
162
162
  def update
163
163
  @image = @animation.next
164
164
  self.each_collision(Block.inside_viewport) do |me, stone_wall|
165
- if self.velocity_y < 0
165
+ if self.velocity_y < 0 # Hitting the ceiling
166
166
  me.y = stone_wall.bb.bottom + me.image.height * self.factor_y
167
167
  self.velocity_y = 0
168
- else
168
+ else # Land on ground
169
+ @jumping = false
169
170
  me.y = stone_wall.bb.top-1
170
171
  end
171
- @jumping = false
172
172
  end
173
173
 
174
174
  @animation = @animations[:scan] unless moved?
@@ -33,7 +33,7 @@ require_all "#{CHINGU_ROOT}/chingu/traits"
33
33
  require_all "#{CHINGU_ROOT}/chingu"
34
34
 
35
35
  module Chingu
36
- VERSION = "0.7.6.1"
36
+ VERSION = "0.7.6.2"
37
37
 
38
38
  DEBUG_COLOR = Gosu::Color.new(0xFFFF0000)
39
39
  DEBUG_ZORDER = 9999
@@ -32,7 +32,7 @@ module Chingu
32
32
  #
33
33
  class GameObject < Chingu::BasicGameObject
34
34
  attr_accessor :image, :x, :y, :angle, :center_x, :center_y, :factor_x, :factor_y, :color, :mode, :zorder
35
- attr_reader :factor, :center
35
+ attr_reader :factor, :center, :height, :width
36
36
 
37
37
  include Chingu::Helpers::InputClient # Adds input and input=
38
38
  include Chingu::Helpers::RotationCenter # Adds easy and verbose modification of @center_x and @center_y
@@ -60,8 +60,8 @@ module Chingu
60
60
  @angle = options[:angle] || 0
61
61
 
62
62
  self.factor = options[:factor] || options[:scale] || $window.factor || 1.0
63
- @factor_x = options[:factor_x] if options[:factor_x]
64
- @factor_y = options[:factor_y] if options[:factor_y]
63
+ @factor_x = options[:factor_x].to_f if options[:factor_x]
64
+ @factor_y = options[:factor_y].to_f if options[:factor_y]
65
65
 
66
66
  self.center = options[:center] || 0.5
67
67
 
@@ -82,6 +82,11 @@ module Chingu
82
82
  @mode = options[:mode] || :default # :additive is also available.
83
83
  @zorder = options[:zorder] || 100
84
84
 
85
+ if @image
86
+ self.width = options[:width] if options[:width]
87
+ self.height = options[:height] if options[:height]
88
+ end
89
+
85
90
  ### super ## This crashes
86
91
  # Call setup, this class holds an empty setup() to be overriden
87
92
  # setup() will be an easier method to override for init-stuff since you don't need to do super etc..
@@ -89,6 +94,45 @@ module Chingu
89
94
 
90
95
  end
91
96
 
97
+ #
98
+ # Set an effective width for the object on screen.
99
+ # Chingu does this by setting factor_x depending on imge.width and width given.
100
+ # Usually better to have a large image and make it smaller then the other way around.
101
+ #
102
+ def width=(width)
103
+ @factor_x = width.to_f / @image.width.to_f
104
+ end
105
+
106
+ # Get effective on width by calculating it from image-width and factor
107
+ def width
108
+ (@image.width * @factor_x).abs
109
+ end
110
+
111
+ #
112
+ # Set an effective height for the object on screen.
113
+ # Chingu does this by setting factor_x depending on imge.width and width given.
114
+ # Usually better to have a large image and make it smaller then the other way around.
115
+ #
116
+ def height=(height)
117
+ @factor_y = height.to_f / @image.height.to_f
118
+ end
119
+
120
+ # Get effective on heightby calculating it from image-width and factor
121
+ def height
122
+ (@image.height.to_f * @factor_y).abs
123
+ end
124
+
125
+ # Set width and height in one swoop
126
+ def size=(size)
127
+ self.width, self.height = *size
128
+ end
129
+
130
+ # Get objects width and height in an array
131
+ def size
132
+ [self.width, self.height]
133
+ end
134
+
135
+
92
136
  # Quick way of setting both factor_x and factor_y
93
137
  def factor=(factor)
94
138
  @factor = factor
@@ -133,8 +133,8 @@ module Chingu
133
133
  # Scale down big objects, don't scale objects under [32, 32]
134
134
  if game_object.image
135
135
  game_object.factor_x = 32.0 / game_object.image.width if game_object.image.width > 32
136
- game_object.factor_y = 32.0 / game_object.image.height if game_object.image.height > 3
137
- game_object.cache_bounding_box if game_object.respond_to?(:bounding_box)
136
+ game_object.factor_y = 32.0 / game_object.image.height if game_object.image.height > 32
137
+ game_object.cache_bounding_box if game_object.respond_to?(:cache_bounding_box)
138
138
  end
139
139
  x += 40
140
140
  end
@@ -166,6 +166,7 @@ module Chingu
166
166
 
167
167
  if s = @selected_game_object
168
168
  @text.text = "#{s.class.to_s} @ #{s.x.to_i} / #{s.y.to_i}"
169
+ @text.text = "Size: #{s.width.to_i} x #{s.height.to_i} Ratio: #{sprintf("%.2f",s.width/s.height)}"
169
170
  @text.text += " [Scale: #{sprintf("%.2f", s.factor_x)}/#{sprintf("%.2f", s.factor_y)} Angle: #{s.angle.to_i} Z: #{s.zorder}]"
170
171
  end
171
172
 
@@ -275,8 +276,8 @@ module Chingu
275
276
  # Re-align all objects x/y offset in relevance to the cursor
276
277
  #
277
278
  selected_game_objects.each do |selected_game_object|
278
- selected_game_object.options[:mouse_x_offset] = selected_game_object.x - self.mouse_x + 20
279
- selected_game_object.options[:mouse_y_offset] = selected_game_object.y - self.mouse_y + 20
279
+ selected_game_object.options[:mouse_x_offset] = selected_game_object.x - self.mouse_x
280
+ selected_game_object.options[:mouse_y_offset] = selected_game_object.y - self.mouse_y
280
281
  end
281
282
  else
282
283
  deselect_selected_game_objects unless holding?(:left_ctrl)
@@ -459,7 +460,10 @@ module Chingu
459
460
  scale_down
460
461
  end
461
462
  end
462
-
463
+
464
+ def recache_bounding_boxes
465
+ selected_game_objects.each { |game_object| game_object.cache_bounding_box if game_object.respond_to?(:cache_bounding_box)}
466
+ end
463
467
  def tilt_left
464
468
  selected_game_objects.each { |game_object| game_object.angle -= 5 }
465
469
  end
@@ -468,10 +472,13 @@ module Chingu
468
472
  end
469
473
  def scale_up
470
474
  scale_up_x && scale_up_y
475
+ recache_bounding_boxes
471
476
  end
472
477
  def scale_down
473
478
  scale_down_x && scale_down_y
479
+ recache_bounding_boxes
474
480
  end
481
+
475
482
  def inc_zorder
476
483
  selected_game_objects.each { |game_object| game_object.zorder += 1 }
477
484
  end
@@ -485,33 +492,18 @@ module Chingu
485
492
  selected_game_objects.each { |game_object| game_object.alpha -= 1 }
486
493
  end
487
494
  def scale_up_x
488
- selected_game_objects.each { |game_object| game_object.factor_x += grid_factor_x_for(game_object) }
495
+ selected_game_objects.each { |game_object| game_object.width += grid[0] }
489
496
  end
490
497
  def scale_up_y
491
- selected_game_objects.each { |game_object| game_object.factor_y += grid_factor_x_for(game_object) }
498
+ selected_game_objects.each { |game_object| game_object.height += grid[1] }
492
499
  end
493
500
  def scale_down_x
494
- selected_game_objects.each { |game_object|
495
- inc = grid_factor_x_for(game_object)
496
- game_object.factor_x -= inc
497
- game_object.factor_x = inc if game_object.factor_x <= 0.01
498
- }
501
+ selected_game_objects.each { |game_object| game_object.width -= grid[0] if game_object.width > grid[0] }
499
502
  end
500
503
  def scale_down_y
501
- selected_game_objects.each { |game_object|
502
- inc = grid_factor_y_for(game_object)
503
- game_object.factor_y -= inc
504
- game_object.factor_y = inc if game_object.factor_y <= 0.01
505
- }
504
+ selected_game_objects.each { |game_object| game_object.height -= grid[1] if game_object.height > grid[1] }
506
505
  end
507
-
508
- def grid_factor_x_for(object)
509
- @grid[0].to_f / object.image.width.to_f
510
- end
511
- def grid_factor_y_for(object)
512
- @grid[0].to_f / object.image.height.to_f
513
- end
514
-
506
+
515
507
  def esc
516
508
  deselect_selected_game_objects
517
509
  @cursor_game_object = nil
@@ -572,6 +564,8 @@ module Chingu
572
564
 
573
565
  game_object.options[:mouse_x_offset] = game_object.x - self.mouse_x
574
566
  game_object.options[:mouse_y_offset] = game_object.y - self.mouse_y
567
+
568
+ game_object.cache_bounding_box if game_object.respond_to?(:cache_bounding_box)
575
569
  return game_object
576
570
  end
577
571
 
@@ -19,7 +19,6 @@
19
19
  #
20
20
  #++
21
21
 
22
-
23
22
  #
24
23
  # Core extensions to GOSU
25
24
  # Some of these require the gem 'texplay'
@@ -44,10 +43,19 @@ module Gosu
44
43
  # This could be used to make each pixel a sharp 4 pixelblock => retrofeeling.
45
44
  #
46
45
  def retrofy
47
- glBindTexture(GL_TEXTURE_2D, self.gl_tex_info.tex_name)
48
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST)
49
- glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST)
46
+ Gosu::enable_undocumented_retrofication
50
47
  self
48
+
49
+ #
50
+ # The below code depends on the bad opengl gem
51
+ # And it could affect other images anyhow...
52
+ # So let's use Gosu::enable_undocumented_retrofication until further notice.
53
+ #
54
+
55
+ #glBindTexture(GL_TEXTURE_2D, self.gl_tex_info.tex_name)
56
+ #glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST)
57
+ #glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST)
58
+ #self
51
59
  end
52
60
  end
53
61
  end
@@ -56,8 +56,7 @@ module Chingu
56
56
  return @cached_bounding_box
57
57
  end
58
58
 
59
- width = self.image.width * self.factor_x.abs
60
- height = self.image.height * self.factor_y.abs
59
+ width, height = self.size
61
60
 
62
61
  if trait_options[:bounding_box][:scale]
63
62
  width = width * trait_options[:bounding_box][:scale]
@@ -65,6 +65,13 @@ module Chingu
65
65
  # Placeholder to be overwritten
66
66
  def setup; end;
67
67
 
68
+ #
69
+ # Make all old and future images use hard borders. Hard borders + scaling = retro feel!
70
+ #
71
+ def retrofy
72
+ Gosu::enable_undocumented_retrofication
73
+ end
74
+
68
75
  #
69
76
  # Returns self inside GameState.initialize (a game state is not 'active' inside initialize())
70
77
  # Or returns current active game state (as in a switched to or pushed game state)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: chingu
3
3
  version: !ruby/object:Gem::Version
4
- hash: 109
4
+ hash: 107
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 7
9
9
  - 6
10
- - 1
11
- version: 0.7.6.1
10
+ - 2
11
+ version: 0.7.6.2
12
12
  platform: ruby
13
13
  authors:
14
14
  - ippa
@@ -16,7 +16,7 @@ autorequire:
16
16
  bindir: bin
17
17
  cert_chain: []
18
18
 
19
- date: 2010-06-17 00:00:00 +02:00
19
+ date: 2010-06-18 00:00:00 +02:00
20
20
  default_executable:
21
21
  dependencies:
22
22
  - !ruby/object:Gem::Dependency