📄 avatar.java
字号:
//# Engine.printLine("playing gem grab 2");
//# Engine.playSound(Engine.SOUND_GRAB_GEM);
//# }
//# else {
//# Engine.playSound(Engine.SOUND_GRAB_POWERUP);
//# }
//# }
//#endif
//#ifndef NO_BOARD_BUMPS
if(c.m_board_y != Engine.FULL_BYTE) Level.s_board_bumps[Level.BUMP_DIRECTION][c.m_board_x] = Engine.DOWN;
//#endif
if(c.m_board_x >= 0 && c.m_board_x < Level.s_board[0].length && c.m_board_y >= 0 && c.m_board_y < Level.s_board.length) Level.s_board[c.m_board_y][c.m_board_x] = null;
Level.removeExtra(c);
c.m_state &= ~(STATE_ASCENDING | STATE_DESCENDING | STATE_WESTWARD | STATE_EASTWARD | STATE_FLASHING);
c.m_state |= (Critter.STATE_TONGUED | STATE_IMMOBILE);
c.m_next_y = c.m_destination_y = c.m_y;
c.m_frame = 0;
c.m_speed = 0;
c.m_timer = 0;
m_in_mouth = c;
}
//#if DefaultConfiguration || Nokia_6600 || Nokia_6600_Unobfuscated || Nokia_3220 || Nokia_3220_Unobfuscated || Razr
else {
c.blockerPuff();
}
//#endif
}
// make Biggs eat something.
public void swallow() {
if( ((m_state & STATE_TONGUE_FLICK) != 0) || ((m_state & STATE_SPIT) != 0) ) return;
m_timer = 0;
m_state |= (STATE_TONGUE_FLICK | STATE_IMMOBILE);
setAnim(Anims.BIGGS_EATING);
m_destination_tongue = (short)(m_y + TONGUE_Y - BIGGS_TONGUE_Y);
}
// make Biggs spit something out.
public void spit(Critter c) {
if(c == null || ((m_state & STATE_TONGUE_FLICK) != 0) || ((m_state & STATE_SPIT) != 0) ) return;
Critter tmp = Level.getLowest(m_board_x);
c.m_board_x = m_board_x;
c.m_board_y = 0;
c.m_speed = (byte)SPEED_TONGUE;
c.m_destination_x = c.m_next_x = c.m_x = (short)(Level.s_board_x + m_board_x * Level.SQUARE_W + Level.SQUARE_HALF_W);
if(tmp != null) {
//Engine.printLine("tmpboardy " + tmp.m_board_y + ", board length: " + Level.s_board.length);
if(c.m_type == Critter.TYPE_CREATURE &&
tmp.m_board_y == Level.s_board.length - (Level.s_type == Level.TYPE_ADVENTURE || Level.s_type == Level.TYPE_SURVIVAL ? 2 : 3) &&
tmp.m_id != Critter.CREATURE_TNT &&
( c.m_size == Critter.SIZE_INEDIBLE || (c.m_size & Critter.SIZE_BIG) == Critter.SIZE_BIG || (((c.m_size & Critter.SIZE_SMALL) == Critter.SIZE_SMALL) && ((tmp.m_size & Critter.SIZE_MEDIUM) != Critter.SIZE_MEDIUM)) || (((c.m_size & Critter.SIZE_MEDIUM) == Critter.SIZE_MEDIUM) && ((tmp.m_size & Critter.SIZE_BIG) != Critter.SIZE_BIG)) ) ) {
return;
}
else {
c.m_destination_y = tmp.m_y;
}
//Engine.printLine("1 " + (tmp.m_board_y == Level.s_board.length - (Level.s_type == Level.TYPE_ADVENTURE || Level.s_type == Level.TYPE_SURVIVAL ? 2 : 1)) );
//Engine.printLine("2 " + (tmp.m_id != Critter.CREATURE_TNT));
//Engine.printLine("3 " + ( c.m_size == Critter.SIZE_INEDIBLE || (c.m_size & Critter.SIZE_BIG) == Critter.SIZE_BIG || (((c.m_size & Critter.SIZE_SMALL) == Critter.SIZE_SMALL) && ((tmp.m_size & Critter.SIZE_MEDIUM) != Critter.SIZE_MEDIUM)) || (((c.m_size & Critter.SIZE_MEDIUM) == Critter.SIZE_MEDIUM) && ((tmp.m_size & Critter.SIZE_BIG) != Critter.SIZE_BIG)) ));
}
else {
if(Level.s_board_y < 0) {
tmp = new Critter(c.m_type,
c.m_id,
Entity.STATE_DEFAULT,
Anims.GREEN_IDLE,
c.m_x,
Level.s_board_y + Level.SQUARE_HALF_H + Level.s_board_offset_total,
c.m_x,
Level.s_board_y + Level.SQUARE_HALF_H + Level.s_board_offset_total,
0,
0,
0);
//#if DefaultConfiguration || Nokia_6600 || Nokia_6600_Unobfuscated || Nokia_3220 || Nokia_3220_Unobfuscated || Razr
if(Level.s_board_offset_total != 0) tmp.setAnim(Anims.GREEN_CLIMB);
//#endif
Level.mapToBoard(tmp);
Level.s_board[tmp.m_board_y][tmp.m_board_x] = tmp;
c.m_destination_y = (short)(Level.SQUARE_HALF_H);
}
else {
c.m_destination_y = (short)(Level.SQUARE_HALF_H); //(short)(Level.s_board_y + Level.SQUARE_HALF_H);
}
}
if(c == m_in_mouth) {
//#if DefaultConfiguration || Nokia_6600 || Nokia_6600_Unobfuscated || Nokia_3220 || Nokia_3220_Unobfuscated || Razr
c.setAnim(Anims.GREEN_SCARED);
//#else
//# Engine.playSound(Engine.SOUND_SPIT);
//#endif
m_in_mouth = null;
}
else {
c.setAnim(Anims.MELON_IDLE);
c.m_y = m_y;
//#if Nokia_3100 || Nokia_3100_Unobfuscated
//# Engine.playSound(Engine.SOUND_USE_POWERUP);
//#endif
}
c.m_state |= (STATE_ASCENDING | Critter.STATE_SPAT);
c.m_next_y = c.m_y;
Level.addExtra(c);
m_timer = (short)TIME_SPIT;
m_state |= STATE_SPIT;
setAnim(Anims.BIGGS_EATING);
}
// make Biggs use the onion breath power!!!
public void onionBreath() {
m_state |= (STATE_IMMOBILE | STATE_ONION_BREATH);
//#if DefaultConfiguration || Nokia_6600 || Nokia_6600_Unobfuscated || Nokia_3220 || Nokia_3220_Unobfuscated || Razr
setAnim(Anims.BIGGS_JUMP);
//#else
//# setAnim(Anims.BIGGS_EATING);
//#endif
//#ifndef NO_SCREEN_SHAKING
Engine.setShake(Engine.SHAKE_BIGGS, Engine.X_AXIS, 3, 0, true);
Engine.clearShakes(Engine.SHAKE_CRITTERS);
//#endif
if((Level.s_board_state & Level.BOARD_DESCEND) == 0) {
Level.s_board_state |= (Level.BOARD_ONION | Level.BOARD_SCARE);
Level.s_board_timer_delay = 0;
}
Particles.create(Particles.TYPE_ONION_BREATH, Particles.LAYER_FOREGROUND, (m_x<<Engine.FP_SHIFT), (m_y<<Engine.FP_SHIFT));
}
// make Biggs move either left or right.
public void move(boolean left) {
m_leftside = left;
m_timer = 0;
//#if DefaultConfiguration || Nokia_6600 || Nokia_6600_Unobfuscated || Nokia_3220 || Nokia_3220_Unobfuscated || Razr
if( (left && m_anim_state != Anims.BIGGS_HOP_LEFT) || (!left && m_anim_state != Anims.BIGGS_HOP_RIGHT) ) {
setAnim(Anims.BIGGS_HOP_LEFT);
}
m_speed = (byte)SPEED_SIDEWAYS;
m_state |= ( (m_leftside ? STATE_WESTWARD : STATE_EASTWARD) | STATE_IMMOBILE);
if(m_leftside && m_x <= m_destination_x) {
m_destination_x -= Level.SQUARE_W;
if(m_destination_x < Level.s_board_x + Level.SQUARE_HALF_W) {
m_destination_x = (short)(Level.s_board_x + Level.SQUARE_HALF_W);
}
}
else if(!m_leftside && m_x >= m_destination_x) {
m_destination_x += Level.SQUARE_W;
if(m_destination_x > Level.s_board_x + Level.GAME_BOARD_W * Level.SQUARE_W - Level.SQUARE_HALF_W) {
m_destination_x = (short)(Level.s_board_x + Level.GAME_BOARD_W * Level.SQUARE_W - Level.SQUARE_HALF_W);
}
}
//#else
//# if(m_anim_state != Anims.BIGGS_HOP_LEFT) setAnim(Anims.BIGGS_HOP_LEFT);
//#
//# m_speed = (byte)Level.SQUARE_W;
//# m_state |= ( (m_leftside ? STATE_WESTWARD : STATE_EASTWARD) );
//# m_board_x += (m_leftside ? -1 : 1);
//# m_destination_x += m_leftside ? -Level.SQUARE_W : Level.SQUARE_W;
//#endif
}
//#if DefaultConfiguration || Nokia_6600 || Nokia_6600_Unobfuscated || Nokia_3220 || Nokia_3220_Unobfuscated || Razr
// get the current board x that Biggs is residing on.
public byte getBoardLocation() {
int tmp_x = Level.s_board_x + Level.SQUARE_W, tmp_board = 0;
while(tmp_x <= m_x) {
tmp_x += Level.SQUARE_W;
tmp_board++;
}
return (byte)tmp_board;
}
//#endif
/****************************************************************************
** Debugging
***************************************************************************/
// return the string representation of the Player's id/name.
public String idString() {
//#ifdef DEBUG_PRINTOUTS
return "BIGGS, ";
//#else
//# return Engine.NO_DBG_STRING;
//#endif
}
// return the string representation of the Player's logical state(s).
public String stateString() {
//#ifdef DEBUG_PRINTOUTS
String s = super.stateString();
if((m_state & STATE_TONGUE_FLICK) != 0) s += "TONGUE FLICK | ";
if((m_state & STATE_TONGUE_DRAG) != 0) s += "TONGUE DRAG | ";
if((m_state & STATE_SPIT) != 0) s += "SPIT | ";
if((m_state & STATE_CHOMP) != 0) s += "CHOMPING | ";
if((m_state & STATE_SCARED) != 0) s += "SCARED | ";
if((m_state & STATE_HOLD_DOWN) != 0) s += "HOLDING DOWN | ";
if((m_state & STATE_DROP_BOARD) != 0) s += "DROPPING BOARD | ";
return s.substring(0, s.length() - 3) + ", ";
//#else
//# return Engine.NO_DBG_STRING;
//#endif
}
// return the string representation of the Player's animation state.
public String animStateString() {
//#ifdef DEBUG_PRINTOUTS
return "" + m_anim_state;
//#else
//# return Engine.NO_DBG_STRING;
//#endif
}
// return the string representation of the Player.
public String toString() {
String s = super.toString();
s += ", tongue: " + m_tongue;
s += ", dest-tongue: " + m_destination_tongue;
if(m_in_mouth != null) s += ", In-Mouth: " + m_in_mouth.toString();
return s;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -