示例#1
0
    /// <summary>
    /// 战斗开始
    /// </summary>
    /// <param name="battleid">战斗配置id</param>
    /// <param name="playercfgid">玩家配置id</param>
    public void BattleStart(int battleid, int playercfgid)
    {
        battleWnd = new BattleWnd();

        Dictionary <int, BornPointCfg> bpcs = ConfigManager.instance.GetBornPoints(battleid);

        foreach (BornPointCfg bpc in bpcs.Values)
        {
            int roleid = bpc.RoleID == 0 ?  playercfgid : bpc.RoleID;

            // 通过角色ID获取角色配置
            RoleCfg roleCfg = ConfigManager.instance.GetRoleCfg(roleid);

            // 创建角色
            Character character = CharacterManager.instance.Create(roleCfg, MathTools.GetPosition(bpc.Position));
            //character.GlobalID = _idcounter++;
            character.side = roleCfg.RoleType == RoleType.Player ? RoleSide.Blue : RoleSide.Red;

            // 战斗界面监听战斗中的事件
            character.hpChanged    = battleWnd.CreateBloodText;
            character.characterDie = battleWnd.OnCharacterDie;

            // 角色创建
            battleWnd.OnCharacterCreate(character);

            CharacterManager.instance.AddCharacter(character.GlobalID, character);
        }
    }
示例#2
0
    public void UpdateUI(int _index, RoleCfg _Data)
    {
        Index = _index;
        m_Data = _Data;

        RefreshUI();
    }
示例#3
0
 public Monster(int globalid, RoleCfg roleCfg, Vector3 position) : base(globalid, roleCfg, position)
 {
     // 创建角色AI
     _behavior = Activator.CreateInstance(Type.GetType(_cfg.Behavior), new object[1] {
         this
     }) as BaseBehavior;
 }
    /// <summary>
    /// 创建角色
    /// </summary>
    /// <param name="roleCfg"></param>
    /// <param name="position"></param>
    /// <returns></returns>
    public Character Create(RoleCfg roleCfg, Vector3 position)
    {
        Type t = Type.GetType(roleCfg.RoleType.ToString());

        return(Activator.CreateInstance(t, new object[3] {
            _roleidCounter++, roleCfg, position
        }) as Character);
    }
示例#5
0
    public virtual void Init(CharacterAttr attr)
    {
        this.characterid = (uint)attr.id;
        this.position    = new Vector3(attr.pos.x, attr.pos.y, attr.pos.z);

        _cfg = ConfigManager.instance.GetRoleCfg(attr.cfgid);

        // 对象池创建对象
        _transform            = (PoolManager.instance.Spawn("Units/", _cfg.ModelName)).transform;
        _transform.position   = position;
        _transform.localScale = Vector3.one;

        _animation = _transform.GetComponent <Animation>();
    }
示例#6
0
    public float Sight;             // 视野


    public static CharacterAttr GetAttr(RoleCfg cfg)
    {
        CharacterAttr attr = new CharacterAttr();

        attr.RoleType    = cfg.RoleType;
        attr.Hp          = cfg.Hp;
        attr.Mp          = cfg.Mp;
        attr.MoveSpeed   = cfg.MoveSpeed;
        attr.AttackSpeed = cfg.AttackSpeed;
        attr.Defend      = cfg.Defend;
        attr.Sight       = cfg.Sight;

        return(attr);
    }
    // 角色上线
    private void OnCharacterOnline(SocketModel model)
    {
        RespCharacterOnline resp = SerializeUtil.Deserialize <RespCharacterOnline>(model.message);

        DataCache.instance.currentCharacter = DataCache.instance.GetCharDTO(resp.characterid);

        // 创建玩家
        CharacterDTO ch  = DataCache.instance.currentCharacter;
        RoleCfg      cfg = ConfigManager.instance.GetRoleCfg(ch.cfgid);
        Vector3      pos = new Vector3(ch.pos_x, ch.pos_y, ch.pos_z);

        Battle.instance.Create <Player>(ch);

        Battle.instance.isonline = true;
    }
示例#8
0
    public Player(int globalid, RoleCfg roleCfg, Vector3 position) : base(globalid, roleCfg, position)
    {
        _camera = Camera.main;

        // 计算相机偏移
        _cameraOffset = _camera.transform.position - _transform.position;

        _targetTip            = (GameObject.Instantiate(Resources.Load("Widgets/TargetTip")) as GameObject).transform;
        _targetTip.position   = new Vector3(10000, 10000, 10000);
        _targetTip.localScale = Vector3.one;

        // 获取虚拟摇杆,添加摇杆监听事件
        _joystick = GameObject.Find("UI/Canvas/Joystick").GetComponent <ETCJoystick>();
        _joystick.gameObject.SetActive(true);
        _joystick.onMove.AddListener(OnJoystickMove);
    }
    /// <summary>
    /// 获取场景中的其他玩家信息的应答
    /// </summary>
    /// <param name="model"></param>
    private void OnSceneChar(SocketModel model)
    {
        if (model.message == null)
        {
            return;
        }
        RespSceneCharacters resp = SerializeUtil.Deserialize <RespSceneCharacters>(model.message);

        for (int i = 0; i < resp.characters.Count; i++)
        {
            CharacterDTO dto = resp.characters[i];
            RoleCfg      cfg = ConfigManager.instance.GetRoleCfg(dto.cfgid);
            Vector3      pos = new Vector3(dto.pos_x, dto.pos_y, dto.pos_z);
            //CharacterManager.instance.Create(dto.id, cfg, pos, typeof(OtherPlayer));
            Battle.instance.Create <Player>(dto);
        }
    }
示例#10
0
    public void Initialize()
    {
        _roleName = _transform.Find("RoleName").GetComponent <InputField>();

        Button btnReturn = _transform.Find("BtnReturn").GetComponent <Button>();

        btnReturn.onClick.AddListener(OnReturn);

        Button btnEnterGame = _transform.Find("BtnCreateRole").GetComponent <Button>();

        btnEnterGame.onClick.AddListener(OnCreateRole);

        Transform content  = _transform.Find("Scroll View/Viewport/Content");
        Button    btnClone = _transform.Find("Scroll View/Viewport/BtnRole").GetComponent <Button>();

        Dictionary <int, RoleCfg> roleCfgs = ConfigManager.instance.GetTypeRoleCfgs(RoleType.Player);

        currentRoleCfg = roleCfgs[1001];

        foreach (RoleCfg cfg in roleCfgs.Values)
        {
            if (cfg.RoleType != RoleType.Player)
            {
                continue;
            }

            Transform btnRole = (GameObject.Instantiate(btnClone.gameObject) as GameObject).transform;
            btnRole.SetParent(content);
            btnRole.localScale    = Vector3.one;
            btnRole.localPosition = Vector3.zero;
            btnRole.gameObject.SetActive(true);

            Text ID = btnRole.Find("ID").GetComponent <Text>();
            ID.text = cfg.ID.ToString();

            Text name = btnRole.Find("Name").GetComponent <Text>();
            name.text = cfg.RoleName;

            btnRole.gameObject.AddComponent <ButtonClickListener>().cfg = cfg;
        }
    }
示例#11
0
    // 选择角色
    public void ShowSelectRole()
    {
        WindowManager.instance.Open <SelectRoleWnd>().Initialize();

        foreach (GameObject go in _roles.Values)
        {
            GameObject.Destroy(go);
        }
        _roles.Clear();

        List <CharacterDTO> dtos = DataCache.instance.chDtos;

        for (int i = 0; i < dtos.Count; i++)
        {
            CharacterDTO dto  = dtos[i];
            RoleCfg      cfg  = ConfigManager.instance.GetRoleCfg(dto.cfgid);
            Transform    role = (GameObject.Instantiate(Resources.Load("Units/" + cfg.ModelName)) as GameObject).transform;
            role.name       = cfg.ModelName;
            role.localScale = Vector3.one;
            role.position   = Vector3.zero;

            if (dto.id == dtos[0].id)
            {
                role.gameObject.SetActive(true);
                _currentRole = role.gameObject;
                DataCache.instance.currentCharacter = dto;
            }
            else
            {
                role.gameObject.SetActive(false);
            }


            _roles.Add(dto.id, role.gameObject);
        }
    }
示例#12
0
 public OtherPlayer(int globalid, RoleCfg roleCfg, Vector3 position) : base(globalid, roleCfg, position)
 {
 }
示例#13
0
    private void InserCustomRole()
    {
        // 插入自定义英雄
        RoleCfg custom = new RoleCfg();
        custom.ID = -1;
        custom.Name = "自定义";
        custom.Alias = "无";
        custom.Desc = "无";

        custom.Sex = (int)CreateSys.Instance.SelectSex;
        custom.Type = (int)CreateSys.Instance.SelectType;
        custom.Trait = (int)CreateSys.Instance.SelectTrait;
        custom.State = (int)CreateSys.Instance.SelectState;

        custom.Star = 0;
        custom.Leading = 20;
        custom.Strength = 20;
        custom.Wit = 20;
        custom.Charm = 20;
        custom.politics = 20;

        m_ChoiceRole_lst.Add(custom);
    }
示例#14
0
    public Character(int globalid, RoleCfg roleCfg, Vector3 position)
    {
        _globalID = globalid;

        _cfg = roleCfg;

        // 通过配置获取原始属性
        _originAttr = CharacterAttr.GetAttr(roleCfg);

        // 获取当前属性
        _currAttr = _originAttr.Clone();

        // 对象池创建对象
        _transform            = (PoolManager.instance.Spawn("Units/", _cfg.ModelName)).transform;
        _transform.position   = position;
        _transform.localScale = Vector3.one;

        _navmeshAgent = _transform.gameObject.GetComponent <UnityEngine.AI.NavMeshAgent>();
        if (_navmeshAgent == null)
        {
            _navmeshAgent = _transform.gameObject.AddComponent <UnityEngine.AI.NavMeshAgent>();
        }
        _navmeshAgent.speed        = _originAttr.MoveSpeed;
        _navmeshAgent.enabled      = false;
        _navmeshAgent.angularSpeed = 180;

        _animation = _transform.gameObject.GetComponent <Animation>();

        // 在角色的GameObject上添加一个碰撞器
        _collider = _transform.gameObject.GetComponent <CapsuleCollider>();
        if (_collider == null)
        {
            _collider = _transform.gameObject.AddComponent <CapsuleCollider>();
        }
        _collider.center = new Vector3(0, 1, 0);
        _collider.height = 2;

        // 添加ID代理
        _idAgent = _transform.gameObject.GetComponent <IDAgent>();
        if (_idAgent == null)
        {
            _idAgent = _transform.gameObject.AddComponent <IDAgent>();
        }
        _idAgent.globalID = globalid;


        // 创建角色拥有的技能发射器
        _skillCasters = new Dictionary <int, SkillCaster>();
        Dictionary <int, SkillGroupCfg> skillGroupCfgs = ConfigManager.instance.GetSkillGroupCfgs(_cfg.ID);

        foreach (SkillGroupCfg cfg in skillGroupCfgs.Values)
        {
            SkillCaster caster = new SkillCaster(this);
            caster.SkillBasicCfg  = ConfigManager.instance.GetSkillBasicCfg(cfg.ID);
            caster.SkillBulletCfg = ConfigManager.instance.GetSkillBulletCfg(cfg.ID);
            caster.SkillAOECfg    = ConfigManager.instance.GetSkillAOECfg(cfg.ID);
            caster.SkillBuffCfg   = ConfigManager.instance.GetSkillBuffCfg(cfg.ID);
            caster.SkillTrapCfg   = ConfigManager.instance.GetSkillTrapCfg(cfg.ID);

            if (!_skillCasters.ContainsKey(cfg.ID))
            {
                _skillCasters.Add(cfg.ID, caster);
            }
        }
    }
示例#15
0
 public Character Create(int globalid, Type t, RoleCfg roleCfg, Vector3 position)
 {
     return(Activator.CreateInstance(t, new object[3] {
         globalid, roleCfg, position
     }) as Character);
 }
示例#16
0
 public Npc(int globalid, RoleCfg roleCfg, Vector3 position) : base(globalid, roleCfg, position)
 {
 }