Пример #1
0
        public static Packet GetPacket(ConnectionState state, int packetId)
        {
            bool   success;
            Packet outPacket;

            switch (state)
            {
            case ConnectionState.Handshake:
                success = HandshakeFactory.TryGetPacket(packetId, out outPacket);
                break;

            case ConnectionState.Status:
                success = StatusFactory.TryGetPacket(packetId, out outPacket);
                break;

            case ConnectionState.Login:
                success = LoginFactory.TryGetPacket(packetId, out outPacket);
                break;

            case ConnectionState.Play:
                success = PlayFactory.TryGetPacket(packetId, out outPacket);
                break;

            default:
                throw new ArgumentOutOfRangeException(nameof(state), state, null);
            }

            if (!success)
            {
                return(null);
            }
            outPacket.PacketId = packetId;
            return(outPacket);
        }
Пример #2
0
 public Server(ClusterConfiguration clusterConfiguration)
 {
     _currentStatus = new UninitializedStatus(this);
     _statusFactory = new StatusFactory();
     // todo avoid hard-coded timespan
     _rpcChannel = new NetMqRpcChannel(clusterConfiguration, TimeSpan.FromMilliseconds(200));
 }
        public void afflictionToStatusConversion()
        {
            StatusFactory statusFab = new StatusFactory();

            Dictionary <ICauseAfflictions, IStatusEffect> testCases = new Dictionary <ICauseAfflictions, IStatusEffect>();
            CauseBleed bleedAffliction = new CauseBleed();

            testCases.Add(bleedAffliction, new Bleed(bleedAffliction));

            CauseBreakBones breakBonesAffliction = new CauseBreakBones();

            testCases.Add(breakBonesAffliction, new BrokenBone(breakBonesAffliction));

            CauseUnconsciousness unconsciousnessAffliction = new CauseUnconsciousness();

            testCases.Add(unconsciousnessAffliction, new Unconsciousness(unconsciousnessAffliction));

            bool allConvertedCorrect = true;

            foreach (ICauseAfflictions testAffliction in testCases.Keys)
            {
                TestContext.Write("Affliction {0}: ", testAffliction.getAfflictionType());
                string constrTypeString  = testCases[testAffliction].ToString();
                string factTypeString    = statusFab.createStatus(testAffliction).ToString();
                bool   hashCodesAreEqual = constrTypeString == factTypeString;
                TestContext.WriteLine("Constr.: {0}, Fact.: {1}, Equal: {2}", constrTypeString, factTypeString, hashCodesAreEqual);

                if (!hashCodesAreEqual)
                {
                    allConvertedCorrect = false;
                }
            }

            Assert.True(allConvertedCorrect);
        }
Пример #4
0
 public void ApplyStatus(Health health, StatusFactory factory)
 {
     if (hasAuthority)
     {
         CmdApplyStatus(health.GetComponent <NetworkIdentity>().netId, factory.name);
     }
 }
 public IEnumerable <Models.DataSourceStudyStatus> GetAllStatus()
 {
     try
     {
         IStatusRepository statusRepo = StatusFactory.GetInstance().GetStatusInstance();
         return(statusRepo.GetStatuses());
     }
     catch (Exception e)
     {
         throw e;
     }
 }
        public void UpdateStatus_NewClaimIdAndStatusId_UpdatedClaimHasNewStatusId()
        {
            // Arrange
            var          interactor    = UpdateClaimInteractorFactory.Create();
            ClaimEntity  claimToUpdate = ClaimFactory.Create();
            StatusEntity newStatus     = StatusFactory.Create("Closed");

            // Run
            var result = interactor.UpdateStatus(claimToUpdate, newStatus);

            // Assert
            result.StatusId.ShouldBe(newStatus.Id);
        }
Пример #7
0
        internal static void Register <TPacket>(PacketDirection packetDirection, ConnectionState state, int packetId, Func <TPacket> createFunc) where TPacket : Packet
        {
            if (packetDirection == PacketDirection.ServerBound)
            {
                switch (state)
                {
                case ConnectionState.Handshake:
                    HandshakeFactory.Register(packetId, createFunc);
                    break;

                case ConnectionState.Status:
                    StatusFactory.Register(packetId, createFunc);
                    break;

                case ConnectionState.Login:
                    LoginFactory.Register(packetId, createFunc);
                    break;

                case ConnectionState.Play:
                    PlayFactory.Register(packetId, createFunc);
                    break;

                default:
                    throw new ArgumentOutOfRangeException(nameof(state), state, null);
                }
            }
            else
            {
                switch (state)
                {
                case ConnectionState.Handshake:
                    ServerHandshakeFactory.Register(packetId, createFunc);
                    break;

                case ConnectionState.Status:
                    ServerStatusFactory.Register(packetId, createFunc);
                    break;

                case ConnectionState.Login:
                    ServerLoginFactory.Register(packetId, createFunc);
                    break;

                case ConnectionState.Play:
                    ServerPlayFactory.Register(packetId, createFunc);
                    break;

                default:
                    throw new ArgumentOutOfRangeException(nameof(state), state, null);
                }
            }
        }
Пример #8
0
    public void ApplyStatus(StatusFactory factory, BaseAvatar source)
    {
        if (currentEffects.Contains(factory))
        {
            return;
        }
        Status s = factory.GetStatus(this, source);

        currentEffects.Add(factory);
        s.OnUnapply += () => {
            Debug.Log("OnUnapply");
            currentEffects.Remove(factory);
            OnStatusRemoved(s);
        };
        s.Apply();
        OnStatusApplied(s);
    }
Пример #9
0
        public SubmissionResult Verify(Submission submission, Problem problem, ProblemTest problemTest, Execution execution, string output)
        {
            SubmissionResult submissionResult = new SubmissionResult
            {
                SubmissionId = submission.Id,
                TestId       = submission.Id,
                Time         = execution.TotalMs,
                Memory       = (int)execution.UsedMemoryKBs
            };

            if (problem.TimeLimit + 199 < execution.TotalMs)
            {
                submissionResult.Score    = 0;
                submissionResult.StatusId = StatusFactory.GetStatus(Constants.Statuses.Codes.TLE).Id;
            }
            if (problem.MemoryLimit < execution.UsedMemoryKBs)
            {
                submissionResult.Score    = 0;
                submissionResult.StatusId = StatusFactory.GetStatus(Constants.Statuses.Codes.MLE).Id;
            }
            else if (!execution.HasOutputFile)
            {
                submissionResult.Score    = 0;
                submissionResult.StatusId = StatusFactory.GetStatus(Constants.Statuses.Codes.MOF).Id;
            }
            else if (MathcesOutput(output, execution.Output))
            {
                submissionResult.Score    = problemTest.Score;
                submissionResult.StatusId = StatusFactory.GetStatus(Constants.Statuses.Codes.OK).Id;
            }
            else
            {
                submissionResult.Score    = 0;
                submissionResult.StatusId = StatusFactory.GetStatus(Constants.Statuses.Codes.WA).Id;
            }
            if (!execution.HasTerminated && submissionResult.Score == 0)
            {
                submissionResult.Score    = 0;
                submissionResult.StatusId = StatusFactory.GetStatus(Constants.Statuses.Codes.TLE).Id;
            }
            return(submissionResult);


            return(null);
        }
Пример #10
0
        // Выполняется при получении статуса
        private void GetStatus()
        {
            // Пробуем получить статус
            try
            {
                _statusFactory = new StatusFactory(_manager); // Инициализируем «фабрику» статусов

                // Получаем статус текущего пользователя и вставляем его в поле «Первоначальный статус» (textBox1)
                textBox1.Text = _statusFactory.Get(int.Parse(_sessionInfo.MemberId));

                _oldstatus = textBox1.Text; // Записываем наш статус в переменную
            }

            // Если не получилось, то выдаем ошибку в специальном поле
            catch (Exception)
            {
                statusStatus.Text = "Нет соединения с ВКонтакте. Проверьте работоспособность интернета.";
            }
        }
Пример #11
0
    /// <summary>
    /// 确认能否添加状态。(状态放打断机制)
    /// </summary>
    /// <returns>true :该状态会打断技能 false : 该状态不打断技能</returns>
    public bool CheckCanAddStatus(int ResalseSceneID, int SkillID, AttackType SkillType, SkillStatusInfo Info)
    {
        StatusInterrupt interrputtype = StatusInterrupt.Phy;

        if (SkillType == AttackType.Physical)
        {
            interrputtype = StatusInterrupt.Phy;
        }
        else if (SkillType == AttackType.Magic)
        {
            interrputtype = StatusInterrupt.Magic;
        }
        else
        {
            return(true);
        }

        StatusM Data = StatusFactory.Create(m_SceneID, ResalseSceneID, SkillID, Info);

        //打断的技能
        if (Data != null /*&& Data.InterruptSkill() == true*/)
        {
            for (int i = 0; i < m_RoleStatus.Count; i++)
            {
                StatusM status = m_RoleStatus[i];
                if (status == null)
                {
                    continue;
                }
                if (status.CheckInterruptStatus(interrputtype) == true)
                {
                    return(false);
                }
            }
        }
        return(true);
    }
Пример #12
0
        internal static void Register <TPacket>(ConnectionState state, int packetId, Func <TPacket> createFunc) where TPacket : Packet
        {
            switch (state)
            {
            case ConnectionState.Handshake:
                HandshakeFactory.Register(packetId, createFunc);
                break;

            case ConnectionState.Status:
                StatusFactory.Register(packetId, createFunc);
                break;

            case ConnectionState.Login:
                LoginFactory.Register(packetId, createFunc);
                break;

            case ConnectionState.Play:
                PlayFactory.Register(packetId, createFunc);
                break;

            default:
                throw new ArgumentOutOfRangeException(nameof(state), state, null);
            }
        }
Пример #13
0
 public EM_Status(DEM_Status dem)
 {
     m_dem  = dem;
     m_fact = new StatusFactory(dem);
 }
 /// <summary>
 /// Default consturctor of the Statussheet
 /// </summary>
 public StatusSheet()
 {
     StatusFab = new StatusFactory();
 }
Пример #15
0
 public override void ApplyStatus(Health other, StatusFactory factory)
 {
     other.ApplyStatus(factory, this);
 }
Пример #16
0
 public override void ApplyStatus(Health health, StatusFactory factory)
 {
     gamePlayer.ApplyStatus(health, factory);
 }
Пример #17
0
        public ActionResult Post([FromBody] EmulatorPacket emulatorPacket)
        {
            EntityEntry <EmulationSessionMap> session;

            try
            {
                session = _sap1EmuContext.Add <EmulationSessionMap>(new EmulationSessionMap
                {
                    EmulationID      = Guid.NewGuid(),
                    ConnectionID     = null,
                    SessionStart     = DateTime.UtcNow,
                    EmulatorId       = _emulatorId,
                    StatusId         = StatusFactory.GetStatus(StatusType.Pending).Id,
                    InstructionSetId = _instructionSets[emulatorPacket.SetName]
                });
                _sap1EmuContext.CodeSubmissions.Add(new CodeSubmission()
                {
                    EmulationID = session.Entity.EmulationID,
                    Code        = emulatorPacket.CodeList,
                });
                _sap1EmuContext.SaveChanges();
            }
            catch (KeyNotFoundException)
            {
                return(BadRequest(
                           // TODO: Set Type to supported_sets url
                           new ProblemDetails()
                {
                    Status = StatusCodes.Status400BadRequest,
                    Type = "",
                    Title = "Invalid SetName...",
                    Detail = $"The Instruction Set `{emulatorPacket.SetName}` does not exist.",
                    Instance = HttpContext.Request.Path
                }
                           ));
            }


            try
            {
                List <string> compiled_binary = Assemble.Parse(emulatorPacket.CodeList, emulatorPacket.SetName);
                RAMProgram    rmp             = new RAMProgram(compiled_binary);

                EngineProc engine = new EngineProc();
                engine.Init(rmp, _decoder, emulatorPacket.SetName);
                engine.Run();

                session.Entity.SessionEnd = DateTime.UtcNow;
                session.Entity.StatusId   = StatusFactory.GetStatus(StatusType.Ok).Id;

                _sap1EmuContext.SaveChanges();
                return(Ok(engine.FrameStack()));
            }
            catch (ParseException pe)
            {
                session.Entity.SessionEnd = DateTime.UtcNow;
                session.Entity.StatusId   = StatusFactory.GetStatus(StatusType.ParsingError).Id;


                if (pe.InnerException != null)
                {
                    string msg = (pe.Message + " " + pe.InnerException.Message);
                    _sap1EmuContext.ErrorLog.Add(new ErrorLog()
                    {
                        EmulationID = session.Entity.EmulationID,
                        ErrorMsg    = msg
                    });

                    _sap1EmuContext.SaveChanges();
                    return(BadRequest(msg));
                }
                else
                {
                    _sap1EmuContext.ErrorLog.Add(new ErrorLog()
                    {
                        EmulationID = session.Entity.EmulationID,
                        ErrorMsg    = pe.Message
                    });

                    _sap1EmuContext.SaveChanges();
                    return(BadRequest(pe.Message));
                }
            }
            catch (EngineRuntimeException ere)
            {
                session.Entity.SessionEnd = DateTime.UtcNow;
                session.Entity.StatusId   = StatusFactory.GetStatus(StatusType.EmulationError).Id;

                if (ere.InnerException != null)
                {
                    string msg = (ere.Message + " " + ere.InnerException.Message);
                    _sap1EmuContext.ErrorLog.Add(new ErrorLog()
                    {
                        EmulationID = session.Entity.EmulationID,
                        ErrorMsg    = msg
                    });

                    _sap1EmuContext.SaveChanges();
                    return(BadRequest(ere.Message + " " + ere.InnerException.Message));
                }
                else
                {
                    _sap1EmuContext.ErrorLog.Add(new ErrorLog()
                    {
                        EmulationID = session.Entity.EmulationID,
                        ErrorMsg    = ere.Message
                    });

                    _sap1EmuContext.SaveChanges();
                    return(BadRequest(ere.Message));
                }
            }
            catch (Exception e)
            {
                session.Entity.SessionEnd = DateTime.UtcNow;
                session.Entity.StatusId   = StatusFactory.GetStatus(StatusType.SystemError).Id;

                _sap1EmuContext.ErrorLog.Add(new ErrorLog()
                {
                    EmulationID = session.Entity.EmulationID,
                    ErrorMsg    = e.Message
                });

                _sap1EmuContext.SaveChanges();
                return(StatusCode(StatusCodes.Status500InternalServerError, e.Message));
            }
        }
Пример #18
0
 public abstract void ApplyStatus(Health health, StatusFactory factory);
Пример #19
0
    public void CmdApplyStatus(uint netId, string factoryName)
    {
        StatusFactory fact = Resources.Load <StatusFactory>($"StatusEffects/{factoryName}");

        ObjectPool.singleton.spawnedObjects[netId].GetComponent <Health>().ApplyStatus(fact, avatar);
    }
Пример #20
0
        public IActionResult StartEmulation([FromBody] SAP2CodePacket sap2CodePacket)
        {
            EmulationSessionMap session = null;

            try
            {
                session = _sap1EmuContext.EmulationSessionMaps
                          .Single(esm => esm.EmulationID == sap2CodePacket.EmulationID);
            }
            catch (InvalidOperationException)
            {
                return(BadRequest(sap2CodePacket.EmulationID));
            }


            if (session.StatusId != (int)StatusType.Pending)
            {
                string message = string.Empty;
                switch ((StatusType)session.StatusId)
                {
                case StatusType.Ok:
                    message = "Emulation Complete: Please use 'GET: /session/{id}/recall' instead";
                    break;

                case StatusType.SQLError:
                case StatusType.ParsingError:
                case StatusType.EmulationError:
                case StatusType.SystemError:
                    message = "Emulation Errored: Please create new session";
                    break;

                case StatusType.InProgress:
                    message = "Emulation In Progress: Please use 'POST: /{id}/resume' instead";
                    break;

                default:
                    message = "Unknown Host Error";
                    break;
                }

                return(BadRequest(
                           new
                {
                    EmulationID = sap2CodePacket.EmulationID,
                    Status = StatusFactory.GetStatus((StatusType)session.StatusId),
                    Message = message
                }
                           ));
            }


            // This will save the plain code
            try
            {
                _sap1EmuContext.CodeSubmissions.Add(
                    new CodeSubmission()
                {
                    EmulationID = session.EmulationID,
                    Code        = sap2CodePacket.Code
                }
                    );
                _sap1EmuContext.SaveChanges();
            }
            catch (Exception e)
            {
                _sap1EmuContext.ErrorLog.Add(
                    new ErrorLog
                {
                    EmulationID = session.EmulationID,
                    ErrorMsg    = "NON-FATAL SQL ERROR:\t" + e.Message + (e.InnerException != null ? "\t" + e.InnerException.Message : "")
                }
                    );
                //session.SessionEnd = DateTime.UtcNow;
                session.StatusId = (int)StatusType.SQLError;

                _sap1EmuContext.SaveChanges();
            }


            SAP2BinaryPacket sap2BinaryPacket;

            // Assemble
            try
            {
                sap2BinaryPacket = new SAP2BinaryPacket()
                {
                    EmulationID = sap2CodePacket.EmulationID,
                    Code        = Assemble.Parse((List <string>)sap2CodePacket.Code),
                    SetName     = sap2CodePacket.SetName
                };
            }
            catch (ParseException pe)
            {
                session.StatusId   = (int)StatusType.ParsingError;
                session.SessionEnd = DateTime.UtcNow;

                string errorMsg = pe.Message + (pe.InnerException != null ? "\n" + pe.InnerException.Message : "");
                _sap1EmuContext.ErrorLog.Add(
                    new ErrorLog
                {
                    EmulationID = session.EmulationID,
                    ErrorMsg    = errorMsg
                }
                    );

                _sap1EmuContext.SaveChanges();
                return(BadRequest(
                           new
                {
                    EmulationID = sap2CodePacket.EmulationID,
                    Status = StatusFactory.GetStatus((StatusType)session.StatusId),
                    Message = errorMsg
                }
                           ));
            }


            // Save Binary
            try
            {
                _sap1EmuContext.CodeSubmissionsBinary.Add(
                    new CodeSubmission()
                {
                    EmulationID = session.EmulationID,
                    Code        = sap2BinaryPacket.Code
                }
                    );
                _sap1EmuContext.SaveChanges();
            }
            catch (Exception e)
            {
                _sap1EmuContext.ErrorLog.Add(
                    new ErrorLog
                {
                    EmulationID = session.EmulationID,
                    ErrorMsg    = "NON-FATAL SQL ERROR:\t" + e.Message + (e.InnerException != null ? "\t" + e.InnerException.Message : "")
                }
                    );

                session.SessionEnd = DateTime.UtcNow;
                session.StatusId   = (int)StatusType.SystemError;

                _sap1EmuContext.SaveChanges();
            }


            // Run Emulator
            try
            {
                RAMProgram rmp = new RAMProgram((List <string>)sap2BinaryPacket.Code);

                EngineProc engine = new EngineProc();
                engine.Init(rmp, _decoder, sap2BinaryPacket.SetName);
                engine.Run();

                session.StatusId   = (int)StatusType.Ok;
                session.SessionEnd = DateTime.UtcNow;
                _sap1EmuContext.SaveChanges();

                return(Ok(engine.FrameStack()));
            }
            catch (EngineRuntimeException ere)
            {
                session.StatusId   = (int)StatusType.EmulationError;
                session.SessionEnd = DateTime.UtcNow;

                string errorMsg = ere.Message + (ere.InnerException != null ? "\n" + ere.InnerException.Message : "");
                _sap1EmuContext.ErrorLog.Add(
                    new ErrorLog
                {
                    EmulationID = session.EmulationID,
                    ErrorMsg    = errorMsg
                }
                    );
                _sap1EmuContext.SaveChanges();
                return(BadRequest(
                           new
                {
                    EmulationID = sap2CodePacket.EmulationID,
                    Status = StatusFactory.GetStatus((StatusType)session.StatusId),
                    Message = errorMsg
                }
                           ));
            }
        }
Пример #21
0
    /// <summary>
    /// 添加状态,SceneID 释放技能对象的SceneID
    /// </summary>
    /// <returns>true :该状态会打断技能 false : 该状态不打断技能</returns>
    public bool AddStatus(int ResalseSceneID, int SkillID, SkillStatusInfo Info)
    {
        StatusType s = (StatusType)Info.m_type;

        SetAttrChange();

        //状态叠加规则
        if (Info.m_RelpaceInfo.m_type == 1)
        {
        }
        else if (Info.m_RelpaceInfo.m_type == 2)         //控制类状态
        {
            if (Info.m_RelpaceInfo.m_compatible == 0)
            {
                foreach (StatusM status  in m_RoleStatus)
                {
                    if (status.CheckHaveStatus() && status.ReplaceInfo.m_type == 2)
                    {
                        if (status.ReplaceInfo.m_compatible == 0)
                        {
                            if (status.ReplaceInfo.m_reppriority > Info.m_RelpaceInfo.m_reppriority)
                            {
                                return(false);
                            }
                        }
                    }
                }
                foreach (StatusM status  in m_RoleStatus)
                {
                    if (status.CheckHaveStatus() && status.ReplaceInfo.m_type == 2)
                    {
                        status.ClearStatus();
                    }
                }
            }
            else
            {
                foreach (StatusM status  in m_RoleStatus)
                {
                    if (status.ReplaceInfo.m_type == 2)
                    {
                        if (status.CheckHaveStatus() && status.ReplaceInfo.m_compatible == 0)
                        {
                            return(false);
                        }
                    }
                }
            }
        }
        else
        {
        }
        //
        StatusM Data = FindStatusM(s);

        if (Data != null)
        {
            if (Data.AddStatus(ResalseSceneID, SkillID, Info))
            {
                Data.AddStatusEffect(Info, SkillID, CheckCreateAction(Info));
                return(Data.InterruptSkill());
            }
        }
        else
        {
            Data = StatusFactory.Create(m_SceneID, ResalseSceneID, SkillID, Info);
            if (Data != null)
            {
                Data.Init(m_SceneID, ResalseSceneID, SkillID, Info);
                m_RoleStatus.Add(Data);
                Info.m_releasesceneid = ResalseSceneID;
                Data.AddStatusEffect(Info, SkillID, CheckCreateAction(Info));

                Life life = CM.GetAllLifeM(m_SceneID, LifeMType.ALL);
                if (life != null)
                {
                    if (Info.m_bufftype == 1)
                    {
                        life.ShowBuff(Info.m_name);
                    }
                    else
                    {
                        life.ShowDebuff(Info.m_name);
                    }
                }

                return(Data.InterruptSkill());
            }
        }
        return(false);
    }