Beispiel #1
0
 public void Remove(ResourceBundle res)
 {
     foreach (var kvp in res.Intersect(this))
     {
         SafeSet(kvp.Key, kvp.Value);
     }
 }
Beispiel #2
0
 public void Add(ResourceBundle res)
 {
     foreach (var kvp in res)
     {
         Add(kvp);
     }
 }
Beispiel #3
0
        public ResourceBundle Intersect(ResourceBundle rb)
        {
            var res = new ResourceBundle();

            foreach (var key in Keys.Intersect(rb.Keys))
            {
                res.Add(key, Math.Min(SafeGet(key) ?? 0, rb.SafeGet(key) ?? 0));
            }

            return(res);
        }
Beispiel #4
0
 public bool ContainsAny(ResourceBundle resources)
 {
     foreach (var kvp in resources)
     {
         if (ContainsKey(kvp.Key) && kvp.Value > 0 && this[kvp.Key] > 0)
         {
             return(true);
         }
     }
     return(false);
 }
Beispiel #5
0
 public bool ContainsFully(ResourceBundle resources)
 {
     foreach (var kvp in resources)
     {
         if (!ContainsKey(kvp.Key) || kvp.Value > this[kvp.Key])
         {
             return(false);
         }
     }
     return(true);
 }
Beispiel #6
0
        private void SetBundle(ResourceBundle rb, string buffer)
        {
            foreach (var input in buffer.Split('+'))
            {
                var m = Regex.Match(input, @"^\s*(\d+)\s+([\w\d][\w\d\s]*)$");

                var rcname = m.Groups[2].Value.Trim();
                if (rcname.EqualsI("time"))
                {
                    TimeRequired = TimeSpan.FromSeconds(Convert.ToDouble(m.Groups[1].Value));
                }
                else
                {
                    rb.Add(PlarfGame.Instance.ResourceClasses.First(rc => rc.Name.EqualsI(rcname)), Convert.ToInt32(m.Groups[1].Value));
                }
            }
        }
Beispiel #7
0
        public static ResourceBundle operator +(ResourceBundle a, ResourceBundle b)
        {
            var res = new ResourceBundle();

            foreach (var kvp in a)
            {
                res.Add(kvp);
            }
            foreach (var kvp in b)
            {
                if (res.ContainsKey(kvp.Key))
                {
                    res[kvp.Key] += kvp.Value;
                }
                else
                {
                    res.Add(kvp);
                }
            }
            return(res);
        }