次は、襲撃と処刑の場合について考えてみます。
ただ、まだ日付更新の実装を全く考えていないので、とりあえずデータを読み込むことだけを考えてみます。
襲撃と処刑で変わる状態はキャラクターの生死フラグということになると思います。
ですから、そのための配列を用意します。
@Char_Life = ();
キャラクター毎に、生きているなら0を、死んでいるなら1を保持します。
これはキャラクター登場の際に0に初期化しておき、死んだら1をセットすれば良いでしょう。
昨日の読み込みのルーチンにそれを追加すると、以下のようになります。
if($Line_Type == 51){ $Char_Vote[$Line_Char_Index] = $data[0]; }elsif($Line_Type == 52){ $Exec_Attack[0] = $data[0]; $Exec_Attack[1] = $data[1]; }elsif($Line_Type == 53){ $Exec_Fortune[0] = $data[0]; $Exec_Fortune[1] = $data[1]; }elsif($Line_Type == 54){ $Exec_Guard[0] = $data[0]; $Exec_Guard[1] = $data[1]; }elsif($Line_Type == 81){ push(@Char_Name, $data[0]); push(@Char_Icon, $data[1]); push(@Char_Vote, -1); push(@Char_Life, 0); }elsif($Line_Type == 82 || $Line_Type == 83){ $Char_Life[$Line_Char_Index] = 1; } if($Day_Count_Max < $Line_Day){ $Day_Count_Max = $Line_Day; foreach $vote (@Char_Vote) { $vote = -1; } @Exec_Attack = (-1, -1); @Exec_Fortune = (-1, -1); @Exec_Guard = (-1, -1); }
キャラクター登場(81)の時に初期化し、襲撃成功(82)か処刑実行(83)のときに1をセットしています。
これで、キャラクターの生死フラグをデータとして保持することになります。
さて、読み込み部分は一通り終わったので、次は表示の方を実装します。