Oolite 1.91.0.7745-260117-205bce7
Loading...
Searching...
No Matches
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 110 of file Universe.m.

Referenced by Universe::update:.

◆ DEMO2_VANISHING_DISTANCE

#define DEMO2_VANISHING_DISTANCE   650.0

Definition at line 109 of file Universe.m.

Referenced by Universe::update:.

◆ DOCKED_AMBIENT_LEVEL

#define DOCKED_AMBIENT_LEVEL   0.2f

Definition at line 266 of file Universe.m.

◆ DOCKED_ILLUM_LEVEL

#define DOCKED_ILLUM_LEVEL   0.7f

Definition at line 267 of file Universe.m.

◆ LANE_WIDTH

#define LANE_WIDTH   51200.0

Definition at line 116 of file Universe.m.

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

◆ MAX_NUMBER_OF_ENTITIES

#define MAX_NUMBER_OF_ENTITIES   200

Definition at line 113 of file Universe.m.

◆ PROFILE_SHIP_SELECTION

#define PROFILE_SHIP_SELECTION   0

Definition at line 3903 of file Universe.m.

◆ SKY_AMBIENT_ADJUSTMENT

#define SKY_AMBIENT_ADJUSTMENT   0.0625

Definition at line 276 of file Universe.m.

Referenced by Universe::setLighting.

◆ STANDARD_STATION_ROLL

#define STANDARD_STATION_ROLL   0.4

Definition at line 114 of file Universe.m.

◆ SUN_AMBIENT_INFLUENCE

#define SUN_AMBIENT_INFLUENCE   0.75

Definition at line 274 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 102 of file Universe.m.

103{
104 DEMO_FLY_IN = 101,
107};
@ DEMO_FLY_IN
Definition Universe.m:104
@ DEMO_FLY_OUT
Definition Universe.m:106
@ DEMO_SHOW_THING
Definition Universe.m:105

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 11132 of file Universe.m.

11133{
11134 NSArray *one = (NSArray *)a;
11135 NSArray *two = (NSArray *)b;
11136
11137 /* Sort by explicit sort_order, then tech level, then price */
11138
11139 OOCreditsQuantity comp1 = [[one oo_dictionaryAtIndex:EQUIPMENT_EXTRA_INFO_INDEX] oo_unsignedLongLongForKey:@"sort_order" defaultValue:1000];
11140 OOCreditsQuantity comp2 = [[two oo_dictionaryAtIndex:EQUIPMENT_EXTRA_INFO_INDEX] oo_unsignedLongLongForKey:@"sort_order" defaultValue:1000];
11141 if (comp1 < comp2) return NSOrderedAscending;
11142 if (comp1 > comp2) return NSOrderedDescending;
11143
11144 comp1 = [one oo_unsignedLongLongAtIndex:EQUIPMENT_TECH_LEVEL_INDEX];
11145 comp2 = [two oo_unsignedLongLongAtIndex:EQUIPMENT_TECH_LEVEL_INDEX];
11146 if (comp1 < comp2) return NSOrderedAscending;
11147 if (comp1 > comp2) return NSOrderedDescending;
11148
11149 comp1 = [one oo_unsignedLongLongAtIndex:EQUIPMENT_PRICE_INDEX];
11150 comp2 = [two oo_unsignedLongLongAtIndex:EQUIPMENT_PRICE_INDEX];
11151 if (comp1 < comp2) return NSOrderedAscending;
11152 if (comp1 > comp2) return NSOrderedDescending;
11153
11154 return NSOrderedSame;
11155}
uint64_t OOCreditsQuantity
Definition OOTypes.h:182
@ EQUIPMENT_TECH_LEVEL_INDEX
Definition Universe.h:83
@ EQUIPMENT_PRICE_INDEX
Definition Universe.h:84
@ EQUIPMENT_EXTRA_INFO_INDEX
Definition Universe.h:88

◆ equipmentSortOutfitting()

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

Definition at line 11158 of file Universe.m.

11159{
11160 NSArray *one = (NSArray *)a;
11161 NSArray *two = (NSArray *)b;
11162
11163 /* Sort by explicit sort_order, then tech level, then price */
11164
11165 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]];
11166 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]];
11167 if (comp1 < comp2) return NSOrderedAscending;
11168 if (comp1 > comp2) return NSOrderedDescending;
11169
11170 comp1 = [one oo_unsignedLongLongAtIndex:EQUIPMENT_TECH_LEVEL_INDEX];
11171 comp2 = [two oo_unsignedLongLongAtIndex:EQUIPMENT_TECH_LEVEL_INDEX];
11172 if (comp1 < comp2) return NSOrderedAscending;
11173 if (comp1 > comp2) return NSOrderedDescending;
11174
11175 comp1 = [one oo_unsignedLongLongAtIndex:EQUIPMENT_PRICE_INDEX];
11176 comp2 = [two oo_unsignedLongLongAtIndex:EQUIPMENT_PRICE_INDEX];
11177 if (comp1 < comp2) return NSOrderedAscending;
11178 if (comp1 > comp2) return NSOrderedDescending;
11179
11180 return NSOrderedSame;
11181}

◆ 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 11184 of file Universe.m.

11185{
11186 NSString *result = [UNIVERSE descriptionForKey:key];
11187 if (result == nil) result = key;
11188 return result;
11189}
return nil
#define UNIVERSE
Definition Universe.h:844

References nil.

Referenced by OOLookUpPluralDescriptionPRIV().

Here is the caller graph for this function:

◆ OOLookUpPluralDescriptionPRIV()

NSString * OOLookUpPluralDescriptionPRIV ( NSString * key,
NSInteger count )

Definition at line 11193 of file Universe.m.

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

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 11120 of file Universe.m.

11121{
11122 NSDictionary *one = (NSDictionary *)a;
11123 NSDictionary *two = (NSDictionary *)b;
11124 int pri_one = [one oo_intForKey:@"priority" defaultValue:100];
11125 int pri_two = [two oo_intForKey:@"priority" defaultValue:100];
11126 if (pri_one < pri_two) return NSOrderedAscending;
11127 if (pri_one > pri_two) return NSOrderedDescending;
11128 return NSOrderedSame;
11129}

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 4636 of file Universe.m.

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

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 264 of file Universe.m.

264{ DEMO_LIGHT_POSITION, 1.0 };
#define DEMO_LIGHT_POSITION
Definition Universe.h:173

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 268 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 269 of file Universe.m.

#define DOCKED_ILLUM_LEVEL
Definition Universe.m:267

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 270 of file Universe.m.

270{ 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 132 of file Universe.m.

132 {
133 0, 1, 3, // first triangle
134 1, 2, 3 // second triangle
135};

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 125 of file Universe.m.

125 {
126 // positions // texture coords
127 1.0f, 1.0f, 1.0f, 1.0f, // top right
128 1.0f, -1.0f, 1.0f, 0.0f, // bottom right
129 -1.0f, -1.0f, 0.0f, 0.0f, // bottom left
130 -1.0f, 1.0f, 0.0f, 1.0f // top left
131};

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 4629 of file Universe.m.

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

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

◆ gOOJSPlayerIfStale

◆ gSharedUniverse

Universe* gSharedUniverse = nil

Definition at line 138 of file Universe.m.

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

◆ JSResetFlags

int JSResetFlags = 0
static

Definition at line 257 of file Universe.m.

Referenced by Universe::reinitAndShowDemo:.

◆ kOOLogEntityVerificationError

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

Definition at line 120 of file Universe.m.

◆ kOOLogEntityVerificationRebuild

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

Definition at line 121 of file Universe.m.

Referenced by Universe::MaintainLinkedLists.

◆ kOOLogUniversePopulateError

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

Definition at line 118 of file Universe.m.

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

◆ kOOLogUniversePopulateWitchspace

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

Definition at line 119 of file Universe.m.

Referenced by Universe::setUpWitchspaceBetweenSystem:andSystem:.

◆ object_light_on

BOOL object_light_on = NO
static

Definition at line 261 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 4643 of file Universe.m.

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

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 4650 of file Universe.m.

4651 {{
4652 { 0.0f, 0.0f, 1.0f, 0.0f },
4653 { 0.0f, 1.0f, 0.0f, 0.0f },
4654 {-1.0f, 0.0f, 0.0f, 0.0f },
4655 { 0.0f, 0.0f, 0.0f, 1.0f }
4656 }};

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

◆ sun_off

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

Definition at line 263 of file Universe.m.

263{0.0, 0.0, 0.0, 1.0};

Referenced by Universe::lightForEntity:.