public ObjectEntity CreateObject(string te) { if (objectTemplates.ContainsKey(te)) { if (objectTemplates[te].ObjectType == eObjectType.ZOMBIE) { BaseZombie clone = new BaseZombie(objectTemplates[te]); } } }
private void loadZombie() { IResourceManager resourceManager = SCSServices.Instance.ResourceManager; XDocument docs = getXml(zombie_config); foreach (XElement item in docs.Root.Nodes()) { BaseZombie zombie = new BaseZombie(); string name = item.Attribute("name").Value; XElement components = item.Element("Components"); foreach (var component in components.Elements("Component")) { string type = component.Attribute("type").Value; var behaviors = component.Elements("Behavior"); switch (type) { case "xml_move": // MOVE COMPONNET MoveComponent moveComponent = MoveComponentFactory.CreateComponent(); foreach (XElement behavior in behaviors) { string typeBe = behavior.Attribute("type").Value; MoveBehavior moveBeha = MoveBehavior.CreateBehavior(); int velX = Int32.Parse(behavior.Attribute("velocityX").Value); int velY = Int32.Parse(behavior.Attribute("velocityY").Value); moveBeha.Velocity = new Vector2(velX, velY); if (typeBe == "xml_move_stand") moveComponent.AddBehavior(eMoveBehaviorType.STANDING, moveBeha); else if (typeBe == "xml_move_run") moveComponent.AddBehavior(eMoveBehaviorType.RUNNING, moveBeha); } zombie.AddComponent(moveComponent); break; case "xml_render": // RENDER COMPONENT RenderComponent renderComponent = RenderComponentFactory.CreateComponent(); foreach (XElement behavior in behaviors) { string typeBe = behavior.Attribute("type").Value; RenderBehavior renderBeha = RenderBehavior.CreateBehavior(); string resource = behavior.Attribute("resourceName").Value; renderBeha.Sprite = resourceManager.GetResource<ISprite>(resource); if (typeBe == "xml_render_eat") renderComponent.AddBehavior(eMoveRenderBehaviorType.ZO_NORMAL_EATING, renderBeha); else if (typeBe == "xml_render_run") renderComponent.AddBehavior(eMoveRenderBehaviorType.ZO_NORMAL_RUNNING, renderBeha); } zombie.AddComponent(renderComponent); break; case "xml_physic": // PHYSIC COMPONENT PhysicComponent physicComponent = PhysicComponentFactory.CreateComponent(); zombie.AddComponent(physicComponent); break; case "xml_logic": // LOGIC COMPONENT LogicComponent logicComponent = LogicComponentFactory.CreateComponent(); string typeCo = component.Attribute("behavior").Value; if (typeCo == "xml_NormalZombie") logicComponent.LogicBehavior = new Z_NormalLogicBehavior(); zombie.AddComponent(logicComponent); break; default: break; } } zombie.ObjectType = eObjectType.ZOMBIE; this.objectTemplates.Add(name, zombie); } }