#region Arthea License /*********************************************************************** * Arthea MUD by R. Jennings (2007) http://arthea.googlecode.com/ * * By using this code you comply with the Artistic and GPLv2 Licenses. * ***********************************************************************/ #endregion using System.Collections.Generic; using System.Text; using Arthea.Connections.Players; using Arthea.Continents.Areas.Characters; using Arthea.Continents.Areas.Items; using Arthea.Continents.Areas.Rooms; using Arthea.Creation; using Arthea.Environment; using Arthea.Interfaces; namespace Arthea.Continents.Areas.Resets { /// <summary> /// Implementation of a reset list. /// </summary> public class ResetList : List<Reset>, CustomEditType { #region [rgn] Methods (3) // [rgn] Public Methods (3) /// <summary> /// Sets the value. /// </summary> /// <param name="player">The player.</param> /// <param name="editer">Editer information.</param> /// <param name="argument">The argument.</param> public void CustomEdit(Player player, OlcField editer, String argument) { player.WriteLine("Function not implemented yet."); } /// <summary> /// Returns a <see cref="T:System.String"></see> that represents the current <see cref="T:System.Object"></see>. /// </summary> /// <returns> /// A <see cref="T:System.String"></see> that represents the current <see cref="T:System.Object"></see>. /// </returns> public override string ToString() { StringBuilder buf = new StringBuilder(); buf.AppendLine(); buf.AppendLine("-----------------------------"); foreach (Reset reset in this) { buf.AppendLine(reset.ToString()); } return buf.ToString(); } /// <summary> /// Updates this instance. /// </summary> public void Update() { foreach (Reset reset in this) { Room room = Lists.Rooms[reset.Room]; if (room == null) { Log.Fatal("Bad reset for non existant room {0}.", reset.Room); System.Environment.Exit(1); } if (reset is ItemReset) { ItemReset ireset = reset as ItemReset; ItemIndex item = Lists.ItemIndexes[ireset.Item]; if (item == null) { Log.Fatal("Bad reset for non existant item {0}.", ireset.Item); System.Environment.Exit(1); } if ( room.Items.FindAll(delegate(Item obj) { return item.Id == obj.Id; }).Count >= ireset.Count) continue; Item instance = new Item(item); instance.Attach(); instance.Room = room; } else if (reset is CharReset) { CharReset areset = reset as CharReset; CharIndex ch = Lists.CharIndexes[areset.Character]; if (ch == null) { Log.Fatal("Bad reset for non existant character {0}.", areset.Character); System.Environment.Exit(1); } if (room.Characters.FindAll( delegate(Character a) { return ch.Id == a.Id; }).Count >= areset.Count) continue; Character instance = new Character(ch); instance.Attach(); instance.Room = room; } } } #endregion [rgn] } }