jawbone.cc

Go to the documentation of this file.
00001 /*
00002 Copyright (C) 2001 The Exult Team
00003 
00004 This program is free software; you can redistribute it and/or
00005 modify it under the terms of the GNU General Public License
00006 as published by the Free Software Foundation; either version 2
00007 of the License, or (at your option) any later version.
00008 
00009 This program is distributed in the hope that it will be useful,
00010 but WITHOUT ANY WARRANTY; without even the implied warranty of
00011 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00012 GNU General Public License for more details.
00013 
00014 You should have received a copy of the GNU General Public License
00015 along with this program; if not, write to the Free Software
00016 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
00017 */
00018 
00019 #ifdef HAVE_CONFIG_H
00020 #  include <config.h>
00021 #endif
00022 
00023 #include "jawbone.h"
00024 #include "objiter.h"
00025 
00026 // Add an object.
00027 bool Jawbone_object::add(Game_object *obj, bool dont_check, bool combine)
00028 {
00029   if (obj->get_shapenum() != 559)
00030     return false; // not a serpent tooth
00031 
00032   find_teeth();
00033   if (teeth[obj->get_framenum()])
00034     return false; // already have this one
00035 
00036   if (Container_game_object::add(obj, dont_check)) {
00037     
00038 
00039     teeth[obj->get_framenum()] = obj;
00040     toothcount++;
00041 
00042     update_frame();
00043 
00044     return true;
00045   } 
00046 
00047   return false;
00048 }
00049 
00050 // Remove an object.
00051 void Jawbone_object::remove(Game_object *obj)
00052 {
00053   Container_game_object::remove(obj);
00054 
00055   find_teeth();
00056   update_frame();
00057 }
00058 
00059 void Jawbone_object::find_teeth()
00060 {
00061   for (int i=0; i<19; i++)
00062     teeth[i] = 0;
00063   toothcount = 0;
00064 
00065   Object_list& objects = get_objects();
00066   if (objects.is_empty())
00067     return;     // Empty.
00068 
00069   Game_object *obj;
00070   Object_iterator next(objects);
00071 
00072   while ((obj = next.get_next()) != 0)
00073   {
00074     if (obj->get_shapenum() != 559) {
00075 //      obj = obj->get_next();
00076       continue; // not a serpent tooth... (shouldn't happen)
00077     }
00078 
00079     toothcount++;
00080     teeth[obj->get_framenum()] = obj;
00081 
00082 //    obj = obj->get_next();
00083   }
00084 }
00085 
00086 void Jawbone_object::update_frame()
00087 {
00088   set_frame(toothcount);
00089 }

Generated on Mon Jul 9 14:42:49 2007 for ExultEngine by  doxygen 1.5.1