Beispiel #1
0
        /// <summary>
        /// Calling this will remove any bonuses or penalties whose time has expired.
        /// </summary>
        /// <returns></returns>
        public ClientHandling.Message Cleanup()
        {
            List<string> messages = new List<string>();
            MongoCollection bonusCollection = MongoUtils.MongoData.GetCollection("Messages", "Bonuses");
            BsonDocument found = null;
            BsonArray array = null;
            IMongoQuery query = null;
            ClientHandling.Message message = new ClientHandling.Message();
            foreach (KeyValuePair<string, Tuple<double, DateTime>> item in _bonus) {
                if (item.Value.Item2 != DateTime.MaxValue && DateTime.Now >= item.Value.Item2) {
                    query = Query.EQ("_id", item.Key);
                    found = bonusCollection.FindOneAs<BsonDocument>(query).AsBsonDocument;
                    //let's add the messages that removing the bonus/penalty could have
                    array = found["Messages"][0]["Self"].AsBsonArray;
                    int choice = Extensions.RandomNumber.GetRandomNumber().NextNumber(0, array.Count());

                    message.Self = array[choice].AsString;

                    array = found["Messages"][0]["Target"].AsBsonArray;
                    if (array.Count >= choice - 1) {
                        message.Target = array[choice].AsString;
                    }

                    array = found["Messages"][0]["Others"].AsBsonArray;
                    if (array.Count == choice - 1) {
                        message.Room = array[choice].AsString;
                    }

                    //remove the bonus/penalty
                    Remove((BonusTypes)Enum.Parse(typeof(BonusTypes),item.Key));
                }
            }

            return message;
        }
Beispiel #2
0
        /// <summary>
        /// Calling this will remove any bonuses or penalties whose time has expired.
        /// </summary>
        /// <returns></returns>
        public ClientHandling.Message Cleanup()
        {
            List <string>   messages        = new List <string>();
            MongoCollection bonusCollection = MongoUtils.MongoData.GetCollection("Messages", "Bonuses");
            BsonDocument    found           = null;
            BsonArray       array           = null;
            IMongoQuery     query           = null;

            ClientHandling.Message message = new ClientHandling.Message();
            foreach (KeyValuePair <string, Tuple <double, DateTime> > item in _bonus)
            {
                if (item.Value.Item2 != DateTime.MaxValue && DateTime.Now >= item.Value.Item2)
                {
                    query = Query.EQ("_id", item.Key);
                    found = bonusCollection.FindOneAs <BsonDocument>(query).AsBsonDocument;
                    //let's add the messages that removing the bonus/penalty could have
                    array = found["Messages"][0]["Self"].AsBsonArray;
                    int choice = Extensions.RandomNumber.GetRandomNumber().NextNumber(0, array.Count());

                    message.Self = array[choice].AsString;

                    array = found["Messages"][0]["Target"].AsBsonArray;
                    if (array.Count >= choice - 1)
                    {
                        message.Target = array[choice].AsString;
                    }

                    array = found["Messages"][0]["Others"].AsBsonArray;
                    if (array.Count == choice - 1)
                    {
                        message.Room = array[choice].AsString;
                    }

                    //remove the bonus/penalty
                    Remove((BonusTypes)Enum.Parse(typeof(BonusTypes), item.Key));
                }
            }

            return(message);
        }