smagacor 0.0.1 → 0.0.2

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.
@@ -1,7 +1,7 @@
1
1
  #
2
2
  #--
3
3
  #
4
- # $Id: controller.rb 197 2005-02-09 13:42:17Z thomas $
4
+ # $Id: util.rb 362 2005-11-26 17:56:46Z thomas $
5
5
  #
6
6
  # smagacor - a collection of small games in ruby
7
7
  # Copyright (C) 2004 Thomas Leitner
@@ -22,6 +22,7 @@
22
22
  require 'rbconfig'
23
23
  require "yaml"
24
24
  require 'logger'
25
+ require 'smagacor/listener'
25
26
 
26
27
  class Object
27
28
 
@@ -44,7 +45,7 @@ end
44
45
  module Smagacor
45
46
 
46
47
  # The version of this copy of Smagacor
47
- VERSION = [0, 0, 1]
48
+ VERSION = [0, 0, 2]
48
49
 
49
50
  class GameInfo
50
51
 
@@ -59,7 +60,7 @@ module Smagacor
59
60
  attr_reader :classname
60
61
  attr_reader :category
61
62
 
62
- def get_class_object
63
+ def interface_class
63
64
  @classname.split( /::/ ).inject( Object ) {|mod, name| mod.const_get( name )}
64
65
  end
65
66
 
@@ -85,15 +86,110 @@ module Smagacor
85
86
 
86
87
  end
87
88
 
89
+ class GameState
88
90
 
89
- class Controller
91
+ attr_accessor :state
92
+ attr_accessor :undo_manager
93
+
94
+ def initialize( game_info )
95
+ @game_info = game_info
96
+ end
97
+
98
+ end
99
+
100
+ class GamePlugin
101
+
102
+ def menu
103
+ nil
104
+ end
105
+
106
+ def game_widget
107
+ raise NotImplementedError
108
+ end
109
+
110
+ def set_undo_manager( manager )
111
+ end
112
+
113
+ end
114
+
115
+
116
+ class UndoManager
117
+
118
+ include Listener
119
+
120
+ attr_reader :history
121
+
122
+ def initialize
123
+ @history = []
124
+ @index = -1
125
+ add_msg_name( :possible_actions )
126
+ add_msg_name( :undo )
127
+ add_msg_name( :redo )
128
+ end
129
+
130
+ def add_undo_info( info )
131
+ @history[@index+1..-1] = []
132
+ @history.push( info )
133
+ @index += 1
134
+ dispatch_msg( :possible_actions, possible_actions )
135
+ end
136
+
137
+ def clear
138
+ @history = []
139
+ @index = -1
140
+ end
141
+
142
+ def undo
143
+ if @index > -1
144
+ info = @history[@index]
145
+ @index -= 1
146
+ dispatch_msg( :possible_actions, possible_actions )
147
+ dispatch_msg( :undo, info )
148
+ info
149
+ end
150
+ end
151
+
152
+ def undo_possible?
153
+ @history.length > 0 && @index > -1
154
+ end
155
+
156
+ def redo
157
+ if @index < @history.length - 1
158
+ @index += 1
159
+ info = @history[@index]
160
+ dispatch_msg( :possible_actions, possible_actions )
161
+ dispatch_msg( :redo, info )
162
+ info
163
+ end
164
+ end
165
+
166
+ def redo_possible?
167
+ @history.length > 0 && @index < @history.length - 1
168
+ end
169
+
170
+ #######
171
+ private
172
+ #######
173
+
174
+ def possible_actions
175
+ a = []
176
+ a << :undo if undo_possible?
177
+ a << :redo if redo_possible?
178
+ a
179
+ end
180
+
181
+ end
182
+
183
+
184
+ class Configuration
90
185
 
91
186
  attr_reader :gamespath
92
187
  attr_reader :games
188
+ attr_reader :homepath
93
189
 
94
190
  def initialize
95
191
  @gamespath = [ File.join( ::Config::CONFIG["datadir"], "smagacor" ), 'data/smagacor' ]
96
- if defined? Gem::Cache
192
+ if defined?( Gem::Cache )
97
193
  gem = Gem::Cache.from_installed_gems.search( "smagacor", "=#{::Smagacor::VERSION.join('.')}" ).last
98
194
  @gamespath << File.join( gem.full_gem_path, "data", "smagacor" ) if gem
99
195
  end
@@ -102,7 +198,8 @@ module Smagacor
102
198
  rescue
103
199
  homepath = ENV['USERPROFILE'] || ENV['HOMEDRIVE']+ENV['HOMEPATH']
104
200
  end
105
- @gamespath.unshift File.join( homepath, '.smagacor' )
201
+ @homepath = File.join( homepath, '.smagacor' )
202
+ @gamespath.unshift( @homepath )
106
203
  @games = []
107
204
  end
108
205
 
@@ -119,11 +216,13 @@ module Smagacor
119
216
  Dir[path + '/*/game.info'].each do |file|
120
217
  gi = YAML::load( File.open( file ) )
121
218
  gi.directory = File.dirname( file )
122
- @games.push gi
219
+ @games.push( gi )
123
220
  end
124
221
  end
125
222
  end
126
223
 
127
224
  end
128
225
 
226
+ Config = Configuration.new
227
+
129
228
  end
metadata CHANGED
@@ -1,69 +1,92 @@
1
- --- !ruby/object:Gem::Specification
2
- rubygems_version: 0.8.4
1
+ !ruby/object:Gem::Specification
2
+ rubygems_version: 0.8.6
3
3
  specification_version: 1
4
4
  name: smagacor
5
5
  version: !ruby/object:Gem::Version
6
- version: 0.0.1
7
- date: 2005-02-09
6
+ version: 0.0.2
7
+ date: 2005-11-26
8
8
  summary: A collection of small games in ruby
9
9
  require_paths:
10
- - lib
10
+ - lib
11
11
  email: t_leitner@gmx.at
12
12
  homepage: smagacor.rubyforge.org
13
13
  rubyforge_project: smagacor
14
- description: "Smagacor is a collection of some small games, like TicTacToe and Pong. Adding
15
- new games should not be to hard, as Smagacor provides some useful classes for
16
- games."
14
+ description: Smagacor is a collection of some small games, like TicTacToe and Pong. Adding new games should not be to hard, as Smagacor provides some useful classes for games.
17
15
  autorequire:
18
16
  default_executable: smagacor
19
17
  bindir: bin
20
18
  has_rdoc: true
21
19
  required_ruby_version: !ruby/object:Gem::Version::Requirement
22
20
  requirements:
23
- -
24
- - ">"
25
- - !ruby/object:Gem::Version
26
- version: 0.0.0
21
+ - - ">"
22
+ - !ruby/object:Gem::Version
23
+ version: 0.0.0
27
24
  version:
28
25
  platform: ruby
29
26
  authors:
30
- - Thomas Leitner
27
+ - Thomas Leitner
31
28
  files:
32
- - setup.rb
33
- - install.rb
34
- - TODO
35
- - COPYING
36
- - README
37
- - Rakefile
38
- - ChangeLog
39
- - VERSION
40
- - bin/smagacor
41
- - lib/smagacor
42
- - lib/smagacor/controller.rb
43
- - lib/smagacor/smagacor-ui.rb
44
- - test/games
45
- - test/runtests.rb
46
- - test/smagacor
47
- - test/games/tictactoe
48
- - test/games/tictactoe/game.info
49
- - test/smagacor/tc_controller.rb
50
- - data/smagacor
51
- - data/smagacor/tictactoe
52
- - data/smagacor/smagacor.png
53
- - data/smagacor/tictactoe/o.png
54
- - data/smagacor/tictactoe/x.png
55
- - data/smagacor/tictactoe/tictactoe.rb
56
- - data/smagacor/tictactoe/tictactoe.png
57
- - data/smagacor/tictactoe/game.info
29
+ - setup.rb
30
+ - TODO
31
+ - COPYING
32
+ - README
33
+ - Rakefile
34
+ - ChangeLog
35
+ - VERSION
36
+ - bin/smagacor
37
+ - lib/smagacor
38
+ - lib/smagacor/listener.rb
39
+ - lib/smagacor/util.rb
40
+ - lib/smagacor/smagacor-ui.rb
41
+ - test/games
42
+ - test/runtests.rb
43
+ - test/smagacor
44
+ - test/games/tictactoe
45
+ - test/games/tictactoe/game.info
46
+ - test/smagacor/tc_controller.rb
47
+ - data/smagacor
48
+ - data/smagacor/sokoban
49
+ - data/smagacor/smagacor-logo.png
50
+ - data/smagacor/tictactoe
51
+ - data/smagacor/smagacor.png
52
+ - data/smagacor/sokoban/storage.png
53
+ - data/smagacor/sokoban/man.png
54
+ - data/smagacor/sokoban/crate.png
55
+ - data/smagacor/sokoban/floor.png
56
+ - data/smagacor/sokoban/wall.png
57
+ - data/smagacor/sokoban/levels
58
+ - data/smagacor/sokoban/sokobanui.rb
59
+ - data/smagacor/sokoban/sokoban.png
60
+ - data/smagacor/sokoban/game.info
61
+ - data/smagacor/sokoban/levels/sasquatch_VII.lvl
62
+ - data/smagacor/sokoban/levels/sasquatch.lvl
63
+ - data/smagacor/sokoban/levels/mas_sasquatch.lvl
64
+ - data/smagacor/sokoban/levels/sasquatch_III.lvl
65
+ - data/smagacor/sokoban/levels/mas_microban.lvl
66
+ - data/smagacor/sokoban/levels/sasquatch_IV.lvl
67
+ - data/smagacor/sokoban/levels/microban.lvl
68
+ - data/smagacor/sokoban/levels/sasquatch_VI.lvl
69
+ - data/smagacor/sokoban/levels/loma.lvl
70
+ - data/smagacor/sokoban/levels/sasquatch_V.lvl
71
+ - data/smagacor/tictactoe/o.png
72
+ - data/smagacor/tictactoe/x.png
73
+ - data/smagacor/tictactoe/tictactoe.rb
74
+ - data/smagacor/tictactoe/tictactoe.png
75
+ - data/smagacor/tictactoe/game.info
58
76
  test_files: []
77
+
59
78
  rdoc_options:
60
- - "--line-numbers"
61
- - "-m README"
79
+ - --line-numbers
80
+ - -m
81
+ - README
62
82
  extra_rdoc_files:
63
- - README
64
- - bin/smagacor
83
+ - README
84
+ - bin/smagacor
65
85
  executables:
66
- - smagacor
86
+ - smagacor
67
87
  extensions: []
88
+
68
89
  requirements: []
69
- dependencies: []
90
+
91
+ dependencies: []
92
+
data/install.rb DELETED
@@ -1,21 +0,0 @@
1
-
2
- require 'rpa/install'
3
-
4
- class Install_smagacor < RPA::Install::FullInstaller
5
- name 'smagacor'
6
- version '0.0.1-1'
7
- classification Application
8
- build do
9
- installdocs %w[COPYING ChangeLog TODO]
10
- installdocs 'docs'
11
- installrdoc %w[README] + Dir['lib/**/*.rb']
12
- installdata
13
- end
14
- description <<-EOF
15
- A collection of small games in ruby
16
-
17
- Smagacor is a collection of some small games,
18
- like TicTacToe and Pong. Adding new games should not be to hard,
19
- as Smagacor provides some useful classes for games.
20
- EOF
21
- end