JNR
aiAgentState.h
1 /*
2 
3 Jump'n'Run Engine
4 http://www.atanaslaskov.com/jnr/
5 
6 BSD LICENSE
7 Copyright (c) 2007-2013, Atanas Laskov
8 All rights reserved.
9 
10 Redistribution and use in source and binary forms, with or without
11 modification, are permitted provided that the following conditions are met:
12 1. Redistributions of source code must retain the above copyright notice,
13 this list of conditions and the following disclaimer.
14 2. Redistributions in binary form must reproduce the above copyright notice,
15 this list of conditions and the following disclaimer in the documentation
16 and/or other materials provided with the distribution.
17 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
18 ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
19 WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
20 DISCLAIMED. IN NO EVENT SHALL ATANAS LASKOV BE LIABLE FOR ANY
21 DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
22 (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
23 LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
24 ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25 (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
26 SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27 
28 */
29 
30 #ifndef AI_AGENT_STATE
31 #define AI_AGENT_STATE
32 
34 
35 
36 // Possible states of a percepts,
37 // as indicated in the argumet of aiAgentState::percieve()
38 //
39 #define PERCEPT_RESET 0 // percept is reset (called once, on event)
40 #define PERCEPT_SET 1 // percept is set (called once, on event)
41 #define PERCEPT_HOLD 2 // percept is set (called continually, while set)
42 
49 {
50 private:
51  // Accessible controllers, i.e. game objects that can be manipulated by the AI agent
52  //
53  aiController* _self; // < Self controller
54  aiController* _player; // < Player controller
55 
56  // Agent pointer
57  //
58  class aiAgent* _agent; // < Pointer to the agent object
59  friend class aiAgent; // < The aiAgent object sets these pointers
60 
61 public:
62  // Access to internal pointers but no modification
63  //
64  aiController* self() { return _self; }
65  aiController* player() { return _player; }
66  class aiAgent* agent() { return _agent; }
67  class laStage* stage();
68 
69  // AP percept handlers;
70  // This is a collection of functions that can be extended by derrived AI agents,
71  // in order to implemnt code handlivng various events
72  //
73  virtual void perceive(unsigned state, M_BOOL global, unsigned id, aiPerceptData data) = 0; // any percept
74  virtual void perceive_active( std::string strID_Old ) = 0; // state activated
75  virtual void perceive_inactive( std::string strID_New ) = 0; // state deactivated
76 
77  //Load any additional parameters
78  virtual void load(laFileParser *fp) =0;
79 };
81 #endif
Single state of the AI-controlled creature.
Definition: aiAgentState.h:48
Abstract base class for AI agents.
Definition: aiAgent.h:59
Interface for loadable objects.
Definition: laLoadableObj.h:43
Named class.
Definition: laNamedClass.h:45
Base Class for Stages.
Definition: laStage.h:48
Class aiController is an abstract class for behaviours which can be performed by objects.
Definition: aiController.h:41
File Parser.
Definition: laFileParser.h:41