Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var main = this;
- /*
- Global settings
- */
- _SECTOR_UPDATE_RATE = 5;
- _SECTOR_RADIUS = 20;
- var ObjectType =
- {
- SLAVE : 0,
- SECTOR : 1,
- SECTOR_MANAGER : 2
- };
- var SectorManager = function()
- {
- var core = {};
- core.type = ObjectType.SECTOR_MANAGER;
- core.counter = 0;
- core.sectors = [];
- core.createSector = function( centerPos )
- {
- core.sectors.push( new Sector( centerPos ) );
- };
- core.frame = function()
- {
- /*
- Update sectors if needed
- or increment counter.
- */
- core.counter++;
- if( core.counter == _SECTOR_UPDATE_RATE )
- {
- core.counter = 0;
- core.updateSectors();
- }
- };
- /*
- Designate coins into their sectors
- */
- core.updateSectors = function()
- {
- /*
- Clean sectors
- */
- for( var sectorIndex in core.sectors )
- {
- var sector = core.sectors[ sectorIndex ];
- sector.coins = [];
- sector.value = 0;
- }
- /*
- Push coins into proper sectors
- */
- for( var coinIndex in main.coins )
- {
- var coin = main.coins[ coinIndex ];
- core.pushCoinIntoSector( coin );
- }
- };
- /*
- Helper function for ^
- */
- core.pushCoinIntoSector = function( coin )
- {
- var closestSector = null;
- for( var i = 0; i < core.sectors.length; i++ )
- {
- var sector = core.sectors[ i ];
- if( closestSector === null )
- closestSector = sector;
- else
- {
- if(
- coin.pos.distance( sector.pos.distance ) <
- coin.pos.distance( closestSector.pos.distance )
- )
- {
- closestSector = sector;
- }
- }
- }
- coin.sector = closestSector;
- //closestSector.value += coin.bountyGold;
- //closestSector.coins.push( coin );
- };
- core.init = function()
- {
- }();
- main.objects.push( core );
- return core;
- };
- var Sector = function( centerPos )
- {
- var core = {};
- core.type = ObjectType.SECTOR;
- core.value = 0;
- core.coins = [];
- core.init = function( centerPos )
- {
- core.pos = centerPos;
- }();
- main.objects.push( core );
- return core;
- };
- var Slave = function( pawn, sector )
- {
- var core = {};
- core.type = ObjectType.SLAVE;
- core.pawn = pawn;
- core.frame = function()
- {
- main.say( "Doing frame: " + main.frameCount );
- var coin = main.coins[ Math.floor( Math.random() * main.coins.length ) ];
- main.command( core.pawn, "move", coin.pos );
- };
- core.init = function()
- {
- }();
- main.objects.push( core );
- return core;
- };
- if( typeof main.init === "undefined" )
- {
- main.objects = [];
- main.init = true;
- main.frameCount = 0;
- main.coins = null;
- main.pawns = null;
- main.sectorManager = new SectorManager();
- main.frame = function()
- {
- main.frameCount++;
- /*
- Update basic shit
- */
- main.coins = main.getItems();
- main.pawns = main.getByType( "peon" );
- /*
- Loop objects
- #1 Call frame function on these functions
- */
- for( var o = 0; o < main.objects.length; o++ )
- {
- var obj = main.objects[ o ];
- if( typeof obj.frame !== "undefined" )
- obj.frame();
- }
- /*
- Loop peon pawns
- #1 Init slaves if need to
- */
- for( var p = 0; p < main.pawns.length; p++ )
- {
- var pawn = main.pawns[ p ];
- if( typeof pawn.init === "undefined" )
- {
- pawn.init = true;
- new Slave( pawn );
- }
- }
- /*
- Increment frame count
- */
- };
- main.build( "peon" );
- }
- else
- {
- main.frame();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement