Package _api.alienfactory.javamappy

Examples of _api.alienfactory.javamappy.Block


   */
  public int calculateTallestPillar() {
    int tallest = 0;
    int pillarHeight, pillarTop = 0, tower = 0;
    int blockHeight = mapHeader.getBlockHeight();
    Block block;
    Block[] blocks = layer.getBlocks();
    for (int i = 0; i < blocks.length; i++) {
      block = blocks[i];

      pillarHeight = tower = 0;
      if (block.getImageIndex(Block.BACKGROUND) != 0)
        pillarHeight = blockHeight * 1;
      if (block.getImageIndex(Block.FOREGROUND1) != 0)
        pillarHeight = blockHeight * 1;
      if (block.getImageIndex(Block.FOREGROUND2) != 0)
        pillarHeight = blockHeight * 2;
      if (block.getImageIndex(Block.FOREGROUND3) != 0)
        pillarHeight = blockHeight * 3;
     
      while (blocks[i].getFlag(Block.ATTACH_NEXT)) {
        // we don't like index out of bounds exceptions
        if (i++ >= blocks.length) break;
        block = blocks[i];
        pillarTop = 0;
       
        if (block.getImageIndex(Block.BACKGROUND) != 0)
          pillarTop = 1;
        if (block.getImageIndex(Block.FOREGROUND1) != 0)
          pillarTop = 2;
        if (block.getImageIndex(Block.FOREGROUND2) != 0)
          pillarTop = 3;
        if (block.getImageIndex(Block.FOREGROUND3) != 0)
          pillarTop = 4;

        tower += 4;
        if (pillarTop > 0)
          pillarHeight = (tower + pillarTop - 1) * blockHeight;       
 
View Full Code Here


    int drawModeB   = Renderer.NONE;
    int drawModeF   = Renderer.NONE;
    boolean myTrans  = transparency;
    int isoBh    = pillarRiserMode ? blockHeight : 0;
    int blockIndex;
    Block block;
    if (pillarRiserMode)
      dstPixHeight += tallestPillar;
    for ( ;dstPixY < dstPixHeight; dstPixY += blockGapY) {
     
      mapX = mapXStart;
      for (dstPixX = dstXStart ;dstPixX < dstPixWidth; dstPixX += blockGapX) {
       
        if (!pillarRiserMode || (mapY < mapBlockHeight)) {
          // inlined Layer.getBlock() for speed
          blockIndex = layerData[mapY][mapX];
          if (blockIndex < 0)
            blockIndex = animBlocks[-blockIndex - 1].getCurrentFrame();
        } else
          blockIndex = 0;
       
        int isoY = dstPixY;
        blockIndex--;
        do {
          blockIndex++;
          block = blocks[blockIndex];
         
          if (pillarRiserMode) {
            if (block.getFlag(Block.LEFT_SIDE_PILLAR))
              drawModeF = Renderer.DRAW_LEFT_SIDE_ONLY;           
            else if (block.getFlag(Block.RIGHT_SIDE_PILLAR))
              drawModeF = Renderer.DRAW_RIGHT_SIDE_ONLY;
            else
              drawModeF = Renderer.NONE;
            if (isoY == dstPixY) {
              drawModeB = Renderer.NONE;
              myTrans = transparency;
            } else {
              drawModeB = drawModeF;
              myTrans = true;
            }
          }
         
          if (drawBackground) {         
            imageIndex = block.getImageIndex(Block.BACKGROUND);               
            if ((!myTrans) || (imageIndex != 0))
              renderer.drawImage(gfx, imageIndex, dstPixX, isoY, myTrans, drawModeB);
          }
         
          isoY -= isoBh;
          if (drawForeground1) {
            imageIndex = block.getImageIndex(Block.FOREGROUND1);               
            if (imageIndex != 0)
              renderer.drawImage(gfx, imageIndex, dstPixX, isoY, true, drawModeF);
          }
         
          isoY -= isoBh;
          if (drawForeground2) {
            imageIndex = block.getImageIndex(Block.FOREGROUND2);
            if (imageIndex != 0)
              renderer.drawImage(gfx, imageIndex, dstPixX, isoY, true, drawModeF);
          }
         
          isoY -= isoBh;
          if (drawForeground3) {
            imageIndex = block.getImageIndex(Block.FOREGROUND3);
            if (imageIndex != 0)
              renderer.drawImage(gfx, imageIndex, dstPixX, isoY, true, drawModeF);
          }
         
          isoY -= isoBh;
        } while (pillarRiserMode && block.getFlag(Block.ATTACH_NEXT));
       
        mapX++;
      }     
     
     
      // if isometric... do the next half row
      if (isIsometric) {
        mapX = mapXStart;
        mapY++;
        dstPixY += staggerY;
        for (dstPixX = (dstXStart + staggerX); dstPixX < dstPixWidth; dstPixX += blockGapX) {
         
          if (!pillarRiserMode || (mapY < mapBlockHeight)) {
            // inlined Layer.getBlock() for speed
            blockIndex = layerData[mapY][mapX];
            if (blockIndex < 0)
              blockIndex = animBlocks[-blockIndex - 1].getCurrentFrame();
          } else
            blockIndex = 0;
         
          int isoY = dstPixY;
          blockIndex--;
          do {
            blockIndex++;
            block = blocks[blockIndex];
           
            if (pillarRiserMode) {
              if (block.getFlag(Block.LEFT_SIDE_PILLAR))
                drawModeF = Renderer.DRAW_LEFT_SIDE_ONLY;           
              else if (block.getFlag(Block.RIGHT_SIDE_PILLAR))
                drawModeF = Renderer.DRAW_RIGHT_SIDE_ONLY;
              else
                drawModeF = Renderer.NONE;
              if (isoY == dstPixY) {
                drawModeB = Renderer.NONE;
                myTrans = transparency;
              } else {
                drawModeB = drawModeF;
                myTrans = true;
              }
            }
           
            if (drawBackground) {         
              imageIndex = block.getImageIndex(Block.BACKGROUND);               
              if ((!myTrans) || (imageIndex != 0))
                renderer.drawImage(gfx, imageIndex, dstPixX, isoY, myTrans, drawModeB);
            }
           
            isoY -= isoBh;
            if (drawForeground1) {
              imageIndex = block.getImageIndex(Block.FOREGROUND1);               
              if (imageIndex != 0)
                renderer.drawImage(gfx, imageIndex, dstPixX, isoY, true, drawModeF);
            }
           
            isoY -= isoBh;
            if (drawForeground2) {
              imageIndex = block.getImageIndex(Block.FOREGROUND2);
              if (imageIndex != 0)
                renderer.drawImage(gfx, imageIndex, dstPixX, isoY, true, drawModeF);
            }
           
            isoY -= isoBh;
            if (drawForeground3) {
              imageIndex = block.getImageIndex(Block.FOREGROUND3);
              if (imageIndex != 0)
                renderer.drawImage(gfx, imageIndex, dstPixX, isoY, true, drawModeF);
            }
           
            isoY -= isoBh;
          } while (pillarRiserMode && block.getFlag(Block.ATTACH_NEXT));
          mapX++;
        }
        dstPixY -= staggerY;
      }     
      mapY++;
View Full Code Here

    if (mapHeader.getMapType() == 0)
      imageByteSize = mapHeader.getBlockWidth() * mapHeader.getBlockHeight() * ((mapHeader.getColourDepth() + 1) / 8)// the "+1" caters for a colour depth of 15

    log.info("Reading [" + mapHeader.getNoOfBlocks() + "] block properties...");
    for (int i = 0; i < mapHeader.getNoOfBlocks(); i++) {
      Block block = new Block();

      block.setImageIndex(Block.BACKGROUND,  super.readInt() / imageByteSize);
      block.setImageIndex(Block.FOREGROUND1, super.readInt() / imageByteSize);
      block.setImageIndex(Block.FOREGROUND2, super.readInt() / imageByteSize);
      block.setImageIndex(Block.FOREGROUND3, super.readInt() / imageByteSize);

      block.setUserData(1, super.readInt());
      block.setUserData(2, super.readInt());
      block.setUserData(3, super.readShort());
      block.setUserData(4, super.readShort());
      block.setUserData(5, super.readUByte());
      block.setUserData(6, super.readUByte());
      block.setUserData(7, super.readUByte());
     
      bits = super.readUByte();
      block.setCollisionFlag(Block.TOP | Block.LEFT,    (bits & 0x01) != 0);
      block.setCollisionFlag(Block.TOP | Block.RIGHT,    (bits & 0x02) != 0);
      block.setCollisionFlag(Block.BOTTOM | Block.LEFT,  (bits & 0x04) != 0);
      block.setCollisionFlag(Block.BOTTOM | Block.RIGHT,  (bits & 0x08) != 0);
      block.setFlag(Block.TRIGGER,            (bits & 0x10) != 0);
      block.setFlag(Block.UNUSED1,            (bits & 0x20) != 0);
      block.setFlag(Block.UNUSED2,            (bits & 0x40) != 0);
      block.setFlag(Block.UNUSED3,            (bits & 0x80) != 0);
     
      if (textStringUdi > -1) {
        textStringIndex = block.getUserData(textStringUdi);
        block.setTextString(textStrings[textStringIndex]);
      }
       
      blocks[i] = block;
    }
   
View Full Code Here

TOP

Related Classes of _api.alienfactory.javamappy.Block

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.