Author: crab
Date: Thu Apr 16 23:56:30 2009
New Revision: 34974
URL: http://svn.gna.org/viewcvs/wesnoth?rev=34974&view=rev
Log:
AI refactoring: moved event objects location to ai_manager (no reason to keep
one copy per ai, since only playsingle_controller is an observer). Interface
for raising those events from the ai unchanged (no reason to change it)
Modified:
trunk/src/ai/ai.cpp
trunk/src/ai/ai_interface.cpp
trunk/src/ai/ai_interface.hpp
trunk/src/ai/ai_manager.cpp
trunk/src/ai/ai_manager.hpp
Modified: trunk/src/ai/ai.cpp
URL:
http://svn.gna.org/viewcvs/wesnoth/trunk/src/ai/ai.cpp?rev=34974&r1=34973&r2=34974&view=diff
==============================================================================
--- trunk/src/ai/ai.cpp (original)
+++ trunk/src/ai/ai.cpp Thu Apr 16 23:56:30 2009
@@ -398,19 +398,6 @@
const ai_interface::info& ai_interface::get_info() const{
return ai_manager::get_active_ai_info_for_side(get_side());
-}
-
-void ai_interface::raise_user_interact()
-{
- const int interact_time = 30;
- const int time_since_interact = SDL_GetTicks() - last_interact_;
- if(time_since_interact < interact_time) {
- return;
- }
-
- user_interact_.notify_observers();
-
- last_interact_ = SDL_GetTicks();
}
void ai_interface::diagnostic(const std::string& msg)
Modified: trunk/src/ai/ai_interface.cpp
URL:
http://svn.gna.org/viewcvs/wesnoth/trunk/src/ai/ai_interface.cpp?rev=34974&r1=34973&r2=34974&view=diff
==============================================================================
--- trunk/src/ai/ai_interface.cpp (original)
+++ trunk/src/ai/ai_interface.cpp Thu Apr 16 23:56:30 2009
@@ -19,6 +19,7 @@
#include "ai_actions.hpp"
#include "ai_interface.hpp"
+#include "ai_manager.hpp"
#define DBG_AI LOG_STREAM(debug, ai)
#define LOG_AI LOG_STREAM(info, ai)
@@ -28,6 +29,26 @@
// =======================================================================
//
// =======================================================================
+void ai_interface::raise_user_interact() const
+{
+ ai_manager::raise_user_interact();
+}
+
+void ai_interface::raise_unit_recruited() const
+{
+ ai_manager::raise_unit_recruited();
+}
+
+void ai_interface::raise_unit_moved() const
+{
+ ai_manager::raise_unit_moved();
+}
+
+void ai_interface::raise_enemy_attacked() const
+{
+ ai_manager::raise_enemy_attacked();
+}
+
std::auto_ptr<ai_attack_result> ai_interface::execute_attack_action(const
map_location& attacker_loc, const map_location& defender_loc, int
attacker_weapon){
return
ai_actions::execute_attack_action(get_side(),true,attacker_loc,defender_loc,attacker_weapon);
@@ -63,3 +84,4 @@
std::auto_ptr<ai_stopunit_result> ai_interface::check_stopunit_action(const
map_location& unit_location, bool remove_movement, bool remove_attacks){
return
ai_actions::execute_stopunit_action(get_side(),false,unit_location,remove_movement,remove_attacks);
}
+
Modified: trunk/src/ai/ai_interface.hpp
URL:
http://svn.gna.org/viewcvs/wesnoth/trunk/src/ai/ai_interface.hpp?rev=34974&r1=34973&r2=34974&view=diff
==============================================================================
--- trunk/src/ai/ai_interface.hpp (original)
+++ trunk/src/ai/ai_interface.hpp Thu Apr 16 23:56:30 2009
@@ -24,7 +24,6 @@
class gamemap;
#include "../formula_callable.hpp"
-#include "../generic_event.hpp"
#include "../pathfind.hpp"
#include "../gamestatus.hpp"
#include "../playturn.hpp"
@@ -89,9 +88,7 @@
* All derived classes should take an argument of type info& which they
* should pass to this constructor.
*/
- ai_interface(int side, bool master) : side_(side), master_(master),
last_interact_(0), user_interact_("ai_user_interact"),
- unit_recruited_("ai_unit_recruited"),
unit_moved_("ai_unit_moved"),
- enemy_attacked_("ai_enemy_attacked") {
+ ai_interface(int side, bool master) : side_(side), master_(master) {
add_ref(); //this class shouldn't be reference counted.
}
virtual ~ai_interface() {}
@@ -107,7 +104,6 @@
* Derived persistant AIs should call this function each turn (expect
first)
*/
virtual void new_turn() {
- last_interact_ = 0;
}
/** Return a reference to the 'team' object for the AI. */
@@ -119,12 +115,6 @@
/** Display a debug message as a chat message. */
void log_message(const std::string& msg);
-
- // Exposes events to allow for attaching/detaching handlers.
- events::generic_event& user_interact() { return user_interact_; }
- events::generic_event& unit_recruited() { return unit_recruited_; }
- events::generic_event& unit_moved() { return unit_moved_; }
- events::generic_event& enemy_attacked() { return enemy_attacked_; }
/** Set the side */
virtual void set_side(unsigned int side) { side_ = side; }
@@ -292,23 +282,18 @@
* doesn't occur too often, so there is no problem with calling it very
* regularly.
*/
- void raise_user_interact();
+ void raise_user_interact() const;
/** Notifies all interested observers of the event respectively. */
- void raise_unit_recruited() { unit_recruited_.notify_observers(); }
- void raise_unit_moved() { unit_moved_.notify_observers(); }
- void raise_enemy_attacked() { enemy_attacked_.notify_observers(); }
+ void raise_unit_recruited() const;
+ void raise_unit_moved() const;
+ void raise_enemy_attacked() const;
protected:
virtual void get_inputs(std::vector<game_logic::formula_input>* inputs)
const;
virtual variant get_value(const std::string& key) const;
private:
unsigned int side_;
bool master_;
- int last_interact_;
- events::generic_event user_interact_;
- events::generic_event unit_recruited_;
- events::generic_event unit_moved_;
- events::generic_event enemy_attacked_;
};
#endif
Modified: trunk/src/ai/ai_manager.cpp
URL:
http://svn.gna.org/viewcvs/wesnoth/trunk/src/ai/ai_manager.cpp?rev=34974&r1=34973&r2=34974&view=diff
==============================================================================
--- trunk/src/ai/ai_manager.cpp (original)
+++ trunk/src/ai/ai_manager.cpp Thu Apr 16 23:56:30 2009
@@ -288,7 +288,7 @@
enemy_attacked_.detach_handler(event_observer);
}
-void ai_manager::raise_unit_interact() {
+void ai_manager::raise_user_interact() {
const int interact_time = 30;
const int time_since_interact = SDL_GetTicks() - last_interact_;
if(time_since_interact < interact_time) {
@@ -688,10 +688,6 @@
void ai_manager::play_turn( int side, events::observer* event_observer ){
last_interact_ = 0;
ai_interface& ai_obj = get_active_ai_for_side(side);
- ai_obj.user_interact().attach_handler(event_observer);
- ai_obj.unit_recruited().attach_handler(event_observer);
- ai_obj.unit_moved().attach_handler(event_observer);
- ai_obj.enemy_attacked().attach_handler(event_observer);
ai_obj.play_turn();
}
Modified: trunk/src/ai/ai_manager.hpp
URL:
http://svn.gna.org/viewcvs/wesnoth/trunk/src/ai/ai_manager.hpp?rev=34974&r1=34973&r2=34974&view=diff
==============================================================================
--- trunk/src/ai/ai_manager.hpp (original)
+++ trunk/src/ai/ai_manager.hpp Thu Apr 16 23:56:30 2009
@@ -168,7 +168,7 @@
* doesn't occur too often, so there is no problem with calling it very
* regularly.
*/
- static void raise_unit_interact();
+ static void raise_user_interact();
/*
_______________________________________________
Wesnoth-commits mailing list
[email protected]
https://mail.gna.org/listinfo/wesnoth-commits