public static void AddItem(IEventArgs args, string rule, FreeItem item)
 {
     item = item.Clone();
     if (!map.ContainsKey(rule))
     {
         map[rule] = new MyDictionary <string, FreeItem>();
     }
     map[rule][item.GetKey()] = item;
 }
        public static FreeItem GetItem(FreeRuleEventArgs args, string key, int count)
        {
            string rule = args.Rule.FreeType;

            if (map.ContainsKey(rule) && map[rule].ContainsKey(key))
            {
                FreeItem fi = map[rule][key];
                fi = fi.Clone();
                fi.SetCount(count);
                if (fi.GetId() == 0)
                {
                    fi.SetId();
                }
                return(fi);
            }
            else
            {
                throw new GameConfigExpception("item '" + key + "' is not defined.");
            }
        }