示例#1
0
    public Player(PlayerData opts, GameObject scene, Map map) : base(opts, scene, map)
    {
        this.id   = opts.id;
        this.type = EnumChange <Consts.EntityType> .EnumToString(Consts.EntityType.player);

        this.target = null;
    }
示例#2
0
    public Npc(EntityData opts, GameObject scene, Map map) : base(opts, scene, map)
    {
        this.id   = opts.id;
        this.type = this.type = EnumChange <Consts.EntityType> .EnumToString(Consts.EntityType.npc);

        this.name   = opts.name;
        this.target = null;

        this.sprite = new SpriteUI(this);
    }
 public virtual void Init(GameMapManager.Attack_Data attack_Data, float radius, IGameUnitBattleFun gameUnitBattleFun)
 {
     maxDetectable_Range = attack_Data.maxDetectable_Range;
     string[] attack_Priority = attack_Data.attack_Priority.Split(',');
     _attackPriority = new CollisionDetectionType[attack_Priority.Length];
     for (int i = 0; i < attack_Priority.Length; ++i)
     {
         _attackPriority[i] = EnumChange <CollisionDetectionType> .StringToEnum(attack_Priority[i]);
     }
     this.radius        = radius;
     _gameUnitBattleFun = gameUnitBattleFun;
 }
示例#4
0
    public Item(ItemData opts, GameObject scene, Map map) : base(opts, scene, map)
    {
        this.type = EnumChange <Consts.EntityType> .EnumToString(Consts.EntityType.item);

        this.name      = opts.name;
        this.desc      = opts.desc;
        this.kind      = opts.kind;
        this.hp        = opts.hp;
        this.mp        = opts.mp;
        this.price     = opts.price;
        this.heroLevel = opts.heroLevel;
        this.imgId     = opts.imgId;
        this.kindId    = imgId;
        this.sprite    = new SpriteUI(this);
    }
示例#5
0
    private void _init()
    {
        Consts.EntityType type = EnumChange <Consts.EntityType> .StringToEnum(this.entity.type);

        if (type == Consts.EntityType.player || type == Consts.EntityType.mob)
        {
            character = (Character)this.entity;
            _initDynamictNode();
        }
        else if (type == Consts.EntityType.npc || type == Consts.EntityType.item || type == Consts.EntityType.equipment)
        {
            _initStaticNode();
        }
        setDirection(false);
        this.stand();
    }
示例#6
0
    /**
     * 初始化静态节点:npc,item,equipment
     */
    private void _initStaticNode()
    {
        var position = this.getPosition();
        int x        = this.entity.getPosition().x;
        int y        = this.entity.getPosition().y;

        Consts.EntityType type = EnumChange <Consts.EntityType> .StringToEnum(this.entity.type);

        if (type == Consts.EntityType.npc)
        {
            var obj = this.getAnimatorFromPool(this.entity.kindId, this.entity.type, 1);
            if (obj == null)
            {
                Debug.LogError("Create GameObject faild!!!");
                return;
            }
            obj.tag                     = "Npc";
            obj.layer                   = LayerMask.NameToLayer("Npc");
            obj.transform.parent        = this.mapNode.transform;
            obj.transform.localPosition = new Vector3(x, -y, 0); //以左上角为原点坐标轴
            this.curNode                = obj;
            this.curNode.name           = this.entity.name + "_" + this.entity.type + "_" + this.entity.entityId;
            this.curNode.transform.Find("Name").GetComponent <TextMesh>().text = this.entity.name;
        }
        else
        {
            var obj = this.getAnimatorFromPool(this.entity.kindId, this.entity.type, 5);
            if (obj == null)
            {
                Debug.LogError("Create GameObject faild!!!");
                return;
            }
            obj.tag                     = "Item";
            obj.layer                   = LayerMask.NameToLayer("Item");
            obj.transform.parent        = this.mapNode.transform;
            obj.transform.localPosition = new Vector3(x, -y, 0); //以左上角为原点坐标轴
            this.curNode                = obj;
            this.curNode.name           = this.entity.name + "_" + this.entity.type + "_" + this.entity.entityId;
            this.curNode.transform.Find("Name").GetComponent <TextMesh>().text = this.entity.name;
        }
    }
        protected override void Init()
        {
            base.Init();
            if (null != GetComponent <TrollDrawLine>())
            {
                trollDrawLine = GetComponent <TrollDrawLine>();
            }
            GameMapManager.UnitData UnitData = GameMapManager.Instance.GetUnitData(gameObject.tag);
            if (UnitData.object_UnitName != "")
            {
                Object_UnitName = EnumChange <GameUnitName> .StringToEnum(UnitData.object_UnitName);

                Object_Camp = EnumChange <CampEnum> .StringToEnum(UnitData.object_Camp);

                Object_UnitType = EnumChange <UnitTypeEnum> .StringToEnum(UnitData.object_UnitType);

                Object_HP     = UnitData.object_HP;
                Max_HP        = UnitData.object_HP;
                Object_Radius = UnitData.unit_Radius;
                if (Object_Camp == GameMapManager.Instance.PlayerCamp)
                {
                    IsPlayerCamp = true;
                }
                else
                {
                    IsPlayerCamp = false;
                }
            }
            if (IsPlayerCamp)
            {
                gameObject.AddComponent <HighlightableObject>();
                highlightable = GetComponent <HighlightableObject>();
            }
            else
            {
                StartCoroutine(StartAI());
            }
            Is_AI = !IsPlayerCamp;
        }
示例#8
0
    /// <summary>
    /// 添加所有aoi区域的对象:玩家,mob,npc
    /// </summary>
    /// <param name="data"></param>
    public void addOtherEntity(JsonObject data)
    {
        // Debug.Log(data.ToString());
        SimpleJSON.JSONNode  jsondata = SimpleJSON.JSON.Parse(data.ToString().Trim());
        ICollection <string> keys     = data.Keys;

        foreach (string key in keys)
        {
            SimpleJSON.JSONArray array = jsondata[key].AsArray;
            if (array == null || array.Count == 0)
            {
                continue;
            }
            Debug.LogFormat("<color=#1395E7> add other entity >>>>>> {0} </color>", key);
            Consts.EntityType type = EnumChange <Consts.EntityType> .StringToEnum(key);

            for (int i = 0; i < array.Count; i++)
            {
                var _data = array[i];
                if (getEntity(_data["entityId"].AsInt) != null)
                {
                    Debug.LogFormat("<color=#FDB53B> Warining :add exist entity id:{0}</color>", _data["entityId"].AsInt);
                    continue;
                }

                JsonObject configdata = null;
                if (type == Consts.EntityType.player || type == Consts.EntityType.mob)
                {
                    configdata = DataApi.Inst.character.FindById(_data["kindId"].AsInt);
                    buildEntity(configdata, ref _data);
                    _data.Add("type", key);
                    Debug.Log(_data.ToString());
                    PlayerData entitydata = JsonUtility.FromJson <PlayerData>(_data.ToString());
                    //addEntity(entitydata);

                    this.actionManager.addAction(new AddEntityAction(entitydata));
                }
                else if (type == Consts.EntityType.npc)
                {
                    configdata = DataApi.Inst.npc.FindById(_data["kindId"].AsInt);
                    buildEntity(configdata, ref _data);
                    _data.Add("type", key);
                    Debug.Log(_data.ToString());
                    EntityData entitydata = JsonUtility.FromJson <EntityData>(_data.ToString());
                    //addEntity(entitydata);

                    this.actionManager.addAction(new AddEntityAction(entitydata));
                }
                else if (type == Consts.EntityType.item)
                {
                    configdata = DataApi.Inst.item.FindById(_data["kindId"].AsInt);
                    buildEntity(configdata, ref _data);
                    _data.Add("type", key);
                    Debug.Log(_data.ToString());
                    ItemData entitydata = JsonUtility.FromJson <ItemData>(_data.ToString());
                    //addEntity(entitydata);

                    this.actionManager.addAction(new AddEntityAction(entitydata));
                }
                else
                {
                    configdata = DataApi.Inst.equipment.FindById(_data["kindId"].AsInt);
                    buildEntity(configdata, ref _data);
                    _data.Add("type", key);
                    Debug.Log(_data.ToString());
                    EntityData entitydata = JsonUtility.FromJson <EntityData>(_data.ToString());
                    //addEntity(entitydata);

                    this.actionManager.addAction(new AddEntityAction(entitydata));
                }
            }
        }
    }
示例#9
0
    //鼠标弹起时候触发,后于move动作,以免rpc调用覆盖数据
    private void OnMouseUp()
    {
        Ray          ray    = Camera.main.ScreenPointToRay(Input.mousePosition);
        RaycastHit2D rayHit = Physics2D.Raycast(ray.origin, Vector3.forward, 100f, 1 << nNpcLayer | 1 << nMobLayer | 1 << nPlayerLayer | 1 << nItemLayer);

        if (rayHit.collider != null)
        {
            string[] infos = rayHit.collider.gameObject.name.Split('_');
            if (infos.Length < 2)
            {
                return;
            }
            string ids      = infos[2];
            int    targetId = System.Convert.ToInt32(ids);
            //Debug.LogFormat("<color=#0ff000> ===>{0},{1} </color>", type, entityId);
            //本人
            if (targetId == DataManager.Inst.playerdata.entityId)
            {
                return;
            }

            int areaId   = DataManager.Inst.playerdata.areaId;
            int playerId = DataManager.Inst.playerdata.id;

            var area   = App.Inst.getArea();
            var entity = area.getEntity(targetId);
            if (entity.isDied())
            {
                return;
            }
            Consts.EntityType type = EnumChange <Consts.EntityType> .StringToEnum(entity.type);

            switch (type)
            {
            case Consts.EntityType.player:
            {
                var curPlayer = App.Inst.getCurPlayer();
                AppFacade.Instance.SendNotification(GameNotify.OpenPlayerDialog, entity);

                break;
            }

            case Consts.EntityType.npc:
            {
                SimpleJson.JsonObject msg = new SimpleJson.JsonObject();
                msg["areaId"]   = areaId;
                msg["playerId"] = playerId;
                msg["targetId"] = targetId;
                PomeloSocket.Inst.Notify("area.playerHandler.npcTalk", msg);

                break;
            }

            case Consts.EntityType.mob:
            {
                SimpleJson.JsonObject msg = new SimpleJson.JsonObject();
                msg["targetId"] = targetId;
                PomeloSocket.Inst.Request("area.fightHandler.attack", msg, (data) => {
                    });
                break;
            }

            case Consts.EntityType.item:
            case Consts.EntityType.equipment:
            {
                SimpleJson.JsonObject msg = new SimpleJson.JsonObject();
                msg["areaId"]   = areaId;
                msg["playerId"] = playerId;
                msg["targetId"] = targetId;
                PomeloSocket.Inst.Request("area.playerHandler.pickItem", msg, (data) => { });
                break;
            }
            }
        }
    }
示例#10
0
 public Mob(PlayerData opts, GameObject scene, Map map) : base(opts, scene, map)
 {
     this.type = EnumChange <Consts.EntityType> .EnumToString(Consts.EntityType.mob);
 }