home *** CD-ROM | disk | FTP | other *** search
- class CMap
- {
- var mArena;
- var mBarrelCount;
- var mStarCount;
- var mStarIndex;
- var mObjectList;
- var mOverExit;
- var mExitObject;
- var mMap;
- static var mCellSize = 110;
- function CMap(tArena)
- {
- this.mArena = tArena;
- this.mBarrelCount = this.mStarCount = this.mStarIndex = 0;
- this.mObjectList = new Array();
- }
- function WheelCollide(tWheel, oldPosition, newPosition)
- {
- var _loc6_ = this.GetObjectList(tWheel,oldPosition,newPosition);
- var _loc8_ = newPosition.subtract(oldPosition);
- _loc8_.normalize(tWheel.mRadius);
- var _loc12_ = oldPosition.clone().subtract(_loc8_);
- var _loc11_ = newPosition.clone().add(_loc8_);
- for(var _loc7_ in _loc6_)
- {
- var _loc3_ = _loc6_[_loc7_];
- if(!_loc3_.mActive)
- {
- break;
- }
- switch(_loc3_.mType.toUpperCase())
- {
- case "LEFTSPIN":
- this.mArena.mWheel.mControlLeft = true;
- break;
- case "RIGHTSPIN":
- this.mArena.mWheel.mControlRight = true;
- break;
- case "BARREL":
- if(this.BoxCollide(_loc3_,tWheel,newPosition) || Key.isDown(65) && _global.mCheat != undefined)
- {
- _loc3_.mActive = false;
- _loc3_.play();
- if(_global.mSFXActive == true)
- {
- var _loc9_ = new Sound(_loc3_);
- _loc9_.attachSound("Barrel.Hit.wav");
- _loc9_.start(0,0);
- }
- this.mBarrelCount = this.mBarrelCount - 1;
- }
- break;
- case "STAR":
- if(this.BoxCollide(_loc3_,tWheel,newPosition) || Key.isDown(65) && _global.mCheat != undefined)
- {
- _loc3_.mActive = false;
- _loc3_.play();
- if(_global.mSFXActive == true)
- {
- _loc9_ = new Sound(_loc3_);
- _loc9_.attachSound("Star.Hit.wav");
- _loc9_.start(0,0);
- }
- this.mStarCount = this.mStarCount - 1;
- this.mArena.mStats.CollectStar(_loc3_.mStarIndex,this.mStarIndex);
- }
- break;
- case "EXIT":
- if(this.mBarrelCount != 0 || this.mOverExit == true)
- {
- break;
- }
- this.mOverExit = !(Key.isDown(65) && _global.mCheat != undefined) ? this.BoxCollide(_loc3_,tWheel,newPosition) : true;
- break;
- }
- }
- if(this.mBarrelCount == 0 && this.mExitObject.mActive == false)
- {
- if(_global.mSFXActive == true)
- {
- _loc9_ = new Sound(this.mExitObject);
- _loc9_.attachSound("Exit.Open.wav");
- _loc9_.setVolume(40);
- _loc9_.start(0,0);
- }
- this.mExitObject.mActive = true;
- this.mExitObject.gotoAndStop(2);
- }
- }
- function BoxCollide(tObject, tWheel, newPosition)
- {
- if(newPosition.x + tWheel.mRadius >= tObject.mPList[0].x && newPosition.x - tWheel.mRadius <= tObject.mPList[2].x && newPosition.y + tWheel.mRadius >= tObject.mPList[0].y && newPosition.y - tWheel.mRadius <= tObject.mPList[2].y)
- {
- return true;
- }
- return false;
- }
- function LineCollide(tObject, p1, p2)
- {
- return CLine.LOI(tObject.mPList[0],tObject.mPList[1],p1,p2) || CLine.LOI(tObject.mPList[1],tObject.mPList[2],p1,p2) || CLine.LOI(tObject.mPList[2],tObject.mPList[3],p1,p2) || CLine.LOI(tObject.mPList[3],tObject.mPList[0],p1,p2);
- }
- function GetObjectList(tWheel, oldPosition, newPosition)
- {
- var _loc4_ = oldPosition.clone();
- var _loc3_ = newPosition.clone();
- if(_loc4_.x > _loc3_.x)
- {
- var _loc8_ = _loc4_.x;
- _loc4_.x = _loc3_.x;
- _loc3_.x = _loc8_;
- }
- if(_loc4_.y > _loc3_.y)
- {
- _loc8_ = _loc4_.y;
- _loc4_.y = _loc3_.y;
- _loc3_.y = _loc8_;
- }
- _loc4_ = _loc4_.subtract(tWheel.pRadius);
- _loc3_ = _loc3_.add(tWheel.pRadius);
- _loc4_.x = Math.floor(_loc4_.x / CMap.mCellSize);
- _loc4_.y = Math.floor(_loc4_.y / CMap.mCellSize);
- _loc3_.x = Math.floor(_loc3_.x / CMap.mCellSize);
- _loc3_.y = Math.floor(_loc3_.y / CMap.mCellSize);
- var _loc7_ = new Array();
- var _loc5_ = _loc4_.y;
- while(_loc5_ <= _loc3_.y)
- {
- var _loc6_ = this.mMap[_loc5_];
- var _loc2_ = _loc4_.x;
- while(_loc2_ <= _loc3_.x)
- {
- this.AddToLL(_loc7_,_loc6_[_loc2_]);
- _loc2_ = _loc2_ + 1;
- }
- _loc5_ = _loc5_ + 1;
- }
- return _loc7_;
- }
- function AddToLL(ll, pll)
- {
- for(var _loc5_ in pll)
- {
- var _loc2_ = true;
- for(var _loc4_ in ll)
- {
- if(pll[_loc5_] == ll[_loc4_])
- {
- _loc2_ = false;
- break;
- }
- }
- if(_loc2_ && pll[_loc5_].mActive)
- {
- ll[ll.length] = pll[_loc5_];
- }
- }
- }
- function AddObject(tObject, tType)
- {
- tObject.mActive = true;
- switch(tType.toUpperCase())
- {
- case "LEFTSPIN":
- case "RIGHTSPIN":
- tObject._visible = false;
- break;
- case "BARREL":
- this.mBarrelCount = this.mBarrelCount + 1;
- break;
- case "EXIT":
- this.mExitObject = tObject;
- this.mExitObject.mActive = false;
- break;
- case "STAR":
- tObject.mStarIndex = this.mStarIndex;
- this.mStarIndex = this.mStarIndex + 1;
- if(_global.mStats.mList_AllStars[_global.mArenaIndex][tObject.mStarIndex] == true)
- {
- tObject._visible = false;
- return undefined;
- }
- this.mStarCount = this.mStarCount + 1;
- break;
- }
- tObject.mType = tType;
- var _loc4_ = tObject.getBounds(tObject);
- var _loc8_ = new flash.geom.Point(_loc4_.xMin,_loc4_.yMin);
- var _loc7_ = new flash.geom.Point(_loc4_.xMax,_loc4_.yMin);
- var _loc6_ = new flash.geom.Point(_loc4_.xMax,_loc4_.yMax);
- var _loc5_ = new flash.geom.Point(_loc4_.xMin,_loc4_.yMax);
- tObject.localToGlobal(_loc8_);
- this.mArena.globalToLocal(_loc8_);
- tObject.localToGlobal(_loc7_);
- this.mArena.globalToLocal(_loc7_);
- tObject.localToGlobal(_loc6_);
- this.mArena.globalToLocal(_loc6_);
- tObject.localToGlobal(_loc5_);
- this.mArena.globalToLocal(_loc5_);
- tObject.mPList = [_loc8_,_loc7_,_loc6_,_loc5_];
- tObject.mPosition = new flash.geom.Point(tObject._x,tObject._y);
- this.MarkMap(tObject);
- tObject.cacheAsBitmap = true;
- tObject.stop();
- this.mObjectList[this.mObjectList.length] = tObject;
- }
- function MarkMap(tObject)
- {
- var _loc5_ = tObject.mPList[0].clone();
- var _loc4_ = tObject.mPList[0].clone();
- for(var _loc7_ in tObject.mPList)
- {
- if(tObject.mPList[_loc7_].x < _loc5_.x)
- {
- _loc5_.x = tObject.mPList[_loc7_].x;
- }
- if(tObject.mPList[_loc7_].x > _loc4_.x)
- {
- _loc4_.x = tObject.mPList[_loc7_].x;
- }
- if(tObject.mPList[_loc7_].y < _loc5_.y)
- {
- _loc5_.y = tObject.mPList[_loc7_].y;
- }
- if(tObject.mPList[_loc7_].y > _loc4_.y)
- {
- _loc4_.y = tObject.mPList[_loc7_].y;
- }
- }
- _loc5_.x = Math.floor(_loc5_.x / CMap.mCellSize);
- _loc5_.y = Math.floor(_loc5_.y / CMap.mCellSize);
- _loc4_.x = Math.floor(_loc4_.x / CMap.mCellSize);
- _loc4_.y = Math.floor(_loc4_.y / CMap.mCellSize);
- var _loc6_ = _loc5_.y;
- while(_loc6_ <= _loc4_.y)
- {
- var _loc3_ = _loc5_.x;
- while(_loc3_ <= _loc4_.x)
- {
- this.MarkMap_Cell(tObject,new flash.geom.Point(_loc3_,_loc6_));
- _loc3_ = _loc3_ + 1;
- }
- _loc6_ = _loc6_ + 1;
- }
- }
- function MarkMap_Cell(tObject, p)
- {
- p = p.clone();
- if(p.x < 0 || p.y < 0)
- {
- return undefined;
- }
- this.mMap = this.mMap != undefined ? this.mMap : (this.mMap = new Array());
- this.mMap[p.y] = this.mMap[p.y] != undefined ? this.mMap[p.y] : (this.mMap[p.y] = new Array());
- this.mMap[p.y][p.x] = this.mMap[p.y][p.x] != undefined ? this.mMap[p.y][p.x] : (this.mMap[p.y][p.x] = new Array());
- var _loc3_ = this.mMap[p.y][p.x];
- var _loc4_ = false;
- for(var _loc8_ in _loc3_)
- {
- if(_loc3_[_loc8_] == tObject)
- {
- _loc4_ = true;
- break;
- }
- }
- if(!_loc4_)
- {
- _loc3_[_loc3_.length] = tObject;
- }
- var _loc7_ = p.add(new flash.geom.Point(1,1));
- this.mArena.mCollisionDraw.lineStyle(0,0,100);
- var _loc6_ = (this.mMap[p.y][p.x].length - 1) * 4;
- this.mArena.mCollisionDraw.moveTo(p.x * CMap.mCellSize + _loc6_,p.y * CMap.mCellSize + _loc6_);
- this.mArena.mCollisionDraw.lineTo(p.x * CMap.mCellSize,_loc7_.y * CMap.mCellSize);
- this.mArena.mCollisionDraw.lineTo(_loc7_.x * CMap.mCellSize,_loc7_.y * CMap.mCellSize);
- this.mArena.mCollisionDraw.lineTo(_loc7_.x * CMap.mCellSize,p.y * CMap.mCellSize);
- this.mArena.mCollisionDraw.lineTo(p.x * CMap.mCellSize + _loc6_,p.y * CMap.mCellSize + _loc6_);
- }
- }
-