1
+ "use strict" ;
2
+
1
3
tdl . require ( 'tdl.buffers' ) ;
2
4
tdl . require ( 'tdl.clock' ) ;
3
5
tdl . require ( 'tdl.fast' ) ;
@@ -14,6 +16,7 @@ tdl.require('tdl.textures');
14
16
tdl . require ( 'tdl.webgl' ) ;
15
17
16
18
// globals
19
+ const g_query = parseQueryString ( window . location . search ) ;
17
20
var gl ; // the gl context.
18
21
var canvas ; // the canvas
19
22
var math ; // the math lib.
@@ -30,11 +33,11 @@ var g_scenes = {}; // each of the models
30
33
var g_sceneGroups = { } ; // the placement of the models
31
34
var g_fog = true ;
32
35
var g_requestId ;
36
+ var g_numFish = [ 1 , 100 , 500 , 1000 , 5000 , 10000 , 15000 , 20000 , 25000 , 30000 ] ;
33
37
34
38
//g_debug = true;
35
39
//g_drawOnce = true;
36
40
37
- var g_numSharks = 0 ;
38
41
var g_tailOffsetMult = 1 ;
39
42
var g_endOfDome = Math . PI / 8 ;
40
43
var g_tankRadius = 74 ;
@@ -347,6 +350,15 @@ var g_skyBoxUrls = [
347
350
// 'static_assets/skybox/InteriorCubeEnv_EM.png'
348
351
]
349
352
353
+ function parseQueryString ( s ) {
354
+ const q = { } ;
355
+ ( s . startsWith ( '?' ) ? s . substring ( 1 ) : s ) . split ( '&' ) . forEach ( pair => {
356
+ const parts = pair . split ( '=' ) . map ( decodeURIComponent ) ;
357
+ q [ parts [ 0 ] ] = parts [ 1 ] ;
358
+ } ) ;
359
+ return q ;
360
+ }
361
+
350
362
function ValidateNoneOfTheArgsAreUndefined ( functionName , args ) {
351
363
for ( var ii = 0 ; ii < args . length ; ++ ii ) {
352
364
if ( args [ ii ] === undefined ) {
@@ -829,7 +841,10 @@ function handleContextRestored() {
829
841
}
830
842
831
843
function initialize ( ) {
832
- var maxViewportDims = gl . getParameter ( gl . MAX_VIEWPORT_DIMS ) ;
844
+ const maxViewportDims = gl . getParameter ( gl . MAX_VIEWPORT_DIMS ) ;
845
+ if ( g_query . numFish ) {
846
+ g_numFish [ 0 ] = parseInt ( g_query . numFish ) ;
847
+ }
833
848
834
849
gl . enable ( gl . DEPTH_TEST ) ;
835
850
gl . blendFunc ( gl . SRC_ALPHA , gl . ONE_MINUS_SRC_ALPHA ) ;
@@ -841,49 +856,47 @@ function initialize() {
841
856
Log ( "--Setup Laser----------------------------------------" ) ;
842
857
var laser = setupLaser ( ) ;
843
858
844
- var num = [ 1 , 100 , 500 , 1000 , 5000 , 10000 , 15000 , 20000 , 25000 , 30000 ] ;
845
859
var changeViewElem = document . getElementById ( "setSettingChangeView" ) ;
846
860
var parentElem = changeViewElem . parentNode ;
847
- for ( var i = 0 ; i < num . length ; ++ i ) {
861
+ g_numFish . forEach ( ( numFish , ndx ) => {
848
862
var div = document . createElement ( "div" ) ;
849
863
div . className = "clickable" ;
850
- div . id = "setSetting" + i ;
851
- div . innerHTML = num [ i ] ;
864
+ div . id = "setSetting" + ndx ;
865
+ div . innerHTML = numFish ;
852
866
parentElem . insertBefore ( div , changeViewElem ) ;
853
- }
867
+ } ) ;
854
868
855
- for ( var ff = 0 ; ff < g_fishTable . length ; ++ ff ) {
856
- g_fishTable [ ff ] . fishData = [ ] ;
857
- g_fishTable [ ff ] . num = [ ] ;
858
- }
869
+ g_fishTable . forEach ( info => {
870
+ info . fishData = [ ] ;
871
+ info . num = [ ] ;
872
+ } ) ;
859
873
860
- var type = [ "Big" , "Medium" , "Small" ] ;
861
- for ( var i = 0 ; i < num . length ; ++ i ) {
862
- var numLeft = num [ i ] ;
863
- for ( var j = 0 ; j < type . length ; ++ j ) {
864
- for ( var ff = 0 ; ff < g_fishTable . length ; ++ ff ) {
865
- var fishInfo = g_fishTable [ ff ] ;
874
+ var types = [ "Big" , "Medium" , "Small" ] ;
875
+ g_numFish . forEach ( ( totalFish ) => {
876
+ var numLeft = totalFish ;
877
+ types . forEach ( ( type ) => {
878
+ g_fishTable . forEach ( ( fishInfo ) => {
866
879
var fishName = fishInfo . name ;
867
- if ( ! fishName . startsWith ( type [ j ] ) ) {
868
- continue ;
880
+ if ( ! fishName . startsWith ( type ) ) {
881
+ return ;
869
882
}
870
883
var numType = numLeft ;
871
- if ( type [ j ] == "Big" ) {
872
- numType = Math . min ( numLeft , num [ i ] < 100 ? 1 : 2 ) ;
873
- } else if ( type [ j ] == "Medium" ) {
874
- if ( num [ i ] < 1000 ) {
875
- numType = Math . min ( numLeft , num [ i ] / 10 | 0 ) ;
876
- } else if ( num [ i ] < 10000 ) {
884
+ if ( type == "Big" ) {
885
+ numType = Math . min ( numLeft , totalFish < 100 ? 1 : 2 ) ;
886
+ } else if ( type == "Medium" ) {
887
+ if ( totalFish < 1000 ) {
888
+ numType = Math . min ( numLeft , totalFish / 10 | 0 ) ;
889
+ } else if ( totalFish < 10000 ) {
877
890
numType = Math . min ( numLeft , 80 ) ;
878
891
} else {
879
892
numType = Math . min ( numLeft , 160 ) ;
880
893
}
881
894
}
882
895
numLeft = numLeft - numType ;
883
896
fishInfo . num . push ( numType ) ;
884
- }
885
- }
886
- }
897
+ } ) ;
898
+ } )
899
+ } ) ;
887
900
888
901
var particleSystem = new tdl . particles . ParticleSystem (
889
902
gl , null , math . pseudoRandom ) ;
@@ -1638,7 +1651,9 @@ function setupCountButtons() {
1638
1651
} } ( elem , ii ) ;
1639
1652
}
1640
1653
1641
- if ( g . net . sync ) {
1654
+ if ( g_query . numFish ) {
1655
+ setSetting ( document . getElementById ( "setSetting0" ) , 0 ) ;
1656
+ } else if ( g . net . sync ) {
1642
1657
setSetting ( document . getElementById ( "setSetting4" ) , 4 ) ;
1643
1658
} else {
1644
1659
setSetting ( document . getElementById ( "setSetting2" ) , 2 ) ;
0 commit comments