00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef ALLIANCESETUP_H
00023 #define ALLIANCESETUP_H
00024
00025 #include <map>
00026 #include <pgscrollwidget.h>
00027 #include "../gamemap.h"
00028
00029 class AllianceSetupWidget : public PG_ScrollWidget {
00030 GameMap* actmap;
00031 bool allEditable;
00032
00033 struct PlayerWidgets {
00034 PG_LineEdit* name;
00035 PG_DropDown* type;
00036 int pos;
00037 };
00038
00039 public:
00040 enum DiplomaticTransitions { SNEAK_ATTACK, TO_WAR, TO_TRUCE, TO_PEACE, TO_PEACE_SV, TO_ALLIANCE };
00041
00042 protected:
00043
00044 vector< vector< DiplomaticTransitions > > stateChanges;
00045 vector< vector< DiplomaticStates > > states;
00046
00047 typedef map<int,PG_Widget*> DiplomaticWidgets;
00048 DiplomaticWidgets diplomaticWidgets;
00049
00050 vector<PlayerWidgets> playerWidgets;
00051
00052 int linearize( int actingPlayer, int secondPlayer );
00053 void setState( DiplomaticStates s, int actingPlayer, int secondPlayer );
00054
00055 DiplomaticStates& getState( int actingPlayer, int secondPlayer );
00056
00057 public:
00058 AllianceSetupWidget( GameMap* gamemap, bool allEditable, PG_Widget *parent, const PG_Rect &r, const std::string &style="ScrollWidget" );
00059 void Apply();
00060 ~AllianceSetupWidget();
00061 };
00062
00063
00067 bool setupalliances( GameMap* actmap, bool supervisor = false );
00068
00069
00070 #endif
00071