📄 jiaose.java
字号:
}
}
public static final int BOX_TYPE_COLLISION = 0;
public static final int BOX_TYPE_ATTACK = 1;
public int[] GetJiaosesHezzzzzzInfo ( int hezzzType, int[] destHezzzzzzData )
{
if(hezzzType == BOX_TYPE_COLLISION)
{
System.arraycopy( m_collisionHezzzzzz, 0, destHezzzzzzData, 0, 4 );
}
else if (hezzzType == BOX_TYPE_ATTACK)
{
System.arraycopy( m_attackHezzzzzz, 0, destHezzzzzzData, 0, 4 );
}
Xiyou.ShiftHezzzzzz( destHezzzzzzData, m_x >> 8, m_y >> 8);
return destHezzzzzzData;
}
void SetCircular()
{
m_actionCircular = true;
switch (m_ajiaoseClassID)
{
case DWorld.ACTOR_CLASS_ID_LAUNCH:
switch (m_actionID)
{
case DWorld.ACTION_ID_LAUNCH_LAUNCH_0:
case DWorld.ACTION_ID_LAUNCH_LAUNCH_1:
case DWorld.ACTION_ID_LAUNCH_LAUNCH_2:
case DWorld.ACTION_ID_LAUNCH_DOWN:
case DWorld.ACTION_ID_LAUNCH_DIE:
m_actionCircular = false;
break;
default:
m_actionCircular = true;
break;
}
break;
case DWorld.ACTOR_CLASS_ID_BURNT:
case DWorld.ACTOR_CLASS_ID_CROCODILEBITED:
m_actionCircular = false;
break;
case DWorld.ACTOR_CLASS_ID_DRAGONBITE:
switch (m_actionID)
{
case DWorld.ACTION_ID_DRAGON_DRAGONBITE_0:
case DWorld.ACTION_ID_DRAGON_DRAGONBITE_1:
m_actionCircular = false;
break;
default:
m_actionCircular = true;
break;
}
break;
case DWorld.ACTOR_CLASS_ID_PRINCESS:
switch (m_actionID)
{
case DWorld.ACTION_ID_PRINCESS_PUNCTURE_0:
case DWorld.ACTION_ID_PRINCESS_PUNCTURE_1:
m_actionCircular = false;
break;
default:
m_actionCircular = true;
break;
}
break;
case DWorld.ACTOR_CLASS_ID_TRAILER:
switch (m_actionID)
{
case DWorld.ACTION_ID_TRAILER_HORSE:
if(Xiyou.s_ctrGameStatus >= 3 * PRELUDE_SCENE_ZHEN)
m_actionCircular = false;
else
m_actionCircular = true;
break;
case DWorld.ACTION_ID_TRAILER_CUDDLES_KNOW:
m_actionCircular = false;
break;
default:
m_actionCircular = true;
break;
}
break;
default:
m_actionCircular = true;
break;
}
}
static boolean s_isGravityWork = false;
static final int GRAVITY_A = -1 << 7;
static final int GRAVITY_STEP = -8;
public static final int WINPOWER_MAX = 3 ;
public static final int WINPOWER_STEP = 2 << 8 ;
static boolean s_isWindWork = true;
static int s_windPower = 0;
public static final int WIND_TICK_ZHEN = 80;
//for wind power
public static void RandomWindPower()
{
if(s_isWindWork)
s_windPower = Xiyou.Rand(0 , WINPOWER_MAX << 1) - WINPOWER_MAX;
if(Xiyou.s_cheatModeEnabled)
{
s_windPower = 0;
}
}
void shenJIIIIIIIPhysics()
{
s_isGravityWork = false;
if((//m_ajiaoseClassID == DWorld.ACTOR_CLASS_ID_LAUNCH && m_actionID == DWorld.ACTION_ID_LAUNCH_DOWN ||
m_ajiaoseClassID == DWorld.ACTOR_CLASS_ID_FLY_HURT &&
(m_actionID != DWorld.ACTION_ID_FLYHURT_BLOOD &&
m_actionID != DWorld.ACTION_ID_FLYHURT_FLY_HURT_12 &&
m_actionID != DWorld.ACTION_ID_FLYHURT_FLY_HURT_15 &&
m_actionID != DWorld.ACTION_ID_FLYHURT_FIRE) &&
((Xiyou.s_ctrGameStatus >= HIT_STAY_DURATION && m_actionID != DWorld.ACTION_ID_FLYHURT_FLY_HURT_14) || s_collideJiaoses ||
(m_actionID == DWorld.ACTION_ID_FLYHURT_FLY_HURT_14 &&
s_power >= POWER_OK_SEE_WALL && s_power < POWER_OK_TO_WALL)
))&& !s_inGround)
s_isGravityWork = true;
if(m_ajiaoseClassID == DWorld.ACTOR_CLASS_ID_FLYHURT_PRINCESS && (
m_actionID == DWorld.ACTION_ID_FLYHURT_PRINCESS_FLYHURT_P_0 ||
m_actionID == DWorld.ACTION_ID_FLYHURT_PRINCESS_FLYHURT_P_1 ||
m_actionID == DWorld.ACTION_ID_FLYHURT_PRINCESS_FLYHURT_P_2 )&& !s_inGroundP)
s_isGravityWork = true;
if (s_isGravityWork)
{
m_aY = -GRAVITY_A;
}
else
{
m_aY = 0;
}
m_vX += m_aX;
m_vY += m_aY;
m_x += m_vX;
m_y += m_vY;
}
public static final byte PHY_NONE = -1;
public static final byte PHY_AIR = 0;
public static final byte PHY_V_WALLING = 1;
public static final byte PHY_H_WALLING = 2;
public static final byte PHY_SOLID = 6;
public static final byte PHY_WALL_EDGE = 7;
public static final byte PHY_DEAD = 8;
public static final byte PHY_OUT = 9;
public static byte[] s_phyHuanchong;
public static int s_bufferWidth; // by tiles
public static int s_bufferHeight;
public static final int MASK_INTEGER = 0xffffff00;
public void CollisionEnv()
{
GetJiaosesHezzzzzzInfo( BOX_TYPE_COLLISION, s_hezzz1 );
CheckCollisionWithEnv(s_hezzz1);
if ( s_tIaoZHenX != 0 )
{
m_x += s_tIaoZHenX;
m_x &= MASK_INTEGER;
}
if ( s_tIaoZHenY != 0 )
{
m_y += s_tIaoZHenY;
m_y &= MASK_INTEGER;
}
GetJiaosesHezzzzzzInfo( BOX_TYPE_COLLISION, s_hezzz1);
GetSurroundingEnvInfo( s_hezzz1, m_flipX ? -1 : 1);
}
static int[] s_oldColHezzzzzz = new int[4];
static int s_tIaoZHenX;
static int s_tIaoZHenY;
public void CheckCollisionWithEnv(int[] newColHezzzzzz)
{
if ( newColHezzzzzz == null ) return;
s_tIaoZHenX = 0;
s_tIaoZHenY = 0;
if ( newColHezzzzzz [ INDEX_BOX_LEFT ] < 1 )
{
s_tIaoZHenX += 1 - newColHezzzzzz [ INDEX_BOX_LEFT ];
newColHezzzzzz [ INDEX_BOX_LEFT ] = 0;
newColHezzzzzz [ INDEX_BOX_RIGHT ] += s_tIaoZHenX;
}
else if ( newColHezzzzzz [ INDEX_BOX_RIGHT ] >= (Xiyou.s_diTUWidth << Xiyou.s_tileBits) - 1 )
{
s_tIaoZHenX += ( (Xiyou.s_diTUWidth << Xiyou.s_tileBits) - 2 ) - newColHezzzzzz [ INDEX_BOX_RIGHT ];
newColHezzzzzz [ INDEX_BOX_RIGHT ] = ( short ) ( (Xiyou.s_diTUWidth << Xiyou.s_tileBits) - 2 );
newColHezzzzzz [ INDEX_BOX_LEFT ] += s_tIaoZHenX;
}
boolean check_top = true;
boolean check_bottom = true;
int old_col_left = s_oldColHezzzzzz [ INDEX_BOX_LEFT ] / Xiyou.TILE_WIDTH;
int old_col_right = s_oldColHezzzzzz [ INDEX_BOX_RIGHT ] / Xiyou.TILE_WIDTH;
int old_row_top = s_oldColHezzzzzz [ INDEX_BOX_TOP ] / Xiyou.TILE_HEIGHT;
int old_row_bottom = s_oldColHezzzzzz [ INDEX_BOX_BOTTOM ] / Xiyou.TILE_HEIGHT;
if ( old_row_top < 0 )
{
check_top = false;
old_row_top = 0;
}
if ( old_row_bottom >= s_bufferHeight )
{
check_bottom = false;
old_row_bottom = s_bufferHeight - 1;
}
int new_col_left = newColHezzzzzz [ INDEX_BOX_LEFT ] / Xiyou.TILE_WIDTH;
int new_col_right = newColHezzzzzz [ INDEX_BOX_RIGHT ] / Xiyou.TILE_WIDTH;
int new_row_top = newColHezzzzzz [ INDEX_BOX_TOP ] / Xiyou.TILE_HEIGHT;
int new_row_bottom = newColHezzzzzz [ INDEX_BOX_BOTTOM ] / Xiyou.TILE_HEIGHT;
if ( new_row_top < 0 ) new_row_top = 0;
if ( new_row_bottom >= s_bufferHeight ) new_row_bottom = s_bufferHeight - 1;
if ( m_vX < 0 )
{
s_indexStep1 = -1;
s_indexStep2 = s_bufferWidth;
s_linesCount = old_col_right - new_col_left;
s_tilesCount = old_row_bottom - old_row_top + 1;
s_startTileIndex = old_row_top * s_bufferWidth + old_col_right;
int lines = GetUnblockedLines();
if ( lines < s_linesCount )
{
int block_x = ( old_col_right - lines ) * Xiyou.TILE_WIDTH;
s_tIaoZHenX += block_x - newColHezzzzzz [ INDEX_BOX_LEFT ];
new_col_right += ( s_linesCount - lines );
new_col_left = old_col_right - lines;
}
}
if ( m_vX > 0)
{
s_indexStep1 = 1;
s_indexStep2 = s_bufferWidth;
s_linesCount = new_col_right - old_col_left;
s_tilesCount = old_row_bottom - old_row_top + 1;
s_startTileIndex = old_row_top * s_bufferWidth + old_col_left;
int lines = GetUnblockedLines();
if ( lines < s_linesCount )
{
int block_x = ( old_col_left + lines ) * Xiyou.TILE_WIDTH + Xiyou.TILE_WIDTH- 1;
s_tIaoZHenX += block_x - newColHezzzzzz [ INDEX_BOX_RIGHT ];
new_col_left -= ( s_linesCount - lines );
new_col_right = old_col_left + lines;
}
}
if ( m_vY < 0 && check_top )
{
s_indexStep1 = -s_bufferWidth;
s_indexStep2 = 1;
s_linesCount = old_row_bottom - new_row_top;
s_tilesCount = new_col_right - new_col_left + 1;
s_startTileIndex = old_row_bottom * s_bufferWidth + new_col_left;
int lines = GetUnblockedLines();
if ( lines < s_linesCount )
{
int block_y = ( old_row_bottom - lines ) * Xiyou.TILE_HEIGHT;
s_tIaoZHenY += block_y - newColHezzzzzz [ INDEX_BOX_TOP ];
}
}
if ( m_vY > 0 && check_bottom )
{
s_indexStep1 = s_bufferWidth;
s_indexStep2 = 1;
s_linesCount = new_row_bottom - old_row_top;
s_tilesCount = new_col_right - new_col_left + 1;
s_startTileIndex = old_row_top * s_bufferWidth + new_col_left;
int lines = GetUnblockedLines();
if ( lines < s_linesCount )
{
int block_y = ( old_row_top + lines ) * Xiyou.TILE_HEIGHT + Xiyou.TILE_HEIGHT - 1;
s_tIaoZHenY += block_y - newColHezzzzzz [ INDEX_BOX_BOTTOM ];
}
}
s_tIaoZHenX <<= 8;
s_tIaoZHenY <<= 8;
}
boolean m_bInDeadZone;
boolean m_bBlockedFront;
boolean m_bBlockedBack;
boolean m_bBlockedTop;
boolean m_bBlockedBottom;
boolean m_bBlockedBottomCenter;
boolean m_bBlockedBottomFront;
boolean m_bBlockedBottomBack;
boolean m_bReboundable;
boolean m_bCanClimbUp;
int m_climbupPointX;
int m_climbupPointY;
boolean m_bCanClimbDown;
int m_climbdownPointX;
int m_climbdownPointY;
int m_climbdownFaceDir;
boolean m_bVWallingable;
int m_vWallingLineX;
boolean m_bHWallingable;
void GetSurroundingEnvInfo( int[] hezzz, int faceDir)
{
m_bInDeadZone = false;
m_bBlockedFront = false;
m_bBlockedBack = false;
m_bBlockedTop = false;
m_bBlockedBottom = false;
m_bBlockedBottomCenter = false;
m_bBlockedBottomFront = false;
m_bBlockedBottomBack = false;
m_bReboundable = false;
m_bCanClimbDown = false;
m_bCanClimbUp = false;
m_bVWallingable = false;
m_bHWallingable = false;
if ( hezzz [ INDEX_BOX_BOTTOM ] >= (Xiyou.s_diTUHeight * Xiyou.TILE_HEIGHT) - 1 || hezzz [ INDEX_BOX_BOTTOM ] < 1 )
{
m_bInDeadZone = true;
return;
}
if ( hezzz [ INDEX_BOX_TOP ] < 1 ) hezzz [ INDEX_BOX_TOP ] = 1;
int col_left = ( hezzz [ INDEX_BOX_LEFT ] ) / Xiyou.TILE_WIDTH;
int col_right = ( hezzz [ INDEX_BOX_RIGHT ] ) / Xiyou.TILE_WIDTH;
int row_top = ( hezzz [ INDEX_BOX_TOP ] ) / Xiyou.TILE_WIDTH;
int row_bottom = ( hezzz [ INDEX_BOX_BOTTOM ] ) / Xiyou.TILE_WIDTH;
int col_center = ( hezzz [ INDEX_BOX_LEFT ] + hezzz [ INDEX_BOX_RIGHT ] ) / ( Xiyou.TILE_WIDTH << 1 );
int outer_col_left = ( hezzz [ INDEX_BOX_LEFT ] - 1 ) / Xiyou.TILE_WIDTH;
int outer_col_right = ( hezzz [ INDEX_BOX_RIGHT ] + 1 ) / Xiyou.TILE_WIDTH;
int outer_row_top = ( hezzz [ INDEX_BOX_TOP ] - 1 ) / Xiyou.TILE_WIDTH;
int outer_row_bottom = ( hezzz [ INDEX_BOX_BOTTOM ] + 1 ) / Xiyou.TILE_WIDTH;
int col_front, col_back;
int outer_col_front, outer_col_back;
int patch_x;
if (faceDir > 0)
{
col_front = col_right;
col_back = col_left;
outer_col_front = outer_col_right;
outer_col_back = outer_col_left;
patch_x = Xiyou.TILE_WIDTH - 1;
}
else
{
col_front = col_left;
col_back = col_right;
outer_col_front = outer_col_left;
outer_col_back = outer_col_right;
patch_x = 0;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -