Gruppe22.Backend.Actor.Save C# (CSharp) Метод

Save() публичный Метод

Method to save an actor in an XML-file. Just writes every property to the file.
public Save ( XmlWriter writer ) : void
writer System.Xml.XmlWriter The writer which should be used to save the data
Результат void
        public void Save(XmlWriter writer)
        {
            switch (_actorType)
            {
                case ActorType.Enemy:
                    writer.WriteStartElement("Enemy");

                    break;
                case ActorType.NPC:
                    writer.WriteStartElement("NPC");

                    break;
                case ActorType.Player:
                    writer.WriteStartElement("Player");

                    break;
                default:
                    writer.WriteStartElement("Actor");
                    break;
            }

            if (_id != -1)
                writer.WriteAttributeString("id", _id.ToString());
            if (_name != "")
                writer.WriteAttributeString("name", _name);
            if (_online != false)
                writer.WriteAttributeString("online", _online.ToString());

            if (_maxhealth != 100)
                writer.WriteAttributeString("maxhp", Convert.ToString(_maxhealth));
            if (_health != _maxhealth)
                writer.WriteAttributeString("hp", Convert.ToString(_health));
            if (_level != 0)
                writer.WriteAttributeString("level", Convert.ToString(_level));
            if (_mana != _maxMana)
                writer.WriteAttributeString("mana", Convert.ToString(_mana));
            if (_evade != 0)
                writer.WriteAttributeString("evade", Convert.ToString(_evade));
            if (_block != 0)
                writer.WriteAttributeString("block", Convert.ToString(_block));
            if (_penetrate != 0)
                writer.WriteAttributeString("penetrate", Convert.ToString(_penetrate));
            if (_animationFile != "")
                writer.WriteAttributeString("file", Convert.ToString(_animationFile));
            if (_healthReg != 0)
                writer.WriteAttributeString("healthReg", Convert.ToString(_healthReg));
            if (_skills != 0)
                writer.WriteAttributeString("skills", Convert.ToString(_skills));
            if (_abilityPoints != 0)
                writer.WriteAttributeString("abilityPoints", Convert.ToString(_abilityPoints));
            if (_armor != 0)
                writer.WriteAttributeString("armor", Convert.ToString(_armor));
            if (_stealHealth != 0) writer.WriteAttributeString("stealHealth", Convert.ToString(_stealHealth));
            if (_stealMana != 0) writer.WriteAttributeString("stealMana", Convert.ToString(_stealMana));
            if (_fireDamage != 0) writer.WriteAttributeString("fireDamage", Convert.ToString(_fireDamage));
            if (_iceDamage != 0) writer.WriteAttributeString("iceDamage", Convert.ToString(_iceDamage));
            if (_crazy) writer.WriteAttributeString("crazy", Convert.ToString(_crazy));
            if (_ranged) writer.WriteAttributeString("ranged", Convert.ToString(_ranged));
            if (_aggro) writer.WriteAttributeString("aggro", Convert.ToString(_aggro));

            bool hasQuests = false;
            if (this is Player && (this as Player).quests.Length > 0)
            {
                writer.WriteAttributeString("hasQuests", "1");
                hasQuests = true;
            }
            if (_fireDefense > 0)
                writer.WriteAttributeString("fireDefense", Convert.ToString(_fireDefense));
            if (_fireDamage > 0)
                writer.WriteAttributeString("iceDefense", Convert.ToString(_iceDefense));
            writer.WriteAttributeString("expNeeded", Convert.ToString(_expNeeded));
            writer.WriteAttributeString("exp", Convert.ToString(_exp));
            if (_resist > 0)
                writer.WriteAttributeString("resist", Convert.ToString(_resist));
            if (_damage > 0)
                writer.WriteAttributeString("damage", Convert.ToString(_damage));
            if (_gold > 0)
                writer.WriteAttributeString("gold", Convert.ToString(_gold));
            if ((this is Player && (_lives > 0) && (_lastCheckpoint > 0)))
            {
                writer.WriteAttributeString("lastCheckpoint", Convert.ToString(_lastCheckpoint));
                writer.WriteAttributeString("cpX", _checkPointCoords.x.ToString());
                writer.WriteAttributeString("cpY", _checkPointCoords.y.ToString());
            }
            if (_manaReg > 0)
                writer.WriteAttributeString("manaReg", Convert.ToString(_manaReg));
            if (_maxMana != 100)
                writer.WriteAttributeString("maxMana", Convert.ToString(_maxMana));
            if (_destroyWeapon != 0)
                writer.WriteAttributeString("destroyWeapon", Convert.ToString(_destroyWeapon));
            if (_destroyArmor != 0)
                writer.WriteAttributeString("destroyArmor", Convert.ToString(_destroyArmor));
            if (_viewRange != 4)
                writer.WriteAttributeString("viewRange", Convert.ToString(_viewRange));
            if (_GUID != "") writer.WriteAttributeString("GUID", Convert.ToString(GUID));
            if (_stunned != 0) writer.WriteAttributeString("stunned", Convert.ToString(_stunned));
            if (_charmed != 0) writer.WriteAttributeString("charmed", Convert.ToString(_charmed));
            if (_lives != -1) writer.WriteAttributeString("lives", Convert.ToString(_lives));
            if (_direction != Direction.None) writer.WriteAttributeString("direction", Convert.ToString(direction));

            if (_friendly) writer.WriteAttributeString("friendly", Convert.ToString(_friendly));
            if (_scared != 0) writer.WriteAttributeString("scared", Convert.ToString(_scared));

            if (actorType == ActorType.NPC)
            {
                NPC n = this as NPC;
                if (n != null)
                {
                    writer.WriteAttributeString("love", Convert.ToString(n.love));
                    writer.WriteAttributeString("hasShop", Convert.ToString(n.hasShop));
                    writer.WriteAttributeString("hasDialogue", Convert.ToString(n.hasDialog));
                }
            }

            writer.WriteStartElement("Inventory");
            foreach (Item item in _inventory)
            {
                if (!item.destroyed)
                    item.Save(writer);
            }
            writer.WriteEndElement();

            writer.WriteStartElement("Abilities");
            foreach (Ability ability in _abilities)
            {
                ability.Save(writer);
            }
            writer.WriteEndElement();

            if (hasQuests)
            {
                writer.WriteStartElement("Quests");

                foreach (Quest q in (this as Player).quests)
                {
                    //TODO: Rewrite saving / loading of quests
                    /*                if (!q.done)
                                    {
                                        writer.WriteStartElement("Quest");
                                        writer.WriteAttributeString("type", q.type.ToString());
                                        writer.WriteAttributeString("text", q.text.ToString());
                                        writer.WriteAttributeString("xp", q.xp.ToString());
                                        writer.WriteAttributeString("goal", q.goal.ToString());
                                        writer.WriteStartElement("Items");
                                        foreach (Item i in q.itemList)
                                        {
                                            i.Save(writer);
                                        }
                                        writer.WriteEndElement();
                                        writer.WriteEndElement();

                                    }*/
                }
                writer.WriteEndElement();

            }

            writer.WriteStartElement("Toolbar");
            for (int i = 0; i < 10; ++i)
            {
                writer.WriteStartElement("Ability" + i.ToString());
                writer.WriteAttributeString("id", _quicklist[i].ToString());
                writer.WriteEndElement();
            }
            writer.WriteEndElement();
            writer.WriteEndElement();
        }