public void DeadLogicBefore(DeadInfo dead_info)
 {
     belong = dead_info.turn_to.belong;
     BuffContrllor.removeAll(this);
     if (Main.Inst.lv_ctrl.map_data.my_type == eMapType.PvP_2P)
     {
         Main.Inst.overturn_list.Add(this);
         my_state = eChessState.Deading;
     }
 }
    public void DoDead(DeadInfo deadInfo)
    {
        Debug.Log("Do dead");
        Dictionary <string, string> data = new Dictionary <string, string>();

        data["room_name"]   = deadInfo.room_name;
        data["object_name"] = deadInfo.object_name;
        data["tag"]         = deadInfo.tag;
        socket.Emit("dead", new JSONObject(data));
    }
示例#3
0
    public void PlayerLeaveGame(string json)
    {
        if (!PhotonNetwork.isMasterClient)
        {
            return;
        }
        DeadInfo di   = JsonUtility.FromJson <DeadInfo>(json);
        string   name = di.name;
        Vector3  vec  = di.position;

        vm.NoticeAll(name + "变成了一具尸体", true);
    }
示例#4
0
    public void LeaveGame()
    {
        DeadInfo di = new DeadInfo
        {
            name     = myPlayer.myHeroName,
            position = myPlayer.transform.position
        };
        string json = JsonUtility.ToJson(di);

        photonView.RPC("PlayerLeaveGame", PhotonTargets.MasterClient, json);
        PhotonNetwork.LeaveRoom();
        SceneManager.LoadScene("Lobby");
    }
    public void on_damage(DamageInfo _info)
    {
        setHP(attribute.mana - _info.dmg);
        if (attribute.mana == 0)
        {
            //罗严塔尔技能触发点

            //开始死亡
            DeadInfo dead_info = new DeadInfo();
            dead_info.killer  = _info.source_actor;
            dead_info.turn_to = _info.source_actor;
            StartCoroutine(playDead(dead_info));
        }
    }
示例#6
0
    public void sendDeadMsg()
    {
        newConnection  netconnection;
        GameController gameController = GameObject.Find("GameController").GetComponent <GameController>();

        if (GameObject.Find("SocketIO") != null)
        {
            netconnection = GameObject.Find("SocketIO").GetComponent <newConnection>();
            DeadInfo deadInfo = new DeadInfo();
            deadInfo.tag         = gameObject.tag;
            deadInfo.object_name = gameObject.name;
            deadInfo.room_name   = gameController.room_name;
            netconnection.DoDead(deadInfo);
        }
    }
 public void DeadLogicAfter(DeadInfo dead_info)
 {
     //if (Data.DEAD_ENDING_TURN) {
     //PVP反面,其他都删除【设计】PVE场景中NPC的阵营转变由事件处理
     if (Main.Inst.lv_ctrl.map_data.my_type == eMapType.PvP_2P)
     {
         setHP(attribute.Max_mana);
         initImage();
         my_state = eChessState.Overturn;
         if (Main.Inst.lv_ctrl.map_data.my_type == eMapType.PvP_2P)
         {
             Main.Inst.DamageOnOppoPlayer(attribute.Cost);
         }
     }
     else
     {
         //坑 或许逻辑有问题
         my_state = eChessState.Deading;
         //container.clearMoveFlag();
         //Destroy(gameObject);
         remove();
     }
 }
    IEnumerator playDead(DeadInfo dead_info)
    {
        Main.Inst.addDancer("playDead");
        DeadLogicBefore(dead_info);
        yield return(new WaitForSeconds(0.5f));

        //FX
        foreach (GameObject obj in deadEffects1)
        {
            GameObject _o = Instantiate(obj, transform.position + new Vector3(0, 0, -1f), transform.rotation);
            _o.transform.parent = transform;
        }
        //FX
        foreach (GameObject obj in overturnEffects1)
        {
            GameObject _o = Instantiate(obj, transform.position + new Vector3(0, 0, -1f), transform.rotation);
            _o.transform.parent = transform;
        }
        DeadLogicAfter(dead_info);

        Main.Inst.redDancer("playDead");
        yield return(null);
    }
示例#9
0
	protected void Awake()
	{
		KillingObject = new LifeModule.DeadInfo();
	}
示例#10
0
        /// <summary>
        /// Разделение
        /// </summary>
        /// <param name="personId">
        /// The person Id.
        /// </param>
        /// <param name="statementsToSeparate">
        /// The statements To Separate.
        /// </param>
        /// <param name="copyDeadInfo">
        /// The copy Dead Info.
        /// </param>
        /// <param name="status">
        /// The status.
        /// </param>
        public void Separate(Guid personId, IList <Statement> statementsToSeparate, bool copyDeadInfo, int status)
        {
            var session                    = ObjectFactory.GetInstance <ISessionFactory>().GetCurrentSession();
            var conceptManager             = ObjectFactory.GetInstance <IConceptCacheManager>();
            var currentUser                = ObjectFactory.GetInstance <ISecurityProvider>().GetCurrentUser();
            var personManager              = ObjectFactory.GetInstance <IInsuredPersonManager>();
            var statementManager           = ObjectFactory.GetInstance <IStatementManager>();
            var twinManager                = ObjectFactory.GetInstance <ITwinManager>();
            var numberPolicyCounterManager = ObjectFactory.GetInstance <INumberPolicyCounterManager>();

            var transaction = session.BeginTransaction();

            try
            {
                var person = personManager.GetById(personId);
                var statementToSeparateIdList = statementsToSeparate.Select(x => x.Id).ToList();

                var searchKeys =
                    session.QueryOver <SearchKey>().WhereRestrictionOn(x => x.Statement.Id).IsIn(statementToSeparateIdList).List();

                // Создаем пипла
                var personNew = new InsuredPerson {
                    Status = conceptManager.GetById(status)
                };

                // Определяем ЕНП, последний, заполненный
                var enp =
                    statementsToSeparate.Where(x => !string.IsNullOrEmpty(x.NumberPolicy))
                    .OrderByDescending(x => x.DateFiling)
                    .Select(x => x.NumberPolicy)
                    .FirstOrDefault();
                if (enp == null)
                {
                    var statement = statementsToSeparate.OrderByDescending(x => x.DateFiling).FirstOrDefault();
                    if (statement != null)
                    {
                        var personData = statement.InsuredPersonData;

                        if (personData.Birthday != null)
                        {
                            enp = numberPolicyCounterManager.GetNextEnpNumber(
                                currentUser.GetTf().Id,
                                personData.Gender.Id,
                                personData.Birthday.Value);
                        }
                    }
                }

                personNew.MainPolisNumber = enp;

                // создаём новую персону и делаем копию инфы о смерти
                if (copyDeadInfo && person.DeadInfo != null)
                {
                    var resultDeadInfo = new DeadInfo
                    {
                        ActRecordDate   = person.DeadInfo.ActRecordDate,
                        ActRecordNumber = person.DeadInfo.ActRecordNumber,
                        DateDead        = person.DeadInfo.DateDead
                    };
                    session.Save(resultDeadInfo);
                    personNew.DeadInfo = resultDeadInfo;
                }

                session.Save(personNew);

                // создаём копию истории и назначаем новой персоне
                var historyManager = ObjectFactory.GetInstance <IEmploymentHistoryManager>();
                var histories      = historyManager.GetByInsuredPersonId(person.Id);
                foreach (var history in histories)
                {
                    session.Evict(history);
                    history.Id            = Guid.Empty;
                    history.InsuredPerson = personNew;
                    session.Save(history);
                }

                // переставляем ссылки в периодах страхования
                MedicalInsurance medicalInsurance = null;

                var periodInsurances =
                    session.QueryOver <MedicalInsurance>()
                    .WhereRestrictionOn(x => medicalInsurance.Statement.Id)
                    .IsIn(statementToSeparateIdList)
                    .List();
                foreach (var periodInsurance in periodInsurances)
                {
                    periodInsurance.InsuredPerson = personNew;
                    session.Update(periodInsurance);
                }

                // переставляем ссылки в ключах поиска
                foreach (var key in searchKeys)
                {
                    key.InsuredPerson = personNew;
                    session.SaveOrUpdate(key);
                }

                // В заявлениях на разделение переставляем ссылки на новую персону
                foreach (var statement in statementsToSeparate)
                {
                    statement.InsuredPerson = personNew;
                    session.SaveOrUpdate(statement);
                }

                // Перестраиваем заявления
                statementManager.ApplyActive(person);
                statementManager.ApplyActive(personNew);

                // Отменять обработку дубликата не нужно!!!
                // Ищем все дуликаты с исходным пиплом и пораждаем новые дубликаты этих же дубликатов, но уже с новым пиплом
                var twins = twinManager.GetBy(x => x.FirstInsuredPerson.Id == personId);
                foreach (var twin in twins)
                {
                    session.Evict(twin);
                    twin.Id = Guid.Empty;
                    twin.FirstInsuredPerson = personNew;
                    session.Save(twin);
                }

                twins = twinManager.GetBy(x => x.SecondInsuredPerson.Id == personId);
                foreach (var twin in twins)
                {
                    session.Evict(twin);
                    twin.Id = Guid.Empty;
                    twin.SecondInsuredPerson = personNew;
                    session.Save(twin);
                }

                // А теперь помечаем пару как обработанный дубликат
                var twin1 = new Twin
                {
                    FirstInsuredPerson  = person,
                    SecondInsuredPerson = personNew,
                    TwinType            = conceptManager.GetById(TypeTwin.TypeTwin3)
                };
                session.Save(twin1);

                session.Flush();
                transaction.Commit();
            }
            catch
            {
                transaction.Dispose();
                throw;
            }
        }