示例#1
0
    public void MonsterStateChanged(MonsterStateChangedCommand cmd)
    {
        int id = cmd.MonsterID;
        Vector3 pos = new Vector3(cmd.PosX, cmd.PosY, cmd.PosZ);
        Quaternion rotation = new Quaternion(cmd.RotationX, cmd.RotationY, cmd.RotationZ, cmd.RotationW);

        if (!Monsters.ContainsKey(cmd.MonsterID))
        {
            GenerateMonster(id, pos, rotation, cmd.Life);
        }
        var monster = Monsters[id];
        monster.Life = cmd.Life;

        switch (cmd.ChangedStateType)
        {
            case MonsterChangedStateType.Attack:
                monster.AttackSync(pos, rotation, cmd.Time);
                break;
            case MonsterChangedStateType.Dead:
                monster.transform.position = pos;
                monster.transform.rotation = rotation;
                monster.Dead();
                break;
            case MonsterChangedStateType.StartWander:
                monster.StartLocomotionSync(pos, rotation, cmd.Time, 0);
                break;
            case MonsterChangedStateType.EndWander:
                monster.EndLocomotionSync(pos, rotation, cmd.Time);
                break;
            case MonsterChangedStateType.StartPursuit:
                monster.StartLocomotionSync(pos, rotation, cmd.Time, 1);
                break;
            case MonsterChangedStateType.EndPursuit:
                monster.EndLocomotionSync(pos, rotation, cmd.Time);
                break;
            case MonsterChangedStateType.Warn:
                monster.EndLocomotionSync(pos, rotation, cmd.Time);
                monster.Warn = true;
                break;
            case MonsterChangedStateType.Idle:
                monster.IdleSync(pos, rotation, cmd.Time);
                break;
        }
    }
示例#2
0
 //public void StartPursuitSync(Vector3 startPosition, Quaternion rotation, DateTime time)
 //{
 //    if (GameSettings.Instance.UnoptimizeMode)
 //    {
 //        transform.position = startPosition;
 //        transform.rotation = rotation;
 //        anim.speed = 1;
 //        AnimStartLocomotion();
 //    }
 //    else
 //    {
 //    }
 //}
 //public void EndPursuitSync(Vector3 endPosition, Quaternion rotation, DateTime time)
 //{
 //    if (GameSettings.Instance.UnoptimizeMode)
 //    {
 //        transform.position = endPosition;
 //        transform.rotation = rotation;
 //        anim.speed = 1;
 //        AnimEndLocomotion();
 //    }
 //    else
 //    {
 //    }
 //}
 public MonsterStateChangedCommand GetCurrentStateCmd(MonsterChangedStateType type)
 {
     MonsterStateChangedCommand cmd = new MonsterStateChangedCommand();
     cmd.MonsterID = this.ID;
     cmd.Life = this.Life;
     cmd.PosX = transform.position.x;
     cmd.PosY = transform.position.y;
     cmd.PosZ = transform.position.z;
     cmd.RotationX = transform.rotation.x;
     cmd.RotationY = transform.rotation.y;
     cmd.RotationZ = transform.rotation.z;
     cmd.RotationW = transform.rotation.w;
     cmd.Time = NetManager.Instance.Clock.Now;
     cmd.ChangedStateType = type;
     return cmd;
 }