/[enigma]/enigma/actors.cc
ViewVC logotype

Diff of /enigma/actors.cc

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

revision 1.13 by dheck, Fri Nov 15 16:26:04 2002 UTC revision 1.14 by dheck, Wed Dec 4 19:52:03 2002 UTC
# Line 153  namespace Line 153  namespace
153      protected:      protected:
154          BasicBall(const char *kind, double radius, double mass);          BasicBall(const char *kind, double radius, double mass);
155    
156          enum State { NORMAL, SHATTERING, DROWNING, FALLING, JUMPING, DEAD };          enum State {
157                NORMAL,
158                SHATTERING,
159                DROWNING,
160                FALLING,
161                JUMPING,
162                DEAD,
163                APPEARING,
164                DISAPPEARING,
165            };
166          State state;          State state;
167    
168          void set_model_cb(const string &m) {          void set_model_cb(const string &m) {
# Line 166  namespace Line 175  namespace
175          void animcb();          void animcb();
176    
177          // Actor interface.          // Actor interface.
178            void on_creation(const px::V3 &p) {
179                Actor::on_creation(p);
180                change_state(APPEARING);
181            }
182            
183          bool is_dead() { return state == DEAD; }          bool is_dead() { return state == DEAD; }
184          bool is_flying() { return state == JUMPING; }          bool is_flying() { return state == JUMPING; }
185            bool can_drop_items() { return state==NORMAL || state==JUMPING; }
186            bool can_pickup_items() { return state==NORMAL; }
187    
188          // Object interface.          // Object interface.
189          void message(const string &m, const Value &);          void message(const string &m, const Value &);
# Line 194  void BasicBall::message(const string &m, Line 210  void BasicBall::message(const string &m,
210              change_state(DROWNING);              change_state(DROWNING);
211          else if (m == "jump")          else if (m == "jump")
212              change_state(JUMPING);              change_state(JUMPING);
213            else if (m == "appear")
214                change_state(APPEARING);
215            else if (m == "disappear")
216                change_state(DISAPPEARING);
217      }      }
218  }  }
219    
# Line 218  void BasicBall::animcb() Line 238  void BasicBall::animcb()
238          set_model(kind);          set_model(kind);
239          change_state(NORMAL);          change_state(NORMAL);
240          break;          break;
241        case APPEARING:
242            set_model(kind);
243            change_state(NORMAL);
244            break;
245        case DISAPPEARING:
246            set_model("ringanim");
247            break;
248      default:      default:
249          break;          break;
250      }      }
# Line 253  BasicBall::change_state(State newstate) Line 280  BasicBall::change_state(State newstate)
280          sound::PlaySound("boink");          sound::PlaySound("boink");
281          set_model_cb(kind+"-jump");          set_model_cb(kind+"-jump");
282          break;          break;
283        case APPEARING:
284            set_model_cb(kind+"-appear");
285            break;
286        case DISAPPEARING:
287            world::GrabActor(this);
288            set_model_cb(kind+"-drown");
289            break;
290      }      }
291      state = newstate;      state = newstate;
292  }  }

Legend:
Removed from v.1.13  
changed lines
  Added in v.1.14

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