package fight3D; import framework.animation.Animation3D; import framework.audio.Sound3D; import framework.gameMain.Mode; import framework.gameMain.ModeOnGround; import framework.gameMain.ActorModel; import framework.physics.Velocity3D; public class Character extends ActorModel { private String name, comment; private String attackingPartName = null; private String upperAttackingPartName = null; private String jumpAttackingPartName = null; private long attackTimeLag = 0; private long upperAttackTimeLag = 0; private long jumpAttackTimeLag = 0; private WeaponModel weaponModel, upperWeaponModel, jumpWeaponModel; private Velocity3D weaponSpeed = new Velocity3D(4.0, 0.0, 0.0); private Velocity3D upperWeaponSpeed = new Velocity3D(4.0, 0.0, 0.0); private Velocity3D jumpWeaponSpeed = new Velocity3D(4.0, 0.0, 0.0); private double runSpeed = 5.0, jumpPower = 10.0; private int p, jf, d, s; private static Animation3D defaultAnimation = new Animation3D(); public Animation3D rightMoveAnimation = defaultAnimation; public Animation3D leftMoveAnimation = defaultAnimation; public Animation3D jumpAnimation = defaultAnimation; public Animation3D damagedAnimation = defaultAnimation; public Animation3D attackAnimation = defaultAnimation; public Animation3D upperAttackAnimation = defaultAnimation; public Animation3D jumpAttackAnimation = defaultAnimation; public Sound3D jumpSound = null; public Sound3D attackSound = null; public Sound3D upperAttackSound = null; public Sound3D jumpAttackSound = null; public Sound3D damagedSound = null; public Character(String fileName) { super(fileName); } /** * アニメーションを返す * @param m プレイヤーのモード * @param s プレイヤーの状態 * @return アニメーション */ public Animation3D getAnimation(Mode m, State s) { if(m instanceof ModeOnGround) { //左右に動くアニメーションは地上にいるときのみ if(s instanceof StateLeftMove) { return new Animation3D(leftMoveAnimation); } else if(s instanceof StateRightMove) { return new Animation3D(rightMoveAnimation); } } if(s instanceof StateJump) { return new Animation3D(jumpAnimation); } else if(s instanceof StateAttack){ return new Animation3D(attackAnimation); } else if(s instanceof StateUpperAttack){ return new Animation3D(upperAttackAnimation); } else if(s instanceof StateJumpAttack){ return new Animation3D(jumpAttackAnimation); } else if(s instanceof StateDamaged){ return new Animation3D(damagedAnimation); } return new Animation3D(defaultAnimation); } /** * 効果音を返す * @param m プレイヤーのモード * @param s プレイヤーの状態 * @return 効果音 */ public Sound3D getSoundEffect(Mode m, State s) { if(s instanceof StateJump) { return jumpSound; } else if(s instanceof StateAttack){ return attackSound; } else if(s instanceof StateUpperAttack){ return upperAttackSound; } else if(s instanceof StateJumpAttack){ return jumpAttackSound; } else if(s instanceof StateDamaged){ return damagedSound; } return null; } // public Attackable getAttackable(Player p){ // Attackable a = new AttackingPart(attackingPartName , p); // return a; // } public void setName(String n) { name = n; } public String getName() { return name; } public void setComment(String comment) { this.comment = comment; } public String getComment() { return comment; } // 攻撃する部分の名前(通常攻撃、上向きの攻撃、下向きの攻撃) public void setAttackingPartName(String apn) { attackingPartName = apn; } public String getAttackingPartName() { return attackingPartName; } public void setUpperAttackingPartName(String s) { upperAttackingPartName = s; } public String getUpperAttackingPartName() { return upperAttackingPartName; } public void setJumpAttackingPartName(String s) { jumpAttackingPartName = s; } public String getJumpAttackingPartName() { return jumpAttackingPartName; } // 武器モデル(通常攻撃、上向きの攻撃、下向きの攻撃) public void setWeaponModel(WeaponModel w) { weaponModel = w; } public WeaponModel getWeaponModel() { return weaponModel; } public void setUpperWeaponModel(WeaponModel w) { upperWeaponModel = w; } public WeaponModel getUpperWeaponModel() { return upperWeaponModel; } public void setJumpWeaponModel(WeaponModel w) { jumpWeaponModel = w; } public WeaponModel getJumpWeaponModel() { return jumpWeaponModel; } //飛び道具の速さ(通常攻撃、上向きの攻撃、下向きの攻撃) public void setWeaponSpeed(double x, double y, double z) { this.weaponSpeed = new Velocity3D(x, y, z); } public Velocity3D getWeaponSpeed() { return weaponSpeed; } public void setUpperWeaponSpeed(double x, double y, double z) { upperWeaponSpeed = new Velocity3D(x, y, z); } public Velocity3D getUpperWeaponSpeed() { return upperWeaponSpeed; } public void setJumpWeaponSpeed(double x, double y, double z) { jumpWeaponSpeed = new Velocity3D(x, y, z); } public Velocity3D getJumpWeaponSpeed() { return jumpWeaponSpeed; } //移動の速さ public void setRunSpeed(double rs) { this.runSpeed = rs; } public double getRunSpeed() { return runSpeed; } //攻撃力 public void setPower(int p) { this.p = p; } public int getPower() { return p; } //ジャンプ力 public void setJumpPower(double e) { this.jumpPower = e; } public double getJumpPower() { return jumpPower; } //ジャンプ回数 public void setJumpFrequency(int jf) { this.jf = jf; } public int getJumpFrequency() { return jf; } //防御力 public void setDefense(int d) { this.d = d; } public int getDefense() { return d; } public void setSize(int s) { this.s = s; } public int getSize() { return s; } //WeaponとAttackingPartとどちらを持っているかを聞くメソッド public boolean hasAttackingPart(){ if(getAttackingPartName() != null) return true; else return false; } public boolean hasUpperAttackingPart(){ if(getUpperAttackingPartName() != null) return true; else return false; } public boolean hasJumpAttackingPart(){ if(getJumpAttackingPartName() != null) return true; else return false; } public void setAttackTimeLag(long attackTimeLag) { this.attackTimeLag = attackTimeLag; } public long getAttackTimeLag() { return attackTimeLag; } public void setUpperAttackTimeLag(long upperAttackTimeLag) { this.upperAttackTimeLag = upperAttackTimeLag; } public long getUpperAttackTimeLag() { return upperAttackTimeLag; } public void setJumpAttackTimeLag(long jumpAttackTimeLag) { this.jumpAttackTimeLag = jumpAttackTimeLag; } public long getJumpAttackTimeLag() { return jumpAttackTimeLag; } }