📄 critter.java
字号:
}
else {
Level.s_player.m_powerup_ammo = AMMO_MELON;
Level.s_player.m_powerup_id = ITEM_SEED;
}
}
else if(m_id == ITEM_PEPPER) {
if(Level.s_player.m_powerup_id == m_id) {
Level.s_player.m_powerup_ammo += AMMO_PEPPER;
}
else {
Level.s_player.m_powerup_ammo = AMMO_PEPPER;
Level.s_player.m_powerup_id = m_id;
}
}
else if(m_id == ITEM_ONION) {
if(Level.s_player.m_powerup_id == m_id) {
Level.s_player.m_powerup_ammo += AMMO_ONION;
}
else {
Level.s_player.m_powerup_ammo = AMMO_ONION;
Level.s_player.m_powerup_id = m_id;
}
}
if(Level.s_type == Level.TYPE_ADVENTURE || Level.s_type == Level.TYPE_TUTORIAL) Level.s_level_bar -= m_consumed;
score = m_consumed * m_consumed * (Level.BASE_POINTS + Level.s_number + Level.COMBO_POINTS);
Level.s_current_score += score;
Particles.create(Particles.TYPE_POINTS_TEXT, Particles.LAYER_HUD, (m_x<<Engine.FP_SHIFT), (Level.s_player.m_y - 30 - m_consumed*2)<<Engine.FP_SHIFT, score);
if(Level.s_player.m_powerup_ammo > AMMO_MAX) Level.s_player.m_powerup_ammo = AMMO_MAX;
}
if(this == Level.s_player.m_in_mouth) {
Level.s_player.m_in_mouth = null;
}
Level.removeExtra(this);
}
else {
//#if DefaultConfiguration || Nokia_6600 || Nokia_6600_Unobfuscated || Nokia_3220 || Nokia_3220_Unobfuscated || Razr
Level.s_player.m_state |= Avatar.STATE_CHOMP;
Level.s_player.setAnim(Anims.BIGGS_CHOMP);
Level.s_player.m_timer = (short)Avatar.TIME_CHOMP;
//#else
//# Level.s_player.setAnim(Anims.BIGGS_IDLE_LEFT);
//#endif
}
}
// cleanup/setup for when a Critter is spat out and reaches his/her destination.
public void endSpit(Critter c) {
if(c != null) {
m_y = (short)(c.m_y + Level.SQUARE_H);
m_next_y = (short)(c.m_next_y + Level.SQUARE_H);
m_destination_y = (short)(c.m_destination_y + Level.SQUARE_H);
m_board_y = (byte)(c.m_board_y + 1);
}
else {
m_destination_y = m_next_y = m_y = (short)(Level.s_board_y + Level.SQUARE_HALF_H);
}
if(m_type == TYPE_CREATURE) {
snapToBoard(c);
}
else if(m_type == TYPE_ITEM) {
if(m_id == ITEM_SEED) {
if(c != null) {
if(c.m_id == CREATURE_WILDCARD) {
c.makeFull();
//Level.s_combo++;
Level.s_board_state |= (Level.BOARD_EXPLODE_FULL);
}
else {
//c.makeFull();
c.sentence();
}
/*
if(c.m_id == CREATURE_TNT) {
c.m_consumed++;
if(c.full()) c.sentence();
}
else {
c.sentence();
}
*/
}
}
else {
snapToBoard(c);
}
}
Level.removeExtra(this);
}
// finish end-spit by snapping to the desired position and testing for
// a possible combo.
public void snapToBoard(Critter c) {
if(Level.s_type == Level.TYPE_PUZZLE && Level.s_level_bar > 0) {
Level.s_level_bar--;
//#if DefaultConfiguration || Nokia_6600 || Nokia_6600_Unobfuscated || Razr
for (int i=0; i<5; ++i) {
Particles.create((i<2) ? Particles.TYPE_SHARD : Particles.TYPE_BIT, Particles.LAYER_HUD, 10,
(Level.FOOD_BAR_X+Engine.getRandom(Level.FOOD_BAR_WIDTH))<<Engine.FP_SHIFT, ((Level.FOOD_BAR_Y + (Level.s_level_bar_goal-Level.s_level_bar) * Level.FOOD_BAR_SQUARE_SIZE)-Engine.getRandom(Level.FOOD_BAR_SQUARE_SIZE))<<Engine.FP_SHIFT,
Particles.getRandomFP(2<<Engine.FP_SHIFT), Particles.getRandomFP(2<<Engine.FP_SHIFT), 0, 1<<Engine.FP_SHIFT,
0xaaaaff, 0xffffff);
}
//#endif
}
m_state &= ~(STATE_ASCENDING | STATE_IMMOBILE | STATE_SPAT);
setIdleAnim();
m_speed = 0;
Level.putOnBoard(this);
eat(c);
if(c != null && (m_state & STATE_BEING_EATEN) == 0) {
//#ifndef NO_BOARD_BUMPS
Level.s_board_bumps[Level.BUMP_DIRECTION][m_board_x] = Engine.UP;
//#endif
//#if DefaultConfiguration || Nokia_6600 || Nokia_6600_Unobfuscated || Nokia_3220 || Nokia_3220_Unobfuscated || Razr
c.blockerPuff();
//#endif
}
if(m_type == TYPE_ITEM && ((m_state & STATE_BEING_EATEN) == 0)) sentence(TIME_ITEM_SENTENCE);
}
// poison a Critter.
public void toxicPoison(int time) {
m_state |= STATE_POISONED;
m_special_timer = (short)time;
}
// morph the indicated Critter into a toxic one.
public void toxicMorph() {
m_state &= ~(STATE_FLASHING | STATE_POISONED);
m_state |= STATE_TOXIC;
mapSize();
setIdleAnim();
specialInit(m_id, false);
Particles.create(Particles.TYPE_CREATURE_PUFF, Particles.LAYER_FOREGROUND, (m_x<<Engine.FP_SHIFT), (m_y<<Engine.FP_SHIFT), CREATURE_TOXIC);
}
//#if DefaultConfiguration || Nokia_6600 || Nokia_6600_Unobfuscated || Nokia_3220 || Nokia_3220_Unobfuscated || Razr
// make the blocker puff up.
public void blockerPuff() {
if(m_id == CREATURE_BLOCKER) {
m_state |= STATE_BLOCKER_PUFF;
m_special_timer = TIME_BLOCKER_PUFF;
setAnim(Anims.GREEN_SCARED);
}
}
//#endif
// return the string representation of the Critter's id/name.
public String idString() {
//#ifdef DEBUG_PRINTOUTS
if(m_type == TYPE_CREATURE) {
if(m_id == CREATURE_GREEN) return "GREEN GUY, ";
if(m_id == CREATURE_RED) return "RED GUY, ";
if(m_id == CREATURE_BLUE) return "BLUE GUY, ";
if(m_id == CREATURE_BLOCKER) return "BLOCKER, ";
if(m_id == CREATURE_TOXIC) return "TOXIC, ";
if(m_id == CREATURE_TNT) return "TNT, ";
if(m_id == CREATURE_WILDCARD) return "WILDCARD, ";
if(m_id == CREATURE_ORANGE) return "ORANGE GUY, ";
if(m_id == CREATURE_PURPLE) return "PURPLE GUY, ";
return "UNKNOWN CREATURE, ";
}
if(m_type == TYPE_ITEM) {
if(m_id == ITEM_GEM_1) return "GEM 1, ";
if(m_id == ITEM_GEM_2) return "GEM 2, ";
if(m_id == ITEM_GEM_3) return "GEM 3, ";
if(m_id == ITEM_COIN) return "COIN, ";
//#if DefaultConfiguration || Nokia_6600 || Nokia_6600_Unobfuscated || Nokia_3220 || Nokia_3220_Unobfuscated || Razr
if(m_id == ITEM_GEM_4) return "GEM 4, ";
if(m_id == ITEM_GEM_5) return "GEM 5, ";
if(m_id == ITEM_GEM_6) return "GEM 6, ";
if(m_id == ITEM_GEM_7) return "GEM 7, ";
if(m_id == ITEM_GEM_8) return "GEM 8, ";
if(m_id == ITEM_GEM_9) return "GEM 9, ";
//#endif
if(m_id == ITEM_GEM_TOXIC) return "TOXIC GEM, ";
if(m_id == ITEM_WATERMELON) return "WATERMELON, ";
if(m_id == ITEM_PEPPER) return "PEPPER, ";
if(m_id == ITEM_ONION) return "ONION, ";
if(m_id == ITEM_SEED) return "SEED, ";
return "UNKNOWN ITEM, ";
}
return "UNKNOWN UNKNOWN, ";
//#else
//# return Engine.NO_DBG_STRING;
//#endif
}
// return the string representation of the Critter's logical state(s).
public String stateString() {
//#ifdef DEBUG_PRINTOUTS
String s = super.stateString();
if((m_state & STATE_TONGUED) != 0) s += "TONGUED | ";
if((m_state & STATE_SPAT) != 0) s += "SPAT | ";
if((m_state & STATE_BEING_EATEN) != 0) s += "BEING_EATEN | ";
if((m_state & STATE_CHEWING) != 0) s += "CHEWING | ";
if((m_state & STATE_CHILI_BLAST) != 0) s += "CHILI_BLAST | ";
if((m_state & STATE_BONUS) != 0) s += "BONUS | ";
if((m_state & STATE_CLIMBING) != 0) s += "CLIMBING | ";
if((m_state & STATE_DONE_CLIMB) != 0) s += "FINISHED_CLIMBING | ";
if((m_state & STATE_FOOD_CHAIN) != 0) s += "FOOD_CHAIN | ";
if((m_state & STATE_FINAL_FALL) != 0) s += "FINAL_FALL | ";
if((m_state & STATE_ATTACKING) != 0) s += "ATTACKING | ";
if((m_state & STATE_TOXIC) != 0) s += "TOXIC | ";
if((m_state & STATE_POISONED) != 0) s += "POISONED | ";
if((m_state & STATE_SPAWN_DROP) != 0) s += "SPAWN_DROP | ";
if((m_state & STATE_BLOCKER_PUFF) != 0) s += "BLOCKER_PUFF | ";
if((m_state & STATE_DROP_MELON) != 0) s += "MELON_DROP | ";
if((m_state & STATE_DROP_PEPPER) != 0) s += "PEPPER_DROP | ";
if((m_state & STATE_DROP_ONION) != 0) s += "ONION_DROP | ";
return s.substring(0, s.length() - 3) + ", ";
//#else
//# return Engine.NO_DBG_STRING;
//#endif
}
// return the string representation of the Critter's animation state.
public String animStateString() {
//#ifdef DEBUG_PRINTOUTS
//return "no anim support";
return "" + m_anim_state;
//#else
//# return Engine.NO_DBG_STRING;
//#endif
}
// override of Entity's toString() method.
public String toString() {
//#ifdef DEBUG_PRINTOUTS
String s = super.toString();
if (m_type == TYPE_CREATURE) s += ", type: Creature";
else if(m_type == TYPE_ITEM) s += ", type: Item";
if (m_size == SIZE_SMALL) s += ", size: small";
else if(m_size == SIZE_MEDIUM) s += ", size: medium";
else if(m_size == SIZE_BIG) s += ", size: big";
else if(m_size == SIZE_ALL) s += ", size: all";
else if(m_size == SIZE_INEDIBLE) s += ", size: inedible";
s += (", consumed: " + m_consumed);
s += (", special timer: " + m_special_timer);
return s;
//#else
//# return Engine.NO_DBG_STRING;
//#endif
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -