Dock.isQueued(ship) function

This commit is contained in:
cim 2013-12-19 17:35:37 +00:00
parent 540632aa52
commit 0c8f228758
2 changed files with 56 additions and 0 deletions

View File

@ -629,6 +629,11 @@ MA 02110-1301, USA.
{
return YES;
}
// player docking manually
if ([ship isPlayer] && [[self owner] playerReservedDock] == self)
{
return YES;
}
return NO;
}

View File

@ -34,6 +34,9 @@ MA 02110-1301, USA.
static JSObject *sDockPrototype;
static BOOL JSDockGetDockEntity(JSContext *context, JSObject *stationObj, DockEntity **outEntity);
static BOOL JSDockGetShipEntity(JSContext *context, JSObject *shipObj, ShipEntity **outEntity);
static JSBool DockIsQueued(JSContext *context, uintN argc, jsval *vp);
static JSBool DockGetProperty(JSContext *context, JSObject *this, jsid propID, jsval *value);
@ -83,6 +86,7 @@ static JSPropertySpec sDockProperties[] =
static JSFunctionSpec sDockMethods[] =
{
// JS name Function min args
{ "isQueued", DockIsQueued, 1 },
{ 0 }
};
@ -117,6 +121,28 @@ static BOOL JSDockGetDockEntity(JSContext *context, JSObject *dockObj, DockEntit
}
static BOOL JSDockGetShipEntity(JSContext *context, JSObject *shipObj, ShipEntity **outEntity)
{
OOJS_PROFILE_ENTER
BOOL result;
Entity *entity = nil;
if (outEntity == NULL) return NO;
*outEntity = nil;
result = OOJSEntityGetEntity(context, shipObj, &entity);
if (!result) return NO;
if (![entity isKindOfClass:[ShipEntity class]]) return NO;
*outEntity = (ShipEntity *)entity;
return YES;
OOJS_PROFILE_EXIT
}
@implementation DockEntity (OOJavaScriptExtensions)
- (void)getJSClass:(JSClass **)outClass andPrototype:(JSObject **)outPrototype
@ -227,3 +253,28 @@ static JSBool DockSetProperty(JSContext *context, JSObject *this, jsid propID, J
// *** Methods ***
static JSBool DockIsQueued(JSContext *context, uintN argc, jsval *vp)
{
OOJS_NATIVE_ENTER(context)
BOOL result = NO;
DockEntity *dock = nil;
JSDockGetDockEntity(context, OOJS_THIS, &dock);
if (argc == 0)
{
OOJSReportBadArguments(context, @"Dock", @"isQueued", MIN(argc, 1U), OOJS_ARGV, nil, @"ship");
return NO;
}
ShipEntity *ship = nil;
JSDockGetShipEntity(context, JSVAL_TO_OBJECT(OOJS_ARGV[0]), &ship);
if (ship != nil)
{
result = [dock shipIsInDockingQueue:ship];
}
OOJS_RETURN_BOOL(result);
OOJS_NATIVE_EXIT
}