Minor optimization and cleanup of AI dispatch.
git-svn-id: http://svn.berlios.de/svnroot/repos/oolite-linux/trunk@5175 127b21dd-08f5-0310-b4b7-95ae10353056
This commit is contained in:
parent
e33280df7e
commit
c283c03ce4
@ -77,7 +77,6 @@
|
||||
"debugMessage:",
|
||||
"playSound:",
|
||||
"setGuiToMissionScreen",
|
||||
// "setBackgroundFromDescriptionsKey:", // Is this ever used from a script? It seems a bad match for future plans of mine. -- Ahruman
|
||||
"setGalacticHyperspaceBehaviourTo:",
|
||||
"setGalacticHyperspaceFixedCoordsTo:",
|
||||
);
|
||||
@ -197,13 +196,14 @@
|
||||
"dropMessages:",
|
||||
"exitAIWithMessage:",
|
||||
"ai_throwSparks", // Don't use, use throwSparks instead
|
||||
"explodeSelf", // Don't use, use becomeExplosion instead
|
||||
"explodeSelf", // Don't use, use becomeExplosion instead
|
||||
"checkAegis",
|
||||
"checkEnergy",
|
||||
"checkHeatInsulation",
|
||||
"setThrustFactorTo:",
|
||||
"setStateTo:",
|
||||
"debugMessage:",
|
||||
"ai_debugMessage:", // Don't use, use debugMessage: instead
|
||||
"disengageAutopilot", // Only useful for player root AI
|
||||
"thargonCheckMother",
|
||||
"addPrimaryAggressorAsDefenseTarget",
|
||||
@ -458,5 +458,6 @@
|
||||
"setUpEscorts" = "doNothing";
|
||||
"becomeExplosion" = "explodeSelf";
|
||||
"clearDefenseTargets" = "removeAllDefenseTargets";
|
||||
"debugMessage:" = "ai_debugMessage:";
|
||||
};
|
||||
}
|
||||
|
@ -507,11 +507,7 @@ static AIStackElement *sStack = NULL;
|
||||
|
||||
- (void) takeAction:(NSString *) action
|
||||
{
|
||||
NSArray *tokens = ScanTokensFromString(action);
|
||||
NSString *dataString = nil;
|
||||
NSString *selectorStr;
|
||||
SEL selector;
|
||||
ShipEntity *owner = [self owner];
|
||||
ShipEntity *owner = [self owner];
|
||||
|
||||
#ifndef NDEBUG
|
||||
BOOL report = [owner reportAIMessages];
|
||||
@ -522,33 +518,35 @@ static AIStackElement *sStack = NULL;
|
||||
}
|
||||
#endif
|
||||
|
||||
if ([tokens count] != 0)
|
||||
NSArray *tokens = ScanTokensFromString(action);
|
||||
OOUInteger tokenCount = [tokens count];
|
||||
|
||||
if (tokenCount != 0)
|
||||
{
|
||||
selectorStr = [tokens objectAtIndex:0];
|
||||
NSString *selectorStr = [tokens objectAtIndex:0];
|
||||
|
||||
if (owner != nil)
|
||||
{
|
||||
if ([tokens count] > 1)
|
||||
NSString *dataString = nil;
|
||||
|
||||
if (tokenCount == 2)
|
||||
{
|
||||
dataString = [[tokens subarrayWithRange:NSMakeRange(1, [tokens count] - 1)] componentsJoinedByString:@" "];
|
||||
dataString = [tokens objectAtIndex:1];
|
||||
}
|
||||
else if ([tokens count] > 1)
|
||||
{
|
||||
dataString = [[tokens subarrayWithRange:NSMakeRange(1, tokenCount - 1)] componentsJoinedByString:@" "];
|
||||
}
|
||||
|
||||
selector = NSSelectorFromString(selectorStr);
|
||||
SEL selector = NSSelectorFromString(selectorStr);
|
||||
if ([owner respondsToSelector:selector])
|
||||
{
|
||||
if (dataString) [owner performSelector:selector withObject:dataString];
|
||||
if (dataString != nil) [owner performSelector:selector withObject:dataString];
|
||||
else [owner performSelector:selector];
|
||||
}
|
||||
else
|
||||
{
|
||||
if ([selectorStr isEqual:@"debugMessage:"])
|
||||
{
|
||||
OOLog(@"ai.takeAction.debugMessage", @"DEBUG: AI MESSAGE from %@: %@", ownerDesc, dataString);
|
||||
}
|
||||
else
|
||||
{
|
||||
OOLogERR(@"ai.takeAction.badSelector", @"in AI %@ in state %@: %@ does not respond to %@", stateMachineName, currentState, ownerDesc, selectorStr);
|
||||
}
|
||||
OOLogERR(@"ai.takeAction.badSelector", @"in AI %@ in state %@: %@ does not respond to %@", stateMachineName, currentState, ownerDesc, selectorStr);
|
||||
}
|
||||
}
|
||||
else
|
||||
|
@ -254,9 +254,11 @@
|
||||
|
||||
- (void) sendScriptMessage:(NSString *)message;
|
||||
|
||||
- (void) ai_throwSparks;
|
||||
|
||||
- (void) explodeSelf;
|
||||
|
||||
- (void) ai_throwSparks;
|
||||
- (void) ai_debugMessage:(NSString *)message;
|
||||
|
||||
// racing code.
|
||||
- (void) targetFirstBeaconWithCode:(NSString *) code;
|
||||
@ -2564,12 +2566,20 @@
|
||||
[self setThrowSparks:YES];
|
||||
}
|
||||
|
||||
|
||||
- (void) explodeSelf
|
||||
{
|
||||
[self getDestroyedBy:nil damageType:kOODamageTypeEnergy];
|
||||
}
|
||||
|
||||
|
||||
- (void) ai_debugMessage:(NSString *)message
|
||||
{
|
||||
NSString *desc = [NSString stringWithFormat:@"%@ %d", [self name], [self universalID]];
|
||||
if ([self isPlayer]) desc = @"player autopilot";
|
||||
OOLog(@"ai.takeAction.debugMessage", @"DEBUG: AI MESSAGE from %@: %@", desc, message);
|
||||
}
|
||||
|
||||
|
||||
|
||||
// racing code TODO
|
||||
|
Loading…
x
Reference in New Issue
Block a user