1 # Copyright (c) 2009 Paolo Capriotti <p.capriotti@gmail.com>
3 # This program is free software; you can redistribute it and/or modify
4 # it under the terms of the GNU General Public License as published by
5 # the Free Software Foundation; either version 2 of the License, or
6 # (at your option) any later version.
8 require 'plugins/plugin'
9 require 'require_bundle'
10 require_bundle 'shogi', 'state'
11 require_bundle 'shogi', 'pool'
12 require_bundle 'shogi', 'move'
13 require_bundle 'shogi', 'validator'
14 require_bundle 'shogi', 'serializer'
15 require_bundle 'shogi', 'notation'
16 require_bundle 'shogi', 'piece'
17 require_bundle 'shogi', 'psn'
18 require_bundle 'shogi', 'policy'
19 require 'games/game_actions'
28 plugin :name => KDE::i18n('Shogi'),
34 attr_reader :size, :state, :board, :pool,
35 :policy, :move, :animator, :validator,
36 :piece, :players, :types, :serializer,
37 :notation, :game_writer, :game_extensions
40 @size = Point.new(9, 9)
41 @state = Factory.new { State.new(board.new, pool, move, piece) }
42 @board = Factory.new { chess.board.component.new size }
46 @validator = Validator
47 @animator = chess.animator
48 @policy = Factory.new(Policy) { Policy.new(move, validator, true) }
50 @players = [:black, :white]
51 @types = [:pawn, :lance, :horse, :silver,
52 :gold, :bishop, :rook, :king]
54 @serializer = Factory.new(Serializer) {|rep|
55 Serializer.new(rep, validator, move, piece, notation) }
56 @notation = promise { Notation.new(piece, size) }
58 @game_writer = promise { PSN.new(serializer.new(:compact), state) }
59 @game_extensions = %w(psn)
63 :text => '&Promote Automatically' do |value, policy|
64 policy.autopromote = value
77 class Game < Shogi::Game
78 plugin :name => KDE::i18n('MiniShogi'),
85 @size = Point.new(5, 5)
86 @state = Factory.new { State.new(board.new, pool, move, piece) }