package com.yarin.android.GameEngine.Screen;
import javax.microedition.lcdui.game.LayerManager;
import javax.microedition.lcdui.game.TiledLayer;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import com.yarin.android.GameEngine.GameActivity;
import com.yarin.android.GameEngine.Screen.elements.biology.Actor;
import com.yarin.android.GameEngine.Screen.elements.biology.NPC;
//ͼ�������:�������ͼ
public class SimpleLayerManager extends LayerManager
{
public SimpleLayerManager(){
super();
}
/**
* �����ͼ
* @param level �ؿ�����
* @param actor ���Ƕ���
* @param mapID ��Ҫ����ĵ�ͼID
* @return �����ĵ�ͼ����
*/
public SimpleMap constructMap(
SimpleLevel level,
Actor actor,
String mapID){
SimpleMap map=level.findMap(mapID);
if (map==null){
System.out.println("�����ͼʧ��,ԭ����û���ҵ�ƥ��mapID�ĵ�ͼ����");
}
//��װ��NPC��Actor���������ǽ��������ͼ���ס
Object[] npcSet=map.getNpcSet().list();
for(int i=0;i<npcSet.length;i++){
NPC npc=(NPC)npcSet[i];
this.append(npc.getAnimator());
}
System.out.println("װ��NPC��ϣ�");
this.append(actor.getAnimator());
System.out.println("װ��Actor��ϣ�");
Object[] layerSet=map.getLayerSet().list();
//����SimpleLayerװ��tiledLayer
for(int i=0;i<layerSet.length;i++){
Bitmap img=null;
SimpleLayer simpleLayer=(SimpleLayer)layerSet[i];
try{
img=BitmapFactory.decodeResource(GameActivity.mContext.getResources(), Integer.parseInt(simpleLayer.getImgURL()));
//����TiledLayer
TiledLayer layer=new TiledLayer(simpleLayer.getTileCols(),simpleLayer.getTileRows(),
img,simpleLayer.getTileWidth(),simpleLayer.getTileHeight());
//���ͼ������
int[] mapData=simpleLayer.getMapData();
//��������Ԫ�����ô�ͼ��ĵ�Ԫ��
for(int j=0;j<mapData.length;j++){
int columnNum=j%simpleLayer.getTileCols();
int rowNum=(j-columnNum)/simpleLayer.getTileCols();
layer.setCell(columnNum,rowNum,mapData[j]);
}
simpleLayer.setLayer(layer);
this.append(layer);
}
catch(Exception ex){
ex.printStackTrace();
}
}
System.out.println("װ��ͼ����ϣ�");
Object[] transformer=map.getMapLink().list();
for(int i=0;i<transformer.length;i++){
MapTransformer trans=(MapTransformer)transformer[i];
this.append(trans.getSprite());
}
System.out.println("װ�ص�ͼת������ϣ�");
return map;
}
}