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

📄 jiaose.java

📁 HappyTreeFriends手机游戏的源代码
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
import java.io.*;
import javax.microedition.lcdui.*;

import com.nokia.mid.ui.*;


public class Jiaose
{


    public static int s_ajiaoseCount;

  
    public static int ALLOCATE_ACTOR_NUMBER = 60;
   
    public static int STATIC_ACTOR_NUMBER = 100;

    
    public static int DYNAMIC_ACTOR_NUMBER = 30;

   
    public static int MAX_ACTOR_NUMBER = STATIC_ACTOR_NUMBER + DYNAMIC_ACTOR_NUMBER;

    
    public static Jiaose[] s_ajiaoses;

    public static int s_inCameraJiaosesCount;
   
    public static Jiaose[] s_inCameraJiaosess;

    
    public int m_ID;
   
    public int m_ajiaoseClassID;

   
    public int m_activeZoneLeft;
   
    public int m_activeZoneTop;
  
    public int m_activeZoneRight;
  
    public int m_activeZoneBottom;

  
    public int m_level = LV_OTHER;
 
    public static final int LV_FG_STATIC = 0;

 
    public static final int LV_FG_DYNAMIC = 1;
    
   
    public static final int LV_FG_LIGHT = 2;
    
  
    public static final int LV_BG = 3;
   
    public static final int LV_OTHER = 4;

  
    public int m_animID;
  
    public Donghua m_anim;
    
   
    public int m_flag;
    
   
    public int m_x;
   
    public int m_y;
    
  
    public int m_vX;
    public int m_vY;
    public int m_aX;
    public int m_aY;

    public int[] m_collisionHezzzzzz = new int[6];
    public int[] m_attackHezzzzzz = new int[4]; 
    
    public static int[] s_hezzz1 = new int[4]; 
    public static int[] s_hezzz2 = new int[4]; 


    public static int[] s_preColHezzzzzz = new int[4];	


    public static int[] s_hezzzPrincess = new int[4]; 




   public static final int FOLLOW_TOOTHY = 1;
   public static final int FOLLOW_GIGGLES = 2;
   public static final int FOLLOW_NONE = 0;
   public int m_followType = FOLLOW_NONE;

    boolean m_isColliding = false;   


    
   
    public byte[] m_parameters; // parameters

  
    public static final int ALLOCATE_ACTOR_MAX_PARA_NUM = 15;

 
    public Jiaose()
    {
        m_parameters = new byte[ALLOCATE_ACTOR_MAX_PARA_NUM];
       
        m_flag = 0;
    }

    
    public static byte s_originData[]; 

  
    public static int s_ajiaosepanYi[]; 

 
    public static short s_ajiaoseFangjianID[];

  
    public static short m_ajiaoseFangjianID[];


    public static short s_freeFangjianID = 0;

   
    public static boolean s_ajiaoseDie = false;

    public int m_ajiaoseID; 
    public short m_roomID;

 
    public static short[] s_activeZones;

    private static final String FILE_NAME_SCENE = "/scene.bin";

 
    public static int s_sceneAnimationMask;

    
    public static void LoadScene(int sceneID)
    {
        try
        {
            DataInputStream dis = new DataInputStream(FILE_NAME_SCENE.getClass().getResourceAsStream(FILE_NAME_SCENE));
            Xiyou.LocateToBlock(dis, sceneID);
            s_sceneAnimationMask = Xiyou.ReadInt(dis);
            
            int len = Xiyou.ReadInt(dis);
            s_originData =  new byte[len];
            for (int i=0; i<len; i++)
                s_originData[i] = dis.readByte();

            LoadJiaosess();

	 
            dis.skip(2);
            

            dis.close();
            dis = null;

            s_ajiaoses = new Jiaose[ALLOCATE_ACTOR_NUMBER];

            for (int i = 0; i < ALLOCATE_ACTOR_NUMBER; i++)
            {
                s_ajiaoses[i] = new Jiaose();
                s_ajiaoses[i].CleanFangjian();
            }

            s_inCameraJiaosess = new Jiaose[ALLOCATE_ACTOR_NUMBER]; //!
            s_ajiaoseFangjianID = new short[MAX_ACTOR_NUMBER];

            Jiaose.ClearFangjians();

        }
        catch (Exception e)
        {
            Debug.PrintException(e);
        }
    }


    public 	static void  FreeActos()
{
       s_originData = null;
	s_inCameraJiaosess = null;
	s_ajiaoseFangjianID = null;
	s_ajiaoses = null;
}

    
    public static final int ACTORCLASSID_OFFSET = 2;
    public static final int ANIMATIONID_OFFSET = 3;
    public static final int FLAG_OFFSET = 6;
    public static final int MAP_X_OFFSET = 7;
    public static final int MAP_Y_OFFSET = 9;
    public static final int ACTIVEZONE_OFFSET = 11;

    
    private static void LoadJiaosess() throws Exception
    {
        s_ajiaoseCount = Xiyou.ReadShort(s_originData, 0); // ajiaose data shumu
        s_ajiaosepanYi = new int[s_ajiaoseCount];

       
        int len = 2;

        s_activeZones = new short[s_ajiaoseCount * 4];
        for (int i = 0; i < s_ajiaoseCount; i++)
        {
            s_ajiaosepanYi[i] = len;
            
            int diTUX = (short) Xiyou.ReadShort(s_originData, len + MAP_X_OFFSET);
            int diTUY = (short) Xiyou.ReadShort(s_originData, len + MAP_Y_OFFSET);
            s_activeZones[i * 4] = (short) (Xiyou.ReadShort(s_originData, len + ACTIVEZONE_OFFSET) + diTUX);
            s_activeZones[i * 4 + 1] = (short) (Xiyou.ReadShort(s_originData, len + ACTIVEZONE_OFFSET + 2) + diTUY);
            s_activeZones[i * 4 + 2] = (short) (Xiyou.ReadShort(s_originData, len + ACTIVEZONE_OFFSET + 4) + diTUX);
            s_activeZones[i * 4 + 3] = (short) (Xiyou.ReadShort(s_originData, len + ACTIVEZONE_OFFSET + 6) + diTUY);

           
            len += 2 + Xiyou.ReadShort(s_originData, len);
        }
    }

   
    public static void SetAnims()
    {
        for (int i = 0; i < s_ajiaoseCount; i++)
            s_ajiaoses[i].m_anim = Donghua.s_anims[s_ajiaoses[i].m_animID];
    }

	
	private static final String FILE_NAME_GLOBAL_DATA = "/global.bin";

    public static final int CLASS_INFO_FLAG = 0;
    public static final int CLASS_INFO_ANIMATION_ID = 1;
    public static final int CLASS_INFO_ACTION_ID = 2;
    public static final int CLASS_INFO_ACTIVEZONE_L = 3;
    public static final int CLASS_INFO_ACTIVEZONE_T = 4;
    public static final int CLASS_INFO_ACTIVEZONE_R = 5;
    public static final int CLASS_INFO_ACTIVEZONE_B = 6;
    public static final int CLASS_INFO_PARAMETERS = 7;
    
    public static final int CLASS_INFO_BASE_INFO_LEN = 7;
    
    public static short[][] s_ajiaoseClassInfo;
    
   
    public static void LoadGlobalData()
    {
        try
        {
            DataInputStream dis = new DataInputStream(FILE_NAME_GLOBAL_DATA.getClass().getResourceAsStream(FILE_NAME_GLOBAL_DATA));

            int ajiaoseClassCount = Xiyou.ReadByte(dis);

            s_ajiaoseClassInfo = new short[ajiaoseClassCount][];
            for (int i=0; i < ajiaoseClassCount; i++)
            {
                int infoSize = Xiyou.ReadByte(dis);
                s_ajiaoseClassInfo[i] = new short[infoSize];
                
                s_ajiaoseClassInfo[i][CLASS_INFO_FLAG] = Xiyou.ReadShort(dis);
                s_ajiaoseClassInfo[i][CLASS_INFO_ANIMATION_ID] = Xiyou.ReadShort(dis);
                s_ajiaoseClassInfo[i][CLASS_INFO_ACTION_ID] = Xiyou.ReadShort(dis);
                s_ajiaoseClassInfo[i][CLASS_INFO_ACTIVEZONE_L] = Xiyou.ReadShort(dis);
                s_ajiaoseClassInfo[i][CLASS_INFO_ACTIVEZONE_T] = Xiyou.ReadShort(dis);
                s_ajiaoseClassInfo[i][CLASS_INFO_ACTIVEZONE_R] = Xiyou.ReadShort(dis);
                s_ajiaoseClassInfo[i][CLASS_INFO_ACTIVEZONE_B] = Xiyou.ReadShort(dis);
                
                int paraSize = infoSize - 7;
                for (int j=0; j<paraSize; j++)
                    s_ajiaoseClassInfo[i][CLASS_INFO_PARAMETERS + j] = Xiyou.ReadShort(dis);
        	}
        }catch(Exception e)
        {
        }
     }


   
    void LoadJiaoses(int type)
    {
        m_animID = s_ajiaoseClassInfo[type][CLASS_INFO_ANIMATION_ID];
        m_anim = Donghua.s_anims[m_animID];
        m_actionID = s_ajiaoseClassInfo[type][CLASS_INFO_ACTION_ID];
        m_flag = s_ajiaoseClassInfo[type][CLASS_INFO_FLAG];
        SetAliveFlag(true);
        m_x = m_y = 0;
        
        
        if (s_ajiaoseClassInfo[type].length > CLASS_INFO_BASE_INFO_LEN)
        {
            
        }
    }

 
    void LoadJiaoses(byte[] data, int offset)
    {
       
        offset += 2;

        m_ajiaoseClassID = data[offset++];
        m_animID = data[offset++];
        m_anim = (m_animID != -1) ? Donghua.s_anims[m_animID] : null;
        m_actionID = Xiyou.ReadShort(data, offset);
        offset += 2;

       

        m_level = LV_FG_DYNAMIC;
        m_flag = data[offset++];
        m_flipX = (m_flag & 0x01) != 0;
        m_flipY = (m_flag & 0x02) != 0;

        m_x = Xiyou.ReadShort(data, offset) << 8;
        offset += 2;
        m_y = Xiyou.ReadShort(data, offset) << 8;;
        offset += 2;

        offset += 8;   

        int parameterSize = data[offset++];
        
        if (parameterSize > 0)
        {
            System.arraycopy(data, offset, m_parameters, 0, parameterSize);
        }
		
        Parameters2Varible();
    }

   
    void PackJiaoses(byte[] data, int offset)
    {
        offset += 4; 

     
        data[offset++] = (byte) (m_actionID >> 8);
        data[offset++] = (byte) m_actionID;

  
        data[offset++] = (byte) m_flag;

     
        int temp = m_x >> 8;
        data[offset++] = (byte) (temp >> 8);
        data[offset++] = (byte) temp;

     
        temp = m_y >> 8;
        data[offset++] = (byte) (temp >> 8);
        data[offset++] = (byte) temp;
    }


    public static Jiaose FenPeijiaose(int ajiaoseID, boolean isStatic)
    {
        if (s_freeFangjianID < ALLOCATE_ACTOR_NUMBER)
        {
            Jiaose a = s_ajiaoses[s_freeFangjianID];
            a.m_roomID = s_freeFangjianID;
            if (isStatic)
            {
                a.m_ajiaoseID = ajiaoseID;
                s_ajiaoseFangjianID[ajiaoseID] = s_freeFangjianID;
                a.LoadJiaoses(s_originData, s_ajiaosepanYi[ajiaoseID]);
            }
            else
            {
                for (int i = STATIC_ACTOR_NUMBER; i < MAX_ACTOR_NUMBER; i++)
                    if (s_ajiaoseFangjianID[i] == -1)
                    {
                        a.m_ajiaoseID = i;
                        s_ajiaoseFangjianID[i] = s_freeFangjianID;
                        break;
                    }
                a.m_ajiaoseClassID = ajiaoseID;
                a.LoadJiaoses(ajiaoseID);
            }
            s_freeFangjianID++;
            a.InitAI();
            return a;
        }
        return null;
    }


  
    public  static void DisallocJiaoses(Jiaose ajiaose, boolean isTrue)
    {
        int ajiaoseID = ajiaose.m_ajiaoseID;
        s_ajiaoseFangjianID[ajiaoseID] = -1;
        if (isTrue && ajiaoseID < 100)
            ajiaose.PackJiaoses(s_originData, s_ajiaosepanYi[ajiaoseID]);
        s_freeFangjianID--;
        if (ajiaose.m_roomID != s_freeFangjianID)
        {
            s_ajiaoseDie = true;
            short tmp = (short) ajiaose.m_roomID;
            if (s_ajiaoses[s_freeFangjianID].m_ajiaoseID >= 0)
            {
                s_ajiaoseFangjianID[s_ajiaoses[s_freeFangjianID].m_ajiaoseID] = tmp;
            }
            s_ajiaoses[tmp] = s_ajiaoses[s_freeFangjianID];
            s_ajiaoses[tmp].m_roomID = tmp;
            s_ajiaoses[s_freeFangjianID] = ajiaose;
        }
        ajiaose.CleanFangjian();
    }


    static void ClearFangjians()
    {
        for (int i = 0; i < ALLOCATE_ACTOR_NUMBER; i++)
            s_ajiaoses[i].CleanFangjian();
        for (int i = 0; i < MAX_ACTOR_NUMBER; i++)
            s_ajiaoseFangjianID[i] = -1;
        s_freeFangjianID = 0;
    }

    static Jiaose GetJiaoses(int ajiaoseID)
    {
        if (ajiaoseID < 0) 
            return null;
        if (s_ajiaoseFangjianID[ajiaoseID] >= 0)
            return s_ajiaoses[s_ajiaoseFangjianID[ajiaoseID]];
        else return null;
    }


⌨️ 快捷键说明

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