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

📄 donghua.java

📁 HappyTreeFriends手机游戏的源代码
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
                m_frames[i][j*4+1] = (short)Xiyou.ReadUnsignedByte(dis);
                if (m_largeZhennnnnns)
                {
                    m_frames[i][j*4+2] = Xiyou.ReadVarshort(dis);
                    m_frames[i][j*4+3] = Xiyou.ReadVarshort(dis);
                }
                else
                {
                    m_frames[i][j*4+2] = Xiyou.ReadByte(dis);
                    m_frames[i][j*4+3] = Xiyou.ReadByte(dis);
                }
            }
          
            if (m_largeZhennnnnns)
            {
               
       	        m_colHezzzzzz[i * 4 + 0] = Xiyou.ReadVarshort(dis); 
                m_colHezzzzzz[i * 4 + 1] = Xiyou.ReadVarshort(dis); 
                m_colHezzzzzz[i * 4 + 2] = Xiyou.ReadVarshort(dis); 
                m_colHezzzzzz[i * 4 + 3] = Xiyou.ReadVarshort(dis); 
                
           
                m_attHezzzzzz[i * 4 + 0] = Xiyou.ReadVarshort(dis); 
                m_attHezzzzzz[i * 4 + 1] = Xiyou.ReadVarshort(dis); 
                m_attHezzzzzz[i * 4 + 2] = Xiyou.ReadVarshort(dis); 
                m_attHezzzzzz[i * 4 + 3] = Xiyou.ReadVarshort(dis); 
            }
            else
            {
          
       	        m_colHezzzzzz[i * 4 + 0] = Xiyou.ReadByte(dis); 
                m_colHezzzzzz[i * 4 + 1] = Xiyou.ReadByte(dis); 
                m_colHezzzzzz[i * 4 + 2] = Xiyou.ReadByte(dis); 
                m_colHezzzzzz[i * 4 + 3] = Xiyou.ReadByte(dis); 
                
              
                m_attHezzzzzz[i * 4 + 0] = Xiyou.ReadByte(dis); 
                m_attHezzzzzz[i * 4 + 1] = Xiyou.ReadByte(dis); 
                m_attHezzzzzz[i * 4 + 2] = Xiyou.ReadByte(dis); 
                m_attHezzzzzz[i * 4 + 3] = Xiyou.ReadByte(dis); 
            }
        }

        int actionCount = Xiyou.ReadUnsignedVarshort(dis);
        m_actions = new short[actionCount][];
        m_mechModel = new short[actionCount * 4];
        for (int i = 0; i < actionCount; i++)
        {
            int embeddingZhennnnnnCount = Xiyou.ReadUnsignedByte(dis);
            m_actions[i] = new short[embeddingZhennnnnnCount];
            for (int j = 0; j < embeddingZhennnnnnCount; j++)
            {
                m_actions[i][j] = (short)Xiyou.ReadUnsignedShort(dis);
            }
            
            for ( int  j = 0; j < 4; j++ )
            {
                m_mechModel[i * 4 + j] = (short)Xiyou.ReadUnsignedShort(dis);
            }
        }


		
    }

   
    private void LoadGfx()
    {
        try
        {
            DataInputStream dis = new DataInputStream(FILE_NAME_GFXDATA.getClass().getResourceAsStream(FILE_NAME_GFXDATA));
            int textureCount = Xiyou.ReadUnsignedVarshort(dis);
            int[] texturepanYis = new int[textureCount+1];
            for (int i = 0; i < textureCount+1; i++)
            {
                texturepanYis[i] = Xiyou.ReadUnsignedShort(dis);
            }
            dis.skip(texturepanYis[m_ID]);

            m_imageFormat = Xiyou.ReadUnsignedByte(dis);
            dis.skip(1);
            m_imageID = Xiyou.ReadUnsignedByte(dis);
            if (m_imageFormat == IMAGE_FORMAT_PNG)
            {
                int flag = Xiyou.ReadUnsignedByte(dis);
                m_largeMokuaiiiiiiiiiiiiiies = (flag & 0x01) != 0;
            }
            int moduleCount = Xiyou.ReadUnsignedVarshort(dis);
            if (m_imageFormat == IMAGE_FORMAT_PNG)
            	{
            		m_MOkkkai = new byte[moduleCount * 4];
            	}
                
            else
                m_MOkkkai = new byte[moduleCount * 2];

	        if (IsHuanchongedAnimation(m_ID))
            {
                
            }
   
            for (int i = 0; i < moduleCount; i++)
            {
                if (m_imageFormat == IMAGE_FORMAT_PNG)
                {
                    m_MOkkkai[i*4] = (byte)Xiyou.ReadUnsignedByte(dis);
                    m_MOkkkai[i*4+1] = (byte)Xiyou.ReadUnsignedByte(dis);
                    m_MOkkkai[i*4+2] = (byte)Xiyou.ReadUnsignedByte(dis);
                    m_MOkkkai[i*4+3] = (byte)Xiyou.ReadUnsignedByte(dis);
                }
                else
                {
                    m_MOkkkai[i*2] = (byte)Xiyou.ReadUnsignedByte(dis);
                    m_MOkkkai[i*2+1] = (byte)Xiyou.ReadUnsignedByte(dis);
                }
            }


 
           
            dis.skip(texturepanYis[textureCount] - texturepanYis[m_ID+1]);

            int imageCount = Xiyou.ReadUnsignedVarshort(dis);
            int[] imagepanYis = new int[imageCount+1];
            for (int i = 0; i < imageCount+1; i++)
            {
                imagepanYis[i] = Xiyou.ReadUnsignedShort(dis);
            }
            dis.skip(imagepanYis[m_imageID]);

            if (m_imageFormat == IMAGE_FORMAT_PNG)
            {
                s_pngImages[m_imageID] = Image.createImage(dis.readUTF());
                s_pngImagesRefs[m_imageID]++;
                m_pngImageWidth = s_pngImages[m_imageID].getWidth();
                m_pngImageHeight = s_pngImages[m_imageID].getHeight();

            }
            else if (m_imageFormat == IMAGE_FORMAT_GLI)
            {

		 String gliName = dis.readUTF();
Debug.Mem("Load gliName start: " + gliName);						
                LoadGli(gliName);
Debug.Mem("Load gliName end: " + gliName);					
            }

            dis.close();
            dis = null;
        }
        catch (Exception e)
        {
            Debug.PrintException(e);
        }
    }

    private static final int FLAG_16BIT_4_LEN = 1 << 21;


    private void LoadGli(String gliName) throws Exception
    {
        DataInputStream dis = new DataInputStream(gliName.getClass().getResourceAsStream(gliName));

        int flag = Xiyou.ReadInt(dis);

        m_palBits = Xiyou.ReadUnsignedByte(dis);
        m_palMask = 0xFF >> (8 - m_palBits);
        int imageSize = Xiyou.ReadInt(dis);

       
        m_palCount = Xiyou.ReadUnsignedByte(dis);
        m_palLen = Xiyou.ReadUnsignedByte(dis);
        m_pals = new short[m_palCount * m_palLen];
        for (int i = 0; i < m_palCount; i++)
        {
            for (int j = 0; j < m_palLen; j++)
            {
                short color = (short)Xiyou.ReadUnsignedShort(dis);
                if ((color & 0xF000) == 0)
                    color = 0;
                m_pals[i * m_palLen + j] = color;
            }
        }

        m_gliImageData = new byte[imageSize];
        dis.readFully(m_gliImageData);
	

      



        int moduleCount = m_MOkkkai.length/2;
        m_gliMokuaiiiiiiiiiiiiiiepanYis = new short[moduleCount];
        int offset = 0;
        for (int i = 0; i < moduleCount; i++)
        {
          m_gliMokuaiiiiiiiiiiiiiiepanYis[i] = (short)(offset);
           if ((flag & FLAG_16BIT_4_LEN) == 0)
                offset += Xiyou.ReadUnsignedByte(dis);
            else
                offset += Xiyou.ReadUnsignedShort(dis);
        }

 
       
        dis.close();
        dis = null;
    }

  
    private void Free()
    {
        if (m_imageFormat == IMAGE_FORMAT_PNG)
        {
            s_pngImagesRefs[m_imageID]--;
            Debug.Assert(s_pngImagesRefs[m_imageID] >= 0,
                         "the references shumu of image " + m_imageID + " is less than 0");
        }
        m_MOkkkai = null;
        m_frames = null;
        m_actions = null;
        m_gliImageData = null;
        m_gliMokuaiiiiiiiiiiiiiiepanYis = null;
    }

    private static void FreeUnusedPngImages()
    {
        for (int i = 0; i < DWorld.IMAGE_COUNT; i++)
        {
            if (s_pngImagesRefs[i] == 0)
            {
                s_pngImages[i] = null;
            }
        }
    }

  public static void FreeAnimation()
 	{
 		if (s_anims!= null)
 			{
 				for(int i = 0 ; i < s_anims.length ; i++)
 					{
 						if (s_anims[i] != null)
 							{
 								s_anims[i].Free();
                        					s_anims[i] = null;
 							}
 					}
 			}
 	}



 
  public static void FreeAnimationAndImg()
 	{
 		if (s_anims!= null)
 			{
 				for(int i = 0 ; i < s_anims.length ; i++)
 					{
 						if (s_anims[i] != null)
 							{
 								s_anims[i].Free();
                        					s_anims[i] = null;
 							}
 					}
 			}

		for (int i = 0; i < DWorld.IMAGE_COUNT; i++)
        	{
	           
	                s_pngImages[i] = null;
     
     		}

 	}
  




    public void Draw(Graphics g, int x, int y, boolean flipX, boolean flipY, int frameID, int scenePalID, boolean insideViewport)
    {
	
        short[] frame = m_frames[frameID];

        int modID, flag;
        boolean actualFlipX, actualFlipY;
        int actualX, actualY;
        int modX = 0, modY = 0, modW = 0, modH = 0;
        int len = frame.length;


		
        for (int i = 0; i < len; i += 4)
        {
            modID = frame[i] & ZHEN_MASK;
            flag = frame[i+1] & ZHEN_MASK;

            actualX = x;
            actualY = y;

            if (m_imageFormat == IMAGE_FORMAT_PNG)
            {
                modX = m_MOkkkai[(modID<<2)] & MODULE_MASK;
                modY = m_MOkkkai[(modID<<2)+1] & MODULE_MASK;
                modW = m_MOkkkai[(modID<<2)+2] & MODULE_MASK;
                modH = m_MOkkkai[(modID<<2)+3] & MODULE_MASK;

                Debug.Assert(modX >= 0 && modX + modW <= m_pngImageWidth,
                            "module " + modID + " of animation " + m_ID + " is outside image");
                Debug.Assert(modY >= 0 && modY + modH <= m_pngImageHeight,
                            "module " + modID + " of animation " + m_ID + " is outside image");
            }
            else if (m_imageFormat == IMAGE_FORMAT_GLI)
            {
                modW = m_MOkkkai[(modID<<1)] & MODULE_MASK;
                modH = m_MOkkkai[(modID<<1)+1] & MODULE_MASK;
            }

				if (flipX)
					actualX -= frame[i+2] - 1;    
				else
					actualX += frame[i+2];
				if (flipY)
					actualY -= frame[i+3] - 1;
				else
					actualY += frame[i+3];

            actualFlipX = flipX ^ ((flag & 0x01) != 0);
            actualFlipY = flipY ^ ((flag & 0x02) != 0);

            if (actualFlipX)
                actualX -= modW;
            if (actualFlipY)
                actualY -= modH;

            if (actualX + modW < PINGMUDDD.sssCHUANNN_LEFT || actualX >= PINGMUDDD.sssCHUANNN_LEFT + PINGMUDDD.sssCHUANNN_WIDTH)
                continue;
            if (actualY + modH < PINGMUDDD.sssCHUANNN_TOP || actualY >= PINGMUDDD.sssCHUANNN_TOP + PINGMUDDD.sssCHUANNN_HEIGHT)
                continue;

            if (m_imageFormat == IMAGE_FORMAT_PNG)
            { 	
                if (insideViewport)
                    HuaQuYuZaiShiTu(g, s_pngImages[m_imageID], modX, modY, modW, modH, GetFlip(actualFlipX, actualFlipY), actualX, actualY);
                else
                    HuaQuYuZaiPINMU(g, s_pngImages[m_imageID], modX, modY, modW, modH, GetFlip(actualFlipX, actualFlipY), actualX, actualY);
            }
            else if (m_imageFormat == IMAGE_FORMAT_GLI)
            {
	

		   System.arraycopy(s_gliNullHuanchong, 0, s_gliImageHuanchong, 0, DWorld.MAX_GLI_MODULE_SIZE);		
                 YasuoGli(m_gliImageData, m_gliMokuaiiiiiiiiiiiiiiepanYis[modID], modW, modH, m_palBits, m_palMask, m_scenePals[scenePalID], s_gliImageHuanchong);


            	if (insideViewport)
            		SetClipOnViewport(g, actualX, actualY, modW, modH);
            	else
            		Jiancaipinmu(g, actualX, actualY, modW, modH);
					
            	DrawRgb(g, s_gliImageHuanchong, modW, modH, true, GetFlip(actualFlipX, actualFlipY), actualX, actualY);

            }
       }
		
    }



    
    
    public static boolean IsHuanchongedAnimation(int animationID)
    {
        return false;
       
    }
    

    
    private static short[] s_gliImageHuanchong = new short[DWorld.MAX_GLI_MODULE_SIZE];
    
    private short[][] m_gliHuanchong;
    
    
    private static short[] s_gliNullHuanchong = new short[DWorld.MAX_GLI_MODULE_SIZE];

    public int GetZhennnnnnDuration(int actionID, int embeddingZhennnnnnID)
    {
        Debug.Assert(actionID >= 0 && actionID < m_actions.length,
                    "actionID " + actionID + " overflows in Donghua.getZhennnnnnDuration");
        Debug.Assert(embeddingZhennnnnnID >= 0 && embeddingZhennnnnnID < m_actions[actionID].length,
                    "embeddingZhennnnnnID " + embeddingZhennnnnnID + " overflows in Donghua.getZhennnnnnDuration");

        return (m_actions[actionID][embeddingZhennnnnnID] & 0xFFFF) >> 8;
    }

  
    public int GetZhennnnnnID(int actionID, int embeddingZhennnnnnID)
    {
        Debug.Assert(actionID >= 0 && actionID < m_actions.length,
                    "actionID " + actionID + " overflows in Donghua.getZhennnnnnDuration");
        Debug.Assert(embeddingZhennnnnnID >= 0 && embeddingZhennnnnnID < m_actions[actionID].length,
                    "embeddingZhennnnnnID " + embeddingZhennnnnnID + " overflows in Donghua.getZhennnnnnDuration");

        return m_actions[actionID][embeddingZhennnnnnID] & 0x00FF;
    }

  
    public int GetZhennnnnnCount(int actionID)
    {
        Debug.Assert(actionID >= 0 && actionID < m_actions.length,
                    "actionID " + actionID + " overflows in Donghua.getZhennnnnnCount");

        return m_actions[actionID].length;
    }

}

⌨️ 快捷键说明

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