Beispiel #1
0
        } //separate this to be called on every XP change

        private async Task SendFinalizeResult(List <RoomUser> roomUsers, List <User> roomDataUsers,
                                              List <RoomXpReport> roomXpReports, List <UserRoomStatus> userRoomStatuses,
                                              int lastEaterTurnId)
        {
            // var xpRepMapped = roomUsers.Join(roomXpReports, rUser => rUser.TurnId,
            // roomXpReports.IndexOf, (_, report) => report).ToList();

            var finalizeTasks = new List <Task>();

            for (int i = 0; i < roomUsers.Count; i++)
            {
                var finalizeResult = new FinalizeResult
                {
                    RoomXpReport         = roomXpReports[i],
                    PersonalFullUserInfo = Mapper.ConvertUserDataToClient(roomDataUsers[i]),
                    LastEaterTurnId      = lastEaterTurnId,
                    UserRoomStatus       = userRoomStatuses,
                };

                finalizeTasks.Add(_masterHub.SendOrderedAsync(roomUsers[i].ActiveUser,
                                                              "FinalizeRoom", finalizeResult));
            }

            _logger.LogInformation("finalize called");

            await Task.WhenAll(finalizeTasks);
        }
Beispiel #2
0
        public FinalizeResult Finalize(FinalizeCommand command)
        {
            if (command.Period == default)
            {
                throw new Exception("Missing parameter: Period");
            }

            if (command.Period.Day != 1)
            {
                throw new Exception("Period must be the first day of the month.");
            }

            var startedAt = DateTime.Now;

            using (var conn = NewConnection())
            {
                conn.Open();

                var step1 = new BillingDataProcessStep1(new Step1Config {
                    Connection = conn, Context = "ProcessRepository.Finalize", Period = command.Period, Now = startedAt, ClientID = 0, IsTemp = false
                });
                var step4 = new BillingDataProcessStep4Subsidy(new Step4Config {
                    Connection = conn, Context = "ProcessRepository.Finalize", Period = command.Period, ClientID = 0
                });

                var writeToolDataProcessResult = new WriteToolDataProcess(WriteToolDataConfig.Create(conn, "ProcessRepository.Finalize", command.Period, 0, 0, Cost.GetToolCosts(command.Period, 0))).Start();
                var writeRoomDataProcessResult = new WriteRoomDataProcess(new WriteRoomDataConfig {
                    Connection = conn, Context = "ProcessRepository.Finalize", Period = command.Period, ClientID = 0, RoomID = 0
                }).Start();
                var writeStoreDataProcessResult = new WriteStoreDataProcess(new WriteStoreDataConfig {
                    Connection = conn, Context = "ProcessRepository.Finalize", Period = command.Period, ClientID = 0, ItemID = 0
                }).Start();
                var populateToolBillingProcessResult    = step1.PopulateToolBilling();
                var populateRoomBillingProcessResult    = step1.PopulateRoomBilling();
                var populateStoreBillingProcessResult   = step1.PopulateStoreBilling();
                var populateSubsidyBillingProcessResult = step4.PopulateSubsidyBilling();

                conn.Close();

                var result = new FinalizeResult(startedAt)
                {
                    Period = command.Period,
                    WriteToolDataProcessResult          = writeToolDataProcessResult,
                    WriteRoomDataProcessResult          = writeRoomDataProcessResult,
                    WriteStoreDataProcessResult         = writeStoreDataProcessResult,
                    PopulateToolBillingProcessResult    = populateToolBillingProcessResult,
                    PopulateRoomBillingProcessResult    = populateRoomBillingProcessResult,
                    PopulateStoreBillingProcessResult   = populateStoreBillingProcessResult,
                    PopulateSubsidyBillingProcessResult = populateSubsidyBillingProcessResult
                };

                return(result);
            }
        }
Beispiel #3
0
    public void FinalizeRoom(FinalizeResult finalizeResult)
    {
        UniTask.Create(async() =>
        {
            //wait for the last throw operation, this can be done better
            await UniTask.Delay(1200);

            await CoreGameplay.I.EatLast(finalizeResult.LastEaterTurnId);

            // FinalizeController.I.

            // DestroyModuleGroup();

            // _finalizeFactory.Create(finalizeResult, _roomSettings);

            RoomUserView.Manager.I.RoomUserViews.ForEach(ruv => Object.Destroy(ruv.gameObject));
            Object.FindObjectsOfType <PlayerBase>().ForEach(obj => Object.Destroy(obj.gameObject));
            Object.Destroy(Object.FindObjectOfType <ChatSystem>().gameObject);
            Object.Destroy(PrizeView.I.gameObject);

            //immmm this will cause issues on the running funs like decreaseMoneyAimTime and events
            //change indie values instead of rewrite the whole object
            finalizeResult.PersonalFullUserInfo.Followers =
                Repository.I.PersonalFullInfo.Followers;
            finalizeResult.PersonalFullUserInfo.Followings =
                Repository.I.PersonalFullInfo.Followings;

            Repository.I.PersonalFullInfo = finalizeResult.PersonalFullUserInfo;
            Repository.I.PersonalFullInfo.DecreaseMoneyAimTimeLeft().Forget();
            //todo you MUST edit each value on it's own now?, this is about replacing the whole
            //data object, but it seems fine


            FinalizeController.Construct(RoomReferences.I.Canvas, RoomSettings.I, finalizeResult)
            .Forget();
        });
    }
Beispiel #4
0
    // public Container Container => Container.Room;

    // //args
    // [Inject] readonly FinalizeResult _finalizeResult;
    // [Inject] readonly RoomSettings _roomSettings;

    //proj
    // [Inject] private readonly ReferenceInstantiator<FinalizeInstaller> _referenceInstantiator;

    //fin
    // [Inject] private readonly FinalizeInstaller.References _finalizeRefs;


    // public static IFinalizeController I;

    // public FinalizeController(RoomSettings roomSettings, FinalizeResult finalizeResult)
    // {
    // }

    public static async UniTask Construct(Transform moduleCanvas, RoomSettings roomSettings, FinalizeResult finalizeResult)
    {
        // if (I != null)
        // throw new Exception($"singleton {nameof(IFinalizeController)} already exists");

        var finalMuvParent = (await Addressables.InstantiateAsync("finalMuvParent", moduleCanvas)).transform;

        for (int i = 0; i < roomSettings.UserInfos.Count; i++)
        {
            if (i == roomSettings.MyTurn)
            {
                continue;
            }

            FinalMuv.Create(roomSettings.UserInfos[i], finalizeResult.UserRoomStatus[i], finalMuvParent).Forget();
        }

        RoomResultPanel.Instantiate(moduleCanvas, finalizeResult.RoomXpReport, finalizeResult.PersonalFullUserInfo,
                                    finalizeResult.UserRoomStatus[roomSettings.MyTurn]).Forget();
    }