Пример #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="parColleague">Целевой "сотрудник"</param>
 /// <param name="parTargetComponent">Обновленный компонент</param>
 public void SendUpdatedNotification(ViewProviderColleague parColleague, ViewProviderComponent parTargetComponent)
 {
     parColleague.ReceiveNotificationUpdated(parTargetComponent);
 }