1 /**********************************************************************
2  *
3  *   FreeDoko a Doppelkopf-Game
4  *
5  *   Copyright (C) 2001 – 2018 by Diether Knof and Borg Enders
6  *
7  *   This program is free software; you can redistribute it and/or
8  *   modify it under the terms of the GNU General Public License as
9  *   published by the Free Software Foundation; either version 2 of
10  *   the License, or (at your option) any later version.
11  *
12  *   This program is distributed in the hope that it will be useful,
13  *   but WITHOUT ANY WARRANTY; without even the implied warranty of
14  *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15  *   GNU General Public License for more details.
16  *   You can find this license in the file 'gpl.txt'.
17  *
18  *   You should have received a copy of the GNU General Public License
19  *   along with this program; if not, write to the Free Software
20  *   Foundation, Inc., 59 Temple Place, Suite 330, Boston,
21  *   MA  02111-1307  USA
22  *
23  *  Contact:
24  *    Diether Knof dknof@posteo.de
25  *
26  *********************************************************************/
27 
28 #pragma once
29 
30 #include "../../card/hand.h"
31 #include "ai.h"
32 
33 class VirtualGamesInterface;
34 class Player;
35 
36 
37 struct TrickWeighting {
38   public:
39     // returns the weighting of the trick for 'team'
40     static int modi(VirtualGamesInterface const& vgi,
41                     Trick const& trick,
42                     Team const team,
43                     HandCard const& card);
44     static int backhand(VirtualGamesInterface const& vgi,
45                         HandCard const& c,
46                         Game const& game_virt);
47   private:
48     static int modi_dulle_swines(VirtualGamesInterface const& vgi,
49                                  Trick const& trick,
50                                  Team const team,
51                                  HandCard const& card, Team winnerteam, Ai const& ai);
52     static int modi_queen(VirtualGamesInterface const& vgi,
53                           Trick const& trick,
54                           Team const team,
55                           HandCard const& card, Team winnerteam, Ai const& ai);
56     static int modi_jack(VirtualGamesInterface const& vgi,
57                          Trick const& trick,
58                          Team const team,
59                          HandCard const& card, Team winnerteam, Ai const& ai);
60 
61     static int modi_soli_meat_less(VirtualGamesInterface const& vgi,
62                                    Trick const& trick,
63                                    Team const team,
64                                    HandCard const& card,  Team winnerteam, Ai const& ai);
65 
66     static int modi_marriage(VirtualGamesInterface const& vgi,
67                              Trick const& trick,
68                              Team const team,
69                              HandCard const& card,  Team winnerteam, Ai const& ai);
70 
71 
72     static int modi_fox(VirtualGamesInterface const& vgi,
73                         Trick const& trick,
74                         Team const team,
75                         HandCard const& card,  Team winnerteam, Ai const& ai);
76 
77     static int modi_special_points(VirtualGamesInterface const& vgi,
78                                    Trick const& trick,
79                                    Team const team,
80                                    HandCard const& card,  Team winnerteam, Ai const& ai);
81 
82     static int modi_no_trump(VirtualGamesInterface const& vgi,
83                              Trick const& trick,
84                              Team const team,
85                              HandCard const& card,  Team winnerteam, Ai const& ai);
86 
87 
88     static int modi_picture_soli(VirtualGamesInterface const& vgi,
89                                  Trick const& trick,
90                                  Team const team,
91                                  HandCard const& card,  Team winnerteam, Ai const& ai);
92 
93     static int modi_other_trumps(VirtualGamesInterface const& vgi,
94                                  Trick const& trick,
95                                  Team const team,
96                                  HandCard const& card,  Team winnerteam, Ai const& ai);
97 
98     static int modi_force_trump(VirtualGamesInterface const& vgi,
99                                 Trick const& trick,
100                                 Team const team,
101                                 HandCard const& card,  Team winnerteam, Ai const& ai);
102 
103     static int modi_poverty(VirtualGamesInterface const& vgi,
104                             Trick const& trick,
105                             Team const team,
106                             HandCard const& card,  Team winnerteam, Ai const& ai);
107 
108 }; // struct TrickWeighting
109