/// <summary> /// 報酬グリッドビューのセルが変更されたときに通知を受け取る。 /// </summary> /// <param name="sender">送信元オブジェクト</param> /// <param name="e">イベントオブジェクト</param> private void OnDataGridViewRewardItemsCellValueChanged(object sender, DataGridViewCellEventArgs e) { DataQuest quest = GetCurrentQuest(); if (quest == null) { return; } var index = e.RowIndex; if ((index < 0) || (index >= quest.RewardItems.Count)) { return; } RewardItem rewardItem = quest.RewardItems[e.RowIndex]; DataRow row = ((DataTable)(dataGridViewRewardItems.DataSource)).Rows[index]; switch (e.ColumnIndex) { case 1: { if (DBNull.Value.Equals(row[1])) { row[1] = rewardItem.Value; } else { int value = (int)(row[1]); rewardItem.Value = value; } } break; } }
/// <summary> /// アイテム名を得る。 /// </summary> /// <param name="rewardItem">報酬アイテムエントリ</param> /// <returns>報酬アイテム名</returns> private string GetRewardItemName(RewardItem rewardItem) { int kind = rewardItem.Kind; int id = rewardItem.DataId; if ((kind == 1) && (id > 0) && (id < items.Count)) { return(items[id].Name); } else if ((kind == 2) && (id > 0) && (id < weapons.Count)) { return(weapons[id].Name); } else if ((kind == 3) && (id > 0) && (id < armors.Count)) { return(armors[id].Name); } return(null); }
/// <summary> /// アイテムが選択された時に通知を受け取る。 /// </summary> /// <param name="sender">送信元オブジェクト</param> /// <param name="e">イベントオブジェクト</param> private void OnItemListItemSelected(object sender, EventArgs e) { IItem item = itemListForm.SelectedItem; DataQuest quest = GetCurrentQuest(); if ((item == null) || (quest == null)) { return; } RewardItem rewardItem = new RewardItem(); rewardItem.DataId = item.Id; rewardItem.Kind = GetItemKind(item); rewardItem.Value = 1; quest.RewardItems.Add(rewardItem); DataTable dt = (DataTable)(dataGridViewRewardItems.DataSource); var row = dt.NewRow(); SetRewardItemRow(row, rewardItem); dt.Rows.Add(row); }
/// <summary> /// rowにrewardItemをを設定する。 /// </summary> /// <param name="row">行</param> /// <param name="rewardItem">RewardItemオブジェクト</param> private void SetRewardItemRow(DataRow row, RewardItem rewardItem) { row[0] = GetItemName(rewardItem.Kind, rewardItem.DataId); row[1] = rewardItem.Value; }