TreeNode CreateColorFormNode(string title, string hint) { TreeNode ret = new TreeNode(); ret.Text = title + ": ="; BindingList <EntityKVP> stuff = new BindingList <EntityKVP>(); EntityKVP usual = new EntityKVP(); usual.Key = "Typ"; usual.Value = "LN"; stuff.Add(usual); usual = new EntityKVP(); usual.Key = "Txt"; usual.Value = "&"; stuff.Add(usual); usual = new EntityKVP(); usual.Key = "Hint"; usual.Value = hint; stuff.Add(usual); ret.Tag = stuff; return(ret); }
EntityKVP BBoxForEnt(string entName) { EntityKVP ret = new EntityKVP(); ret.mbUsesSingleQuotes = true; ret.Key = "bbox"; if (entName.StartsWith("misc_")) { ret.Value = SmallGroundBBox; } else if (entName.StartsWith("info_player_")) { ret.Value = BipedGroundBBox; } else if (entName.StartsWith("light_")) { ret.Value = SmallCenteredBBox; } else if (entName.StartsWith("weapon_")) { ret.Value = SmallGroundBBox; } else if (entName.StartsWith("ammo_")) { ret.Value = SmallGroundBBox; } else if (entName.StartsWith("monster_")) { ret.Value = BipedGroundBBox; } else if (entName.StartsWith("point_")) { ret.Value = TinyCenteredBBox; } else if (entName.StartsWith("key_")) { ret.Value = TinyGroundBBox; } else if (entName.StartsWith("item_")) { ret.Value = SmallGroundBBox; } else if (entName.StartsWith("target_")) { ret.Value = TinyCenteredBBox; } else { ret.Value = SmallCenteredBBox; } return(ret); }
void AddFormForEntity(TreeNode tn, string entName) { TreeNode forms = FindNode(EntityTree.Nodes[0], FormsFolder); TreeNode form = new TreeNode(); form.Text = entName + ":form ="; BindingList <EntityKVP> formStuff = new BindingList <EntityKVP>(); //add the usual help and bbox EntityKVP usual = new EntityKVP(); usual.Key = "Help"; usual.Value = "A newly created Entity type."; formStuff.Add(usual); usual = BBoxForEnt(entName); formStuff.Add(usual); form.Tag = formStuff; foreach (EntityKVP kvp in tn.Tag as BindingList <EntityKVP> ) { if (kvp.Key == "origin") { continue; } if (kvp.Key == "angle") { form.Nodes.Add(CreateBasicFormNode(kvp.Key, AngleHint)); } else if (kvp.Key == "angles") { form.Nodes.Add(CreateBasicFormNode(kvp.Key, AnglesHint)); } else if (kvp.Key == "delay") { form.Nodes.Add(CreateBasicFormNode(kvp.Key, DelayHint)); } else if (kvp.Key == "target") { form.Nodes.Add(CreateBasicFormNode(kvp.Key, TargetHint)); } else if (kvp.Key == "targetname") { form.Nodes.Add(CreateBasicFormNode(kvp.Key, TargetNameHint)); } else if (kvp.Key == "message") { form.Nodes.Add(CreateBasicFormNode(kvp.Key, MessageHint)); } else if (kvp.Key == "meshname") { form.Nodes.Add(CreateBasicFormNode(kvp.Key, MeshNameHint)); } else if (kvp.Key == ";desc") { form.Nodes.Add(CreateBasicFormNode(kvp.Key, kvp.Value)); } else if (kvp.Key == "_color") { form.Nodes.Add(CreateBasicFormNode(kvp.Key, ColorHint)); form.Nodes.Add(CreateColorFormNode(kvp.Key, ColorHint)); } else { form.Nodes.Add(CreateBasicFormNode(kvp.Key, "An unknown field of some sort")); } } forms.Nodes.Add(form); }
BindingList <EntityKVP> ParseGuts(string file, TreeNode node) { //check for { } int open = file.IndexOf('{'); int close = file.IndexOf('}'); file = file.Trim(); BindingList <EntityKVP> kvps = new BindingList <EntityKVP>(); while (true) { int nextNewLine = file.IndexOf('\n'); string gut = file.Substring(0, nextNewLine); int eqPosPreTrim = gut.IndexOf('='); gut = gut.Trim(); int eqPos = gut.IndexOf('='); if (eqPos == -1 || eqPosPreTrim == (nextNewLine - 1) || gut.StartsWith("\"")) { //watch for double lines if (gut.StartsWith("\"")) { //trim crap and quotes if (gut.EndsWith("\"")) { gut = gut.Substring(1, gut.Length - 2); } else { gut = gut.Substring(1, gut.Length - 1); gut += "\""; } //tack onto end of previous value kvps[kvps.Count - 1].Value += gut; //advance file = file.Substring(nextNewLine + 1); continue; } return(kvps); } string key = gut.Substring(0, eqPos - 1); key = key.Trim(); string value = gut.Substring(eqPos + 1); value = value.Trim(); EntityKVP ekvp = new EntityKVP(); if (value.StartsWith("'") && value.EndsWith("'")) { ekvp.mbUsesSingleQuotes = true; } //trim quotes value = value.Substring(1, value.Length - 2); ekvp.Key = key; ekvp.Value = value; kvps.Add(ekvp); file = file.Substring(nextNewLine + 1); } }
void OnAddEntity(object sender, EventArgs e) { TreeNode tn = new TreeNode(); TreeNode mom = EntityTree.SelectedNode; //grab the category text string cat = mom.Text; cat = cat.ToLower(); int catIndex = cat.IndexOf("_"); if (catIndex == -1) { cat = "point_new"; } else { cat = cat.Substring(0, catIndex); cat += "_new"; } tn.Text = cat + ":e ="; BindingList <EntityKVP> kvps = new BindingList <EntityKVP>(); if (AutoAddOrigin.Checked) { EntityKVP kvp = new EntityKVP(); kvp.Key = "origin"; kvp.Value = "0 0 0"; kvps.Add(kvp); } if (AutoAddMeshName.Checked) { EntityKVP kvp = new EntityKVP(); kvp.Key = "meshname"; kvp.Value = "Default.Static"; kvps.Add(kvp); } if (AutoAddDesc.Checked) { EntityKVP kvp = new EntityKVP(); kvp.Key = ";desc"; kvp.Value = "An automatically generated description"; kvps.Add(kvp); } if (AutoAddAngles.Checked) { EntityKVP kvp = new EntityKVP(); kvp.Key = "angles"; kvp.Value = "0 0 0"; kvps.Add(kvp); } if (AutoAddPickUp.Checked) { EntityKVP kvp = new EntityKVP(); kvp.Key = "pickup"; kvp.Value = "true"; kvps.Add(kvp); } tn.Tag = kvps; if (AutoAddForm.Checked) { AddFormForEntity(tn, cat); } mom.Nodes.Add(tn); }