public void ParseMap(XmlDocument doc, ref ProgressBarDialog progressBarDialog) { XmlNodeList xmlnode; xmlnode = doc.GetElementsByTagName("level_name"); GameEngine.levelName = xmlnode[0].InnerText; xmlnode = doc.GetElementsByTagName("object"); progressBarDialog.updateProgressBar(xmlnode.Count, 0); for (int i = 0; i < xmlnode.Count; i++) { string name = xmlnode[i].ChildNodes.Item(0).InnerText; int xaxis = Convert.ToInt32(xmlnode[i].ChildNodes.Item(1).InnerText); int yaxis = Convert.ToInt32(xmlnode[i].ChildNodes.Item(2).InnerText); string speed = xmlnode[i].ChildNodes.Item(3).InnerText; switch (name) { case "missilelauncher": Missilelauncher missilelauncher = new Missilelauncher(xaxis, yaxis); gameEngine.level.parsedList.Add(missilelauncher); Console.WriteLine("Missilelauncher added to list."); break; case "tree": Tree tree = new Tree(xaxis, yaxis); gameEngine.level.parsedList.Add(tree); Console.WriteLine("Tree added to list."); break; case "sandbag": Sandbag sandbag = new Sandbag(xaxis, yaxis); gameEngine.level.parsedList.Add(sandbag); Console.WriteLine("Sandbag added to list."); break; case "mine": Mine mine = new Mine(xaxis, yaxis); gameEngine.level.parsedList.Add(mine); Console.WriteLine("Mine added to list."); break; case "mud": Mud mud = new Mud(xaxis, yaxis); gameEngine.level.parsedList.Add(mud); Console.WriteLine("Mud added to list."); break; case "finish": Finish finish = new Finish(xaxis, yaxis); gameEngine.level.parsedList.Add(finish); Console.WriteLine("Finish added to list."); break; default: break; } progressBarDialog.updateProgressBar(xmlnode.Count, i + 1); } progressBarDialog.Close(); foreach (Obstacle obstacle in gameEngine.level.parsedList) { switch (obstacle.ToString()) { case "WarGame.Model.Mine": gameEngine.level.obstacleList.Add(new Mine(obstacle as Mine)); break; case "WarGame.Model.Mud": gameEngine.level.obstacleList.Add(new Mud(obstacle as Mud)); break; case "WarGame.Model.Missilelauncher": gameEngine.level.obstacleList.Add(new Missilelauncher(obstacle as Missilelauncher)); break; case "WarGame.Model.Tree": gameEngine.level.obstacleList.Add(new Tree(obstacle as Tree)); break; case "WarGame.Model.Sandbag": gameEngine.level.obstacleList.Add(new Sandbag(obstacle as Sandbag)); break; case "WarGame.Model.Finish": gameEngine.level.obstacleList.Add(new Finish(obstacle as Finish)); break; } } gameEngine.LevelImported = true; }
public override void Initialize() { if (this.m_actualVisualizationNode && this.m_gridVisualizationNode) { this.m_gridVisualizationNode.SetActive(false); this.m_actualVisualizationNode.SetActive(true); } this.m_connectedPart = base.contraption.FindPartAt(this.m_coordX, this.m_coordY + 1); if (this.m_connectedPart && !this.m_connectedPart.IsPartOfChassis() && this.m_connectedPart.m_partType != BasePart.PartType.Pig) { this.m_connectedPart = null; } if (this.m_connectedPart) { this.m_dropped = false; base.contraption.ChangeOneShotPartAmount(BasePart.BaseType(this.m_partType), this.EffectDirection(), 1); } else { this.m_dropped = true; base.gameObject.layer = LayerMask.NameToLayer("DroppedSandbag"); } this.m_partType = BasePart.PartType.Sandbag; if (this.m_numberOfBalloons > 1) { GameObject gameObject = UnityEngine.Object.Instantiate <GameObject>(base.gameObject); gameObject.transform.position = base.transform.position; Sandbag component = gameObject.GetComponent <Sandbag>(); component.m_numberOfBalloons = this.m_numberOfBalloons - 1; base.contraption.AddRuntimePart(component); gameObject.transform.parent = base.contraption.transform; } if (!base.gameObject.GetComponent <SphereCollider>()) { SphereCollider sphereCollider = base.gameObject.AddComponent <SphereCollider>(); sphereCollider.radius = 0.13f; sphereCollider.center = new Vector3(0f, -0.1f, 0f); } if (!base.rigidbody) { base.rigidbody = base.gameObject.AddComponent <Rigidbody>(); } base.rigidbody.mass = this.m_mass; base.rigidbody.drag = 1f; base.rigidbody.angularDrag = 10f; base.rigidbody.constraints = (RigidbodyConstraints)56; if (this.m_connectedPart) { Vector3 position = base.transform.position; base.transform.position = this.m_connectedPart.transform.position - Vector3.up * 0.5f; SpringJoint springJoint = base.gameObject.AddComponent <SpringJoint>(); springJoint.connectedBody = this.m_connectedPart.rigidbody; this.m_connectedLocalPos = this.m_connectedPart.transform.InverseTransformPoint(base.transform.position); int numberOfBalloons = this.m_numberOfBalloons; Vector3 b; float maxDistance; if (numberOfBalloons != 1) { if (numberOfBalloons != 2) { b = new Vector3(0f, -0.35f, -0.03f); maxDistance = 0.65f; } else { b = new Vector3(0.35f, -0.3f, -0.02f); maxDistance = 0.55f; } } else { b = new Vector3(-0.15f, -0.15f, -0.01f); maxDistance = 0.5f; } springJoint.minDistance = 0f; springJoint.maxDistance = maxDistance; springJoint.anchor = Vector3.up * 0.5f; springJoint.spring = 100f; springJoint.damper = 10f; base.transform.position = position + b; LineRenderer lineRenderer = base.gameObject.AddComponent <LineRenderer>(); lineRenderer.material = this.m_stringMaterial; lineRenderer.SetVertexCount(2); lineRenderer.SetWidth(0.05f, 0.05f); lineRenderer.SetColors(Color.black, Color.black); } else { int numberOfBalloons2 = this.m_numberOfBalloons; Vector3 b2; if (numberOfBalloons2 != 1) { if (numberOfBalloons2 != 2) { b2 = new Vector3(0f, -0.35f, -0.03f); } else { b2 = new Vector3(0.35f, -0.3f, -0.02f); } } else { b2 = new Vector3(-0.15f, -0.15f, -0.01f); } base.transform.position += b2; } }
//opening the dialogs for choosing an existing level private void loadLevel() { OpenFileDialog BrowseFile = new OpenFileDialog(); BrowseFile.Filter = "XML Files (*.xml)|*.xml"; BrowseFile.FilterIndex = 0; BrowseFile.DefaultExt = "xml"; if (BrowseFile.ShowDialog() == System.Windows.Forms.DialogResult.OK) { ObstacleList.Clear(); doc = new XmlDocument(); try { doc.Load(BrowseFile.FileName); } catch (Exception e) { MessageBox.Show("Level Could't be read please check your file. Error: " + e, "Information", MessageBoxButtons.OK, MessageBoxIcon.Error); } XmlNodeList xmlnode; xmlnode = doc.GetElementsByTagName("object"); for (int i = 0; i < xmlnode.Count; i++) { string name = xmlnode[i].ChildNodes.Item(0).InnerText; int xaxis = Convert.ToInt32(xmlnode[i].ChildNodes.Item(1).InnerText); int yaxis = Convert.ToInt32(xmlnode[i].ChildNodes.Item(2).InnerText); string speed = xmlnode[i].ChildNodes.Item(3).InnerText; //adding the objects to the object list switch (name) { case "tree": Tree tree = new Tree(xaxis, yaxis); ObstacleList.Add(tree); Console.WriteLine("Tree added to list."); break; case "sandbag": Sandbag sandbag = new Sandbag(xaxis, yaxis); ObstacleList.Add(sandbag); Console.WriteLine("Tree added to list."); break; case "mine": Mine mine = new Mine(xaxis, yaxis); ObstacleList.Add(mine); Console.WriteLine("Tree added to list."); break; case "mud": Mud mud = new Mud(xaxis, yaxis); ObstacleList.Add(mud); Console.WriteLine("Tree added to list."); break; case "finish": Finish finish = new Finish(xaxis, yaxis); ObstacleList.Add(finish); Console.WriteLine("Tree added to list."); break; case "missilelauncher": ObstacleList.Add(new Missilelauncher(xaxis, yaxis)); Console.WriteLine("Missilelauncher added to list."); break; default: break; } } } }