Oolite 1.91.0.7678-250623-7b2f98d
All Classes Files Functions Variables Typedefs Enumerations Enumerator Properties Macros Modules Pages
Universe.m File Reference
import "Universe.h"
import "MyOpenGLView.h"
import "GameController.h"
import "ResourceManager.h"
import "AI.h"
import "GuiDisplayGen.h"
import "HeadUpDisplay.h"
import "OOSound.h"
import "OOColor.h"
import "OOCacheManager.h"
import "OOStringExpander.h"
import "OOStringParsing.h"
import "OOCollectionExtractors.h"
import "OOConstToString.h"
import "OOConstToJSString.h"
import "OOOpenGLExtensionManager.h"
import "OOOpenGLMatrixManager.h"
import "OOCPUInfo.h"
import "OOMaterial.h"
import "OOTexture.h"
import "OORoleSet.h"
import "OOShipGroup.h"
import "OODebugSupport.h"
import "Octree.h"
import "CollisionRegion.h"
import "OOGraphicsResetManager.h"
import "OOEntityFilterPredicate.h"
import "OOCharacter.h"
import "OOShipRegistry.h"
import "OOProbabilitySet.h"
import "OOEquipmentType.h"
import "OOShipLibraryDescriptions.h"
import "PlayerEntity.h"
import "PlayerEntityContracts.h"
import "PlayerEntityControls.h"
import "PlayerEntityScriptMethods.h"
import "StationEntity.h"
import "DockEntity.h"
import "SkyEntity.h"
import "DustEntity.h"
import "OOPlanetEntity.h"
import "OOVisualEffectEntity.h"
import "OOWaypointEntity.h"
import "OOSunEntity.h"
import "WormholeEntity.h"
import "OOBreakPatternEntity.h"
import "ShipEntityAI.h"
import "ProxyPlayerEntity.h"
import "OORingEffectEntity.h"
import "OOLightParticleEntity.h"
import "OOFlashEffectEntity.h"
import "OOExplosionCloudEntity.h"
import "OOSystemDescriptionManager.h"
import "OOMusicController.h"
import "OOAsyncWorkManager.h"
import "OODebugFlags.h"
import "OODebugStandards.h"
import "OOLoggingExtended.h"
import "OOJSEngineTimeManagement.h"
import "OOJoystickManager.h"
import "OOScriptTimer.h"
import "OOJSScript.h"
import "OOJSFrameCallbacks.h"
import "OOJSPopulatorDefinition.h"
import "OOOpenGL.h"
import "OOShaderProgram.h"
import "OOConvertSystemDescriptions.h"
Include dependency graph for Universe.m:

Go to the source code of this file.

Classes

class  RouteElement
category  Universe(OOPrivate)

Macros

#define DEMO2_VANISHING_DISTANCE   650.0
#define DEMO2_FLY_IN_STAGE_TIME   0.4
#define MAX_NUMBER_OF_ENTITIES   200
#define STANDARD_STATION_ROLL   0.4
#define LANE_WIDTH   51200.0
#define DOCKED_AMBIENT_LEVEL   0.2f
#define DOCKED_ILLUM_LEVEL   0.7f
#define SUN_AMBIENT_INFLUENCE   0.75
#define SKY_AMBIENT_ADJUSTMENT   0.0625
#define PROFILE_SHIP_SELECTION   0

Enumerations

enum  { DEMO_FLY_IN = 101 , DEMO_SHOW_THING , DEMO_FLY_OUT }

Functions

static BOOL MaintainLinkedLists (Universe *uni)
OOINLINE BOOL EntityInRange (HPVector p1, Entity *e2, float range)
static OOComparisonResult compareName (id dict1, id dict2, void *context)
static OOComparisonResult comparePrice (id dict1, id dict2, void *context)
NSComparisonResult populatorPrioritySort (id a, id b, void *context)
NSComparisonResult equipmentSort (id a, id b, void *context)
NSComparisonResult equipmentSortOutfitting (id a, id b, void *context)
NSString * OOLookUpDescriptionPRIV (NSString *key)
NSString * OOLookUpPluralDescriptionPRIV (NSString *key, NSInteger count)

Variables

static NSString *const kOOLogUniversePopulateError = @"universe.populate.error"
static NSString *const kOOLogUniversePopulateWitchspace = @"universe.populate.witchspace"
static NSString *const kOOLogEntityVerificationError = @"entity.linkedList.verify.error"
static NSString *const kOOLogEntityVerificationRebuild = @"entity.linkedList.verify.rebuild"
const GLfloat framebufferQuadVertices []
const GLuint framebufferQuadIndices []
UniversegSharedUniverse = nil
EntitygOOJSPlayerIfStale = nil
static int JSResetFlags = 0
static BOOL object_light_on = NO
static BOOL demo_light_on = NO
static GLfloat sun_off [4] = {0.0, 0.0, 0.0, 1.0}
static GLfloat demo_light_position [4] = { DEMO_LIGHT_POSITION, 1.0 }
static GLfloat docked_light_ambient [4] = { DOCKED_AMBIENT_LEVEL, DOCKED_AMBIENT_LEVEL, DOCKED_AMBIENT_LEVEL, 1.0f }
static GLfloat docked_light_diffuse [4] = { DOCKED_ILLUM_LEVEL, DOCKED_ILLUM_LEVEL, DOCKED_ILLUM_LEVEL, 1.0f }
static GLfloat docked_light_specular [4] = { DOCKED_ILLUM_LEVEL, DOCKED_ILLUM_LEVEL, DOCKED_ILLUM_LEVEL * 0.75f, (GLfloat) 1.0f }
static const OOMatrix fwd_matrix
static const OOMatrix aft_matrix
static const OOMatrix port_matrix
static const OOMatrix starboard_matrix

Macro Definition Documentation

◆ DEMO2_FLY_IN_STAGE_TIME

#define DEMO2_FLY_IN_STAGE_TIME   0.4

Definition at line 114 of file Universe.m.

Referenced by Universe::update:.

◆ DEMO2_VANISHING_DISTANCE

#define DEMO2_VANISHING_DISTANCE   650.0

Definition at line 113 of file Universe.m.

Referenced by Universe::update:.

◆ DOCKED_AMBIENT_LEVEL

#define DOCKED_AMBIENT_LEVEL   0.2f

Definition at line 270 of file Universe.m.

◆ DOCKED_ILLUM_LEVEL

#define DOCKED_ILLUM_LEVEL   0.7f

Definition at line 271 of file Universe.m.

◆ LANE_WIDTH

#define LANE_WIDTH   51200.0

Definition at line 120 of file Universe.m.

Referenced by Universe::locationByCode:withSun:andPlanet:.

◆ MAX_NUMBER_OF_ENTITIES

#define MAX_NUMBER_OF_ENTITIES   200

Definition at line 117 of file Universe.m.

◆ PROFILE_SHIP_SELECTION

#define PROFILE_SHIP_SELECTION   0

Definition at line 3898 of file Universe.m.

◆ SKY_AMBIENT_ADJUSTMENT

#define SKY_AMBIENT_ADJUSTMENT   0.0625

Definition at line 280 of file Universe.m.

Referenced by Universe::setLighting.

◆ STANDARD_STATION_ROLL

#define STANDARD_STATION_ROLL   0.4

Definition at line 118 of file Universe.m.

◆ SUN_AMBIENT_INFLUENCE

#define SUN_AMBIENT_INFLUENCE   0.75

Definition at line 278 of file Universe.m.

Referenced by Universe::setLighting.

Enumeration Type Documentation

◆ anonymous enum

anonymous enum
Enumerator
DEMO_FLY_IN 
DEMO_SHOW_THING 
DEMO_FLY_OUT 

Definition at line 106 of file Universe.m.

107{
108 DEMO_FLY_IN = 101,
111};
@ DEMO_FLY_IN
Definition Universe.m:108
@ DEMO_FLY_OUT
Definition Universe.m:110
@ DEMO_SHOW_THING
Definition Universe.m:109

Function Documentation

◆ compareName()

OOComparisonResult compareName ( id dict1,
id dict2,
void * context )
static

Referenced by Universe::shipsForSaleForSystem:withTL:atTime:.

Here is the caller graph for this function:

◆ comparePrice()

OOComparisonResult comparePrice ( id dict1,
id dict2,
void * context )
static

Referenced by Universe::compareName.

Here is the caller graph for this function:

◆ EntityInRange()

OOINLINE BOOL EntityInRange ( HPVector p1,
Entity * e2,
float range )

References OOINLINE.

Referenced by Universe::findEntitiesMatchingPredicate:parameter:inRange:ofEntity:.

Here is the caller graph for this function:

◆ equipmentSort()

NSComparisonResult equipmentSort ( id a,
id b,
void * context )

Definition at line 11124 of file Universe.m.

11125{
11126 NSArray *one = (NSArray *)a;
11127 NSArray *two = (NSArray *)b;
11128
11129 /* Sort by explicit sort_order, then tech level, then price */
11130
11131 OOCreditsQuantity comp1 = [[one oo_dictionaryAtIndex:EQUIPMENT_EXTRA_INFO_INDEX] oo_unsignedLongLongForKey:@"sort_order" defaultValue:1000];
11132 OOCreditsQuantity comp2 = [[two oo_dictionaryAtIndex:EQUIPMENT_EXTRA_INFO_INDEX] oo_unsignedLongLongForKey:@"sort_order" defaultValue:1000];
11133 if (comp1 < comp2) return NSOrderedAscending;
11134 if (comp1 > comp2) return NSOrderedDescending;
11135
11136 comp1 = [one oo_unsignedLongLongAtIndex:EQUIPMENT_TECH_LEVEL_INDEX];
11137 comp2 = [two oo_unsignedLongLongAtIndex:EQUIPMENT_TECH_LEVEL_INDEX];
11138 if (comp1 < comp2) return NSOrderedAscending;
11139 if (comp1 > comp2) return NSOrderedDescending;
11140
11141 comp1 = [one oo_unsignedLongLongAtIndex:EQUIPMENT_PRICE_INDEX];
11142 comp2 = [two oo_unsignedLongLongAtIndex:EQUIPMENT_PRICE_INDEX];
11143 if (comp1 < comp2) return NSOrderedAscending;
11144 if (comp1 > comp2) return NSOrderedDescending;
11145
11146 return NSOrderedSame;
11147}
uint64_t OOCreditsQuantity
Definition OOTypes.h:182
@ EQUIPMENT_TECH_LEVEL_INDEX
Definition Universe.h:79
@ EQUIPMENT_PRICE_INDEX
Definition Universe.h:80
@ EQUIPMENT_EXTRA_INFO_INDEX
Definition Universe.h:84

◆ equipmentSortOutfitting()

NSComparisonResult equipmentSortOutfitting ( id a,
id b,
void * context )

Definition at line 11150 of file Universe.m.

11151{
11152 NSArray *one = (NSArray *)a;
11153 NSArray *two = (NSArray *)b;
11154
11155 /* Sort by explicit sort_order, then tech level, then price */
11156
11157 OOCreditsQuantity comp1 = [[one oo_dictionaryAtIndex:EQUIPMENT_EXTRA_INFO_INDEX] oo_unsignedLongLongForKey:@"purchase_sort_order" defaultValue:[[one oo_dictionaryAtIndex:EQUIPMENT_EXTRA_INFO_INDEX] oo_unsignedLongLongForKey:@"sort_order" defaultValue:1000]];
11158 OOCreditsQuantity comp2 = [[two oo_dictionaryAtIndex:EQUIPMENT_EXTRA_INFO_INDEX] oo_unsignedLongLongForKey:@"purchase_sort_order" defaultValue:[[two oo_dictionaryAtIndex:EQUIPMENT_EXTRA_INFO_INDEX] oo_unsignedLongLongForKey:@"sort_order" defaultValue:1000]];
11159 if (comp1 < comp2) return NSOrderedAscending;
11160 if (comp1 > comp2) return NSOrderedDescending;
11161
11162 comp1 = [one oo_unsignedLongLongAtIndex:EQUIPMENT_TECH_LEVEL_INDEX];
11163 comp2 = [two oo_unsignedLongLongAtIndex:EQUIPMENT_TECH_LEVEL_INDEX];
11164 if (comp1 < comp2) return NSOrderedAscending;
11165 if (comp1 > comp2) return NSOrderedDescending;
11166
11167 comp1 = [one oo_unsignedLongLongAtIndex:EQUIPMENT_PRICE_INDEX];
11168 comp2 = [two oo_unsignedLongLongAtIndex:EQUIPMENT_PRICE_INDEX];
11169 if (comp1 < comp2) return NSOrderedAscending;
11170 if (comp1 > comp2) return NSOrderedDescending;
11171
11172 return NSOrderedSame;
11173}

◆ MaintainLinkedLists()

BOOL MaintainLinkedLists ( Universe * uni)
static

Referenced by Universe::update:.

Here is the caller graph for this function:

◆ OOLookUpDescriptionPRIV()

NSString * OOLookUpDescriptionPRIV ( NSString * key)

Definition at line 11176 of file Universe.m.

11177{
11178 NSString *result = [UNIVERSE descriptionForKey:key];
11179 if (result == nil) result = key;
11180 return result;
11181}
return nil
#define UNIVERSE
Definition Universe.h:840

References nil.

Referenced by OOLookUpPluralDescriptionPRIV().

Here is the caller graph for this function:

◆ OOLookUpPluralDescriptionPRIV()

NSString * OOLookUpPluralDescriptionPRIV ( NSString * key,
NSInteger count )

Definition at line 11185 of file Universe.m.

11186{
11187 NSArray *conditions = [[UNIVERSE descriptions] oo_arrayForKey:@"plural-rules"];
11188
11189 // are we using an older descriptions.plist (1.72.x) ?
11190 NSString *tmp = [UNIVERSE descriptionForKey:key];
11191 if (tmp != nil)
11192 {
11193 static NSMutableSet *warned = nil;
11194
11195 if (![warned containsObject:tmp])
11196 {
11197 OOLogWARN(@"localization.plurals", @"'%@' found in descriptions.plist, should be '%@%%0'. Localization data needs updating.",key,key);
11198 if (warned == nil) warned = [[NSMutableSet alloc] init];
11199 [warned addObject:tmp];
11200 }
11201 }
11202
11203 if (conditions == nil)
11204 {
11205 if (tmp == nil) // this should mean that descriptions.plist is from 1.73 or above.
11206 return OOLookUpDescriptionPRIV([NSString stringWithFormat:@"%@%%%d", key, count != 1]);
11207 // still using an older descriptions.plist
11208 return tmp;
11209 }
11210 int unsigned i;
11211 long int index;
11212
11213 for (index = i = 0; i < [conditions count]; ++index, ++i)
11214 {
11215 const char *cond = [[conditions oo_stringAtIndex:i] UTF8String];
11216 if (!cond)
11217 break;
11218
11219 long int input = count;
11220 BOOL flag = NO; // we XOR test results with this
11221
11222 while (isspace (*cond))
11223 ++cond;
11224
11225 for (;;)
11226 {
11227 while (isspace (*cond))
11228 ++cond;
11229
11230 char command = *cond++;
11231
11232 switch (command)
11233 {
11234 case 0:
11235 goto passed; // end of string
11236
11237 case '~':
11238 flag = !flag;
11239 continue;
11240 }
11241
11242 long int param = strtol(cond, (char **)&cond, 10);
11243
11244 switch (command)
11245 {
11246 case '#':
11247 index = param;
11248 continue;
11249
11250 case '%':
11251 if (param < 2)
11252 break; // ouch - fail this!
11253 input %= param;
11254 continue;
11255
11256 case '=':
11257 if (flag ^ (input == param))
11258 continue;
11259 break;
11260 case '!':
11261 if (flag ^ (input != param))
11262 continue;
11263 break;
11264
11265 case '<':
11266 if (flag ^ (input < param))
11267 continue;
11268 break;
11269 case '>':
11270 if (flag ^ (input > param))
11271 continue;
11272 break;
11273 }
11274 // if we arrive here, we have an unknown test or a test has failed
11275 break;
11276 }
11277 }
11278
11279passed:
11280 return OOLookUpDescriptionPRIV([NSString stringWithFormat:@"%@%%%ld", key, index]);
11281}
#define OOLogWARN(class, format,...)
Definition OOLogging.h:113
unsigned count
NSString * OOLookUpDescriptionPRIV(NSString *key)
Definition Universe.m:11176

References count, nil, OOLogWARN, and OOLookUpDescriptionPRIV().

Here is the call graph for this function:

◆ populatorPrioritySort()

NSComparisonResult populatorPrioritySort ( id a,
id b,
void * context )

Definition at line 11112 of file Universe.m.

11113{
11114 NSDictionary *one = (NSDictionary *)a;
11115 NSDictionary *two = (NSDictionary *)b;
11116 int pri_one = [one oo_intForKey:@"priority" defaultValue:100];
11117 int pri_two = [two oo_intForKey:@"priority" defaultValue:100];
11118 if (pri_one < pri_two) return NSOrderedAscending;
11119 if (pri_one > pri_two) return NSOrderedDescending;
11120 return NSOrderedSame;
11121}

Variable Documentation

◆ aft_matrix

const OOMatrix aft_matrix
static
Initial value:
=
{{
{-1.0f, 0.0f, 0.0f, 0.0f },
{ 0.0f, 1.0f, 0.0f, 0.0f },
{ 0.0f, 0.0f, -1.0f, 0.0f },
{ 0.0f, 0.0f, 0.0f, 1.0f }
}}

Definition at line 4628 of file Universe.m.

4629 {{
4630 {-1.0f, 0.0f, 0.0f, 0.0f },
4631 { 0.0f, 1.0f, 0.0f, 0.0f },
4632 { 0.0f, 0.0f, -1.0f, 0.0f },
4633 { 0.0f, 0.0f, 0.0f, 1.0f }
4634 }};

Referenced by Universe::getActiveViewMatrix:forwardVector:upVector:.

◆ demo_light_on

BOOL demo_light_on = NO
static

◆ demo_light_position

GLfloat demo_light_position[4] = { DEMO_LIGHT_POSITION, 1.0 }
static

Definition at line 268 of file Universe.m.

268{ DEMO_LIGHT_POSITION, 1.0 };
#define DEMO_LIGHT_POSITION
Definition Universe.h:169

Referenced by Universe::setLighting.

◆ docked_light_ambient

GLfloat docked_light_ambient[4] = { DOCKED_AMBIENT_LEVEL, DOCKED_AMBIENT_LEVEL, DOCKED_AMBIENT_LEVEL, 1.0f }
static

Definition at line 272 of file Universe.m.

Referenced by Universe::drawUniverse, and Universe::setLighting.

◆ docked_light_diffuse

GLfloat docked_light_diffuse[4] = { DOCKED_ILLUM_LEVEL, DOCKED_ILLUM_LEVEL, DOCKED_ILLUM_LEVEL, 1.0f }
static

Definition at line 273 of file Universe.m.

#define DOCKED_ILLUM_LEVEL
Definition Universe.m:271

Referenced by Universe::setLighting.

◆ docked_light_specular

GLfloat docked_light_specular[4] = { DOCKED_ILLUM_LEVEL, DOCKED_ILLUM_LEVEL, DOCKED_ILLUM_LEVEL * 0.75f, (GLfloat) 1.0f }
static

Definition at line 274 of file Universe.m.

274{ DOCKED_ILLUM_LEVEL, DOCKED_ILLUM_LEVEL, DOCKED_ILLUM_LEVEL * 0.75f, (GLfloat) 1.0f }; // yellow-white

Referenced by Universe::setLighting.

◆ framebufferQuadIndices

const GLuint framebufferQuadIndices[]
Initial value:
= {
0, 1, 3,
1, 2, 3
}

Definition at line 136 of file Universe.m.

136 {
137 0, 1, 3, // first triangle
138 1, 2, 3 // second triangle
139};

Referenced by Universe(OOPrivate)::initTargetFramebufferWithViewSize:.

◆ framebufferQuadVertices

const GLfloat framebufferQuadVertices[]
Initial value:
= {
1.0f, 1.0f, 1.0f, 1.0f,
1.0f, -1.0f, 1.0f, 0.0f,
-1.0f, -1.0f, 0.0f, 0.0f,
-1.0f, 1.0f, 0.0f, 1.0f
}

Definition at line 129 of file Universe.m.

129 {
130 // positions // texture coords
131 1.0f, 1.0f, 1.0f, 1.0f, // top right
132 1.0f, -1.0f, 1.0f, 0.0f, // bottom right
133 -1.0f, -1.0f, 0.0f, 0.0f, // bottom left
134 -1.0f, 1.0f, 0.0f, 1.0f // top left
135};

Referenced by Universe(OOPrivate)::initTargetFramebufferWithViewSize:.

◆ fwd_matrix

const OOMatrix fwd_matrix
static
Initial value:
=
{{
{ 1.0f, 0.0f, 0.0f, 0.0f },
{ 0.0f, 1.0f, 0.0f, 0.0f },
{ 0.0f, 0.0f, 1.0f, 0.0f },
{ 0.0f, 0.0f, 0.0f, 1.0f }
}}

Definition at line 4621 of file Universe.m.

4622 {{
4623 { 1.0f, 0.0f, 0.0f, 0.0f },
4624 { 0.0f, 1.0f, 0.0f, 0.0f },
4625 { 0.0f, 0.0f, 1.0f, 0.0f },
4626 { 0.0f, 0.0f, 0.0f, 1.0f }
4627 }};

Referenced by Universe::getActiveViewMatrix:forwardVector:upVector:.

◆ gOOJSPlayerIfStale

◆ gSharedUniverse

Universe* gSharedUniverse = nil

Definition at line 142 of file Universe.m.

Referenced by Universe::dealloc, Universe::initWithGameView:, and OOGetUniverse().

◆ JSResetFlags

int JSResetFlags = 0
static

Definition at line 261 of file Universe.m.

Referenced by Universe::reinitAndShowDemo:.

◆ kOOLogEntityVerificationError

NSString* const kOOLogEntityVerificationError = @"entity.linkedList.verify.error"
static

Definition at line 124 of file Universe.m.

◆ kOOLogEntityVerificationRebuild

NSString* const kOOLogEntityVerificationRebuild = @"entity.linkedList.verify.rebuild"
static

Definition at line 125 of file Universe.m.

Referenced by Universe::MaintainLinkedLists.

◆ kOOLogUniversePopulateError

NSString* const kOOLogUniversePopulateError = @"universe.populate.error"
static

Definition at line 122 of file Universe.m.

Referenced by Universe::locationByCode:withSun:andPlanet:.

◆ kOOLogUniversePopulateWitchspace

NSString* const kOOLogUniversePopulateWitchspace = @"universe.populate.witchspace"
static

Definition at line 123 of file Universe.m.

Referenced by Universe::setUpWitchspaceBetweenSystem:andSystem:.

◆ object_light_on

BOOL object_light_on = NO
static

Definition at line 265 of file Universe.m.

Referenced by Universe::lightForEntity:.

◆ port_matrix

const OOMatrix port_matrix
static
Initial value:
=
{{
{ 0.0f, 0.0f, -1.0f, 0.0f },
{ 0.0f, 1.0f, 0.0f, 0.0f },
{ 1.0f, 0.0f, 0.0f, 0.0f },
{ 0.0f, 0.0f, 0.0f, 1.0f }
}}

Definition at line 4635 of file Universe.m.

4636 {{
4637 { 0.0f, 0.0f, -1.0f, 0.0f },
4638 { 0.0f, 1.0f, 0.0f, 0.0f },
4639 { 1.0f, 0.0f, 0.0f, 0.0f },
4640 { 0.0f, 0.0f, 0.0f, 1.0f }
4641 }};

Referenced by Universe::getActiveViewMatrix:forwardVector:upVector:.

◆ starboard_matrix

const OOMatrix starboard_matrix
static
Initial value:
=
{{
{ 0.0f, 0.0f, 1.0f, 0.0f },
{ 0.0f, 1.0f, 0.0f, 0.0f },
{-1.0f, 0.0f, 0.0f, 0.0f },
{ 0.0f, 0.0f, 0.0f, 1.0f }
}}

Definition at line 4642 of file Universe.m.

4643 {{
4644 { 0.0f, 0.0f, 1.0f, 0.0f },
4645 { 0.0f, 1.0f, 0.0f, 0.0f },
4646 {-1.0f, 0.0f, 0.0f, 0.0f },
4647 { 0.0f, 0.0f, 0.0f, 1.0f }
4648 }};

Referenced by Universe::getActiveViewMatrix:forwardVector:upVector:.

◆ sun_off

GLfloat sun_off[4] = {0.0, 0.0, 0.0, 1.0}
static

Definition at line 267 of file Universe.m.

267{0.0, 0.0, 0.0, 1.0};

Referenced by Universe::lightForEntity:.