using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using DxLibDLL;
namespace DesignProject
{
class BattleManager
{
//仕事はダメージ計算して抱える事
//技のインデックス抱える事
//死亡判定とか速度判定とか
public int my_chara_select { get; set; }
public int enemy_chara_select { get; set; }
//戦闘ルーチン用
//戦闘に出ているキャラクターindex
public int my_art_select { get; set; }
public int enemy_art_select { get; set; }
//技のindex
System system;
//システムとかも持たせるとか
public BattleManager(System system)
{
this.system = system;
this.my_art_select = 0;
this.my_chara_select = 0;
this.enemy_art_select = 0;
this.enemy_chara_select = 0;
}
public void DrawState()//状態等描画
{
//無い状態なので参照禁止
//状態描画
//HPとかキャラとか
DX.DrawBox(100, 20, 200, 30, DX.GetColor(255, 255, 255), DX.FALSE);
DX.DrawBox(100, 20, 100 + ((int)(100 * (
(double)system.player.characterManager.characterList[my_chara_select].Life /
(double)system.player.characterManager.characterList[my_chara_select].LifeMax))),
30, DX.GetColor(255, 255, 255), DX.TRUE);
//自分の戦闘キャラのHPバー
DX.DrawBox(300, 20, 400, 30, DX.GetColor(255, 255, 255), DX.FALSE);
DX.DrawBox(300, 20, 300 + ((int)(100 * (
(double)system.enemy_player.characterManager.characterList[enemy_chara_select].Life /
(double)system.enemy_player.characterManager.characterList[enemy_chara_select].LifeMax))),
30, DX.GetColor(255, 255, 255), DX.TRUE);
system.resource.DrawGraph(0, 0, system.resource.GetGraphHandle(system.player.characterManager.characterList[my_chara_select].imageID), DX.TRUE);
system.resource.DrawGraph(0, 0, system.resource.GetGraphHandle(system.enemy_player.characterManager.characterList[enemy_chara_select].imageID), DX.TRUE);
}
public void DrawBattle()
{
//player1側のキャラが素早い
if (system.player.characterManager.characterList[my_chara_select].speed >= system.enemy_player.characterManager.characterList[enemy_chara_select].speed)
{
//1の攻撃
int damage = system.player.characterManager.characterList[my_chara_select].attack +
system.player.characterManager.characterList[my_chara_select].arts[my_art_select].power;
system.enemy_player.characterManager.characterList[enemy_chara_select].Life -= damage;
DX.DrawString(0, 0,system.player.characterManager.characterList[my_chara_select].name + "は" +
system.enemy_player.characterManager.characterList[enemy_chara_select].name + "に" +
damage.ToString() + "ダメージ与えた", DX.GetColor(255, 255, 255));
//2の死亡判定
if (system.enemy_player.characterManager.characterList[enemy_chara_select].Life <= 0)//HPが0以下
{
DX.DrawString(0, 0,system.enemy_player.characterManager.characterList[enemy_chara_select].name + "は倒れた", DX.GetColor(255, 255, 255));
enemy_chara_select++;//次のキャラへ
if (enemy_chara_select == 3)//全滅
{
DX.DrawString(0, 0, "相手の手持ちは全滅しました", DX.GetColor(255, 255, 255));
DX.DrawString(0, 0, "あなたの勝ちです", DX.GetColor(255, 255, 255));
//終了処理
//system.isClose = true;//上位のsysytemにアクセス
}
return;//相手側が死んだので相手側の攻撃は無し
}
//2の攻撃
damage = system.enemy_player.characterManager.characterList[enemy_chara_select].attack +
system.enemy_player.characterManager.characterList[enemy_chara_select].arts[enemy_art_select].power;
system.player.characterManager.characterList[my_chara_select].Life -= damage;
DX.DrawString(0, 0, system.enemy_player.characterManager.characterList[enemy_chara_select].name + "は" +
system.player.characterManager.characterList[my_chara_select].name + "に" +
damage.ToString() + "ダメージ与えた", DX.GetColor(255, 255, 255));
//1の死亡判定
if (system.player.characterManager.characterList[my_chara_select].Life <= 0)
{
DX.DrawString(0, 0, system.player.characterManager.characterList[my_chara_select].name + "は倒れた", DX.GetColor(255, 255, 255));
my_chara_select++;
if (my_chara_select == 3)//全員死んでいたら
{
DX.DrawString(0, 0, "あなたの手持ちは全滅しました", DX.GetColor(255, 255, 255));
DX.DrawString(0, 0, "相手の勝ちです", DX.GetColor(255, 255, 255));
//終了処理
}
}
}
//player2側のキャラが素早い
else if (system.player.characterManager.characterList[my_chara_select].speed < system.enemy_player.characterManager.characterList[enemy_chara_select].speed)
{
//2の攻撃
int damage = system.enemy_player.characterManager.characterList[enemy_chara_select].attack +
system.enemy_player.characterManager.characterList[enemy_chara_select].arts[enemy_art_select].power;
system.player.characterManager.characterList[my_chara_select].Life -= damage;
DX.DrawString(0, 0, system.enemy_player.characterManager.characterList[enemy_chara_select].name + "は" +
system.player.characterManager.characterList[my_chara_select].name + "に" +
damage.ToString() + "ダメージ与えた", DX.GetColor(255, 255, 255));
//1の死亡判定
if (system.player.characterManager.characterList[my_chara_select].Life <= 0)
{
DX.DrawString(0, 0, system.player.characterManager.characterList[my_chara_select].name + "は倒れた", DX.GetColor(255, 255, 255));
my_chara_select++;
if (my_chara_select == 3)//全員死んでいたら
{
DX.DrawString(0, 0, "あなたの手持ちは全滅しました", DX.GetColor(255, 255, 255));
DX.DrawString(0, 0, "相手の勝ちです", DX.GetColor(255, 255, 255));
//終了処理
}
return;//自分側が死んだので自分側の攻撃は無し
}
//1の攻撃
damage = system.player.characterManager.characterList[my_chara_select].attack +
system.player.characterManager.characterList[my_chara_select].arts[my_art_select].power;
system.enemy_player.characterManager.characterList[enemy_chara_select].Life -= damage;
DX.DrawString(0, 0, system.player.characterManager.characterList[my_chara_select].name + "は" +
system.enemy_player.characterManager.characterList[enemy_chara_select].name + "に" +
damage.ToString() + "ダメージ与えた", DX.GetColor(255, 255, 255));
//2の死亡判定
if (system.enemy_player.characterManager.characterList[enemy_chara_select].Life <= 0)//HPが0以下
{
DX.DrawString(0, 0, system.enemy_player.characterManager.characterList[enemy_chara_select].name + "は倒れた", DX.GetColor(255, 255, 255));
enemy_chara_select++;//次のキャラへ
if (enemy_chara_select == 3)//全滅
{
DX.DrawString(0, 0, "相手の手持ちは全滅しました", DX.GetColor(255, 255, 255));
DX.DrawString(0, 0, "あなたの勝ちです", DX.GetColor(255, 255, 255));
//終了処理
//system.isClose = true;//上位のsysytemにアクセス
}
}
}
}
}
}
最終更新:2011年01月17日 22:40