home *** CD-ROM | disk | FTP | other *** search
- package groups
- {
- import game.Model;
-
- public class Group
- {
-
-
- private var Y2:Object;
-
- public var allStaticItems:Array;
-
- public var xspeedArr:Array;
-
- public var yspeedArr:Array;
-
- public var _type:String;
-
- public var frozen:Boolean;
-
- public var hitted:Array;
-
- public var checked:Boolean = false;
-
- protected var itemRotation:Number = 0;
-
- protected var yHitObj:Object;
-
- public var items:Array;
-
- private var X1:Object;
-
- protected var yHit:Object;
-
- private var X3:Object;
-
- private var X4:Object;
-
- private var X2:Object;
-
- public var allActiveItems:Array;
-
- private var Y3:Object;
-
- private var Y4:Object;
-
- public var counter:Number = 0;
-
- private var Y1:Object;
-
- public function Group(param1:String, param2:Boolean)
- {
- itemRotation = 0;
- X1 = {
- "a":Model.gravity.x,
- "s":0,
- "t":1,
- "m":Model.MAX_MOVE_SPEED,
- "ps":0
- };
- X2 = {
- "a":Model.gravity.y,
- "s":0,
- "t":1,
- "m":Model.MAX_DROP_SPEED,
- "ps":0
- };
- X3 = {
- "a":-Model.gravity.x,
- "s":0,
- "t":-1,
- "m":Model.MAX_MOVE_SPEED,
- "ps":0
- };
- X4 = {
- "a":-Model.gravity.y,
- "s":0,
- "t":-1,
- "m":Model.MAX_DROP_SPEED,
- "ps":0
- };
- Y1 = {
- "a":Model.gravity.y,
- "s":0,
- "t":1,
- "m":Model.MAX_DROP_SPEED,
- "ps":0
- };
- Y2 = {
- "a":-Model.gravity.x,
- "s":0,
- "t":-1,
- "m":Model.MAX_MOVE_SPEED,
- "ps":0
- };
- Y3 = {
- "a":-Model.gravity.y,
- "s":0,
- "t":-1,
- "m":Model.MAX_DROP_SPEED,
- "ps":0
- };
- Y4 = {
- "a":Model.gravity.x,
- "s":0,
- "t":1,
- "m":Model.MAX_MOVE_SPEED,
- "ps":0
- };
- checked = false;
- counter = 0;
- super();
- _type = param1;
- xspeedArr = [X1,X2,X3,X4];
- yspeedArr = [Y1,Y2,Y3,Y4];
- frozen = param2;
- resetASpeed(0);
- items = new Array();
- }
-
- public function set rotation(param1:Number) : void
- {
- }
-
- public function resetASpeed(param1:Number) : void
- {
- if(!frozen)
- {
- if(param1 > 0)
- {
- ++counter;
- }
- else if(param1 < 0)
- {
- --counter;
- }
- counter = (counter + 4) % 4;
- xspeedArr[counter].s = 0;
- yspeedArr[counter].s = 0;
- }
- }
-
- private function getMin(param1:Array) : Object
- {
- var _loc2_:Object = null;
- var _loc3_:* = undefined;
- if(param1.length < 1)
- {
- return {
- "hit":"none",
- "x":xspeedArr[counter].s,
- "y":yspeedArr[counter].s
- };
- }
- _loc2_ = {
- "x":param1[0].x,
- "y":param1[0].y
- };
- for each(_loc3_ in param1)
- {
- if(_loc2_.x * _loc2_.x >= _loc3_.x * _loc3_.x)
- {
- if(counter % 2 != 0)
- {
- yHitObj = _loc3_.obj;
- yHit = _loc3_.xHit;
- }
- _loc2_.x = _loc3_.x;
- }
- if(_loc2_.y * _loc2_.y >= _loc3_.y * _loc3_.y)
- {
- if(counter % 2 == 0)
- {
- yHitObj = _loc3_.obj;
- yHit = _loc3_.yHit;
- }
- _loc2_.y = _loc3_.y;
- }
- }
- return _loc2_;
- }
-
- private function addSpeed(param1:*) : void
- {
- if(Math.abs(param1.s + param1.a) <= param1.m)
- {
- param1.pps = param1.ps;
- param1.ps = param1.s;
- param1.s += param1.a;
- }
- else
- {
- param1.pps = param1.ps;
- param1.ps = param1.s;
- param1.s = param1.s / Math.abs(param1.s) * param1.m;
- }
- }
-
- public function removeAllItems() : void
- {
- var _loc1_:int = 0;
- _loc1_ = 0;
- while(_loc1_ < items.length)
- {
- items[_loc1_].remove();
- _loc1_++;
- }
- }
-
- public function hitTest() : void
- {
- var _loc1_:Array = null;
- var _loc2_:int = 0;
- var _loc3_:* = undefined;
- var _loc4_:* = undefined;
- var _loc5_:Object = null;
- if(!frozen && !checked)
- {
- hitted = new Array();
- checked = true;
- _loc1_ = new Array();
- _loc2_ = int(items.length - 1);
- while(_loc2_ >= 0)
- {
- _loc5_ = items[_loc2_].checkHit();
- _loc1_.push(_loc5_);
- if(_loc5_.xHit != null && counter % 2 != 0)
- {
- hitted.push({
- "hit":_loc5_.xHit,
- "att":_loc5_.obj
- });
- }
- else if(_loc5_.yHit != null && counter % 2 == 0)
- {
- hitted.push({
- "hit":_loc5_.yHit,
- "att":_loc5_.obj
- });
- }
- _loc2_--;
- }
- _loc3_ = getMin(_loc1_);
- if(Math.abs(_loc3_.x) < Math.abs(xspeedArr[counter].s))
- {
- xspeedArr[counter].s = 0;
- }
- if(Math.abs(_loc3_.y) < Math.abs(yspeedArr[counter].s))
- {
- yspeedArr[counter].s = 0;
- }
- if(xspeedArr[counter].s != 0 || yspeedArr[counter].s != 0)
- {
- Model.isStatic = false;
- }
- for each(_loc4_ in items)
- {
- _loc4_.move(_loc3_.x,_loc3_.y);
- }
- }
- }
-
- public function addItem(param1:*) : void
- {
- param1.group = this;
- items.unshift(param1);
- param1.rotation = itemRotation;
- }
-
- public function setASpeed(param1:Number) : void
- {
- counter = Math.round(param1 / 90) % 4;
- xspeedArr[counter].s = 0;
- yspeedArr[counter].s = 0;
- }
-
- public function stopMoving() : void
- {
- xspeedArr[counter].s = 0;
- yspeedArr[counter].s = 0;
- }
-
- public function updateSpeed() : void
- {
- var e:* = undefined;
- var __i:int = 0;
- var __j:int = 0;
- var item0Index:int = 0;
- var item1Index:int = 0;
- var i:int = 0;
- var j:int = 0;
- var grid:Number = NaN;
- var maxX:int = 0;
- var minX:int = 0;
- var maxY:int = 0;
- var minY:int = 0;
- var _i:int = 0;
- var _j:int = 0;
- if(!frozen)
- {
- if(Model.isSleep && _type == "man")
- {
- __i = 0;
- while(__i < 18)
- {
- __j = 0;
- while(__j < 18)
- {
- item0Index = int(allActiveItems[__i][__j].indexOf(items[0]));
- if(item0Index >= 0)
- {
- allActiveItems[__i][__j].splice(item0Index,1);
- }
- item1Index = int(allActiveItems[__i][__j].indexOf(items[1]));
- if(item1Index >= 0)
- {
- allActiveItems[__i][__j].splice(item1Index,1);
- }
- __j++;
- }
- __i++;
- }
- }
- for each(e in items)
- {
- i = Math.round(e.tx / Model.gridWidth);
- j = Math.round(e.ty / Model.gridWidth);
- if(i >= 0 && i < 18 && j >= 0 && j < 18 && allActiveItems[i][j].indexOf(e) < 0)
- {
- grid = Model.gridWidth;
- maxX = Math.round((e.tx + e.itemWidth / 2) / grid);
- minX = Math.round((e.tx - e.itemWidth / 2) / grid);
- maxY = Math.round((e.ty + e.itemHeight / 2) / grid);
- minY = Math.round((e.ty - e.itemHeight / 2) / grid);
- e.maxI = maxY;
- e.maxJ = maxX;
- e.minI = minY;
- e.minJ = minX;
- _i = minX;
- while(_i <= maxX)
- {
- _j = minY;
- while(_j <= maxY)
- {
- try
- {
- allActiveItems[_j][_i].push(e);
- }
- catch(e:Error)
- {
- }
- _j++;
- }
- _i++;
- }
- }
- }
- yHitObj = null;
- yHit = null;
- checked = false;
- addSpeed(xspeedArr[counter]);
- addSpeed(yspeedArr[counter]);
- }
- }
- }
- }
-