// set model session // also save empty actions or specialability temporally private void UpdateModelSession() { if (Session["Model"] != null) { Character ch = Session["Model"] as Character; string originalName = ch.name; List <string> traits = new List <string>(); List <string> types = new List <string>(); List <string> defenseChart = new List <string>(); List <Action> actions = new List <Action>(); List <Specialability> specials = new List <Specialability>(); ch.name = txtName.Text; ch.faction = txtFaction.Text; if (!string.IsNullOrEmpty(txtRank.Text)) { ch.rank = Convert.ToInt32(txtRank.Text); } if (!string.IsNullOrEmpty(txtBase.Text)) { ch._base = Convert.ToInt32(txtBase.Text); } if (!string.IsNullOrEmpty(txtSize.Text)) { ch.size = Convert.ToInt32(txtSize.Text); } ch.deploymentZone = txtDeploymentZone.Text; traits = txtTraits.Text.Replace(", ", ",").Split(',').ToList(); ch.traits = traits.ToArray(); types = txtTypes.Text.Replace(", ", ",").Split(',').ToList(); ch.types = types.ToArray(); defenseChart = txtDefenseChart.Text.Replace(", ", ",").Split(',').ToList(); ch.defenseChart = defenseChart.ToArray(); if (!string.IsNullOrEmpty(txtMobility.Text)) { ch.mobility = Convert.ToInt32(txtMobility.Text); } if (!string.IsNullOrEmpty(txtWillpower.Text)) { ch.willpower = Convert.ToInt32(txtWillpower.Text); } if (!string.IsNullOrEmpty(txtResiliance.Text)) { ch.resiliance = Convert.ToInt32(txtResiliance.Text); } if (!string.IsNullOrEmpty(txtWounds.Text)) { ch.wounds = Convert.ToInt32(txtWounds.Text); } // set imageUrl if (!string.IsNullOrWhiteSpace(txtImageUrl.Text)) { ch.imageUrl = txtImageUrl.Text; } else { switch (txtFaction.Text) { case "Nasier": ch.imageUrl = "http://www.orderofgamers.com/wordpress/wp-content/uploads/2013/08/wok_nasier.jpg"; break; case "Hadross": ch.imageUrl = "http://www.beastsofwar.com/wp-content/uploads/2013/08/House-of-Hadross2.jpg"; break; case "Goritsi": ch.imageUrl = "http://www.orderofgamers.com/wordpress/wp-content/uploads/2013/08/wok_goritsi.jpg"; break; case "Shael Han": ch.imageUrl = "http://www.orderofgamers.com/wordpress/wp-content/uploads/2013/08/wok_shaelhan.jpg"; break; case "Teknes": ch.imageUrl = "http://www.orderofgamers.com/wordpress/wp-content/uploads/2013/08/wok_teknes.jpg"; break; default: ch.imageUrl = "http://cdn.playbuzz.com/cdn/7121cb79-6e02-4f50-8208-72b3241734eb/80a7496c-e78d-4d43-9f3f-3604314bc369.jpg"; break; } } // actions // do not filter empty action foreach (RepeaterItem item in updateActionRepeater.Items) { Action action = new Action(); action.name = (item.FindControl("txtActName") as TextBox).Text; action.type = (item.FindControl("txtActType") as TextBox).Text; action.rating = Convert.ToInt32((item.FindControl("txtActRating") as TextBox).Text); action.range = (item.FindControl("txtActRange") as TextBox).Text; action.description = (item.FindControl("txtActDesc") as TextBox).Text; actions.Add(action); } ch.actions = actions.ToArray(); // specialability // do not filter empty specialability foreach (RepeaterItem item in updateSpecialRepeater.Items) { Specialability special = new Specialability(); special.name = (item.FindControl("txtSpecialName") as TextBox).Text; special.description = (item.FindControl("txtSpecialDesc") as TextBox).Text; specials.Add(special); } ch.specialAbilities = specials.ToArray(); Session["Model"] = ch; } }
//save to JSON file protected void saveBtn_Click(object sender, EventArgs e) { _Model.name = nameTxt.Text; _Model.faction = factionTxt.Text; _Model.rank = Convert.ToInt32(rankTxt.Text); _Model._base = Convert.ToInt32(baseTxt.Text); _Model.size = Convert.ToInt32(sizeTxt.Text.Remove(sizeTxt.Text.Length - 2, 2)); // remove "mm" from textbox to avoid exception _Model.deploymentZone = deploymentZoneTxt.Text; _Model.mobility = Convert.ToInt32(mobilityTxt.Text); _Model.willpower = Convert.ToInt32(willpowerTxt.Text); _Model.resiliance = Convert.ToInt32(resilianceTxt.Text); _Model.wounds = Convert.ToInt32(woundsTxt.Text); // declare a TextBox since texboxes from repeater are not accessible TextBox specialName = new TextBox(); TextBox specialDesc = new TextBox(); TextBox actionName = new TextBox(); TextBox actionType = new TextBox(); TextBox actionRating = new TextBox(); TextBox actionRange = new TextBox(); TextBox actionDescription = new TextBox(); TextBox[] traits = new TextBox[traitsRepeater.Items.Count]; TextBox[] types = new TextBox[typesRepeater.Items.Count]; TextBox[] defenseChartItems = new TextBox[defenseChartRepeater.Items.Count]; Models.Action[] actions = null; Specialability[] specialAbilities = null; if (_Model.specialAbilities == null) { specialAbilitiesRepeater.Visible = false; } else { specialAbilities = new Specialability[_Model.specialAbilities.Length]; } if (_Model.actions == null) { actionsRepeater.Visible = false; } else { actions = new Models.Action[_Model.actions.Length]; } // loop trough each item of the special abilities repeater foreach (RepeaterItem item in specialAbilitiesRepeater.Items) { specialName = (TextBox)item.FindControl("specialAbName"); specialDesc = (TextBox)item.FindControl("specialAbDesc"); specialAbilities[item.ItemIndex] = new Specialability { name = specialName.Text, description = specialDesc.Text }; } _Model.specialAbilities = specialAbilities; // loop trough each item of the actions repeater foreach (RepeaterItem item in actionsRepeater.Items) { actionName = (TextBox)item.FindControl("actionName"); actionType = (TextBox)item.FindControl("actionType"); actionRating = (TextBox)item.FindControl("actionRating"); actionRange = (TextBox)item.FindControl("actionRange"); actionDescription = (TextBox)item.FindControl("actionDescription"); actions[item.ItemIndex] = new Models.Action { name = actionName.Text, type = actionType.Text, rating = Convert.ToInt32(actionRating.Text), range = actionRange.Text, description = actionDescription.Text }; } _Model.actions = actions; // assign values of textBoxes foreach (RepeaterItem item in traitsRepeater.Items) { traits[item.ItemIndex] = (TextBox)item.FindControl("trait"); } // add traits to the traits array for (int i = 0; i < traitsRepeater.Items.Count; i++) { _Model.traits[i] = traits[i].Text; } // assign values of textBoxes foreach (RepeaterItem item in typesRepeater.Items) { types[item.ItemIndex] = (TextBox)item.FindControl("type"); } // add traits to the traits array for (int i = 0; i < typesRepeater.Items.Count; i++) { _Model.types[i] = types[i].Text; } // add textboxes of the repeater to the textbox array foreach (RepeaterItem item in defenseChartRepeater.Items) { defenseChartItems[item.ItemIndex] = (TextBox)item.FindControl("defenseChartItem"); } // add defense item to the appropriate index in the defenseChartArray array for (int i = 0; i < defenseChartRepeater.Items.Count; i++) { _Model.defenseChart[i] = defenseChartItems[i].Text; } // update the new JSON file and redirect back to model page Global.UpdateModelCollection(); Response.Redirect(string.Format("SingleModel.aspx?name={0}&faction={1}", name, faction)); }
// set model session // also save empty actions or specialability temporally private void UpdateNewModelSession() { Character ch = new Character(); List <string> traits = new List <string>(); List <string> types = new List <string>(); List <string> defenseChart = new List <string>(); List <Action> actions = new List <Action>(); List <Specialability> specials = new List <Specialability>(); ch.name = txtName.Text; ch.faction = txtFaction.Text; if (!string.IsNullOrEmpty(txtRank.Text)) { ch.rank = Convert.ToInt32(txtRank.Text); } if (!string.IsNullOrEmpty(txtBase.Text)) { ch._base = Convert.ToInt32(txtBase.Text); } if (!string.IsNullOrEmpty(txtSize.Text)) { ch.size = Convert.ToInt32(txtSize.Text); } ch.deploymentZone = txtDeploymentZone.Text; traits = txtTraits.Text.Replace(", ", ",").Split(',').ToList(); ch.traits = traits.ToArray(); types = txtTypes.Text.Replace(", ", ",").Split(',').ToList(); ch.types = types.ToArray(); defenseChart = txtDefenseChart.Text.Replace(", ", ",").Split(',').ToList(); ch.defenseChart = defenseChart.ToArray(); if (!string.IsNullOrEmpty(txtMobility.Text)) { ch.mobility = Convert.ToInt32(txtMobility.Text); } if (!string.IsNullOrEmpty(txtWillpower.Text)) { ch.willpower = Convert.ToInt32(txtWillpower.Text); } if (!string.IsNullOrEmpty(txtResiliance.Text)) { ch.resiliance = Convert.ToInt32(txtResiliance.Text); } if (!string.IsNullOrEmpty(txtWounds.Text)) { ch.wounds = Convert.ToInt32(txtWounds.Text); } // set imageUrl if (!string.IsNullOrWhiteSpace(txtImageUrl.Text)) { ch.imageUrl = txtImageUrl.Text; } // actions // do not filter empty action foreach (RepeaterItem item in newActionRepeater.Items) { Action action = new Action(); action.name = (item.FindControl("txtActName") as TextBox).Text; action.type = (item.FindControl("txtActType") as TextBox).Text; action.rating = Convert.ToInt32((item.FindControl("txtActRating") as TextBox).Text); action.range = (item.FindControl("txtActRange") as TextBox).Text; action.description = (item.FindControl("txtActDesc") as TextBox).Text; actions.Add(action); } ch.actions = actions.ToArray(); // specialability // do not filter empty specialability foreach (RepeaterItem item in newSpecialRepeater.Items) { Specialability special = new Specialability(); special.name = (item.FindControl("txtSpecialName") as TextBox).Text; special.description = (item.FindControl("txtSpecialDesc") as TextBox).Text; specials.Add(special); } ch.specialAbilities = specials.ToArray(); Session["NewModel"] = ch; }