|  |  |  | @ -83,54 +83,43 @@ using df::global::world; | 
		
	
		
			
				|  |  |  |  | using df::global::ui; | 
		
	
		
			
				|  |  |  |  | using df::global::gamemode; | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | bool Units::isValid() | 
		
	
		
			
				|  |  |  |  | { | 
		
	
		
			
				|  |  |  |  |     return (world->units.all.size() > 0); | 
		
	
		
			
				|  |  |  |  | } | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | int32_t Units::getNumCreatures() | 
		
	
		
			
				|  |  |  |  | int32_t Units::getNumUnits() | 
		
	
		
			
				|  |  |  |  | { | 
		
	
		
			
				|  |  |  |  |     return world->units.all.size(); | 
		
	
		
			
				|  |  |  |  | } | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | df::unit * Units::getCreature (const int32_t index) | 
		
	
		
			
				|  |  |  |  | df::unit *Units::getUnit (const int32_t index) | 
		
	
		
			
				|  |  |  |  | { | 
		
	
		
			
				|  |  |  |  |     if (!isValid()) return NULL; | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     // read pointer from vector at position
 | 
		
	
		
			
				|  |  |  |  |     if(size_t(index) > world->units.all.size()) | 
		
	
		
			
				|  |  |  |  |         return 0; | 
		
	
		
			
				|  |  |  |  |     return world->units.all[index]; | 
		
	
		
			
				|  |  |  |  |     return vector_get(world->units.all, index); | 
		
	
		
			
				|  |  |  |  | } | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | // returns index of creature actually read or -1 if no creature can be found
 | 
		
	
		
			
				|  |  |  |  | int32_t Units::getCreatureInBox (int32_t index, df::unit ** furball, | 
		
	
		
			
				|  |  |  |  |                                 const uint16_t x1, const uint16_t y1, const uint16_t z1, | 
		
	
		
			
				|  |  |  |  |                                 const uint16_t x2, const uint16_t y2, const uint16_t z2) | 
		
	
		
			
				|  |  |  |  | bool Units::getUnitsInBox (std::vector<df::unit*> &units, | 
		
	
		
			
				|  |  |  |  |     int16_t x1, int16_t y1, int16_t z1, | 
		
	
		
			
				|  |  |  |  |     int16_t x2, int16_t y2, int16_t z2) | 
		
	
		
			
				|  |  |  |  | { | 
		
	
		
			
				|  |  |  |  |     if (!isValid()) | 
		
	
		
			
				|  |  |  |  |         return -1; | 
		
	
		
			
				|  |  |  |  |     if (!world) | 
		
	
		
			
				|  |  |  |  |         return false; | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     if (x1 > x2) swap(x1, x2); | 
		
	
		
			
				|  |  |  |  |     if (y1 > y2) swap(y1, y2); | 
		
	
		
			
				|  |  |  |  |     if (z1 > z2) swap(z1, z2); | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     size_t size = world->units.all.size(); | 
		
	
		
			
				|  |  |  |  |     while (size_t(index) < size) | 
		
	
		
			
				|  |  |  |  |     units.clear(); | 
		
	
		
			
				|  |  |  |  |     for (df::unit *u : world->units.all) | 
		
	
		
			
				|  |  |  |  |     { | 
		
	
		
			
				|  |  |  |  |         // read pointer from vector at position
 | 
		
	
		
			
				|  |  |  |  |         df::unit * temp = world->units.all[index]; | 
		
	
		
			
				|  |  |  |  |         if (temp->pos.x >= x1 && temp->pos.x < x2) | 
		
	
		
			
				|  |  |  |  |         if (u->pos.x >= x1 && u->pos.x <= x2) | 
		
	
		
			
				|  |  |  |  |         { | 
		
	
		
			
				|  |  |  |  |             if (temp->pos.y >= y1 && temp->pos.y < y2) | 
		
	
		
			
				|  |  |  |  |             if (u->pos.y >= y1 && u->pos.y <= y2) | 
		
	
		
			
				|  |  |  |  |             { | 
		
	
		
			
				|  |  |  |  |                 if (temp->pos.z >= z1 && temp->pos.z < z2) | 
		
	
		
			
				|  |  |  |  |                 if (u->pos.z >= z1 && u->pos.z <= z2) | 
		
	
		
			
				|  |  |  |  |                 { | 
		
	
		
			
				|  |  |  |  |                     *furball = temp; | 
		
	
		
			
				|  |  |  |  |                     return index; | 
		
	
		
			
				|  |  |  |  |                     units.push_back(u); | 
		
	
		
			
				|  |  |  |  |                 } | 
		
	
		
			
				|  |  |  |  |             } | 
		
	
		
			
				|  |  |  |  |         } | 
		
	
		
			
				|  |  |  |  |         index++; | 
		
	
		
			
				|  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  |     *furball = NULL; | 
		
	
		
			
				|  |  |  |  |     return -1; | 
		
	
		
			
				|  |  |  |  |     return true; | 
		
	
		
			
				|  |  |  |  | } | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | int32_t Units::findIndexById(int32_t creature_id) | 
		
	
	
		
			
				
					|  |  |  | 
 |