Esempio n. 1
0
        private void LoadWithSideData <T, S>(Dictionary <string, WithSideData <T> > datas, WithSideDataSpec <S> spec, WithSideData <T> fallback, SideDataLoader <T, S> sideDataLoader)
        {
            if (spec == null)
            {
                return;
            }
            if (spec.name == null)
            {
                Debug.LogWarning($"WithSideDataSpec without a name will be ignored. spec:\n{JsonConvert.SerializeObject(spec)}");
                return;
            }
            if (datas.ContainsKey(spec.name))
            {
                Debug.LogWarning($"WithSideDataSpec with a duplicated name will be ignored. spec:\n{JsonConvert.SerializeObject(spec)}");
                return;
            }
            WithSideData <T> sideData = new WithSideData <T>();

            sideData.Light    = sideDataLoader(spec.light, fallback.Light);
            sideData.Conflict = sideDataLoader(spec.conflict, fallback.Conflict);
            datas.Add(spec.name, sideData);
        }
Esempio n. 2
0
        private void LoadCollectionData <T, S>(WithSideData <T> internalDefault, Dictionary <string, WithSideData <T> > datas, NameSetter defaultNameSetter, CollectionDataSpec <S> spec, SideDataLoader <T, S> sideDataLoader)
        {
            string internalDefaultName = "\"Default\"";

            if (spec == null)
            {
                defaultNameSetter(internalDefaultName);
                datas.Add(internalDefaultName, internalDefault);
                return;
            }
            string defaultName = spec.defaultName ?? internalDefaultName;

            defaultNameSetter(defaultName);
            WithSideDataSpec <S> defaultSpec = new WithSideDataSpec <S>();

            defaultSpec.name     = defaultName;
            defaultSpec.light    = spec.light;
            defaultSpec.conflict = spec.conflict;
            LoadWithSideData <T, S>(datas, defaultSpec, internalDefault, sideDataLoader);
            WithSideData <T> defaultData = datas[defaultName];

            if (spec.additional != null)
            {
                foreach (WithSideDataSpec <S> additionalSpec in spec.additional)
                {
                    LoadWithSideData <T, S>(datas, additionalSpec, defaultData, sideDataLoader);
                }
            }
        }