Advertisement
Guest User

Untitled

a guest
Jul 22nd, 2014
155
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. var main = this;
  2.  
  3. /*
  4.     Global settings
  5. */
  6. _SECTOR_UPDATE_RATE = 5;
  7. _SECTOR_RADIUS = 20;
  8.  
  9. var ObjectType =
  10. {
  11.     SLAVE : 0,
  12.     SECTOR : 1,
  13.     SECTOR_MANAGER : 2
  14. };
  15.  
  16. var SectorManager = function()
  17. {
  18.     var core = {};
  19.     core.type = ObjectType.SECTOR_MANAGER;
  20.     core.counter = 0;
  21.    
  22.     core.sectors = [];
  23.    
  24.     core.createSector = function( centerPos )
  25.     {
  26.         core.sectors.push( new Sector( centerPos ) );
  27.     };
  28.    
  29.     core.frame = function()
  30.     {
  31.         /*
  32.             Update sectors if needed
  33.             or increment counter.
  34.         */
  35.        
  36.         core.counter++;
  37.        
  38.         if( core.counter == _SECTOR_UPDATE_RATE )
  39.         {
  40.             core.counter = 0;
  41.             core.updateSectors();
  42.         }
  43.     };
  44.    
  45.     /*
  46.         Designate coins into their sectors
  47.     */
  48.     core.updateSectors = function()
  49.     {  
  50.         /*
  51.             Clean sectors
  52.         */
  53.         for( var sectorIndex in core.sectors )
  54.         {
  55.             var sector = core.sectors[ sectorIndex ];
  56.             sector.coins = [];
  57.             sector.value = 0;
  58.         }
  59.        
  60.         /*
  61.             Push coins into proper sectors
  62.         */
  63.         for( var coinIndex in main.coins )
  64.         {
  65.             var coin = main.coins[ coinIndex ];
  66.            
  67.             core.pushCoinIntoSector( coin );
  68.         }
  69.     };
  70.    
  71.     /*
  72.         Helper function for ^
  73.     */
  74.     core.pushCoinIntoSector = function( coin )
  75.     {
  76.         var closestSector = null;
  77.         for( var i = 0; i < core.sectors.length; i++ )
  78.         {
  79.             var sector = core.sectors[ i ];
  80.                
  81.             if( closestSector === null )
  82.                 closestSector = sector;
  83.             else
  84.             {
  85.                 if(
  86.                     coin.pos.distance( sector.pos.distance ) <
  87.                     coin.pos.distance( closestSector.pos.distance )
  88.                 )
  89.                 {
  90.                     closestSector = sector;
  91.                 }
  92.             }
  93.         }
  94.        
  95.         coin.sector = closestSector;    
  96.         //closestSector.value += coin.bountyGold;
  97.         //closestSector.coins.push( coin );
  98.     };
  99.    
  100.     core.init = function()
  101.     {
  102.     }();
  103.    
  104.     main.objects.push( core );
  105.     return core;    
  106. };
  107.  
  108. var Sector = function( centerPos )
  109. {
  110.     var core = {};
  111.     core.type = ObjectType.SECTOR;
  112.     core.value = 0;
  113.     core.coins = [];
  114.    
  115.     core.init = function( centerPos )
  116.     {
  117.         core.pos = centerPos;
  118.     }();
  119.    
  120.     main.objects.push( core );
  121.     return core;
  122. };
  123.  
  124. var Slave = function( pawn, sector )
  125. {
  126.     var core = {};
  127.     core.type = ObjectType.SLAVE;
  128.     core.pawn = pawn;
  129.    
  130.     core.frame = function()
  131.     {
  132.         main.say( "Doing frame: " + main.frameCount );
  133.         var coin = main.coins[ Math.floor( Math.random() * main.coins.length ) ];
  134.        
  135.         main.command( core.pawn, "move", coin.pos );
  136.     };
  137.    
  138.     core.init = function()
  139.     {
  140.     }();
  141.    
  142.     main.objects.push( core );
  143.     return core;
  144. };
  145.  
  146. if( typeof main.init === "undefined" )
  147. {
  148.     main.objects = [];
  149.     main.init = true;
  150.     main.frameCount = 0;
  151.    
  152.     main.coins = null;
  153.     main.pawns = null;
  154.    
  155.     main.sectorManager = new SectorManager();
  156.    
  157.     main.frame = function()
  158.     {
  159.         main.frameCount++;
  160.        
  161.  
  162.     /*
  163.         Update basic shit
  164.     */
  165.     main.coins = main.getItems();
  166.     main.pawns = main.getByType( "peon" );
  167.    
  168.     /*
  169.         Loop objects
  170.             #1 Call frame function on these functions
  171.     */
  172.     for( var o = 0; o < main.objects.length; o++ )
  173.     {
  174.         var obj = main.objects[ o ];
  175.        
  176.         if( typeof obj.frame !== "undefined" )
  177.             obj.frame();
  178.     }
  179.    
  180.     /*
  181.         Loop peon pawns
  182.             #1 Init slaves if need to
  183.     */
  184.     for( var p = 0; p < main.pawns.length; p++ )
  185.     {
  186.         var pawn = main.pawns[ p ];
  187.        
  188.         if( typeof pawn.init === "undefined" )
  189.         {
  190.             pawn.init = true;
  191.             new Slave( pawn );
  192.         }
  193.     }
  194.    
  195.     /*
  196.         Increment frame count
  197.     */
  198.     };
  199.    
  200.     main.build( "peon" );
  201. }
  202. else
  203. {
  204.     main.frame();
  205. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement