import feltopia.*;
var xm:XMLSocket = new XMLSocket();
var players:Array = new Array();
var mapsize:int=30;
var obstacles:Array = new Array();
var startNode:Object = { _row:0, _col:0 };
var endNode:Object = { _row:0, _col:2 };
var tilesize:int=10;
var ms:int=2;
var startpointx=5;
var startpointy=5;
var map:Array=new Array();
map_grid.visible=false;
login.usrnm_txt.text="Nume";
login.room_name.text="Room";
map=[ [2,2,2,1,2,2,2,1,2,2,2,1,2,2,2,1,2,2,2,1,2,2,2,1,2,2,2,1,2],
[2,2,2,1,2,2,2,1,2,2,2,1,2,2,2,1,2,2,2,1,2,2,2,1,2,2,2,1,2],
[2,2,2,1,2,2,2,1,2,2,2,1,2,2,2,1,2,2,2,1,2,2,2,1,2,2,2,1,2],
[2,2,2,1,2,2,2,1,2,2,2,1,2,2,2,1,2,2,2,1,2,2,2,1,2,2,2,2,2],
[2,2,2,1,2,2,2,1,2,2,2,1,2,2,2,2,2,2,2,1,2,2,2,1,2,2,2,1,2],
[2,2,2,1,2,2,2,1,2,2,2,1,2,2,2,2,2,2,2,1,2,2,2,1,2,2,2,1,2],
[2,2,2,1,2,2,2,1,2,2,2,1,2,2,2,2,2,2,2,1,2,2,2,1,2,2,2,2,2],
[2,2,2,2,2,2,2,1,2,2,2,1,2,2,2,1,2,2,2,1,2,2,2,2,2,2,2,1,2],
[2,2,2,1,2,2,2,1,2,2,2,1,2,2,2,1,2,2,2,1,2,2,2,1,2,2,2,1,2],
[2,2,2,1,2,2,2,2,2,2,2,1,2,2,2,1,2,2,2,2,2,2,2,1,2,2,2,1,2],
[2,2,2,1,2,2,2,1,2,2,2,2,2,2,2,2,2,2,2,1,2,2,2,1,2,2,2,1,2],
[2,2,2,2,2,2,2,1,2,2,2,1,2,2,2,1,2,2,2,1,2,2,2,1,2,2,2,1,2],
[2,2,2,1,2,2,2,1,1,1,1,1,2,2,2,1,2,2,2,2,2,2,2,1,2,2,2,1,2],
[2,2,2,1,2,2,2,1,2,2,2,1,2,2,2,1,2,2,2,1,2,2,2,1,2,2,2,1,2],
[2,2,2,1,2,2,2,1,2,2,2,2,2,2,2,1,2,2,2,1,2,2,2,1,2,2,2,1,2],
[2,2,2,1,2,2,2,1,2,2,2,1,2,2,2,1,2,2,2,1,2,2,2,1,2,2,2,1,2],
[2,2,2,1,2,2,2,1,2,2,2,1,2,2,2,1,2,2,2,1,2,2,2,1,2,2,2,1,2],
[2,2,2,1,2,2,2,1,2,2,2,1,2,2,2,1,2,2,2,1,2,2,2,1,2,2,2,1,2],
[2,2,2,1,2,2,2,1,2,2,2,1,2,2,2,1,2,2,2,1,2,2,2,1,2,2,2,1,2],
[2,2,2,1,2,2,2,1,2,2,2,1,2,2,2,1,2,2,2,1,2,2,2,1,2,2,2,1,2],
[2,2,2,1,2,2,2,1,2,2,2,1,2,2,2,1,2,2,2,1,2,2,2,1,2,2,2,1,2],
[2,2,2,1,2,2,2,1,2,2,2,1,2,2,2,1,2,2,2,1,2,2,2,1,2,2,2,1,2],
[2,2,2,1,2,2,2,1,2,2,2,1,2,2,2,1,2,2,2,1,2,2,2,1,2,2,2,1,2],
[2,2,2,1,2,2,2,1,2,2,2,1,2,2,2,1,2,2,2,1,2,2,2,1,2,2,2,1,2],
[2,2,2,1,2,2,2,1,2,2,2,1,2,2,2,1,2,2,2,1,2,2,2,1,2,2,2,1,2],
[2,2,2,1,2,2,2,1,2,2,2,1,2,2,2,1,2,2,2,1,2,2,2,1,2,2,2,1,2],
[2,2,2,1,2,2,2,1,2,2,2,1,2,2,2,1,2,2,2,1,2,2,2,1,2,2,2,1,2],
[2,2,2,1,1,1,1,1,2,2,2,1,2,2,2,1,2,2,2,1,2,2,2,1,2,2,2,1,2],
[2,2,2,1,2,2,2,1,2,2,2,1,2,2,2,1,2,2,2,1,2,2,2,1,2,2,2,1,2],
[2,2,2,1,1,1,2,1,2,2,2,1,2,2,2,1,2,2,2,1,2,2,2,1,2,2,2,1,2]];
obstacles=map;
initMap();
var path:Array=new Array();
var i:int=0;
var point:Point=new Point(startpointx,startpointy);
function handleMainLoop(){
if (xm.connected) {
xm.send("<creaza r='"+login.room_name.text+ "' b='1' username='"+login.usrnm_txt.text+"' x='"+map_grid.getChildByName(login.usrnm_txt.text).x+"' y='"+map_grid.getChildByName(login.usrnm_txt.text).y+"' />");
xm.send("<muta r='"+login.room_name.text+ "' b='1' username='"+login.usrnm_txt.text+"' x='"+map_grid.getChildByName(login.usrnm_txt.text).x+"' y='"+map_grid.getChildByName(login.usrnm_txt.text).y+"' />");
}
if ((map_grid.getChildByName(login.usrnm_txt.text).x==point.x)&&(map_grid.getChildByName(login.usrnm_txt.text).y==point.y)&&(path!=null)){
//var j:int=i;
trace(i+' '+ path.length);
if (i<path.length) {
point.y=path[i]._row*tilesize+tilesize/2;
point.x=path[i]._col*tilesize+tilesize/2;
i++
}
}
Movement.moveToPoint(map_grid.getChildByName(login.usrnm_txt.text),point,2.5,true);
}
function MouseClick(e:MouseEvent){
startNode = { _row:(Math.floor((map_grid.getChildByName(login.usrnm_txt.text).y-tilesize/2)/tilesize)), _col:(Math.floor((map_grid.getChildByName(login.usrnm_txt.text).x-tilesize/2)/tilesize)) };
endNode= { _row:(Math.floor(map_grid.mouseY/tilesize)), _col:(Math.floor(map_grid.mouseX/tilesize)) };
trace(startNode._row+' '+startNode._col);
trace(endNode._row+' '+endNode._col);
if((obstacles[endNode._row][endNode._col]!=true)&&(obstacles[startNode._row][startNode._col]!=true)){
path = PathFinder.aStar(startNode, endNode, mapsize, mapsize, obstacles, false);
if (path!=null){i=1;}}
}
function initMap():void{
//grid map
for (var i:int=0;i<mapsize;i++){
for (var j:int=0;j<mapsize;j++){
var myobj:tile=new tile();
myobj.x=j*tilesize;
myobj.y=i*tilesize;
myobj.gotoAndStop(map[i][j]);
map_grid.addChild(myobj);
if (map[i][j]==1){
obstacles[i][j]=true;
} else { obstacles[i][j]=false;
}
}
}
//player
/*var myplayer:player=new player();
myplayer.x=5;
myplayer.y=5;
myplayer.name="player";
myplayer.visible=false;
map_grid.addChild(myplayer);*/
}
//serverside
xm.addEventListener(Event.CONNECT , onConnected);
login.cnnct_btn.addEventListener(MouseEvent.CLICK, onConnectClicked);
xm.addEventListener(DataEvent.DATA, onIncomingData);
function onConnectClicked(evt:Event)
{
xm.connect("localhost", 2468);
}
function onConnected(evt:Event)
{
xm.send("<connect nickname='"+login.usrnm_txt.text+"'/>");
xm.send("<join room='"+login.room_name.text+"'/>" );
xm.send("<creaza r='"+login.room_name.text+ "' b='1' username='"+login.usrnm_txt.text+"' x='"+startpointx+"' y='"+startpointy+"' />");
login.visible=false;
map_grid.visible=true;
stage.addEventListener(MouseEvent.CLICK,MouseClick);
setInterval(handleMainLoop,20);
}
function onIncomingData(event:DataEvent):void
{
var msg:XML=new XML( event.data);
if((msg.name() == "muta")&&(msg.attribute("username")!=login.usrnm_txt.text)) {
map_grid.getChildByName(msg.attribute("username")).x=msg.attribute("x");
map_grid.getChildByName(msg.attribute("username")).y=msg.attribute("y");
}
if((msg.name() == "creaza")&&(map_grid.getChildByName(msg.attribute("username"))==null)&&(map_grid.getChildByName(msg.attribute("username"))==null)){
var myobj:player = new player();
myobj.name=msg.attribute("username");
myobj.x= msg.attribute("x");
myobj.y= msg.attribute("y");
myobj.nume_player.text=msg.attribute("username");
map_grid.addChild(myobj);
xm.send("<"+msg.attribute("username")+" r='"+login.room_name.text+ "' b='1' username='"+login.usrnm_txt.text+"' x='"+map_grid.getChildByName(login.usrnm_txt.text).x+"' y='"+map_grid.getChildByName(login.usrnm_txt.text).y+"' />");
}
if((msg.name() == login.usrnm_txt.text )&&(msg.attribute("username")!=login.usrnm_txt.text)&&(map_grid.getChildByName(msg.attribute("username"))==null)){
var robj:player = new player();
robj.name=msg.attribute("username");
robj.x= msg.attribute("x");
robj.y= msg.attribute("y");
robj.nume_player.text=msg.attribute("username");
map_grid.addChild(robj);
}
}
|