package com.jonathan.citrus.game.protocol; import com.jonathan.citrus.game.logic.cycle.MobUpdateCycle; import com.jonathan.citrus.game.logic.cycle.PlayerUpdateCycle; import com.jonathan.citrus.game.logic.mob.Mob; import com.jonathan.citrus.game.logic.player.Player; import com.jonathan.citrus.game.logic.utility.EntityCycle; import com.jonathan.citrus.game.logic.utility.Update; import com.jonathan.citrus.network.Packet; /** * Created by Jonathan on 1/13/14. */ public class GameCycle { private EntityCycle.PlayerUpdater playerUpdater; private EntityCycle mobUpdater; private Update update; public GameCycle(int revision) { try { update = (Update) Class.forName("com.jonathan.citrus.game.protocol.Update"+revision).newInstance(); playerUpdater = new PlayerUpdateCycle(getPlayerOpcode()); //mobUpdater = new MobUpdateCycle(getMobOpcode()); } catch (Exception e) { e.printStackTrace(); } } /** * The update method for players * checks for nulls for people doing login * and no support for updating at that time. * @param player */ public void update(Player player) { if(playerUpdater != null) { playerUpdater.update(player); } if(mobUpdater != null) { mobUpdater.update(player); } //grounditem update } public int getMobOpcode() { return update.getMobOpcode(); } public int getPlayerOpcode() { return update.getPlayerOpcode(); } public Update getUpdate() { return update; } public int doPlayerMaskHash(Player player, boolean newPlayer) { return update.getMaskHash(player, newPlayer); } public int doMobMaskHash(Mob mob) { return update.getMaskHash(mob); } public Packet doAppearanceBlock(Player player) { return update.doAppearanceBlock(player); } public Packet doMaskBlock(Player player) { return playerUpdater.doMaskBlock(player); } public Packet doMaskBlock(Mob mob) { return mobUpdater.doMaskBlock(mob); } }