2 Copyright (c) 2006 Paolo Capriotti <p.capriotti@gmail.com>
3 (c) 2006 Maurizio Monge <maurizio.monge@kdemail.net>
5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 2 of the License, or
8 (at your option) any later version.
11 #ifndef TAGUA_LEGACY_H
12 #define TAGUA_LEGACY_H
14 #include <core/move.h>
15 #include <core/piece.h>
24 class VariantAdaptor
: public VariantFactory
, public VariantInfo
{
26 IStateFactory
* m_state_factory
;
27 IValidator
* m_validator
;
29 VariantAdaptor(Variant
* variant
);
31 virtual VariantInfo
* createVariant() const;
32 virtual QString
name() const;
33 virtual QString
themeProxy() const;
34 virtual bool hidden() const;
36 virtual PositionPtr
createPosition();
37 virtual PositionPtr
createCustomPosition(const OptList
& l
);
38 virtual void forallPieces(class PieceFunction
&);
39 virtual int moveListLayout() const;
40 virtual AnimatorPtr
createAnimator(GraphicalAPI
* graphical_api
);
41 virtual MovePtr
createNormalMove(const NormalUserMove
&);
42 virtual MovePtr
createDropMove(const DropUserMove
&);
43 virtual MovePtr
getVerboseMove(int turn
, const class VerboseNotation
&) const;
44 virtual bool simpleMoves();
45 virtual OptList
positionOptions() const;
46 virtual ICSAPIPtr
icsAPI() const;
47 virtual ActionCollection
* actions();
48 virtual void setupMove(NormalUserMove
& m
) const;
53 class MoveAdaptor
: public AbstractMove
{
56 MoveAdaptor(const Move
& move
);
58 virtual QString
toString(const QString
& rep
, const PositionPtr
& ref
) const;
59 virtual NormalUserMove
toUserMove() const;
60 virtual bool equals(const MovePtr
& other
) const;
62 Move
& move() { return m_move
; }
63 const Move
& move() const { return m_move
; }
67 class StateAdaptor
: public AbstractPosition
{
69 IValidator
* m_validator
;
71 StateAdaptor(IState
* state
, IValidator
* validator
);
73 virtual Point
size() const;
74 virtual QStringList
borderCoords() const;
76 virtual PiecePtr
get(const Point
& p
) const;
77 virtual void set(const Point
& p
, const PiecePtr
& piece
);
78 virtual PoolPtr
pool(int player
);
79 virtual void copyPoolFrom(const PositionPtr
& pos
);
80 virtual InteractionType
movable(const TurnPolicy::Collection
& test
, const Point
& p
) const;
81 virtual InteractionType
droppable(const TurnPolicy::Collection
& test
, int) const;
82 virtual int turn() const;
83 virtual void setTurn(int);
84 virtual int previousTurn() const;
85 virtual void switchTurn();
86 virtual bool testMove(const MovePtr
& m
) const;
87 virtual void move(const MovePtr
& m
);
88 virtual PositionPtr
clone() const;
89 virtual void copyFrom(const PositionPtr
&);
90 virtual bool equals(const PositionPtr
& p
) const;
91 virtual MovePtr
getMove(const QString
&) const;
92 virtual QString
state() const;
93 virtual PiecePtr
moveHint(const MovePtr
&) const;
94 virtual QString
variant() const;
95 virtual void dump() const;
100 class PieceAdaptor
: public AbstractPiece
{
103 PieceAdaptor(const Piece
& piece
);
104 virtual bool equals(const PiecePtr
& other
) const;
105 virtual QString
name() const;
106 virtual PiecePtr
clone() const;
109 class AnimatorAdaptor
: public AbstractAnimator
{
110 IAnimator
* m_animator
;
112 AnimatorAdaptor(IAnimator
* animator
);
113 virtual AnimationPtr
warp(const PositionPtr
&);
114 virtual AnimationPtr
forward(const PositionPtr
&, const MovePtr
&);
115 virtual AnimationPtr
back(const PositionPtr
&, const MovePtr
&);
118 #endif // TAGUA_LEGACY_H