//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 }
/// <summary> /// Отправить запрос "сотруднику" /// </summary> /// <param name="parSoundManagerRequest">Запрос</param> /// <param name="parColleague">Целевой "сотрудник"</param> public override void Request(SoundManagerRequest parSoundManagerRequest, SoundManagerColleague parColleague) { if (parColleague == ViewSoundManagerColleague) { ViewSoundManagerColleague?.ProcessRequest(parSoundManagerRequest); } else if (parColleague == MainAppSoundManagerColleague) { MainAppSoundManagerColleague?.ProcessRequest(parSoundManagerRequest); } }
/// <summary> /// Отправить сообщение "сотруднику" /// </summary> /// <param name="parSoundManagerMessage">Сообщение</param> /// <param name="parColleague">Целевой "сотрудник"</param> public override void Send(SoundManagerMessage parSoundManagerMessage, SoundManagerColleague parColleague) { if (parColleague == ViewSoundManagerColleague) { ViewSoundManagerColleague?.ProcessMessage(parSoundManagerMessage); } else if (parColleague == MainAppSoundManagerColleague) { MainAppSoundManagerColleague?.ProcessMessage(parSoundManagerMessage); } }
/// <summary> /// Отправить запрос "сотруднику" /// </summary> /// <param name="parSoundManagerRequest">Запрос</param> /// <param name="parColleague">Целевой "сотрудник"</param> public abstract void Request(SoundManagerRequest parSoundManagerRequest, SoundManagerColleague parColleague);
/// <summary> /// Отправить сообщение "сотруднику" /// </summary> /// <param name="parSoundManagerMessage">Сообщение</param> /// <param name="parColleague">Целевой "сотрудник"</param> public abstract void Send(SoundManagerMessage parSoundManagerMessage, SoundManagerColleague parColleague);