/[adonthell]/adonthell/src/rpg/quest_event.cc
ViewVC logotype

Diff of /adonthell/src/rpg/quest_event.cc

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.1 by ksterker, Sun Aug 14 16:52:55 2005 UTC revision 1.2 by ksterker, Sun Oct 9 07:38:40 2005 UTC
# Line 31  Line 31 
31  using rpg::quest_event;  using rpg::quest_event;
32    
33  // constructor  // constructor
34  quest_event::quest_event (const std::string & pattern)  quest_event::quest_event (const std::string & pattern, quest_part *part)
35  {  {
36          u_int32 idx, pos = 0;          set_pattern (pattern);
37                    Part = part;
38      // split pattern into its levels  }
     while ((idx = pattern.find (".", pos)) != pattern.npos)  
     {  
         Pattern.push_back (pattern.substr (pos, idx - pos));  
         pos = idx + 1;  
     }  
       
     // add last part  
     Pattern.push_back (pattern.substr (pos));  
  }  
39    
40  // test two quest events for equality  // test two quest events for equality
41  bool quest_event::equals (const events::event * e)  bool quest_event::equals (const events::event * e)
# Line 55  bool quest_event::equals (const events:: Line 46  bool quest_event::equals (const events::
46                    
47          for (; j != Pattern.end() && i != qevt->end(); i++, j++)          for (; j != Pattern.end() && i != qevt->end(); i++, j++)
48          {          {
                 fprintf (stdout, "%s == %s\n", (*i).c_str(), (*j).c_str());  
           
49                  // '>' matches rest of pattern                  // '>' matches rest of pattern
50                  if ((*i)[0] == '>' || (*j)[0] == '>')                  if ((*i)[0] == '>' || (*j)[0] == '>')
51                  {                  {
# Line 76  bool quest_event::equals (const events:: Line 65  bool quest_event::equals (const events::
65                  }                  }
66          }          }
67                    
68          // both pattern matched, but we must still make sure that          // the patterns matched, but we must still make sure that
69          // they have the same size          // they have the same size
70          return Pattern.size () == qevt->size ();          return Pattern.size () == qevt->size ();
71  }  }
# Line 84  bool quest_event::equals (const events:: Line 73  bool quest_event::equals (const events::
73  // save quest event  // save quest event
74  void quest_event::put_state (base::flat& out) const  void quest_event::put_state (base::flat& out) const
75  {  {
76        // save basic event data first
77        event::put_state (out);
78    
79            string pattern = "";
80            for (std::vector<std::string>::const_iterator i = Pattern.begin(); i != Pattern.end(); /* nothing */)
81            {
82                    pattern += (*i);
83                    if (++i != Pattern.end()) pattern += ".";
84            }
85            
86        // save quest event data
87        out.put_string ("qpt", pattern);
88  }  }
89    
90  // load quest event  // load quest event
91  bool quest_event::get_state (base::flat& in)  bool quest_event::get_state (base::flat& in)
92  {  {
93          return true;      // get basic event data
94        if (event::get_state (in))
95        {  
96            // get quest event data
97            string pattern = in.get_string ("qpt");
98                    set_pattern (pattern);
99        }
100        return in.success ();
101    }
102    
103    // split given path into its parts
104    void quest_event::set_pattern (const std::string & pattern)
105    {
106            u_int32 idx, pos = 0;
107    
108        // split pattern into its levels
109        while ((idx = pattern.find (".", pos)) != pattern.npos)
110        {
111            Pattern.push_back (pattern.substr (pos, idx - pos));
112            pos = idx + 1;
113        }
114        
115        // add last part
116        Pattern.push_back (pattern.substr (pos));
117  }  }
118    

Legend:
Removed from v.1.1  
changed lines
  Added in v.1.2

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26