⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 scenecreator.java

📁 《神州》RPG游戏引擎
💻 JAVA
字号:

import java.util.*;
import javax.microedition.lcdui.*;
import javax.microedition.lcdui.game.*;



public class SceneCreator
{    
    LayerManager layerManager;    
    private Vector collisionVC;
    private static int LT = Graphics.LEFT | Graphics.TOP;

    
  public LayerManager getFrontLayer()
  {
      layerManager=null;
      if(SceneLib.currentSceneIndex==0)
      {
      int offsetX=10;
      int offsetY=10;
      
      Image house1,house2,house3,house4,house1Shadow,house2Shadow,house3Shadow,house4Shadow,fountain,tree;
      
      //fountain=Tools.getImage("/building/fountain.png");
      house1 = Tools.getImage("/building/house01.png");
      house2 = Tools.getImage("/building/house02.png");
      house3 = Tools.getImage("/building/house03.png");
      house4 = Tools.getImage("/building/house04.png");
      tree=Tools.getImage("/building/tree_up.png");
      
      Sprite treeSprite=new Sprite(tree,48,64);
      treeSprite.setPosition(367,52);
      //Sprite fountainSprite=new Sprite(fountain,54,32);
      //fountainSprite.setFrame(0);
      //fountainSprite.setPosition(149,114);
      
      Sprite house1UpSprite=new Sprite(house1, 89, 32);
      house1UpSprite.setFrame(0);
      
      Sprite house2UpSprite=new Sprite(house2, 60, 32);
      house2UpSprite.setFrame(0);     
      
      Sprite house3UpSprite=new Sprite(house3, 55, 32);
      house3UpSprite.setFrame(0);    
      
      Sprite house4UpSprite=new Sprite(house4, 63, 32);
      house4UpSprite.setFrame(0);    
      
      house1UpSprite.setPosition(offsetX+15,offsetY+112);     
      
      house2UpSprite.setPosition(offsetX+16,offsetY+12);    
      
      house3UpSprite.setPosition(offsetX+228,offsetY+75);   
      
      house4UpSprite.setPosition(offsetX+135,offsetY+12);
      
      //Image church_up=Tools.getImage("/building/church_up.png");
      //Sprite churchSprite=new Sprite(church_up, 80, 72);
      //churchSprite.setPosition(335,157);
    
        
       
       
        
        MapCreator mapCreator=new MapCreator(SceneLib.scenes[SceneLib.currentSceneIndex].getMapImgFile(),SceneLib.scenes[SceneLib.currentSceneIndex].getMapDataFile());        
        TiledLayer frontLayer=mapCreator.getLayerByIndex(2);
        
        layerManager=new LayerManager();
        
        //加入前景,可挡住角色 
        
        
        layerManager.append(house1UpSprite);
        layerManager.append(house2UpSprite);
        layerManager.append(house3UpSprite);
        layerManager.append(house4UpSprite);
        //layerManager.append(churchSprite);
        layerManager.append(treeSprite);
        //layerManager.append(fountainSprite);
      
        
        layerManager.append(frontLayer);      
        
      }
      if(SceneLib.currentSceneIndex==1)  //村边树林
      {
          //MapCreator mapCreator=new MapCreator("/map/map_wild.png","/map/map_wild_front.map");
          MapCreator mapCreator=new MapCreator(SceneLib.scenes[SceneLib.currentSceneIndex].getMapImgFile(),SceneLib.scenes[SceneLib.currentSceneIndex].getMapDataFile());
          TiledLayer frontLayer=mapCreator.getLayerByIndex(2);
          
          //collisionVC=mapCreator.getCollisionVC(); //取得障碍点角色集合
          layerManager=new LayerManager();
          layerManager.append(frontLayer);
      }
      if(SceneLib.currentSceneIndex==2)  //山洞
      {
         
      }
      if(SceneLib.currentSceneIndex==3)  //平原
      {
          //MapCreator mapCreator=new MapCreator("/map/map_wild.png","/map/map_wild2_front.map");
          MapCreator mapCreator=new MapCreator(SceneLib.scenes[SceneLib.currentSceneIndex].getMapImgFile(),SceneLib.scenes[SceneLib.currentSceneIndex].getMapDataFile());
          TiledLayer frontLayer=mapCreator.getLayerByIndex(2);
          //collisionVC=mapCreator.getCollisionVC(); //取得障碍点角色集合
          layerManager=new LayerManager();
          layerManager.append(frontLayer);     
      }
      if(SceneLib.currentSceneIndex==4)  //迷宫
      {
          //MapCreator mapCreator=new MapCreator("/map/map_wild.png","/map/map_wild2_front.map");
          MapCreator mapCreator=new MapCreator(SceneLib.scenes[SceneLib.currentSceneIndex].getMapImgFile(),SceneLib.scenes[SceneLib.currentSceneIndex].getMapDataFile());
          TiledLayer frontLayer=mapCreator.getLayerByIndex(2);
          //collisionVC=mapCreator.getCollisionVC(); //取得障碍点角色集合
          layerManager=new LayerManager();
          if(frontLayer!=null)layerManager.append(frontLayer);     
      }
      return layerManager;
    
  }
  
  public LayerManager getBackLayer()
  {
      layerManager=null;
      if(SceneLib.currentSceneIndex==0)
      {
      int offsetX=10;
      int offsetY=10; 
      
      Image guide1img = Tools.getImage("/building/guide.png");
      MySprite guide1=new MySprite(guide1img, 30, 26);
      guide1.addMsg(new Msg("牌子","这里是泥巴村"));
      guide1.setChat(true);
      ChatSprites.addSprite(guide1);
      
      //Image enemy1img = Tools.getImage("/role/corpse.png");
      //Image church_down=Tools.getImage("/building/church_down.png");
      //Sprite churchSprite=new Sprite(church_down, 80, 38);
      //churchSprite.setPosition(335,157+72);
      
      Image house1,house2,house3,house4,house1Shadow,house2Shadow,house3Shadow,house4Shadow,fountain,tree;    
      
      
      tree=Tools.getImage("/building/tree_down.png");
      //fountain=Tools.getImage("/building/fountain.png");
      house1 = Tools.getImage("/building/house01.png");
      house2 = Tools.getImage("/building/house02.png");
      house3 = Tools.getImage("/building/house03.png");
      house4 = Tools.getImage("/building/house04.png");
      house1Shadow = Tools.getImage("/building/house1_shadow.png");
      house2Shadow = Tools.getImage("/building/house2_shadow.png");
      house3Shadow = Tools.getImage("/building/house3_shadow.png");
      house4Shadow = Tools.getImage("/building/house4_shadow.png");
      
      Sprite treeSprite1=new Sprite(tree,16,20);
      treeSprite1.setFrame(0);
      Sprite treeSprite2=new Sprite(treeSprite1);
      treeSprite2.setFrame(1);
      Sprite treeSprite3=new Sprite(treeSprite1);
      treeSprite3.setFrame(2);      
      treeSprite1.setPosition(367,52+64);
      treeSprite2.setPosition(367+16,52+64);
      treeSprite3.setPosition(367+32,52+64);
      
      /*
      Sprite fountainSprite=new Sprite(fountain,54,32);
      fountainSprite.setFrame(1);
      fountainSprite.setPosition(149,146);
      */
      
      Sprite house1ShadowSprite=new Sprite(house1Shadow, 10, 33);
      Sprite house2ShadowSprite=new Sprite(house2Shadow, 10, 33);
      Sprite house3ShadowSprite=new Sprite(house3Shadow, 11, 52);
      Sprite house4ShadowSprite=new Sprite(house4Shadow, 10, 33);
      
      Sprite house1UpSprite=new Sprite(house1, 89, 32);
    
      Sprite house1DownSprite=new Sprite(house1UpSprite);
      house1DownSprite.setFrame(1);
      //house1DownSprite.defineCollisionRectangle(0,-3,85,32);
      
      Sprite house2UpSprite=new Sprite(house2, 60, 32);
     
      Sprite house2DownSprite=new Sprite(house2UpSprite);
      house2DownSprite.setFrame(1);
      //house2DownSprite.defineCollisionRectangle(0,0,58,32);
      
      Sprite house3UpSprite=new Sprite(house3, 55, 32);
      
      Sprite house3Down1Sprite=new Sprite(house3UpSprite);
      house3Down1Sprite.setFrame(1);
      Sprite house3Down2Sprite=new Sprite(house3UpSprite);
      house3Down2Sprite.setFrame(2);
      //house3Down1Sprite.defineCollisionRectangle(0,0,56,32);
      //house3Down2Sprite.defineCollisionRectangle(0,0,56,32);
      
      Sprite house4UpSprite=new Sprite(house4, 63, 32);
    
      Sprite house4DownSprite=new Sprite(house4UpSprite);
      house4DownSprite.setFrame(1); 
      //house4DownSprite.defineCollisionRectangle(0,0,59,32);      
     
      house1DownSprite.setPosition(offsetX+15,offsetY+144);
      
    
      house2DownSprite.setPosition(offsetX+16,offsetY+44);
      
   
      house3Down1Sprite.setPosition(offsetX+228,offsetY+107);
      house3Down2Sprite.setPosition(offsetX+228,offsetY+139);
      
  
      house4DownSprite.setPosition(offsetX+135,offsetY+44);           
    
      
      guide1.setPosition(offsetX+240,offsetY+210);
      guide1.setFrame(0);
        
        
        MapCreator mapCreator=new MapCreator(SceneLib.scenes[SceneLib.currentSceneIndex].getMapImgFile(),SceneLib.scenes[SceneLib.currentSceneIndex].getMapDataFile());
        TiledLayer midLayer=mapCreator.getLayerByIndex(1);
    
        TiledLayer backLayer=mapCreator.getLayerByIndex(0);        
        
        collisionVC=mapCreator.getCollisionVC(); //取得障碍点角色集合
        //System.out.println("collisionVC.size()="+collisionVC.size());
        layerManager=new LayerManager();
        
        //加入前景,被角色挡住 
        layerManager.append(treeSprite1);
        layerManager.append(treeSprite2);
        layerManager.append(treeSprite3);
        //layerManager.append(fountainSprite);
        //layerManager.append(churchSprite);
        layerManager.append(house1DownSprite);
        layerManager.append(house2DownSprite);
        layerManager.append(house3Down1Sprite);
        layerManager.append(house3Down2Sprite);
        layerManager.append(house4DownSprite);
        layerManager.append(guide1);
       
        layerManager.append(house1ShadowSprite);
        layerManager.append(house2ShadowSprite);
        layerManager.append(house3ShadowSprite);
        layerManager.append(house4ShadowSprite);
        
        layerManager.append(midLayer);
        layerManager.append(backLayer);        
         
       
        house1ShadowSprite.setPosition(offsetX+99,offsetY+127);
        house2ShadowSprite.setPosition(offsetX+69,offsetY+28);
        house3ShadowSprite.setPosition(offsetX+280,offsetY+109);
        house4ShadowSprite.setPosition(offsetX+189,offsetY+28);
        
        //addCollisionSprite(layerManager,collisionVC); //障碍点加到当前层里作为判断的道具
        //加入房子等自定义的障碍物
        if(collisionVC==null)collisionVC=new Vector();
        addCollisionBox(collisionVC,house1DownSprite);
        addCollisionBox(collisionVC,house2DownSprite);
        addCollisionBox(collisionVC,house3Down1Sprite);
        addCollisionBox(collisionVC,house3Down2Sprite);
        addCollisionBox(collisionVC,house4DownSprite);
        addCollisionBox(collisionVC,guide1);
        //addCollisionBox(collisionVC,churchSprite);
        //addCollisionBox(collisionVC,fountainSprite);
        addCollisionBox(collisionVC,treeSprite2);
      }
      if(SceneLib.currentSceneIndex==1)  //村边树林
      {
          MapCreator mapCreator=new MapCreator(SceneLib.scenes[SceneLib.currentSceneIndex].getMapImgFile(),SceneLib.scenes[SceneLib.currentSceneIndex].getMapDataFile());          
          TiledLayer midLayer=mapCreator.getLayerByIndex(1);      
          TiledLayer backLayer=mapCreator.getLayerByIndex(0);
          collisionVC=mapCreator.getCollisionVC(); //取得障碍点角色集合
          
          Image guide1img = Tools.getImage("/building/guide.png");
          MySprite guide1=new MySprite(guide1img, 30, 26);
          guide1.addMsg(new Msg("路牌","前面是泥巴村"));
          guide1.setChat(true);
          ChatSprites.addSprite(guide1);
          guide1.setPosition(100,25);
          guide1.setFrame(0);
          
          addCollisionBox(collisionVC,guide1);
          
          layerManager=new LayerManager();
          layerManager.append(guide1);
          layerManager.append(midLayer);          
          layerManager.append(backLayer);
      }
      if(SceneLib.currentSceneIndex==2)  //山洞
      {
          String mapImg=SceneLib.scenes[SceneLib.currentSceneIndex].getMapImgFile();
          String mapData=SceneLib.scenes[SceneLib.currentSceneIndex].getMapDataFile();
          MapCreator mapCreator=new MapCreator(mapImg,mapData);
          TiledLayer back=mapCreator.getLayerByIndex(0);
          TiledLayer mid=mapCreator.getLayerByIndex(1);
          collisionVC=mapCreator.getCollisionVC(); //取得障碍点角色集合
          layerManager=new LayerManager();           
          layerManager.append(mid);
          layerManager.append(back);
         
       }
      if(SceneLib.currentSceneIndex==3)  //平原
      {
          String mapImg=SceneLib.scenes[SceneLib.currentSceneIndex].getMapImgFile();
          String mapData=SceneLib.scenes[SceneLib.currentSceneIndex].getMapDataFile();
          MapCreator mapCreator=new MapCreator(mapImg,mapData);
          TiledLayer backLayer=mapCreator.getLayerByIndex(0);
          TiledLayer midLayer=mapCreator.getLayerByIndex(1);
          collisionVC=mapCreator.getCollisionVC(); //取得障碍点角色集合
          layerManager=new LayerManager();
          layerManager.append(midLayer);
          layerManager.append(backLayer);
       }
      if(SceneLib.currentSceneIndex==4)  //迷宫
      {
          String mapImg=SceneLib.scenes[SceneLib.currentSceneIndex].getMapImgFile();
          String mapData=SceneLib.scenes[SceneLib.currentSceneIndex].getMapDataFile();
          MapCreator mapCreator=new MapCreator(mapImg,mapData);
          TiledLayer backLayer=mapCreator.getLayerByIndex(0);
          TiledLayer midLayer=mapCreator.getLayerByIndex(1);
          collisionVC=mapCreator.getCollisionVC(); //取得障碍点角色集合
          layerManager=new LayerManager();
          if(midLayer!=null)layerManager.append(midLayer);
          if(backLayer!=null)layerManager.append(backLayer);
       }
     
      return layerManager;
  }
    
    //加入障碍物对象box
    private void addCollisionBox(Vector vc,Sprite sprite)
    {
    	Box box=new Box();
    	box.x=sprite.getX();
    	box.y=sprite.getY();
    	box.w=sprite.getWidth();
    	box.h=sprite.getHeight();
    	vc.addElement(box);
    }
    
    public Vector getCollisionVC() {
        return collisionVC;
    }
    //换新场景时清除原有场景的障碍物集合
    public void clearCollisionVC()
    {
        collisionVC.removeAllElements();        
    }
    /*
  private void addCollisionSprite(LayerManager layerManager,Vector collisionVC)
  {
      for(int i=0;collisionVC!=null && i<collisionVC.size();i++)
      {            
          Sprite collisionSprite=(Sprite)collisionVC.elementAt(i);
          if(collisionSprite!=null)
          {
              layerManager.append(collisionSprite);             
          }                
      }
  }
  */
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -