Fix move promotion in the legacy adaptor.
[tagua/yd.git] / src / tagua_legacy.h
blob22f11daf8670322063f4721f1a9871ee6ea6b1ba
1 /*
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.
9 */
11 #ifndef TAGUA_LEGACY_H
12 #define TAGUA_LEGACY_H
14 #include <core/move.h>
15 #include <core/piece.h>
16 #include "tagua.h"
18 class IAnimator;
19 class IState;
20 class IStateFactory;
21 class IValidator;
22 class Variant;
24 class VariantAdaptor : public VariantFactory, public VariantInfo {
25 Variant* m_variant;
26 IStateFactory* m_state_factory;
27 IValidator* m_validator;
28 public:
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;
50 Variant* variant();
53 class MoveAdaptor : public AbstractMove {
54 Move m_move;
55 public:
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 {
68 IState* m_state;
69 IValidator* m_validator;
70 public:
71 StateAdaptor(IState* state, IValidator* validator);
73 virtual Point size() const;
74 virtual QStringList borderCoords() const;
75 virtual void setup();
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;
97 IState* state();
100 class PieceAdaptor : public AbstractPiece {
101 Piece m_piece;
102 public:
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;
111 public:
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