private void LifeCreateCallback( Player player, Vector3I[] marks, object state )
{
try {
lock ( _world.SyncRoot ) {
if ( !CheckWorldPermissions( player ) )
return;
if ( null == _world.Map )
return;
if ( null != _world.GetLife( _name ) ) //check it again, since smone could create it in between
{
player.Message( "&WLife with such name exists already, choose another" );
return;
}
Life2DZone life = new Life2DZone( _name, _world.Map, marks, player, ( player.Info.Rank.NextRankUp ?? player.Info.Rank ).Name );
if ( _world.TryAddLife( life ) )
player.Message( "&yLife was created. Named " + _name );
else
player.Message( "&WCoulnd't create life for some reason unknown." ); //really unknown: we are under a lock so nobody could create a life with the same name in between
}
} catch ( Exception e ) {
player.Message( "&WCreate life error: " + e.Message );
}
}