예제 #1
0
        //TODO combine/put all this data in separate data structure
        public void AppRun(AssetDataAbstractBuilder parInitialAssetBuilder,
                           IAssetDatabaseUpdateStrategy parInitialAssetDatabaseUpdateStrategy,
                           SoundManagerColleague parViewSoundManagerColleague, ViewProviderColleague parViewSideViewProviderColleague)
        {
            if (CurrentAppState.CurrentBaseAppState != EBaseAppStates.Created)
            {
                throw new Exception("Already launched application model cannot be launched again!");
            }

            CurrentAppState = new AppState()
            {
                CurrentBaseAppState = EBaseAppStates.Running
            };

            //initialize resources manager
            AppResourceManager = new ResourceManager(AppInfoConsts.ResourcesAssetsDirpath, parInitialAssetBuilder,
                                                     parInitialAssetDatabaseUpdateStrategy);

            // AppResourceManager.LoadAssetPack("packTest");
            // AppResourceManager.LoadAssetPack("gfx_smd");

            //   Console.WriteLine($"{AppResourceManager.GetAssetData<AssetDataText>("packTest", "/data.txt").TextData[0]}");

            //initialize sound manager
            ActualSoundManager = new AppSoundManager(AppResourceManager, this);
            ActualSoundManager.AppSoundManagerMediator.ViewSoundManagerColleague = parViewSoundManagerColleague;
            parViewSoundManagerColleague.Mediator = ActualSoundManager.AppSoundManagerMediator;
            ActualSoundManager.UpdateLibrary();

            AppViewProviderMediator.ViewProviderViewSide = parViewSideViewProviderColleague;

            InitializeHumanPlayers();

            /*
             * var testObj = AppGamePool.GetObject<GameObject>(typeof(GameObject));
             * testObj.Init(this);
             * Console.WriteLine($"{testObj.LinkedAppModel}");
             * testObj.DisableAndSendToPool();
             * Console.WriteLine($"{testObj.LinkedAppModel}");
             * Console.WriteLine($"{testObj.Test}");
             */

            GameObject launchingObject = AppGamePool.GetObject <GameObject>(typeof(GameObject));

            launchingObject.Init(this);

            launchingObject.AddComponent <AppStartComponent>(AppGamePool
                                                             .GetObject <AppStartComponent>(typeof(AppStartComponent)).Init(launchingObject));

            //var testComp = AppGamePool.GetObject<TestInputExitComponent>(typeof(TestInputExitComponent));
            //testComp.Init(testObj);

            //RegisterFixedUpdatableObject(new InputTestUpdatableObject(this));
            //new InputTestUpdatableObject(this);
            //TODO: Application startup logic
            //TODO: Settings loading
            //TODO: App state machine definitions
            //TODO: Multithreading for physics
        }
예제 #2
0
        /// <summary>
        /// Стандартный конструктор
        /// </summary>
        /// <param name="parAssetDatabaseDir">Директория для составления начальной базы данных ассетов</param>
        /// <param name="parInitialAssetBuilder">"Строитель"-загрузчик ресурсов</param>
        /// <param name="parAssetDatabaseUpdateStrategy">Стратегия составления начальной базы данных ассетов</param>
        public ResourceManager(string parAssetDatabaseDir, AssetDataAbstractBuilder parInitialAssetBuilder = null,
                               IAssetDatabaseUpdateStrategy parAssetDatabaseUpdateStrategy = null)
        {
            AssetDatabaseDir     = parAssetDatabaseDir;
            AvailableAssetPacks  = new Dictionary <string, AssetPack>();
            LoadedAssetPacks     = new Dictionary <string, AssetPackLoadedData>();
            StandardAssetBuilder = parInitialAssetBuilder ?? new AssetDataStandardBuilder();
            StandardAssetDatabaseUpdateStrategy = parAssetDatabaseUpdateStrategy ??
                                                  new AssetDatabaseUpdateDiffByExtensionStrategy(
                StandardExtensionToAssetType);

            UpdateAssetsAvailableDatabase(StandardAssetDatabaseUpdateStrategy);
        }
예제 #3
0
 /// <summary>
 /// Обновление базы данных доступных ассетов
 /// </summary>
 /// <param name="parAssetDatabaseUpdateStrategy"></param>
 public void UpdateAssetsAvailableDatabase(IAssetDatabaseUpdateStrategy parAssetDatabaseUpdateStrategy)
 {
     AvailableAssetPacks = parAssetDatabaseUpdateStrategy.GetAssetsDatabase(AssetDatabaseDir);
 }