예제 #1
0
 private void OnInitialData(InitialDataMessage msg)
 {
     _messageBus.RemoveMessageHandler <InitialDataMessage>(OnInitialData);
     foreach (var data in msg.ResourcesData)
     {
         _storage.SetAmount(data.Item1, data.Item2);
         _storage.SetLimit(data.Item1, data.Item3);
     }
     _messageBus.AddMessageHandler <ResourceAmountChangedMessage>(OnResourceAmountChanged);
     _messageBus.AddMessageHandler <ResourceLimitsChangedMessage>(OnResourceLimitsChanged);
 }
        // Net messages generation
        public InitialDataMessage GetStartResourcesInfoMessage()
        {
            var msg = new InitialDataMessage();
            // Linq cant handle with int? in tuple... I don't want to research
            var startResoucesData = new List <(ResourceId, int, int?)>();

            foreach (var info in _resourceInfos)
            {
                if (info.IsStartResource)
                {
                    int?limit = null;
                    if (info.IsStartLimit)
                    {
                        limit = info.StartLimit;
                    }
                    startResoucesData.Add((new ResourceId(info.Id), info.StartAmount, limit));
                }
            }

            msg.ResourcesData = startResoucesData;
            return(msg);
        }