Oolite 1.93.0.7767-260207-f2a8cb5
Loading...
Searching...
No Matches
GuiDisplayGen(Internal) Category Reference

Instance Methods

(void) - drawGLDisplay:x:y:z:
(void) - drawCrossHairsWithSize:x:y:z:
(void) - drawStarChart:x:y:z:alpha:
(void) - drawSystemMarkers:atX:andY:andZ:withAlpha:andScale:
(void) - drawSystemMarker:atX:andY:andZ:withAlpha:andScale:
(void) - drawEquipmentList:z:
(void) - drawAdvancedNavArrayAtX:y:z:alpha:usingRoute:optimizedBy:zoom:

Detailed Description

Definition at line 47 of file GuiDisplayGen.m.

Method Documentation

◆ drawAdvancedNavArrayAtX:y:z:alpha:usingRoute:optimizedBy:zoom:

- (void) drawAdvancedNavArrayAtX: (float) x
y: (float) y
z: (float) z
alpha: (float) alpha
usingRoute: (NSDictionary *) route
optimizedBy: (OORouteType) optimizeBy
zoom: (OOScalar) zoom 

Extends class GuiDisplayGen.

Definition at line 2481 of file GuiDisplayGen.m.

2481 :(float)x y:(float)y z:(float)z alpha:(float)alpha usingRoute:(NSDictionary *) routeInfo optimizedBy:(OORouteType) optimizeBy zoom: (OOScalar) zoom
2482{
2483 GLfloat lr,lg,lb,la,lr2,lg2,lb2,la2;
2484 double hscale = size_in_pixels.width / (CHART_WIDTH_AT_MAX_ZOOM*zoom);
2485 double vscale = -1.0 * size_in_pixels.height / (2*CHART_HEIGHT_AT_MAX_ZOOM*zoom);
2486 NSPoint star = NSZeroPoint,
2487 star2 = NSZeroPoint,
2488 starabs = NSZeroPoint,
2489 star2abs = NSZeroPoint;
2490 OOSystemDescriptionManager *systemManager = [UNIVERSE systemManager];
2491 OOGalaxyID g = [PLAYER galaxyNumber];
2492 OOSystemID planetNumber = [PLAYER systemID];
2493
2494 OOColor *defaultConnectionColor = [self colorFromSetting:kGuiChartConnectionColor defaultValue:[OOColor colorWithWhite:0.25 alpha:1.0]];
2495 OOColor *currentJumpColorStart = [self colorFromSetting:kGuiChartCurrentJumpStartColor defaultValue:[OOColor colorWithWhite:0.25 alpha:0.0]];
2496 OOColor *currentJumpColorEnd = [self colorFromSetting:kGuiChartCurrentJumpEndColor defaultValue:[OOColor colorWithWhite:0.25 alpha:0.0]];
2497
2498 OOColor *thisConnectionColor = nil;
2499 OOColor *thatConnectionColor = nil;
2500
2501 float jumpRange = MAX_JUMP_RANGE * ((optimizeBy == OPTIMIZED_BY_NONE) ? [PLAYER dialFuel] : 1.0);
2502
2503 NSInteger concealment[256];
2504 for (NSUInteger i=0;i<256;i++) {
2505 NSDictionary *systemInfo = [systemManager getPropertiesForSystem:i inGalaxy:g];
2506 concealment[i] = [systemInfo oo_intForKey:@"concealment" defaultValue:OO_SYSTEMCONCEALMENT_NONE];
2507 }
2508
2509
2510 OOGLBEGIN(GL_LINES);
2511 for (OOSystemID i = 0; i < 256; i++)
2512 {
2513
2514 if (concealment[i] >= OO_SYSTEMCONCEALMENT_NOTHING) {
2515 // system is not known
2516 continue;
2517 }
2518
2519 /* Concealment */
2520 if (optimizeBy == OPTIMIZED_BY_NONE && i != planetNumber)
2521 {
2522 continue;
2523 }
2524
2525 starabs = [systemManager getCoordinatesForSystem:i inGalaxy:g];
2526
2527 star.x = (float)(starabs.x * hscale);
2528 star.y = (float)(starabs.y * vscale);
2529
2530 // if in non-route mode, we're always starting from i, so need
2531 // to do <i here too.
2532 OOSystemID loopstart = (optimizeBy == OPTIMIZED_BY_NONE) ? 0 : (i+1);
2533
2534 for (OOSystemID j = loopstart; j < 256; j++)
2535 {
2536 if (i == j)
2537 {
2538 continue; // for OPTIMIZED_BY_NONE case
2539 }
2540
2541 if (concealment[j] >= OO_SYSTEMCONCEALMENT_NOTHING) {
2542 // system is not known
2543 continue;
2544 }
2545
2546 star2abs = [systemManager getCoordinatesForSystem:j inGalaxy:g];
2547 double d = distanceBetweenPlanetPositions(starabs.x, starabs.y, star2abs.x, star2abs.y);
2548
2549 if (d <= jumpRange) // another_commander - Default to 7.0 LY.
2550 {
2551 star2.x = (float)(star2abs.x * hscale);
2552 star2.y = (float)(star2abs.y * vscale);
2553 if (optimizeBy == OPTIMIZED_BY_NONE)
2554 {
2555 [currentJumpColorStart getRed:&lr green:&lg blue:&lb alpha:&la];
2556 [currentJumpColorEnd getRed:&lr2 green:&lg2 blue:&lb2 alpha:&la2];
2557 OOGL(glColor4f(lr, lg, lb, la*alpha));
2558 glVertex3f(x+star.x, y+star.y, z);
2559
2560 float frac = (d/jumpRange);
2561 OOGL(glColor4f(
2562 OOLerp(lr,lr2,frac),
2563 OOLerp(lg,lg2,frac),
2564 OOLerp(lb,lb2,frac),
2565 OOLerp(la,la2,frac)
2566 ));
2567 glVertex3f(x+star2.x, y+star2.y, z);
2568
2569 }
2570 else
2571 {
2572 thisConnectionColor = [OOColor colorWithDescription:[systemManager getProperty:@"link_color" forSystemKey:[NSString stringWithFormat:@"interstellar: %d %ld %ld", g, (long)i, (long)j]]];
2573
2574 if (thisConnectionColor == nil)
2575 {
2576 thisConnectionColor = defaultConnectionColor;
2577 }
2578 [thisConnectionColor getRed:&lr green:&lg blue:&lb alpha:&la];
2579 OOGL(glColor4f(lr, lg, lb, la*alpha));
2580
2581 glVertex3f(x+star.x, y+star.y, z);
2582
2583 // and the other colour for the other end
2584 thatConnectionColor = [OOColor colorWithDescription:[systemManager getProperty:@"link_color" forSystemKey:[NSString stringWithFormat:@"interstellar: %d %ld %ld", g, (long)j, (long)i]]];
2585
2586 if (thatConnectionColor == nil)
2587 {
2588 thatConnectionColor = thisConnectionColor;
2589 }
2590 [thatConnectionColor getRed:&lr green:&lg blue:&lb alpha:&la];
2591 OOGL(glColor4f(lr, lg, lb, la*alpha));
2592
2593 glVertex3f(x+star2.x, y+star2.y, z);
2594 }
2595 }
2596 }
2597 }
2598 OOGLEND();
2599
2600 if (optimizeBy == OPTIMIZED_BY_NONE)
2601 {
2602 return;
2603 }
2604
2605 if (routeInfo)
2606 {
2607 NSUInteger i, route_hops = [[routeInfo oo_arrayForKey:@"route"] count] - 1;
2608
2609 if (optimizeBy == OPTIMIZED_BY_JUMPS)
2610 {
2611 // route optimised by distance
2612 [self setGLColorFromSetting:kGuiChartRouteShortColor defaultValue:[OOColor yellowColor] alpha:alpha];
2613 }
2614 else
2615 {
2616 // route optimised by time
2617 [self setGLColorFromSetting:kGuiChartRouteQuickColor defaultValue:[OOColor cyanColor] alpha:alpha];
2618 }
2619 OOSystemID loc;
2620 for (i = 0; i < route_hops; i++)
2621 {
2622 loc = [[routeInfo objectForKey:@"route"] oo_intAtIndex:i];
2623 starabs = [systemManager getCoordinatesForSystem:loc inGalaxy:g];
2624 star2abs = [systemManager getCoordinatesForSystem:[[routeInfo objectForKey:@"route"] oo_intAtIndex:i+1] inGalaxy:g];
2625
2626 star.x = (float)(starabs.x * hscale);
2627 star.y = (float)(starabs.y * vscale);
2628
2629 star2.x = (float)(star2abs.x * hscale);
2630 star2.y = (float)(star2abs.y * vscale);
2631
2632
2633 OOGLBEGIN(GL_LINES);
2634 glVertex3f(x+star.x, y+star.y, z);
2635 glVertex3f(x+star2.x, y+star2.y, z);
2636 OOGLEND();
2637
2638 // Label the route, if not already labelled
2639 if (zoom > CHART_ZOOM_SHOW_LABELS && concealment[loc] < OO_SYSTEMCONCEALMENT_NONAME)
2640 {
2641 OODrawString([UNIVERSE systemNameIndex:loc], x + star.x + 2.0, y + star.y, z, NSMakeSize(8,8));
2642 }
2643 }
2644 // Label the destination, which was not included in the above loop.
2645 if (zoom > CHART_ZOOM_SHOW_LABELS)
2646 {
2647 loc = [[routeInfo objectForKey:@"route"] oo_intAtIndex:i];
2648 if(concealment[loc] < OO_SYSTEMCONCEALMENT_NONAME)
2649 {
2650 OODrawString([UNIVERSE systemNameIndex:loc], x + star2.x + 2.0, y + star2.y, z, NSMakeSize(10,10));
2651 }
2652 }
2653 }
2654}
void OODrawString(NSString *text, GLfloat x, GLfloat y, GLfloat z, NSSize siz)
GLfloat OOScalar
Definition OOMaths.h:64
#define OOGLBEGIN
Definition OOOpenGL.h:253
#define OOGL(statement)
Definition OOOpenGL.h:251
#define OOGLEND
Definition OOOpenGL.h:254
return nil
float y
float x
@ OO_SYSTEMCONCEALMENT_NOTHING
@ OO_SYSTEMCONCEALMENT_NONAME
OORouteType
Definition OOTypes.h:33
@ OPTIMIZED_BY_NONE
Definition OOTypes.h:34
@ OPTIMIZED_BY_JUMPS
Definition OOTypes.h:35
int16_t OOSystemID
Definition OOTypes.h:211
uint8_t OOGalaxyID
Definition OOTypes.h:210
#define CHART_WIDTH_AT_MAX_ZOOM
#define CHART_ZOOM_SHOW_LABELS
#define CHART_HEIGHT_AT_MAX_ZOOM
#define MAX_JUMP_RANGE
Definition ShipEntity.h:107
#define UNIVERSE
Definition Universe.h:844
OOColor * cyanColor()
Definition OOColor.m:286
OOColor * colorWithWhite:alpha:(float white,[alpha] float alpha)
Definition OOColor.m:103
OOColor * colorWithDescription:(id description)
Definition OOColor.m:127
void getRed:green:blue:alpha:(float *red,[green] float *green,[blue] float *blue,[alpha] float *alpha)
Definition OOColor.m:368
OOColor * yellowColor()
Definition OOColor.m:292
NSPoint getCoordinatesForSystem:inGalaxy:(OOSystemID s,[inGalaxy] OOGalaxyID g)
NSDictionary * getPropertiesForSystem:inGalaxy:(OOSystemID s,[inGalaxy] OOGalaxyID g)
id getProperty:forSystemKey:(NSString *property,[forSystemKey] NSString *key)
OOINLINE double distanceBetweenPlanetPositions(int x1, int y1, int x2, int y2) INLINE_CONST_FUNC

References CHART_HEIGHT_AT_MAX_ZOOM, CHART_WIDTH_AT_MAX_ZOOM, CHART_ZOOM_SHOW_LABELS, GuiDisplayGen::colorFromSetting:defaultValue:, OOColor::colorWithDescription:, OOColor::colorWithWhite:alpha:, OOColor::cyanColor, distanceBetweenPlanetPositions(), OOSystemDescriptionManager::getCoordinatesForSystem:inGalaxy:, OOSystemDescriptionManager::getPropertiesForSystem:inGalaxy:, OOSystemDescriptionManager::getProperty:forSystemKey:, OOColor::getRed:green:blue:alpha:, MAX_JUMP_RANGE, nil, OO_SYSTEMCONCEALMENT_NONAME, OO_SYSTEMCONCEALMENT_NOTHING, OODrawString(), OOGL, OOGLBEGIN, OOGLEND, OPTIMIZED_BY_JUMPS, OPTIMIZED_BY_NONE, GuiDisplayGen::setGLColorFromSetting:defaultValue:alpha:, UNIVERSE, x, y, and OOColor::yellowColor.

Referenced by drawStarChart:x:y:z:alpha:.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ drawCrossHairsWithSize:x:y:z:

- (void) drawCrossHairsWithSize: (GLfloat) size
x: (GLfloat) x
y: (GLfloat) y
z: (GLfloat) z 

Extends class GuiDisplayGen.

Definition at line 1717 of file GuiDisplayGen.m.

1717 :(GLfloat) size x:(GLfloat)x y:(GLfloat)y z:(GLfloat)z
1718{
1719 OOGLBEGIN(GL_QUADS);
1720 glVertex3f(x - 1, y - size, z);
1721 glVertex3f(x + 1, y - size, z);
1722 glVertex3f(x + 1, y + size, z);
1723 glVertex3f(x - 1, y + size, z);
1724 glVertex3f(x - size, y - 1, z);
1725 glVertex3f(x + size, y - 1, z);
1726 glVertex3f(x + size, y + 1, z);
1727 glVertex3f(x - size, y + 1, z);
1728 OOGLEND();
1729}
voidpf void uLong size
Definition ioapi.h:134

References OOGLBEGIN, OOGLEND, x, and y.

Referenced by drawStarChart:x:y:z:alpha:.

Here is the caller graph for this function:

◆ drawEquipmentList:z:

- (void) drawEquipmentList: (NSArray *) eqptList
z: (GLfloat) z 

add color selection here

Extends class GuiDisplayGen.

Definition at line 1235 of file GuiDisplayGen.m.

1235 :(NSArray *)eqptList z:(GLfloat)z
1236{
1237 if ([eqptList count] == 0) return;
1238
1240 NSUInteger maxRows = STATUS_EQUIPMENT_MAX_ROWS;
1241 if ([[PLAYER hud] allowBigGui])
1242 {
1244 }
1245 NSUInteger itemsPerColumn = maxRows;
1246
1247
1248 NSInteger firstY = 40; // firstRow =10 :-> 40 - firstRow=11 -> 24 etc...
1249 NSUInteger eqptCount = [eqptList count];
1250 NSUInteger pageCount = 1;
1251 NSUInteger i;
1252 NSInteger start;
1253 NSArray *info = nil;
1254 NSString *name = nil;
1255 BOOL damaged;
1256
1257 // Paging calculations. Assuming 10 lines we get - one page:20 items per page (ipp)
1258 // two pages: 18 ipp - three+ pages: 1st & last 18pp, middle pages 16ipp
1259
1260 i = itemsPerColumn * 2 + 2;
1261 if (eqptCount > i) // don't fit in one page?
1262 {
1263 [[UNIVERSE gameController] setMouseInteractionModeForUIWithMouseInteraction:YES];
1264
1265 i = itemsPerColumn * 4; // total items in the first and last pages
1266 itemsPerColumn--; // for all the middle pages.
1267 if (eqptCount <= i) // two pages
1268 {
1269 pageCount++;
1270 if (statusPage == 1)
1271 {
1272 start = 0;
1273 }
1274 else
1275 {
1276 statusPage = 2;
1277 start = i/statusPage; // for the for loop
1278 }
1279 }
1280 else // three or more
1281 {
1282 pageCount = ceil((float)(eqptCount-i)/(itemsPerColumn*2)) + 2;
1283 statusPage = (NSInteger)OOClampInteger(statusPage, 1, pageCount);
1284 start = (statusPage == 1) ? 0 : (statusPage-1) * itemsPerColumn * 2 + 2;
1285 }
1286 }
1287 else
1288 {
1289 statusPage = pageCount; // one page
1290 start = 0;
1291 // if we have mouse interaction active, it means that we had more than one
1292 // pages earlier, but only one now, as e.g. in the case of a hud that wss
1293 // subsequently hidden, resulting in the equip list fitting in one page,
1294 // so we need to deactivate it
1295 if (OOMouseInteractionModeIsUIScreen([[UNIVERSE gameController] mouseInteractionMode]))
1296 {
1297 // clear the gui-more and gui-back key rows first
1298 [self setText:@"" forRow:firstRow];
1299 [self setKey:GUI_KEY_SKIP forRow:firstRow];
1300 [self setText:@"" forRow:firstRow + STATUS_EQUIPMENT_MAX_ROWS];
1301 [self setKey:GUI_KEY_SKIP forRow:firstRow + STATUS_EQUIPMENT_MAX_ROWS];
1302 [self setSelectableRange:NSMakeRange(0,0)];
1303
1304 [[UNIVERSE gameController] setMouseInteractionModeForUIWithMouseInteraction:NO];
1305 }
1306 }
1307
1308 if (statusPage > 1)
1309 {
1310 [self setColor:[self colorFromSetting:kGuiStatusEquipmentScrollColor defaultValue:[OOColor greenColor]] forRow:firstRow];
1311 [self setArray:[NSArray arrayWithObjects:DESC(@"gui-back"), @"", @" <-- ",nil] forRow:firstRow];
1312 [self setKey:GUI_KEY_OK forRow:firstRow];
1313 firstY -= 16; // start 1 row down!
1314 if (statusPage == pageCount)
1315 {
1316 [self setSelectableRange:NSMakeRange(firstRow, 1)];
1317 [self setSelectedRow:firstRow];
1318 }
1319 }
1320 if (statusPage < pageCount)
1321 {
1322 [self setColor:[self colorFromSetting:kGuiStatusEquipmentScrollColor defaultValue:[OOColor greenColor]] forRow:firstRow + maxRows];
1323 [self setArray:[NSArray arrayWithObjects:DESC(@"gui-more"), @"", @" --> ",nil] forRow:firstRow + maxRows];
1324 [self setKey:GUI_KEY_OK forRow:firstRow + maxRows];
1325 if (statusPage == 1)
1326 {
1327 [self setSelectableRange:NSMakeRange(firstRow + maxRows, 1)];
1328 [self setSelectedRow:firstRow + maxRows];
1329 }
1330 }
1331 if (statusPage > 1 && statusPage < pageCount)
1332 {
1333 [self setSelectableRange:NSMakeRange(firstRow, MIN(firstRow + maxRows, GUI_DEFAULT_ROWS - firstRow))];
1334 // default selected row to 'More -->' if we are looking at one of the middle pages
1335 if ([self selectedRow] == -1) [self setSelectedRow:firstRow + maxRows];
1336 }
1337
1338 if (statusPage == 1 || statusPage == pageCount) itemsPerColumn++;
1339 eqptCount = (NSInteger)OOClampInteger(eqptCount, 1, start + itemsPerColumn * 2);
1340 for (i = start; i < eqptCount; i++)
1341 {
1342 info = [eqptList oo_arrayAtIndex:i];
1343 name = [info oo_stringAtIndex:0];
1344 if([name length] > 42) name = [[name substringToIndex:40] stringByAppendingString:@"..."];
1345
1346 damaged = ![info oo_boolAtIndex:1];
1347 if (damaged)
1348 {
1349 // Damaged items show up orange.
1350 [self setGLColorFromSetting:@"status_equipment_damaged_color" defaultValue:[OOColor orangeColor] alpha:1.0];
1351 }
1352 else
1353 {
1354 OOColor *dispCol = [info oo_objectAtIndex:2];
1355 // Normal items in default colour
1356 [self setGLColorFromSetting:@"status_equipment_ok_color" defaultValue:dispCol alpha:1.0];
1357 }
1358
1359 if (i - start < itemsPerColumn)
1360 {
1361 OODrawString(name, -220, firstY - 16 * (NSInteger)(i - start), z, NSMakeSize(15, 15));
1362 }
1363 else
1364 {
1365 OODrawString(name, 50, firstY - 16 * (NSInteger)(i - itemsPerColumn - start), z, NSMakeSize(15, 15));
1366 }
1367 }
1368}
NSInteger OOGUIRow
OOINLINE long long OOClampInteger(long long value, long long minValue, long long maxValue) ALWAYS_INLINE_FUNC
BOOL OOMouseInteractionModeIsUIScreen(OOMouseInteractionMode mode)
unsigned count
@ STATUS_EQUIPMENT_FIRST_ROW
@ STATUS_EQUIPMENT_MAX_ROWS
@ STATUS_EQUIPMENT_BIGGUI_EXTRA_ROWS
#define PLAYER
OOColor * orangeColor()
Definition OOColor.m:304
OOColor * greenColor()
Definition OOColor.m:274

References GuiDisplayGen::colorFromSetting:defaultValue:, count, OOColor::greenColor, nil, OOClampInteger(), OODrawString(), OOMouseInteractionModeIsUIScreen(), OOColor::orangeColor, PLAYER, GuiDisplayGen::setArray:forRow:, GuiDisplayGen::setColor:forRow:, GuiDisplayGen::setGLColorFromSetting:defaultValue:alpha:, GuiDisplayGen::setKey:forRow:, GuiDisplayGen::setSelectableRange:, GuiDisplayGen::setSelectedRow:, GuiDisplayGen::setText:forRow:, STATUS_EQUIPMENT_BIGGUI_EXTRA_ROWS, STATUS_EQUIPMENT_FIRST_ROW, STATUS_EQUIPMENT_MAX_ROWS, and UNIVERSE.

Referenced by GuiDisplayGen::drawGUI:drawCursor:.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ drawGLDisplay:x:y:z:

- (void) drawGLDisplay: (GLfloat)
x: (GLfloat)
y: (GLfloat)
z: (GLfloat) alpha 

Extends class GuiDisplayGen.

Definition at line 1484 of file GuiDisplayGen.m.

1484 :(GLfloat)x :(GLfloat)y :(GLfloat)z :(GLfloat) alpha
1485{
1486 NSSize strsize;
1487 unsigned i;
1488 OOTimeDelta delta_t = [UNIVERSE getTimeDelta];
1489 NSSize characterSize = pixel_text_size;
1490 NSSize titleCharacterSize = pixel_title_size;
1491 float backgroundAlpha = self == [UNIVERSE messageGUI] && ![UNIVERSE permanentMessageLog] ? 0.0f : alpha;
1492 float row_alpha[n_rows];
1493
1494 // calculate fade out time and alpha for each row. Do it before
1495 // applying a potential background because we need the maximum alpha
1496 // of all rows to be the alpha applied to the background color
1497 for (i = 0; i < n_rows; i++)
1498 {
1499 row_alpha[i] = alpha;
1500
1501 if(![UNIVERSE autoMessageLogBg] && [PLAYER guiScreen] == GUI_SCREEN_MAIN) backgroundAlpha = alpha;
1502
1503 if (rowFadeTime[i] > 0.0f && ![UNIVERSE permanentMessageLog])
1504 {
1505 rowFadeTime[i] -= (float)delta_t;
1506 if (rowFadeTime[i] <= 0.0f)
1507 {
1508 [rowText replaceObjectAtIndex:i withObject:@""];
1509 rowFadeTime[i] = 0.0f;
1510 continue;
1511 }
1512 if ((rowFadeTime[i] > 0.0f)&&(rowFadeTime[i] < 1.0))
1513 {
1514 row_alpha[i] *= rowFadeTime[i];
1515 if (backgroundAlpha < row_alpha[i]) backgroundAlpha = row_alpha[i];
1516 }
1517 else
1518 {
1519 backgroundAlpha = alpha;
1520 }
1521 }
1522 }
1523
1524 // do backdrop
1525 // don't draw it if docked, unless message_gui is permanent
1526 // don't draw it on the intro screens
1527 if (backgroundColor)
1528 {
1529 int playerStatus = [PLAYER status];
1530 if (playerStatus != STATUS_START_GAME && playerStatus != STATUS_DEAD)
1531 {
1532 OOGL(glColor4f([backgroundColor redComponent], [backgroundColor greenComponent], [backgroundColor blueComponent], backgroundAlpha * [backgroundColor alphaComponent]));
1533 OOGLBEGIN(GL_QUADS);
1534 glVertex3f(x + 0.0f, y + 0.0f, z);
1535 glVertex3f(x + size_in_pixels.width, y + 0.0f, z);
1536 glVertex3f(x + size_in_pixels.width, y + size_in_pixels.height, z);
1537 glVertex3f(x + 0.0f, y + size_in_pixels.height, z);
1538 OOGLEND();
1539 }
1540 }
1541
1542 // show the 'foreground', aka overlay!
1543
1544 if (foregroundSprite != nil)
1545 {
1546 [foregroundSprite blitCentredToX:x + 0.5f * size_in_pixels.width Y:y + 0.5f * size_in_pixels.height Z:z alpha:alpha];
1547 }
1548
1549 if (!RowInRange(selectedRow, selectableRange))
1550 selectedRow = -1; // out of Range;
1551
1553 // drawing operations here
1554
1555 if (title != nil)
1556 {
1557 //
1558 // draw the title
1559 //
1560 strsize = OORectFromString(title, 0.0f, 0.0f, titleCharacterSize).size;
1561 [self setGLColorFromSetting:kGuiScreenTitleColor defaultValue:[OOColor redColor] alpha:alpha];
1562
1563 OODrawString(title, x + pixel_row_center - strsize.width/2.0, y + size_in_pixels.height - pixel_title_size.height, z, titleCharacterSize);
1564
1565 // draw a horizontal divider
1566 //
1567 [self setGLColorFromSetting:kGuiScreenDividerColor defaultValue:[OOColor colorWithWhite:0.75 alpha:1.0] alpha:alpha];
1568
1569 OOGLBEGIN(GL_QUADS);
1570 glVertex3f(x + 0, y + size_in_pixels.height - pixel_title_size.height + 4, z);
1571 glVertex3f(x + size_in_pixels.width, y + size_in_pixels.height - pixel_title_size.height + 4, z);
1572 glVertex3f(x + size_in_pixels.width, y + size_in_pixels.height - pixel_title_size.height + 2, z);
1573 glVertex3f(x + 0, y + size_in_pixels.height - pixel_title_size.height + 2, z);
1574 OOGLEND();
1575 }
1576
1577 // draw each row of text
1578 //
1580 for (i = 0; i < n_rows; i++)
1581 {
1582 OOColor* row_color = (OOColor *)[rowColor objectAtIndex:i];
1583 glColor4f([row_color redComponent], [row_color greenComponent], [row_color blueComponent], row_alpha[i]);
1584
1585 if ([[rowText objectAtIndex:i] isKindOfClass:[NSString class]])
1586 {
1587 NSString* text = (NSString *)[rowText objectAtIndex:i];
1588 if (![text isEqual:@""])
1589 {
1590 strsize = OORectFromString(text, 0.0f, 0.0f, characterSize).size;
1591 switch (rowAlignment[i])
1592 {
1593 case GUI_ALIGN_LEFT :
1594 rowPosition[i].x = 0.0f;
1595 break;
1596 case GUI_ALIGN_RIGHT :
1597 rowPosition[i].x = size_in_pixels.width - strsize.width;
1598 break;
1599 case GUI_ALIGN_CENTER :
1600 rowPosition[i].x = (size_in_pixels.width - strsize.width)/2.0f;
1601 break;
1602 }
1603 if (i == (unsigned)selectedRow)
1604 {
1605 NSRect block = OORectFromString(text, x + rowPosition[i].x + 2, y + rowPosition[i].y + 2, characterSize);
1607 [self setGLColorFromSetting:kGuiSelectedRowBackgroundColor defaultValue:[OOColor redColor] alpha:alpha];
1608 OOGLBEGIN(GL_QUADS);
1609 glVertex3f(block.origin.x, block.origin.y, z);
1610 glVertex3f(block.origin.x + block.size.width, block.origin.y, z);
1611 glVertex3f(block.origin.x + block.size.width, block.origin.y + block.size.height, z);
1612 glVertex3f(block.origin.x, block.origin.y + block.size.height, z);
1613 OOGLEND();
1614 [self setGLColorFromSetting:kGuiSelectedRowColor defaultValue:[OOColor blackColor] alpha:alpha];
1616 }
1617 OODrawStringQuadsAligned(text, x + rowPosition[i].x, y + rowPosition[i].y, z, characterSize, NO);
1618
1619 // draw cursor at end of current Row
1620 //
1621 if ((showTextCursor)&&(i == (unsigned)currentRow))
1622 {
1623 NSRect tr = OORectFromString(text, 0.0f, 0.0f, characterSize);
1624 NSPoint cu = NSMakePoint(x + rowPosition[i].x + tr.size.width + 0.2f * characterSize.width, y + rowPosition[i].y);
1625 tr.origin = cu;
1626 tr.size.width = 0.5f * characterSize.width;
1627 GLfloat g_alpha = 0.5f * (1.0f + (float)sin(6 * [UNIVERSE getTime]));
1629 [self setGLColorFromSetting:kGuiTextInputCursorColor defaultValue:[OOColor redColor] alpha:row_alpha[i]*g_alpha];
1630 OOGLBEGIN(GL_QUADS);
1631 glVertex3f(tr.origin.x, tr.origin.y, z);
1632 glVertex3f(tr.origin.x + tr.size.width, tr.origin.y, z);
1633 glVertex3f(tr.origin.x + tr.size.width, tr.origin.y + tr.size.height, z);
1634 glVertex3f(tr.origin.x, tr.origin.y + tr.size.height, z);
1635 OOGLEND();
1637 }
1638 }
1639 }
1640 if ([[rowText objectAtIndex:i] isKindOfClass:[NSArray class]])
1641 {
1642 NSArray *array = [rowText oo_arrayAtIndex:i];
1643 NSUInteger j, max_columns = MIN([array count], n_columns);
1644 BOOL isLeftAligned;
1645
1646 for (j = 0; j < max_columns; j++)
1647 {
1648 NSString* text = [array oo_stringAtIndex:j];
1649 if ([text length] != 0)
1650 {
1651 isLeftAligned = tabStops[j] >= 0;
1652 rowPosition[i].x = llabs(tabStops[j]);
1653
1654 // we don't want to highlight leading space(s) or narrow spaces (\037s)
1655 NSString *hilitedText = [text stringByTrimmingCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@" \037"]];
1656 NSRange txtRange = [text rangeOfString:hilitedText];
1657 unsigned leadingSpaces = 0;
1658
1659 if (EXPECT_NOT(txtRange.location == NSNotFound))
1660 {
1661 // This never happens!
1662 hilitedText = text;
1663 }
1664 else if (txtRange.location > 0)
1665 {
1666 // padded string!
1667 NSRange padRange;
1668 padRange.location = 0;
1669 padRange.length = txtRange.location;
1670 NSRect charBlock = OORectFromString([text substringWithRange:padRange], 0, 0, characterSize);
1671 leadingSpaces = (unsigned)charBlock.size.width;
1672
1673/* // if we're displaying commodity-quantity-none, let's try and be pixel perfect!
1674 NSString *qtyNone = DESC(@"commodity-quantity-none");
1675 txtRange = [hilitedText rangeOfString:qtyNone];
1676
1677 if (txtRange.location == 0) // bingo!
1678 {
1679 rowPosition[i].x += OORectFromString(@"0", 0, 0, characterSize).size.width - OORectFromString(qtyNone, 0, 0, characterSize).size.width;
1680 } */
1681 }
1682
1683 // baseline text rect, needed for correct highlight positioning.
1684 NSRect block = OORectFromString(text, x + rowPosition[i].x + 2, y + rowPosition[i].y + 2, characterSize);
1685
1686 if(!isLeftAligned)
1687 {
1688 rowPosition[i].x -= block.size.width + 3;
1689 }
1690 block = OORectFromString(hilitedText, x + rowPosition[i].x + 1 + leadingSpaces, y + rowPosition[i].y + 2, characterSize);
1691 block.size.width += 3;
1692
1693
1694 if (i == (unsigned)selectedRow)
1695 {
1697 [self setGLColorFromSetting:kGuiSelectedRowBackgroundColor defaultValue:[OOColor redColor] alpha:alpha];
1698 OOGLBEGIN(GL_QUADS);
1699 glVertex3f(block.origin.x, block.origin.y, z);
1700 glVertex3f(block.origin.x + block.size.width, block.origin.y, z);
1701 glVertex3f(block.origin.x + block.size.width, block.origin.y + block.size.height, z);
1702 glVertex3f(block.origin.x, block.origin.y + block.size.height, z);
1703 OOGLEND();
1704 [self setGLColorFromSetting:kGuiSelectedRowColor defaultValue:[OOColor blackColor] alpha:alpha];
1706 }
1707 OODrawStringQuadsAligned(text, x + rowPosition[i].x, y + rowPosition[i].y, z, characterSize,NO);
1708 }
1709 }
1710 }
1711 }
1714}
@ GUI_ALIGN_RIGHT
@ GUI_ALIGN_LEFT
@ GUI_ALIGN_CENTER
OOINLINE BOOL RowInRange(OOGUIRow row, NSRange range)
void OODrawStringQuadsAligned(NSString *text, GLfloat x, GLfloat y, GLfloat z, NSSize siz, BOOL rightAlign)
void OOStartDrawingStrings(void)
NSRect OORectFromString(NSString *text, GLfloat x, GLfloat y, NSSize siz)
void OOStopDrawingStrings(void)
#define EXPECT_NOT(x)
#define MIN(A, B)
Definition OOMaths.h:111
double OOTimeDelta
Definition OOTypes.h:224
OOColor * redColor()
Definition OOColor.m:268
OOColor * blackColor()
Definition OOColor.m:238
void applyNone()
Definition OOTexture.m:275

References OOTexture::applyNone, OOColor::blackColor, OOColor::colorWithWhite:alpha:, count, EXPECT_NOT, GUI_ALIGN_CENTER, GUI_ALIGN_LEFT, GUI_ALIGN_RIGHT, MIN, nil, OODrawString(), OODrawStringQuadsAligned(), OOGL, OOGLBEGIN, OOGLEND, OORectFromString(), OOStartDrawingStrings(), OOStopDrawingStrings(), PLAYER, OOColor::redColor, RowInRange(), GuiDisplayGen::setGLColorFromSetting:defaultValue:alpha:, UNIVERSE, x, and y.

Here is the call graph for this function:

◆ drawStarChart:x:y:z:alpha:

- (void) drawStarChart: (GLfloat)
x: (GLfloat)
y: (GLfloat)
z: (GLfloat)
alpha: (BOOL) compact 

Extends class GuiDisplayGen.

Definition at line 1758 of file GuiDisplayGen.m.

1758 :(GLfloat)x :(GLfloat)y :(GLfloat)z :(GLfloat) alpha :(BOOL)compact
1759{
1760 PlayerEntity* player = PLAYER;
1761
1762 if (!player)
1763 return;
1764
1765 OOSystemDescriptionManager *systemManager = [UNIVERSE systemManager];
1766
1767 OOScalar zoom = [player chart_zoom];
1768 NSPoint chart_centre_coordinates = [player adjusted_chart_centre];
1769 NSPoint galaxy_coordinates = [player galaxy_coordinates];
1770 NSPoint cursor_coordinates = [player cursor_coordinates];
1771 NSPoint info_system_coordinates = [[UNIVERSE systemManager] getCoordinatesForSystem: [player infoSystemID] inGalaxy: [player galaxyNumber]];
1772 OOLongRangeChartMode chart_mode = [player longRangeChartMode];
1773 OOGalaxyID galaxy_id = [player galaxyNumber];
1774 GLfloat r = 1.0, g = 1.0, b = 1.0;
1775 BOOL noNova;
1776 NSPoint cu;
1777 NSUInteger systemParameter;
1778
1779 double fuel = 35.0 * [player dialFuel];
1780
1781 double hcenter = size_in_pixels.width/2.0;
1782 double hscale = size_in_pixels.width / (CHART_WIDTH_AT_MAX_ZOOM*zoom);
1783 double vscale = -size_in_pixels.height / (2*CHART_HEIGHT_AT_MAX_ZOOM*zoom);
1784 double vcenter = CHART_SCREEN_VERTICAL_CENTRE;
1785 double hoffset = hcenter - chart_centre_coordinates.x*hscale;
1786 double voffset = size_in_pixels.height - vcenter - chart_centre_coordinates.y*vscale;
1787
1788 if (compact)
1789 {
1790 hscale = size_in_pixels.width / 256.0;
1791 vscale = -1.0 * size_in_pixels.height / 512.0;
1792 hoffset = 0.0f;
1793 voffset = size_in_pixels.height - pixel_title_size.height - 5;
1795 chart_centre_coordinates.x = 128.0;
1796 chart_centre_coordinates.y = 128.0;
1797 zoom = CHART_MAX_ZOOM;
1798 }
1799
1800 int i;
1801 double d, distance = 0.0, time = 0.0;
1802 int jumps = 0;
1803 NSPoint star;
1804 OOScalar pixelRatio;
1805 NSRect clipRect;
1806
1807 OORouteType advancedNavArrayMode = [player ANAMode];
1808 BOOL routeExists = NO;
1809
1810 NSInteger concealment[256];
1811 for (i=0;i<256;i++) {
1812 NSDictionary *systemInfo = [systemManager getPropertiesForSystem:i inGalaxy:galaxy_id];
1813 concealment[i] = [systemInfo oo_intForKey:@"concealment" defaultValue:OO_SYSTEMCONCEALMENT_NONE];
1814 }
1815
1816 BOOL *systemsFound = [UNIVERSE systemsFound];
1817 NSSize viewSize = [[UNIVERSE gameView] backingViewSize];
1818 double aspect_ratio = viewSize.width / viewSize.height;
1819
1820 // default colours - match those in HeadUpDisplay:OODrawPlanetInfo
1821 GLfloat govcol[] = { 0.5, 0.0, 0.7,
1822 0.7, 0.5, 0.3,
1823 0.0, 1.0, 0.3,
1824 1.0, 0.8, 0.1,
1825 1.0, 0.0, 0.0,
1826 0.1, 0.5, 1.0,
1827 0.7, 0.7, 0.7,
1828 0.7, 1.0, 1.0};
1829
1830 if (aspect_ratio > 4.0/3.0)
1831 {
1832 pixelRatio = viewSize.height / 480.0;
1833 }
1834 else
1835 {
1836 pixelRatio = viewSize.width / 640.0;
1837 }
1838
1839 NSInteger textRow = compact ? GUI_ROW_CHART_SYSTEM_COMPACT : GUI_ROW_CHART_SYSTEM;
1840
1841 clipRect = NSMakeRect((viewSize.width - size_in_pixels.width*pixelRatio)/2.0,
1842 (viewSize.height + size_in_pixels.height*pixelRatio)/2.0 - (pixel_title_size.height + 15 + (textRow-2)*MAIN_GUI_ROW_HEIGHT) * pixelRatio,
1843 size_in_pixels.width * pixelRatio,
1844 (textRow-1) * MAIN_GUI_ROW_HEIGHT * pixelRatio);
1845
1846 OOSystemID target = [PLAYER targetSystemID];
1847 double dx, dy;
1848
1849 // get a list of systems marked as contract destinations
1850 NSDictionary* markedDestinations = [player markedDestinations];
1851
1852 // get present location
1853 cu = NSMakePoint((float)(hscale*galaxy_coordinates.x+hoffset),(float)(vscale*galaxy_coordinates.y+voffset));
1854
1855 // enable draw clipping; limit drawing area within the chart area
1856 OOGL(glEnable(GL_SCISSOR_TEST));
1857 OOGL(glScissor(clipRect.origin.x, clipRect.origin.y, clipRect.size.width, clipRect.size.height));
1858
1859 // Cache nearby systems so that [UNIVERSE generateSystemData:] does not get called on every frame
1860 // Caching code submitted by Y A J, 20091022
1861
1862 static OOGalaxyID saved_galaxy_id;
1863 static struct saved_system
1864 {
1865 OOSystemID sysid;
1866 int tec, eco, gov;
1867 NSString* p_name;
1868 BOOL nova;
1869 } nearby_systems[ 256 ];
1870 static int num_nearby_systems = 0;
1871
1872 if ( _refreshStarChart || galaxy_id != saved_galaxy_id)
1873 {
1874 // saved systems are stale; recompute
1875 _refreshStarChart = NO;
1876 for (i = 0; i < num_nearby_systems; i++)
1877 [nearby_systems[ i ].p_name release];
1878
1879 num_nearby_systems = 0;
1880 for (i = 0; i < 256; i++)
1881 {
1882
1883 NSDictionary* sys_info = [UNIVERSE generateSystemData:i];
1884 if (EXPECT_NOT([sys_info oo_boolForKey:@"sun_gone_nova"]))
1885 {
1886 nearby_systems[ num_nearby_systems ].gov = -1; // Flag up nova systems!
1887 }
1888 else
1889 {
1890 nearby_systems[ num_nearby_systems ].tec = [sys_info oo_intForKey:KEY_TECHLEVEL];
1891 nearby_systems[ num_nearby_systems ].eco = [sys_info oo_intForKey:KEY_ECONOMY];
1892 nearby_systems[ num_nearby_systems ].gov = [sys_info oo_intForKey:KEY_GOVERNMENT];
1893 }
1894 nearby_systems[ num_nearby_systems ].sysid = i;
1895 nearby_systems[ num_nearby_systems ].p_name = [[sys_info oo_stringForKey:KEY_NAME] retain];
1896 nearby_systems[ num_nearby_systems ].nova = [[UNIVERSE generateSystemData:i] oo_boolForKey:@"sun_gone_nova"];
1897 num_nearby_systems++;
1898 }
1899 saved_galaxy_id = [player galaxyNumber];
1900 }
1901
1902 static OOSystemID savedPlanetNumber = 0;
1903 static OOSystemID savedDestNumber = 0;
1904 static OORouteType savedArrayMode = OPTIMIZED_BY_NONE;
1905 static NSDictionary *routeInfo = nil;
1906
1907 /* May override current mode for mission screens */
1908 if (backgroundSpecial == GUI_BACKGROUND_SPECIAL_LONG_ANA_SHORTEST ||
1909 backgroundSpecial == GUI_BACKGROUND_SPECIAL_SHORT_ANA_SHORTEST ||
1910 backgroundSpecial == GUI_BACKGROUND_SPECIAL_CUSTOM_ANA_SHORTEST)
1911 {
1912 advancedNavArrayMode = OPTIMIZED_BY_JUMPS;
1913 }
1914 else if (backgroundSpecial == GUI_BACKGROUND_SPECIAL_LONG_ANA_QUICKEST ||
1915 backgroundSpecial == GUI_BACKGROUND_SPECIAL_SHORT_ANA_QUICKEST ||
1916 backgroundSpecial == GUI_BACKGROUND_SPECIAL_CUSTOM_ANA_QUICKEST)
1917 {
1918 advancedNavArrayMode = OPTIMIZED_BY_TIME;
1919 }
1920
1921 if (advancedNavArrayMode != OPTIMIZED_BY_NONE && [player hasEquipmentItemProviding:@"EQ_ADVANCED_NAVIGATIONAL_ARRAY"])
1922 {
1923 OOSystemID planetNumber = [PLAYER systemID];
1924 OOSystemID destNumber = [PLAYER targetSystemID];
1925 if (routeInfo == nil || planetNumber != savedPlanetNumber || destNumber != savedDestNumber || advancedNavArrayMode != savedArrayMode)
1926 {
1927 [routeInfo release];
1928 routeInfo = [[UNIVERSE routeFromSystem:planetNumber toSystem:destNumber optimizedBy:advancedNavArrayMode] retain];
1929 savedPlanetNumber = planetNumber;
1930 savedDestNumber = destNumber;
1931 savedArrayMode = advancedNavArrayMode;
1932 }
1933 target = destNumber;
1934
1935 // if the ANA has been activated and we are in string input mode (i.e. planet search),
1936 // get out of it so that distance and time data can be displayed
1937 //if ([[[UNIVERSE gameView] typedString] length] > 0) [player clearPlanetSearchString];
1938
1939 if (routeInfo) routeExists = YES;
1940
1941 [self drawAdvancedNavArrayAtX:x+hoffset y:y+voffset z:z alpha:alpha usingRoute: (planetNumber != destNumber ? (id)routeInfo : nil) optimizedBy:advancedNavArrayMode zoom: zoom];
1942
1943 if (routeExists)
1944 {
1945 distance = [routeInfo oo_doubleForKey:@"distance"];
1946 time = [routeInfo oo_doubleForKey:@"time"];
1947 jumps = [routeInfo oo_intForKey:@"jumps"];
1948
1949 if (distance == 0.0 && planetNumber != destNumber)
1950 {
1951 // zero-distance double fix
1952 distance = 0.1;
1953 time = 0.01;
1954 }
1955 }
1956 }
1957 else
1958 {
1959 [self drawAdvancedNavArrayAtX:x+hoffset y:y+voffset z:z alpha:alpha usingRoute:nil optimizedBy:OPTIMIZED_BY_NONE zoom: zoom];
1960 }
1961 if (!routeExists)
1962 {
1963 NSPoint targetCoordinates = [systemManager getCoordinatesForSystem:target inGalaxy:galaxy_id];
1964
1965 distance = distanceBetweenPlanetPositions(targetCoordinates.x,targetCoordinates.y,galaxy_coordinates.x,galaxy_coordinates.y);
1966 if (distance == 0.0)
1967 {
1968 if (target != [PLAYER systemID])
1969 {
1970 // looking at the other half of a zero-distance double
1971 // distance is treated as 0.1 LY
1972 distance = 0.1;
1973 }
1974 }
1975 if ([player hasHyperspaceMotor] && distance <= [player fuel]/10.0)
1976 {
1977 time = distance * distance;
1978 }
1979 else
1980 {
1981 time = 0.0;
1982 }
1983 }
1984
1985 if ([player hasHyperspaceMotor])
1986 {
1987 // draw fuel range circle
1988 OOGL(GLScaledLineWidth(2.0f));
1989 [self setGLColorFromSetting:kGuiChartRangeColor defaultValue:[OOColor greenColor] alpha:alpha];
1990
1991 GLDrawOval(x + cu.x, y + cu.y, z, NSMakeSize((float)(fuel*hscale), 2*(float)(fuel*vscale)), 5);
1992 }
1993
1994
1995 // draw crosshairs over current location
1996 //
1997 [self setGLColorFromSetting:kGuiChartCrosshairColor defaultValue:[OOColor greenColor] alpha:alpha];
1998
1999 [self drawCrossHairsWithSize:12/zoom+2 x:x + cu.x y:y + cu.y z:z];
2000
2001
2002 // draw crosshairs over cursor
2003 //
2004 [self setGLColorFromSetting:kGuiChartCursorColor defaultValue:[OOColor redColor] alpha:alpha];
2005 cu = NSMakePoint((float)(hscale*cursor_coordinates.x+hoffset),(float)(vscale*cursor_coordinates.y+voffset));
2006 [self drawCrossHairsWithSize:7/zoom+2 x:x + cu.x y:y + cu.y z:z];
2007
2008 // draw marks and stars
2009 //
2010 OOGL(GLScaledLineWidth(1.5f));
2011 OOGL(glColor4f(1.0f, 1.0f, 0.75f, alpha)); // pale yellow
2012
2013 for (i = 0; i < num_nearby_systems; i++)
2014 {
2015 NSPoint sys_coordinates = [systemManager getCoordinatesForSystem:i inGalaxy:galaxy_id];
2016
2017 dx = fabs(chart_centre_coordinates.x - sys_coordinates.x);
2018 dy = fabs(chart_centre_coordinates.y - sys_coordinates.y);
2019
2021 continue;
2022
2023
2024 if (concealment[i] >= OO_SYSTEMCONCEALMENT_NOTHING) {
2025 // system is not known
2026 continue;
2027 }
2028
2029 NSDictionary *systemInfo = [systemManager getPropertiesForSystem:i inGalaxy:galaxy_id];
2030 float blob_factor = [guiUserSettings oo_floatForKey:kGuiChartCircleScale defaultValue:0.0017];
2031 float blob_size = (1.0f + blob_factor * [systemInfo oo_floatForKey:@"radius"])/zoom;
2032 if (blob_size < 0.5) blob_size = 0.5;
2033
2034 star.x = (float)(sys_coordinates.x * hscale + hoffset);
2035 star.y = (float)(sys_coordinates.y * vscale + voffset);
2036
2037 noNova = !nearby_systems[i].nova;
2038 NSAssert1(chart_mode <= OOLRC_MODE_TECHLEVEL, @"Long range chart mode %i out of range", (int)chart_mode);
2039
2040 NSArray *markers = [markedDestinations objectForKey:[NSNumber numberWithInt:i]];
2041 if (markers != nil) // is marked
2042 {
2043 GLfloat base_size = 0.5f * blob_size + 2.5f;
2044 [self drawSystemMarkers:markers atX:x+star.x andY:y+star.y andZ:z withAlpha:alpha andScale:base_size];
2045 }
2046
2047 if (concealment[i] >= OO_SYSTEMCONCEALMENT_NODATA) {
2048 // no system data available
2049 r = g = b = 0.7;
2050 OOGL(glColor4f(r, g, b, alpha));
2051 } else {
2052 switch (chart_mode)
2053 {
2054 case OOLRC_MODE_ECONOMY:
2055 if (EXPECT(noNova))
2056 {
2057 systemParameter = nearby_systems[i].eco;
2058 GLfloat ce1 = 1.0f - 0.125f * systemParameter;
2059 [self setGLColorFromSetting:[NSString stringWithFormat:kGuiChartEconomyUColor, (unsigned long)systemParameter]
2060 defaultValue:[OOColor colorWithRed:ce1 green:1.0f blue:0.0f alpha:1.0f]
2061 alpha:1.0];
2062 }
2063 else
2064 {
2065 r = g = b = 0.3;
2066 OOGL(glColor4f(r, g, b, alpha));
2067 }
2068 break;
2069 case OOLRC_MODE_GOVERNMENT:
2070 if (EXPECT(noNova))
2071 {
2072 systemParameter = nearby_systems[i].gov;
2073 [self setGLColorFromSetting:[NSString stringWithFormat:kGuiChartGovernmentUColor, (unsigned long)systemParameter]
2074 defaultValue:[OOColor colorWithRed:govcol[systemParameter*3] green:govcol[1+(systemParameter*3)] blue:govcol[2+(systemParameter*3)] alpha:1.0f]
2075 alpha:1.0];
2076 }
2077 else
2078 {
2079 r = g = b = 0.3;
2080 OOGL(glColor4f(r, g, b, alpha));
2081 }
2082 break;
2083 case OOLRC_MODE_TECHLEVEL:
2084 if (EXPECT(noNova))
2085 {
2086 systemParameter = nearby_systems[i].tec;
2087 r = 0.6;
2088 g = b = 0.20 + (0.05 * (GLfloat)systemParameter);
2089 }
2090 else
2091 {
2092 r = g = b = 0.3;
2093 }
2094 OOGL(glColor4f(r, g, b, alpha));
2095 break;
2096 case OOLRC_MODE_UNKNOWN:
2097 case OOLRC_MODE_SUNCOLOR:
2098 if (EXPECT(noNova))
2099 {
2100 r = g = b = 1.0;
2101 OOColor *sunColor = [OOColor colorWithDescription:[[UNIVERSE systemManager] getProperty:@"sun_color" forSystem:i inGalaxy:galaxy_id]];
2102 if (sunColor != nil) {
2103 [sunColor getRed:&r green:&g blue:&b alpha:&alpha];
2104 alpha = 1.0; // reset
2105 }
2106 }
2107 else
2108 {
2109 r = 1.0;
2110 g = 0.2;
2111 b = 0.0;
2112 }
2113 OOGL(glColor4f(r, g, b, alpha));
2114 break;
2115 }
2116 }
2117
2118 GLDrawFilledOval(x + star.x, y + star.y, z, NSMakeSize(blob_size,blob_size), 15);
2119 }
2120
2121 // draw found stars and captions
2122 //
2123 GLfloat systemNameScale = [guiUserSettings oo_floatForKey:kGuiChartLabelScale defaultValue:1.0];
2124
2125 OOGL(GLScaledLineWidth(1.5f));
2126 [self setGLColorFromSetting:kGuiChartMatchBoxColor defaultValue:[OOColor greenColor] alpha:alpha];
2127
2128 int n_matches = 0, foundIndex = -1;
2129
2130 for (i = 0; i < 256; i++) if (systemsFound[i])
2131 {
2132 if(foundSystem == n_matches) foundIndex = i;
2133 n_matches++;
2134 }
2135
2136 if (n_matches == 0)
2137 {
2138 foundSystem = 0;
2139 }
2140 else if (backgroundSpecial == GUI_BACKGROUND_SPECIAL_LONG_ANA_SHORTEST || backgroundSpecial == GUI_BACKGROUND_SPECIAL_LONG_ANA_QUICKEST || backgroundSpecial == GUI_BACKGROUND_SPECIAL_LONG)
2141 {
2142 // do nothing at this stage
2143 }
2144 else
2145 {
2146 for (i = 0; i < 256; i++)
2147 {
2148 if (concealment[i] >= OO_SYSTEMCONCEALMENT_NONAME)
2149 {
2150 continue;
2151 }
2152
2153 BOOL mark = systemsFound[i];
2154 float marker_size = 8.0/zoom;
2155 NSPoint sys_coordinates = [systemManager getCoordinatesForSystem:i inGalaxy:galaxy_id];
2156
2157 dx = fabs(chart_centre_coordinates.x - sys_coordinates.x);
2158 dy = fabs(chart_centre_coordinates.y - sys_coordinates.y);
2159
2160 if (mark && (dx <= zoom*(CHART_WIDTH_AT_MAX_ZOOM/2.0+CHART_CLIP_BORDER))&&(dy <= zoom*(CHART_HEIGHT_AT_MAX_ZOOM+CHART_CLIP_BORDER)))
2161 {
2162 star.x = (float)(sys_coordinates.x * hscale + hoffset);
2163 star.y = (float)(sys_coordinates.y * vscale + voffset);
2164 OOGLBEGIN(GL_LINE_LOOP);
2165 glVertex3f(x + star.x - marker_size, y + star.y - marker_size, z);
2166 glVertex3f(x + star.x + marker_size, y + star.y - marker_size, z);
2167 glVertex3f(x + star.x + marker_size, y + star.y + marker_size, z);
2168 glVertex3f(x + star.x - marker_size, y + star.y + marker_size, z);
2169 OOGLEND();
2170 if (i == foundIndex || n_matches == 1)
2171 {
2172 if (n_matches == 1) foundSystem = 0;
2173 if (zoom > CHART_ZOOM_SHOW_LABELS && advancedNavArrayMode == OPTIMIZED_BY_NONE)
2174 {
2175 [self setGLColorFromSetting:kGuiChartMatchLabelColor defaultValue:[OOColor cyanColor] alpha:alpha];
2176 OODrawString([UNIVERSE systemNameIndex:i] , x + star.x + 2.0, y + star.y - 10.0f, z, NSMakeSize(10*systemNameScale,10*systemNameScale));
2177 [self setGLColorFromSetting:kGuiChartMatchBoxColor defaultValue:[OOColor greenColor] alpha:alpha];
2178 }
2179 }
2180 else if (zoom > CHART_ZOOM_SHOW_LABELS)
2181 {
2182 OODrawString([UNIVERSE systemNameIndex:i] , x + star.x + 2.0, y + star.y - 10.0f, z, NSMakeSize(10*systemNameScale,10*systemNameScale));
2183 }
2184 }
2185 }
2186 }
2187
2188 // draw names
2189 //
2190// OOGL(glColor4f(1.0f, 1.0f, 0.0f, alpha)); // yellow
2191
2192 int targetIdx = -1;
2193 struct saved_system *sys;
2194 NSSize chSize = NSMakeSize(pixel_row_height*systemNameScale/zoom,pixel_row_height*systemNameScale/zoom);
2195
2196 double jumpRange = MAX_JUMP_RANGE * [PLAYER dialFuel];
2197 for (i = 0; i < num_nearby_systems; i++)
2198 {
2199 if (concealment[i] >= OO_SYSTEMCONCEALMENT_NONAME)
2200 {
2201 continue;
2202 }
2203
2204 sys = nearby_systems + i;
2205 NSPoint sys_coordinates = [systemManager getCoordinatesForSystem:sys->sysid inGalaxy:galaxy_id];
2206
2207 dx = fabs(chart_centre_coordinates.x - sys_coordinates.x);
2208 dy = fabs(chart_centre_coordinates.y - sys_coordinates.y);
2209
2211 continue;
2212 star.x = (float)(sys_coordinates.x * hscale + hoffset);
2213 star.y = (float)(sys_coordinates.y * vscale + voffset);
2214 if (sys->sysid == target) // not overlapping twin? (example: Divees & Tezabi in galaxy 5)
2215 {
2216 targetIdx = i; // we have a winner!
2217 }
2218
2219
2220
2221 if (zoom < CHART_ZOOM_SHOW_LABELS)
2222 {
2223 if (![player showInfoFlag]) // System's name
2224 {
2225
2226 d = distanceBetweenPlanetPositions(galaxy_coordinates.x, galaxy_coordinates.y, sys_coordinates.x, sys_coordinates.y);
2227 if (d <= jumpRange)
2228 {
2229 [self setGLColorFromSetting:kGuiChartLabelReachableColor defaultValue:[OOColor yellowColor] alpha:alpha];
2230 }
2231 else
2232 {
2233 [self setGLColorFromSetting:kGuiChartLabelColor defaultValue:[OOColor yellowColor] alpha:alpha];
2234
2235 }
2236
2237 OODrawString(sys->p_name, x + star.x + 2.0, y + star.y, z, chSize);
2238 }
2239 else if (EXPECT(sys->gov >= 0)) // Not a nova? Show the info.
2240 {
2241 if (concealment[i] >= OO_SYSTEMCONCEALMENT_NODATA)
2242 {
2243 [self setGLColorFromSetting:kGuiChartLabelColor defaultValue:[OOColor yellowColor] alpha:alpha];
2244 OODrawHilightedString(@"???", x + star.x + 2.0, y + star.y, z, chSize);
2245 }
2246 else
2247 {
2248 OODrawPlanetInfo(sys->gov, sys->eco, sys->tec, x + star.x + 2.0, y + star.y + 2.0, z, chSize);
2249 }
2250 }
2251 }
2252 }
2253
2254 // highlight the name of the currently selected system
2255 // (needed to get things right in closely-overlapping systems)
2256 if( targetIdx != -1 && zoom <= CHART_ZOOM_SHOW_LABELS)
2257 {
2258 if (concealment[targetIdx] < OO_SYSTEMCONCEALMENT_NONAME)
2259 {
2260 sys = nearby_systems + targetIdx;
2261 NSPoint sys_coordinates = [systemManager getCoordinatesForSystem:sys->sysid inGalaxy:galaxy_id];
2262
2263 star.x = (float)(sys_coordinates.x * hscale + hoffset);
2264 star.y = (float)(sys_coordinates.y * vscale + voffset);
2265
2266 if (![player showInfoFlag])
2267 {
2268 d = distanceBetweenPlanetPositions(galaxy_coordinates.x, galaxy_coordinates.y, sys_coordinates.x, sys_coordinates.y);
2269 if (d <= jumpRange)
2270 {
2271 [self setGLColorFromSetting:kGuiChartLabelReachableColor defaultValue:[OOColor yellowColor] alpha:alpha];
2272 }
2273 else
2274 {
2275 [self setGLColorFromSetting:kGuiChartLabelColor defaultValue:[OOColor yellowColor] alpha:alpha];
2276
2277 }
2278
2279 OODrawHilightedString(sys->p_name, x + star.x + 2.0, y + star.y, z, chSize);
2280 }
2281 else if (sys->gov >= 0) // Not a nova? Show the info.
2282 {
2283 if (concealment[targetIdx] >= OO_SYSTEMCONCEALMENT_NODATA)
2284 {
2285 [self setGLColorFromSetting:kGuiChartLabelColor defaultValue:[OOColor yellowColor] alpha:alpha];
2286 OODrawHilightedString(@"???", x + star.x + 2.0, y + star.y, z, chSize);
2287 }
2288 else
2289 {
2290 OODrawHilightedPlanetInfo(sys->gov, sys->eco, sys->tec, x + star.x + 2.0, y + star.y + 2.0, z, chSize);
2291 }
2292 }
2293 }
2294 }
2295
2296 OOGUITabSettings tab_stops;
2297 tab_stops[0] = 0;
2298 tab_stops[1] = 96;
2299 tab_stops[2] = 288;
2300 [self overrideTabs:tab_stops from:kGuiChartTraveltimeTabs length:3];
2301 [self setTabStops:tab_stops];
2302 NSString *targetName = [[UNIVERSE getSystemName:target] retain];
2303
2304 // distance-f & est-travel-time-f are identical between short & long range charts in standard Oolite, however can be alterered separately via OXPs
2305 NSString *travelDistLine = @"";
2306 if (distance > 0)
2307 {
2308 travelDistLine = OOExpandKey(@"long-range-chart-distance", distance);
2309 }
2310 NSString *travelTimeLine = @"";
2311 if (time > 0)
2312 {
2313 travelTimeLine = OOExpandKey(@"long-range-chart-est-travel-time", time);
2314 }
2315
2316 if(concealment[target] < OO_SYSTEMCONCEALMENT_NONAME)
2317 {
2318 [self setArray:[NSArray arrayWithObjects:targetName, travelDistLine,travelTimeLine,nil] forRow:textRow];
2319 }
2320 else
2321 {
2322 [self setArray:[NSArray arrayWithObjects:@"", travelDistLine,travelTimeLine,nil] forRow:textRow];
2323 }
2324 if ([PLAYER guiScreen] == GUI_SCREEN_SHORT_RANGE_CHART)
2325 {
2326 if (jumps > 0)
2327 {
2328 [self setArray:[NSArray arrayWithObjects: @"", OOExpandKey(@"short-range-chart-jumps", jumps), nil] forRow: textRow + 1];
2329 }
2330 else
2331 {
2332 [self setArray:[NSArray array] forRow: textRow + 1];
2333 }
2334 }
2335 [targetName release];
2336
2337 // draw planet info circle
2338 OOGL(GLScaledLineWidth(2.0f));
2339 [self setGLColorFromSetting: kGuiChartInfoMarkerColor defaultValue:[OOColor blueColor] alpha:alpha];
2340 cu = NSMakePoint((float)(hscale*info_system_coordinates.x+hoffset),(float)(vscale*info_system_coordinates.y+voffset));
2341 GLDrawOval(x + cu.x, y + cu.y, z, NSMakeSize(6.0f/zoom+2.0f, 6.0f/zoom+2.0f), 5);
2342
2343 // disable draw clipping
2344 OOGL(glDisable(GL_SCISSOR_TEST));
2345
2346 // Draw bottom divider
2347 [self setGLColorFromSetting:kGuiScreenDividerColor defaultValue:[OOColor colorWithWhite:0.75 alpha:1.0] alpha:alpha];
2348 OOGLBEGIN(GL_QUADS);
2349 glVertex3f(x + 0, (float)(y + size_in_pixels.height - (textRow-1)*MAIN_GUI_ROW_HEIGHT - pixel_title_size.height), z);
2350 glVertex3f(x + size_in_pixels.width, (GLfloat)(y + size_in_pixels.height - (textRow-1)*MAIN_GUI_ROW_HEIGHT - pixel_title_size.height), z);
2351 glVertex3f(x + size_in_pixels.width, (GLfloat)(y + size_in_pixels.height - (textRow-1)*MAIN_GUI_ROW_HEIGHT - pixel_title_size.height - 2), z);
2352 glVertex3f(x + 0, (GLfloat)(y + size_in_pixels.height - (textRow-1)*MAIN_GUI_ROW_HEIGHT - pixel_title_size.height - 2), z);
2353 OOGLEND();
2354}
@ GUI_BACKGROUND_SPECIAL_CUSTOM_ANA_QUICKEST
@ GUI_BACKGROUND_SPECIAL_SHORT_ANA_SHORTEST
@ GUI_BACKGROUND_SPECIAL_LONG
@ GUI_BACKGROUND_SPECIAL_LONG_ANA_SHORTEST
@ GUI_BACKGROUND_SPECIAL_SHORT_ANA_QUICKEST
@ GUI_BACKGROUND_SPECIAL_LONG_ANA_QUICKEST
@ GUI_BACKGROUND_SPECIAL_CUSTOM_ANA_SHORTEST
OOGUITabStop OOGUITabSettings[GUI_MAX_COLUMNS]
#define MAIN_GUI_ROW_HEIGHT
static BOOL _refreshStarChart
void OODrawHilightedString(NSString *text, GLfloat x, GLfloat y, GLfloat z, NSSize siz)
void OODrawHilightedPlanetInfo(int gov, int eco, int tec, GLfloat x, GLfloat y, GLfloat z, NSSize siz)
void OODrawPlanetInfo(int gov, int eco, int tec, GLfloat x, GLfloat y, GLfloat z, NSSize siz)
#define EXPECT(x)
void GLDrawFilledOval(GLfloat x, GLfloat y, GLfloat z, NSSize siz, GLfloat step)
Definition OOOpenGL.m:165
void GLScaledLineWidth(GLfloat width)
Definition OOOpenGL.m:218
void GLDrawOval(GLfloat x, GLfloat y, GLfloat z, NSSize siz, GLfloat step)
Definition OOOpenGL.m:155
#define OOExpandKey(key,...)
@ OO_SYSTEMCONCEALMENT_NODATA
OOLongRangeChartMode
Definition OOTypes.h:50
@ OPTIMIZED_BY_TIME
Definition OOTypes.h:36
#define CHART_SCREEN_VERTICAL_CENTRE
#define CHART_SCREEN_VERTICAL_CENTRE_COMPACT
#define CHART_MAX_ZOOM
@ GUI_ROW_CHART_SYSTEM_COMPACT
@ GUI_ROW_CHART_SYSTEM
#define CHART_CLIP_BORDER
OOColor * colorWithRed:green:blue:alpha:(float red,[green] float green,[blue] float blue,[alpha] float alpha)
Definition OOColor.m:95
OOColor * blueColor()
Definition OOColor.m:280
OOLongRangeChartMode longRangeChartMode
OOGalaxyID galaxyNumber()
OORouteType ANAMode()
NSPoint galaxy_coordinates
NSPoint cursor_coordinates
OOScalar chart_zoom
OOSystemID infoSystemID()
NSPoint adjusted_chart_centre()
NSDictionary * markedDestinations()
GLfloat dialFuel()

References _refreshStarChart, PlayerEntity::adjusted_chart_centre, PlayerEntity::ANAMode, OOColor::blueColor, CHART_CLIP_BORDER, CHART_HEIGHT_AT_MAX_ZOOM, CHART_MAX_ZOOM, CHART_SCREEN_VERTICAL_CENTRE, CHART_SCREEN_VERTICAL_CENTRE_COMPACT, CHART_WIDTH_AT_MAX_ZOOM, PlayerEntity::chart_zoom, CHART_ZOOM_SHOW_LABELS, OOColor::colorWithDescription:, OOColor::colorWithRed:green:blue:alpha:, OOColor::colorWithWhite:alpha:, PlayerEntity::cursor_coordinates, OOColor::cyanColor, PlayerEntity::dialFuel, distanceBetweenPlanetPositions(), GuiDisplayGen::drawAdvancedNavArrayAtX:y:z:alpha:usingRoute:optimizedBy:zoom:, GuiDisplayGen::drawCrossHairsWithSize:x:y:z:, GuiDisplayGen::drawSystemMarkers:atX:andY:andZ:withAlpha:andScale:, EXPECT, EXPECT_NOT, PlayerEntity::galaxy_coordinates, PlayerEntity::galaxyNumber, OOSystemDescriptionManager::getCoordinatesForSystem:inGalaxy:, OOSystemDescriptionManager::getPropertiesForSystem:inGalaxy:, OOColor::getRed:green:blue:alpha:, GLDrawFilledOval(), GLDrawOval(), GLScaledLineWidth(), OOColor::greenColor, GUI_BACKGROUND_SPECIAL_CUSTOM_ANA_QUICKEST, GUI_BACKGROUND_SPECIAL_CUSTOM_ANA_SHORTEST, GUI_BACKGROUND_SPECIAL_LONG, GUI_BACKGROUND_SPECIAL_LONG_ANA_QUICKEST, GUI_BACKGROUND_SPECIAL_LONG_ANA_SHORTEST, GUI_BACKGROUND_SPECIAL_SHORT_ANA_QUICKEST, GUI_BACKGROUND_SPECIAL_SHORT_ANA_SHORTEST, GUI_ROW_CHART_SYSTEM, GUI_ROW_CHART_SYSTEM_COMPACT, PlayerEntity::infoSystemID, PlayerEntity::longRangeChartMode, MAIN_GUI_ROW_HEIGHT, PlayerEntity::markedDestinations, MAX_JUMP_RANGE, nil, OO_SYSTEMCONCEALMENT_NODATA, OO_SYSTEMCONCEALMENT_NONAME, OO_SYSTEMCONCEALMENT_NOTHING, OODrawHilightedPlanetInfo(), OODrawHilightedString(), OODrawPlanetInfo(), OODrawString(), OOExpandKey, OOGL, OOGLBEGIN, OOGLEND, OPTIMIZED_BY_JUMPS, OPTIMIZED_BY_NONE, OPTIMIZED_BY_TIME, GuiDisplayGen::overrideTabs:from:length:, PLAYER, OOColor::redColor, GuiDisplayGen::setArray:forRow:, GuiDisplayGen::setGLColorFromSetting:defaultValue:alpha:, GuiDisplayGen::setTabStops:, UNIVERSE, x, y, and OOColor::yellowColor.

Here is the call graph for this function:

◆ drawSystemMarker:atX:andY:andZ:withAlpha:andScale:

- (void) drawSystemMarker: (NSDictionary *) marker
atX: (GLfloat) x
andY: (GLfloat) y
andZ: (GLfloat) z
withAlpha: (GLfloat) alpha
andScale: (GLfloat) scale 

Extends class GuiDisplayGen.

Definition at line 2368 of file GuiDisplayGen.m.

2368 :(NSDictionary *)marker atX:(GLfloat)x andY:(GLfloat)y andZ:(GLfloat)z withAlpha:(GLfloat)alpha andScale:(GLfloat)scale
2369{
2370 NSString *colorDesc = [marker oo_stringForKey:@"markerColor" defaultValue:@"redColor"];
2371 OORGBAComponents color = [[OOColor colorWithDescription:colorDesc] rgbaComponents];
2372
2373 OOGL(glColor4f(color.r, color.g, color.b, alpha)); // red
2374 GLfloat mark_size = [marker oo_floatForKey:@"markerScale" defaultValue:1.0];
2375 if (mark_size > 2.0)
2376 {
2377 mark_size = 2.0;
2378 }
2379 else if (mark_size < 0.5)
2380 {
2381 mark_size = 0.5;
2382 }
2383 mark_size *= scale;
2384
2385 NSString *shape = [marker oo_stringForKey:@"markerShape" defaultValue:@"MARKER_X"];
2386
2387 OOGLBEGIN(GL_LINES);
2388 if ([shape isEqualToString:@"MARKER_X"])
2389 {
2390 glVertex3f(x - mark_size, y - mark_size, z);
2391 glVertex3f(x + mark_size, y + mark_size, z);
2392 glVertex3f(x - mark_size, y + mark_size, z);
2393 glVertex3f(x + mark_size, y - mark_size, z);
2394 }
2395 else if ([shape isEqualToString:@"MARKER_PLUS"])
2396 {
2397 mark_size *= 1.4; // match volumes
2398 glVertex3f(x, y - mark_size, z);
2399 glVertex3f(x, y + mark_size, z);
2400 glVertex3f(x - mark_size, y, z);
2401 glVertex3f(x + mark_size, y, z);
2402 }
2403 else if ([shape isEqualToString:@"MARKER_SQUARE"])
2404 {
2405 glVertex3f(x - mark_size, y - mark_size, z);
2406 glVertex3f(x - mark_size, y + mark_size, z);
2407 glVertex3f(x - mark_size, y + mark_size, z);
2408 glVertex3f(x + mark_size, y + mark_size, z);
2409 glVertex3f(x + mark_size, y + mark_size, z);
2410 glVertex3f(x + mark_size, y - mark_size, z);
2411 glVertex3f(x + mark_size, y - mark_size, z);
2412 glVertex3f(x - mark_size, y - mark_size, z);
2413 }
2414 else if ([shape isEqualToString:@"MARKER_DIAMOND"])
2415 {
2416 mark_size *= 1.4; // match volumes
2417 glVertex3f(x, y - mark_size, z);
2418 glVertex3f(x - mark_size, y, z);
2419 glVertex3f(x - mark_size, y, z);
2420 glVertex3f(x, y + mark_size, z);
2421 glVertex3f(x, y + mark_size, z);
2422 glVertex3f(x + mark_size, y, z);
2423 glVertex3f(x + mark_size, y, z);
2424 glVertex3f(x, y - mark_size, z);
2425 }
2426 OOGLEND();
2427}
OORGBAComponents rgbaComponents()
Definition OOColor.m:379

References OOColor::colorWithDescription:, OOGL, OOGLBEGIN, OOGLEND, OOColor::rgbaComponents, x, and y.

Referenced by drawSystemMarkers:atX:andY:andZ:withAlpha:andScale:.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ drawSystemMarkers:atX:andY:andZ:withAlpha:andScale:

- (void) drawSystemMarkers: (NSArray *) marker
atX: (GLfloat) x
andY: (GLfloat) y
andZ: (GLfloat) z
withAlpha: (GLfloat) alpha
andScale: (GLfloat) scale 

Extends class GuiDisplayGen.

Definition at line 2357 of file GuiDisplayGen.m.

2357 :(NSArray *)markers atX:(GLfloat)x andY:(GLfloat)y andZ:(GLfloat)z withAlpha:(GLfloat)alpha andScale:(GLfloat)scale
2358{
2359 NSEnumerator *mEnum;
2360 NSDictionary *marker;
2361 for (mEnum = [markers objectEnumerator]; (marker = [mEnum nextObject]); )
2362 {
2363 [self drawSystemMarker:marker atX:x andY:y andZ:z withAlpha:alpha andScale:scale];
2364 }
2365}

References GuiDisplayGen::drawSystemMarker:atX:andY:andZ:withAlpha:andScale:.

Referenced by drawStarChart:x:y:z:alpha:.

Here is the call graph for this function:
Here is the caller graph for this function:

The documentation for this category was generated from the following file: