// ======================= // private メソッド // ======================= // ======================= // public メソッド // ======================= /** * {@inheritDoc}<br> * 攻撃側プレイヤー(atacker)のMPが魔法の消費MPに足りている場合は * @param attacker {@inheritDoc} * @param defender {@inheritDoc} */ public override void Attack(Player activePlayer, List <Player> passiveMembers) { Debug.Log("Wizard Attack"); //攻撃対象の決定 Player passivePlayer = passiveMembers[0]; if (passiveMembers.Count > 1) { passivePlayer = passiveMembers[UnityEngine.Random.Range(0, passiveMembers.Count - 1)]; } //使用する魔法を決定する Magic UseMagic = this.attackMagic[UnityEngine.Random.Range(0, attackMagic.Length)]; Debug.Log(string.Format("Wizard Attack {0}", UseMagic.GetName())); if (UseMagic.GetUseMP() <= this.mp) { Debug.Log("Wizard Attack 魔法使えるとき"); UseMagic.effect(activePlayer, passivePlayer); return; } // 与えるダメージを求める LogText.AddLog(string.Format("{0} の 攻撃!", activePlayer.GetName())); int damage = activePlayer.CalcDamage(passivePlayer); // 求めたダメージを対象プレイヤーに与える LogText.AddLog(string.Format("{0} に {1} のダメージ!", passivePlayer.GetName(), damage)); passivePlayer.Damage(damage); passivePlayer.Down(); }
/// <summary> /// PlayerのHPがゼロになったときに表示する /// </summary> public void Down() { if (this.hp == 0) { LogText.AddLog(string.Format("{0}は力尽きた...", this.name)); } }
void Update() { if (Network.peerType == NetworkPeerType.Disconnected) { LogText.AddLog("斷線中"); ConnectServer(); } if (Network.peerType == NetworkPeerType.Client) { LogText.AddLog("與SERVER保持連線中1"); } if (Network.peerType == NetworkPeerType.Connecting) { LogText.AddLog("與SERVER保持連線中2"); } LogText.AddLog("touchCount:(" + Input.touchCount + ")"); if (Input.touchCount == 1) { onConnect = false; ConnectServer(); } if (Input.touchCount == 2) { MasterServer.ClearHostList(); MasterServer.RequestHostList("CardBoard"); } }
void ConnectServer() { if (onConnect) { return; } HostData[] datas = MasterServer.PollHostList(); LogText.AddLog("datas " + datas); if (datas.Length > 0) { LogText.AddLog("datas.Length " + datas.Length); HostData data = datas [0]; LogText.AddLog("ip:(" + data.ip + ") port(" + data.port + ")"); if (data != null) { Network.Connect(data); onConnect = true; LogText.AddLog("Connect to server!"); } } }
public void UpdateBoardQuaternion(Quaternion quaternion) { if (quaternion == null) { return; } transform.localRotation = quaternion; LogText.AddLog("Do UpdateRotateBoard(" + quaternion + ") \r\n"); }
public void UpdateBall(Quaternion quaternion, Vector3 position) { if (quaternion == null || position == null) { return; } transform.localRotation = quaternion; transform.position = position; LogText.AddLog("Do UpdateBall(quaternion:" + quaternion + ", position:" + position + ") \r\n"); }
// ======================= // protected メソッド // ======================= // ======================= // private メソッド // ======================= // ======================= // public メソッド // ======================= /** * 対称プレーヤーの体力を回復する * @param activePlayer {@inheritDoc} * @param passivePlayer {@inheritDoc} */ public override void effect(Player activePlayer, Player passivePlayer) { // HPを 50 回復する activePlayer.UseMP(this.usemp); LogText.AddLog(string.Format("{0} の {1}!", activePlayer.GetName(), this.name)); LogText.AddLog(string.Format("{0} の HP が {1} 回復した!", passivePlayer.GetName(), this.recoverhp)); passivePlayer.RecoverHP(this.recoverhp); }
// ======================= // protected メソッド // ======================= // ======================= // private メソッド // ======================= // ======================= // public メソッド // ======================= /** * 対称プレーヤーに電撃を加える * @param activePlayer {@inheritDoc} * @param passivePlayer {@inheritDoc} */ public override void effect(Player activePlayer, Player passivePlayer) { // MPが足りている場合の処理 int damage = UnityEngine.Random.Range(10, 30); activePlayer.UseMP(this.usemp); LogText.AddLog(string.Format("{0} の {1}!", activePlayer.GetName(), this.name)); LogText.AddLog($"{passivePlayer.GetName()} に {damage} のダメージ!"); passivePlayer.Damage(damage); }
public GameManager() { Debug.Log("GM Start"); this.battleResult = 0; turnNumber = 0; // プレイヤーの準備 this.enemyMembers = new Party(BattleStart.enemyMembers); this.partyMembers = new Party(BattleStart.partyMembers); // 作戦の決定 this.enemyMembers.ChangeStrategy(new DefaultStrategy()); this.partyMembers.ChangeStrategy(new DefaultStrategy()); string objectName = "StrategyName"; Debug.Log("検索するオブジェクト名" + objectName); var content = GameObject.Find(objectName); Debug.Log(content); this.strategytext = content.GetComponent <Text>(); this.strategytext.text = "作戦 : バランスよく"; LogText.Reset(); StatusReflection(); objectName = "Content"; Debug.Log("検索するオブジェクト名" + objectName); content = GameObject.Find(objectName); logtext = content.GetComponentInChildren <Text>(); // バトル開始の表示 if (turnNumber == 0) { LogText.AddLog("=== バトル開始 ==="); } turnNumber = 1; StatusPrint(); logtext.text = LogText.GetLog(); Debug.Log("パーティーのメンバー確認"); foreach (Player p in this.partyMembers.GetMembers()) { Debug.Log(p.GetName()); } Debug.Log("エネミーのメンバー確認"); foreach (Player p in this.enemyMembers.GetMembers()) { Debug.Log(p.GetName()); } }
// ======================= // Getter / Setter // ======================= // ======================= // protected メソッド // ======================= // ======================= // private メソッド // ======================= // ======================= // public メソッド // ======================= /** * 対称プレーヤーに毒状態を付与する<br> * MPが足りない場合は、MPが足りないことを System.out で表示する<br> * MPが足りている場合 かつ 毒状態になっていない場合、毒状態にする<br> * MPが足りている場合 かつ 毒状態になっている場合、毒にかかっていることを System.out で表示する<br> * @param activePlayer {@inheritDoc} * @param passivePlayer {@inheritDoc} */ public override void effect(Player activePlayer, Player passivePlayer) { // MPが足りている場合 LogText.AddLog(string.Format("{0} の {1}!", activePlayer.GetName(), this.name)); activePlayer.UseMP(this.usemp); // 毒にかかっているかの判定 if (passivePlayer.isPoison() == false) { // 対称プレイヤーが毒にかかってない場合 activePlayer.SetPoison(true); LogText.AddLog(string.Format("{0} は 毒 にかかった", passivePlayer.GetName())); } else { // 対称プレイヤーが毒にかかっている場合 LogText.AddLog(string.Format("{0} は すでに毒にかかっている", passivePlayer.GetName())); } }
// ======================= // Getter / Setter // ======================= // ======================= // protected メソッド // ======================= // ======================= // private メソッド // ======================= // ======================= // public メソッド // ======================= /** * 防御側プレイヤーを確率で毒状態にする * @param activePlayer : 魔法を行使するプレイヤー * @param passivePlayer : 対象プレイヤー */ public override void effect(Player activePlayer, Player passivePlayer) { // MPが足りている場合の処理 // 魔法を行使する側のMPを使用する LogText.AddLog(string.Format("{0} の {1}!", activePlayer.GetName(), this.name)); activePlayer.UseMP(this.usemp); // 魔法の成功判定をする if (RandomGenerator.RandomJudge(20)) { // 判定に成功した時 passivePlayer.SetParalyze(true); LogText.AddLog(string.Format("{0} は 麻痺 にかかった", passivePlayer.GetName())); } else { // 判定に失敗した時 LogText.AddLog(string.Format("{0} には何も起こらなかった", passivePlayer.GetName())); } }
// ======================= // private メソッド // ======================= // ======================= // public メソッド // ======================= /// <summary> /// <inheritdoc/> /// </summary> /// <param name="activePlayer"><inheritdoc/></param> /// <param name="passiveMembers"><inheritdoc/></param> public override void Attack(Player activePlayer, List <Player> passiveMembers) { //攻撃対象の決定 Player passivePlayer = passiveMembers[0]; if (passiveMembers.Count > 1) { passivePlayer = passiveMembers[UnityEngine.Random.Range(0, passiveMembers.Count - 1)]; } // 与えるダメージを求める LogText.AddLog(string.Format("{0} の攻撃!", activePlayer.GetName())); int damage = activePlayer.CalcDamage(passivePlayer); // 求めたダメージを対象プレイヤーに与える LogText.AddLog(string.Format("{0}に {1} のダメージ!", passivePlayer.GetName(), damage)); passivePlayer.Damage(damage); passivePlayer.Down(); }
/** * プレイヤー全員のステータスをパーティーごとに表示する */ public void StatusPrint() { Debug.Log("GM StatusPrint"); LogText.AddLog("== 敵パーティーのステータス =="); // パーティー1のステータスの表示 for (int i = 0; i < 3; i++) { // if (enemyMembers.GetMembers().get(i).GetHP() > 0) { LogText.AddLog(enemyMembers.GetMembers()[i].PrintStatus()); // } } LogText.AddLog("== 自パーティーのステータス =="); // パーティー2のステータスの表示 for (int i = 0; i < partyMembers.GetMembers().Count; i++) { // if (enemyMembers.GetMembers().get(i).GetHP() > 0) { LogText.AddLog(partyMembers.GetMembers()[i].PrintStatus()); // } } }
public void Start() { Debug.Log("GM Start"); this.battleResult = 0; turnNumber = 0; // プレイヤーの準備 enemyMembers = BattleStart.enemyMembers; partyMembers = BattleStart.partyMembers; aliveMembers = enemyMembers.GetMembers(); aliveMembers.AddRange(partyMembers.GetMembers()); enemyMembers.ChangeStrategy(new DefaultStrategy()); partyMembers.ChangeStrategy(new DefaultStrategy()); var content = GameObject.Find("StrategyName"); this.strategytext = content.GetComponent <Text>(); this.strategytext.text = "作戦 : バランスよく"; // 作戦の決定 StatusReflection(); string objectName = "Content"; Debug.Log("検索するオブジェクト名" + objectName); content = GameObject.Find(objectName); logtext = content.GetComponentInChildren <Text>(); // バトル開始の表示 if (turnNumber == 0) { LogText.AddLog("=== バトル開始 ==="); } turnNumber = 1; StatusPrint(); logtext.text = LogText.GetLog(); }
// Update is called once per frame void Update() { if (Network.peerType == NetworkPeerType.Server) { LogText.AddLog("玩家數量:" + Network.connections.Length); Debug.Log("玩家數量:" + Network.connections.Length); if ((Input.touchCount > 0 || Input.GetKeyDown(KeyCode.R)) && Network.connections.Length > 0) { LogText.AddLog("重置球的位置"); ball.transform.position = pos; } if (GetComponent <NetworkView> ()) { if (ball != null) { GetComponent <NetworkView> ().RPC("UpdateBall", RPCMode.Server, ball.transform.localRotation, ball.transform.position); } if (board != null) { GetComponent <NetworkView> ().RPC("UpdateBoardQuaternion", RPCMode.Server, board.transform.localRotation); } } } else if (Network.peerType == NetworkPeerType.Disconnected) { Debug.Log("Server Start"); Network.InitializeServer(99, 9997, !Network.HavePublicAddress()); MasterServer.RegisterHost("CardBoard", "RollBall", "alpha 1.0"); if (Network.peerType == NetworkPeerType.Server) { Debug.Log("玩家數量:" + Network.connections.Length); LogText.AddLog("玩家數量:" + Network.connections.Length); } } }
/// <summary> /// 対象プレイヤー(target)に対して与えるダメージを計算する /// </summary> /// <param name="target">対象プレイヤー</param> /// <returns>ダメージ値(0~)</returns> public int CalcDamage(Player target) { int critical = UnityEngine.Random.Range(1, 100); int damage; // 剣を持っているかどうか // 会心の一撃かどうか if (GetLUCK() > critical) { LogText.AddLog("会心の一撃!"); return(GetSTR()); } damage = str - target.GetDEF(); if (damage < 0) { return(0); } return(damage); }
// ======================= // Getter / Setter // ======================= // ======================= // protected メソッド // ======================= // ======================= // private メソッド // ======================= // ======================= // public メソッド // ======================= /** * 対称プレーヤーに毒状態を付与する<br> * MPが足りない場合は、MPが足りないことを System.out で表示する<br> * MPが足りている場合 かつ 毒状態になっている場合、毒を解除するにする<br> * MPが足りている場合 かつ 麻痺状態になっている場合、麻痺状態を解除する<br> * @param activePlayer {@inheritDoc} * @param passivePlayer {@inheritDoc} */ public override void effect(Player activePlayer, Player passivePlayer) { // MPが足りている場合 LogText.AddLog(string.Format("{0} の {1}!", activePlayer.GetName(), this.name)); activePlayer.UseMP(this.usemp); // 毒にかかっているかの判定 if (passivePlayer.isPoison() == true) { // 対称プレイヤーが毒状態の場合 activePlayer.SetPoison(false); LogText.AddLog(string.Format("{0} の 毒 が解除された!", passivePlayer.GetName())); return; } // 麻痺にかかっているかの判定 if (passivePlayer.isParalyze() == true) { activePlayer.SetParalyze(false); LogText.AddLog(string.Format("{0} の 麻痺 が解除された!", passivePlayer.GetName())); return; } }
void UpdateBoardQuaternion(Quaternion quaternion) { LogText.AddLog("Get UpdateRotateBoard(" + quaternion + ") \r\n"); GameObject.FindObjectOfType <RemoteBoard>().UpdateBoardQuaternion(quaternion); }
void UpdateBall(Quaternion quaternion, Vector3 position) { LogText.AddLog("Get UpdateBall(quaternion:" + quaternion + ", position:" + position + ") \r\n"); GameObject.FindObjectOfType <RemoteBall>().UpdateBall(quaternion, position); }
public void NextTurn() { Debug.Log("GameManager NextTurn "); // ================================================== // バトル処理 // ================================================== LogText.AddLog(string.Format("- ターン{0} -{1}", turnNumber, System.Environment.NewLine)); this.phaseNumber = 0; // 行動できる人間がいる間繰り返す while (0 < partyMembers.FastestMembers().Count + enemyMembers.FastestMembers().Count) { // Debug用 Debug.Log("パーティーのメンバー確認"); foreach (Player p in this.partyMembers.GetMembers()) { Debug.Log(p.GetName()); } Debug.Log("エネミーのメンバー確認"); foreach (Player p in this.enemyMembers.GetMembers()) { Debug.Log(p.GetName()); } Debug.Log(string.Format("{0}={1}({2} + {3})", this.phaseNumber, partyMembers.FastestMembers().Count + enemyMembers.FastestMembers().Count, partyMembers.FastestMembers().Count, enemyMembers.FastestMembers().Count)); // 未行動のプレイヤーで一番AGIが高いプレイヤーが攻撃する Player attacker = ComparateAGI(phaseNumber); // Debug用 Debug.Log("パーティーのメンバー確認"); foreach (Player p in this.partyMembers.GetMembers()) { Debug.Log(p.GetName()); } Debug.Log("エネミーのメンバー確認"); foreach (Player p in this.enemyMembers.GetMembers()) { Debug.Log(p.GetName()); } // 攻撃するプレイヤーの攻撃できる対象を決める Party TargetParty = ContainsParty(attacker); Debug.Log(attacker.GetName()); // paralyzeTurn 0 の時 if (attacker.GetParalyzeTurn() == 0 && attacker.isParalyze()) { Debug.Log("GameManager NextTurn 麻痺がとける時"); LogText.AddLog(string.Format("{0} の麻痺がとれた!\n", attacker.GetName())); attacker.RecoveryParalyze(); } LogText.AddLog(string.Format("▼ {0} の行動\n", attacker.GetName())); // 麻痺状態でない場合の処理 if (!attacker.isParalyze()) { Debug.Log("GameManager NextTurn 麻痺になってないとき"); //どちらのパーティーに所属しているか if (enemyMembers.isExists(attacker)) { Debug.Log(string.Format("{0} は敵パーティーに所属している", attacker.GetName())); attacker.Action(attacker, partyMembers); } else { Debug.Log(string.Format("{0} は味方パーティーに所属している", attacker.GetName())); attacker.Action(attacker, enemyMembers); } } else { Debug.Log("GameManager NextTurn 麻痺になっているとき"); LogText.AddLog(string.Format("{0} は身体が麻痺して動けない!\n", attacker.GetName())); } if (TargetParty.isLose()) { if (TargetParty == enemyMembers) { this.battleResult = 1; } else { this.battleResult = 2; } return; } if (attacker.isPoison()) { Debug.Log("GameManager NextTurn 毒状態の時"); attacker.ProcessPoison(); } // 全滅してるかどうか // してたらゲーム終了 if (TargetParty.isLose()) { if (TargetParty == enemyMembers) { this.battleResult = 0; } else { this.battleResult = 1; } } attacker.ChangeActive(false); Debug.Log(string.Format("GameManager NextTurn ChangeActive : {0}", attacker.isActive())); attacker.ChangeParalyzeTurn(); Debug.Log("GameManager NextTurn ChangeParalyzeTurn"); LogText.AddLog("--------------------------------"); this.phaseNumber++; } LogText.AddLog("================================="); // ターン終了時の処理 foreach (Player p in enemyMembers.AttackTarget()) { p.ChangeActive(true); } foreach (Player p in partyMembers.AttackTarget()) { p.ChangeActive(true); } StatusReflection(); logtext.text = LogText.GetLog(); turnNumber++; }