Esempio n. 1
0
    /// <summary>
    /// 战斗胜利
    /// </summary>
    private void battlestateVictory()
    {
        //己方全员播放胜利动作
        GeneralSoldier soldier;

        for (int i = 0; i < SpriteMgr.getInstance().SelfSoldiers.Count; i++)
        {
            soldier = SpriteMgr.getInstance().SelfSoldiers[i] as GeneralSoldier;
            soldier.setState(soldier.WinState);
        }

        //战役是否结束
        if (num == 0)
        {
            //弹胜利窗口
            UIManager.getInstance().openPanel(PanelConfig.VICTORYPANEL);
            Debug.Log("弹胜利窗口");
        }
        else
        {
            //下一波战斗
            XLMessageManager.getInstance().sendNotification(BATTLESTATE_START);
            camplayerMove();
        }
    }
Esempio n. 2
0
    /// <summary>
    /// 全员进入战斗状态
    /// </summary>
    private void fighting()
    {
        GeneralSoldier soldier;

        //我军进入战斗状态
        for (int i = 0; i < SpriteMgr.getInstance().SelfSoldiers.Count; i++)
        {
            //取得脚本
            soldier = SpriteMgr.getInstance().SelfSoldiers[i] as GeneralSoldier;
            if (soldier != null)
            {
                //变成锁敌状态
                soldier.setState(soldier.WalkState);
            }
        }

        //敌军进入战斗状态
        for (int i = 0; i < SpriteMgr.getInstance().EnemySoldiers.Count; i++)
        {
            //取得脚本
            soldier = SpriteMgr.getInstance().EnemySoldiers[i] as GeneralSoldier;
            if (soldier != null)
            {
                //变成锁敌状态
                soldier.setState(soldier.WalkState);
            }
        }
    }
Esempio n. 3
0
    public void Resume()
    {
        if (!isPause)
        {
            Time.timeScale = 0;
            isPause        = true;

            UIManager.getInstance().openPanel(PanelConfig.PAUSEPANEL);

            for (int i = 0; i < _GamePanelIconBtns.Count; i++)
            {
                _GamePanelIconBtns[i].interactable = false;
            }

            SpriteMgr.getInstance().pause();
        }
        else
        {
            Time.timeScale = 1;
            isPause        = false;

            UIManager.getInstance().closePanel(PanelConfig.PAUSEPANEL);

            for (int i = 0; i < _GamePanelIconBtns.Count; i++)
            {
                _GamePanelIconBtns[i].interactable = true;
            }

            SpriteMgr.getInstance().resume();
        }
    }
Esempio n. 4
0
    public static SpriteMgr getInstance()
    {
        if (g_instance == null)
        {
            g_instance = new SpriteMgr();
        }

        return(g_instance);
    }
Esempio n. 5
0
    public static SpriteMgr getInstance()
    {
        if (g_instance == null)
        {
            g_instance = new SpriteMgr();
        }

        return g_instance;
    }
Esempio n. 6
0
    void updateBattery()
    {
        Transform   progress = power.Find("progress");
        SpriteMgr   sm       = progress.GetComponent <SpriteMgr>();
        UISprite    sp       = progress.GetComponent <UISprite>();
        BatteryInfo info     = AnysdkMgr.GetBatteryInfo();

        sm.setIndex(info.state == "charging" ? 1 : 0);
        sp.fillAmount = (float)info.power / 100;
    }
Esempio n. 7
0
        static int _g_get_sprites(RealStatePtr L)
        {
            try {
                ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);

                SpriteMgr gen_to_be_invoked = (SpriteMgr)translator.FastGetCSObj(L, 1);
                translator.Push(L, gen_to_be_invoked.sprites);
            } catch (System.Exception gen_e) {
                return(LuaAPI.luaL_error(L, "c# exception:" + gen_e));
            }
            return(1);
        }
Esempio n. 8
0
        static int _s_set_sprites(RealStatePtr L)
        {
            try {
                ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);

                SpriteMgr gen_to_be_invoked = (SpriteMgr)translator.FastGetCSObj(L, 1);
                gen_to_be_invoked.sprites = (System.Collections.Generic.List <string>)translator.GetObject(L, 2, typeof(System.Collections.Generic.List <string>));
            } catch (System.Exception gen_e) {
                return(LuaAPI.luaL_error(L, "c# exception:" + gen_e));
            }
            return(0);
        }
Esempio n. 9
0
        static int _s_set_index(RealStatePtr L)
        {
            try {
                ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);

                SpriteMgr gen_to_be_invoked = (SpriteMgr)translator.FastGetCSObj(L, 1);
                gen_to_be_invoked.index = LuaAPI.xlua_tointeger(L, 2);
            } catch (System.Exception gen_e) {
                return(LuaAPI.luaL_error(L, "c# exception:" + gen_e));
            }
            return(0);
        }
Esempio n. 10
0
    /// <summary>
    /// 战斗失败
    /// </summary>
    private void battlestateFailed()
    {
        //敌方全员播放胜利动作
        for (int i = 0; i < SpriteMgr.getInstance().EnemySoldiers.Count; i++)
        {
            GeneralSoldier soldier = SpriteMgr.getInstance().EnemySoldiers[i] as GeneralSoldier;
            soldier.setState(soldier.WinState);
        }

        //弹失败窗口
        UIManager.getInstance().openPanel(PanelConfig.FAILEDPANEL);
        Debug.Log("弹失败窗口");
    }
Esempio n. 11
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="device">图形设备</param>
        /// <param name="contentMgr">素材管理者</param>
        /// <param name="contentPath">引擎所需资源路径</param>
        public RenderEngine(GraphicsDevice device, ContentManager contentMgr, string contentPath)
        {
            if (device == null)
            {
                throw new NullReferenceException();
            }

            this.contentPath   = contentPath;
            this.device        = device;
            this.coordinMgr    = new CoordinMgr();
            this.spriteMgr     = new SpriteMgr(this);
            this.basicGraphics = new BasicGraphics(this);
            this.fontMgr       = new FontMgr(this, contentMgr);

            Log.Initialize();
        }
Esempio n. 12
0
        static int __CreateInstance(RealStatePtr L)
        {
            try {
                ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);
                if (LuaAPI.lua_gettop(L) == 1)
                {
                    SpriteMgr gen_ret = new SpriteMgr();
                    translator.Push(L, gen_ret);

                    return(1);
                }
            }
            catch (System.Exception gen_e) {
                return(LuaAPI.luaL_error(L, "c# exception:" + gen_e));
            }
            return(LuaAPI.luaL_error(L, "invalid arguments to SpriteMgr constructor!"));
        }
Esempio n. 13
0
    /// <summary>
    /// 事件通知(来自于状态)
    /// </summary>
    /// <param name="sender"></param>
    /// <param name="eventId"></param>
    /// <param name="eventData"></param>
    public bool notifyEvent(XLStateBase sender, int eventId, Object eventData)
    {
        // 行走状态
        if (sender == _walkState)
        {
            if (eventId == GeneralWalkState.EVENT_CHANGE_TO_ATTACK)
            {
                _data.AttackTarget = _walkState.Target;
                setState(AttackState);
                return(true);
            }
            return(true);
        }

        //攻击状态
        if (sender == AttackState)
        {
            //攻击目标为空或攻击目标不在攻击范围内
            if (eventId == GeneralAttackState.ATTACK_TARGET_IS_NULL || eventId == GeneralAttackState.ATTACK_TARGET_IS_OUT)
            {
                //如果是敌方
                if (_data.Country == Defaults.Country.Enemy)
                {
                    //己方还有士兵,进入锁敌
                    if (SpriteMgr.getInstance().SelfSoldiers.Count > 0)
                    {
                        //进入锁敌状态
                        setState(_walkState);
                    }
                }
                else
                {
                    //如果是己方,敌方还有士兵,进入锁敌
                    if (SpriteMgr.getInstance().EnemySoldiers.Count > 0)
                    {
                        //进入锁敌状态
                        setState(_walkState);
                    }
                }
            }

            return(true);
        }

        return(false);
    }
Esempio n. 14
0
    /// <summary>
    /// 动画回调
    /// </summary>
    public void animationCall(int type)
    {
        //Debug.Log(gameObject.name + _data.Country + "士兵动画回调" + type);

        //根据返回的类别进行处理
        if (type == GeneralSoldier.HIT_THE_POINT_CALL_BACK) //进入打击点
        {
            //对方掉血
            bool isDead = SpriteMgr.getInstance().hit(this);

            //目标是否死亡
            if (isDead)
            {
                //将自己目标置空
                _data.AttackTarget = null;
            }
            return;
        }

        //本次攻击结束
        if (type == GeneralSoldier.HIT_THE_END_CALL_BACK)
        {
            AttackState.init();
            return;
        }

        //死亡动画播放完毕
        if (type == GeneralSoldier.DEAD_OVER_CALL_BACK)
        {
            string debugName = this.name;
            GameObject.Destroy(this.gameObject);       //销毁
            return;
        }

        //受攻击动画播放完毕
        if (type == GeneralSoldier.HURT_OVER_CALL_BACK)
        {
            //进入锁敌状态
            setState(_walkState);
            return;
        }
    }
Esempio n. 15
0
    /// <summary>
    /// 动画回调
    /// </summary>
    public void animationCall(int type)
    {
        if (_data.Country == Defaults.Country.Me)
        {
            //Debug.Log(_data.Country + "士兵动画回调" + type);
        }

        //根据返回的类别进行处理
        switch (type)
        {
        case GeneralSoldier.HIT_THE_POINT_CALL_BACK:        //进入打击点

            //_data.SkillMgr.setSkills(this);
            //_data.SkillMgr.play(_data.Skills[0]);
            //   _data.SkillMgr.play(1005);

            //对方掉血
            bool isDead = SpriteMgr.getInstance().hit(this);

            //目标是否死亡
            if (isDead)
            {
                //将自己目标置空
                _data.AttackTarget = null;
            }
            break;

        case GeneralSoldier.HIT_THE_END_CALL_BACK:         //本次攻击结束
            AttackState.init();
            break;

        case GeneralSoldier.DEAD_OVER_CALL_BACK:      //死亡动画播放完毕
            GameObject.Destroy(this.gameObject);      //销毁
            break;

        case GeneralSoldier.HURT_OVER_CALL_BACK:           //受攻击动画播放完毕
            //进入锁敌状态
            setState(_walkState);
            break;
        }
    }
Esempio n. 16
0
    /// <summary>
    /// 每帧的更新
    /// </summary>
    public override void update()
    {
        //先决条件
        if (!_host || _host._data == null)
        {
            return;
        }

        _host._data.AttackTarget = SpriteMgr.getInstance().getCloselyMatchSprite(_host, null);

        //对手全部被消灭,返回
        if (_host._data.AttackTarget == null)
        {
            notifyEvent(ENEMY_IS_NULL);
            return;
        }
        else  //发锁敌完毕消息
        {
            notifyEvent(FINDED_EVENT);
        }
    }
Esempio n. 17
0
    void updateNetwork()
    {
        Transform   state = network.Find("state");
        Transform   wifi  = network.Find("wifi");
        SpriteMgr   sm    = wifi.GetComponent <SpriteMgr>();
        UILabel     desc  = state.GetComponent <UILabel>();
        NetworkInfo info  = AnysdkMgr.GetNetworkInfo();

        bool isWifi = info.type == "wifi";

        wifi.gameObject.SetActive(isWifi);
        state.gameObject.SetActive(!isWifi);

        if (isWifi)
        {
            sm.setIndex(info.strength - 1);
        }
        else
        {
            desc.text = info.type;
        }
    }
Esempio n. 18
0
    /// <summary>
    /// 逻辑更新
    /// </summary>
    public override void update()
    {
        if (_target == null) // 是否没有目标
        {
            _host.walkStop();

            _target = SpriteMgr.getInstance().getCloselyMatchSprite(_host, null);
            if (_target != null)
            {
                _targetPostion = new Vector3(_target.transform.position.x, _target.transform.position.y, _target.transform.position.z);

                _oldPositionCount   = 0;
                _dodgeStartPosition = new Vector3(_host.transform.position.x, _host.transform.position.y, _host.transform.position.z);

                //设置寻路的目标点
                _navmeshAgent.SetDestination(_targetPostion);

                // 如果带转向就过于愣了,所以注视掉
                // _host.transform.LookAt(new Vector3(_targetPostion.x, _host.transform.position.y, _targetPostion.z));
            }
            return;
        }

        // 没在避让
        if (_dodgeFrameCount == 0)
        {
            _oldPositionCount++;
            if (_oldPositionCount > CHECK_MOVE_FRAME_COUNT) // 数帧检测移动量
            {
                float moveDistance = Vector3.Distance(_host.transform.position, _dodgeStartPosition);
                if (moveDistance < 3.0f) // 移动量太小
                {
                    // 一半概率向左
                    if (Random.value < 0.5f)
                    {
                        _dodgeTargetPosition = _host.DodgeLeftPostion;
                    }
                    else // 一半概率向右
                    {
                        _dodgeTargetPosition = _host.DodgeRightPostion;
                    }
                    _navmeshAgent.SetDestination(_dodgeTargetPosition);

                    //转向
                    _host.transform.LookAt(new Vector3(_dodgeTargetPosition.x, _host.transform.position.y, _dodgeTargetPosition.z));

                    _dodgeFrameCount = DODGE_FRAME_COUNT_MAX;
                }

                _oldPositionCount   = 0;
                _dodgeStartPosition = new Vector3(_host.transform.position.x, _host.transform.position.y, _host.transform.position.z);
            }
        }
        else // 避让中
        {
            _dodgeFrameCount--;
            if (_dodgeFrameCount == 0)
            {
                _target = null;
                return;
            }

            float dis = Vector3.Distance(_host.transform.position, _dodgeTargetPosition);
            if (dis < 0.2)
            {
                _target = null;
                return;
            }
            return;
        }

        // 判断目标距离<攻击距离的时候,就可以结束了
        float hostToTargetDistance = Vector3.Distance(_host.transform.position, _targetPostion);

        _host._data.AttckDistance = 4f;
        if (hostToTargetDistance <= _host._data.AttckDistance)
        {
            _host.walkStop();

            notifyEvent(EVENT_CHANGE_TO_ATTACK, _target);
            return;
        }
    }
Esempio n. 19
0
    /// <summary>
    /// 生成下一个战场的显示内容
    /// </summary>
    private void creatNextBattle(BattleData data)
    {
        int  spriteCount = 0;
        bool isBreak     = false;

        if (num == 1)
        {
            //生成自己的部队
            for (int i = 0; i < MyFormationData.formationList.Count; i++)
            {
                for (int j = 0; j < MyFormationData.formationList[i].SoldiersDict.Count; j++)
                {
                    if (MyFormationData.formationList[i].SoldiersDict[j] != null)
                    {
                        MyFormationData.formationList[i].SoldiersDict[j].Country = Defaults.Country.Me;
                        if (i == 0)
                        {
                            SpriteMgr.getInstance().addSoldier(MyFormationData.formationList[i].SoldiersDict[j], Defaults.SoldierType.Cavalryman, new Vector3(j % 3 + _mySoldierPoints[i].x, 0 + _mySoldierPoints[i].y, (int)(j / 3) + _mySoldierPoints[i].z));
                        }
                        else
                        {
                            SpriteMgr.getInstance().addSoldier(MyFormationData.formationList[i].SoldiersDict[j], Defaults.SoldierType.Armorman, new Vector3(j % 3 + _mySoldierPoints[i].x, 0 + _mySoldierPoints[i].y, (int)(j / 3) + _mySoldierPoints[i].z));
                        }

                        if (++spriteCount >= SPRITE_COUNT)
                        {
                            isBreak = true;
                            break;
                        }
                    }
                }

                if (isBreak)
                {
                    break;
                }
            }
        }

        spriteCount = 0;
        if (num == 0)
        {
            //自己部队停止动作
            for (int i = 0; i < SpriteMgr.getInstance().SelfSoldiers.Count; i++)
            {
                GeneralSoldier soldier = SpriteMgr.getInstance().SelfSoldiers[i] as GeneralSoldier;
                soldier.setState(soldier.IdleState);
                soldier.IsDebug = true;

                if (++spriteCount >= SPRITE_COUNT)
                {
                    break;
                }
            }
        }

        //生成敌人的部队
        spriteCount = 0;
        isBreak     = false;
        for (int i = 0; i < campaignData.BattleList[campaignData.battleIndex].FormationList.Count; i++)
        {
            for (int j = 0; j < campaignData.BattleList[campaignData.battleIndex].FormationList[i].SoldiersDict.Count; j++)
            {
                //Debug.Log(i + " " + j + " " + campaignData.BattleList[campaignData.battleIndex].FormationList[i].soldiersDict[j]);
                if (campaignData.BattleList[campaignData.battleIndex].FormationList[i].SoldiersDict[j] != null)
                {
                    campaignData.BattleList[campaignData.battleIndex].FormationList[i].SoldiersDict[j].Country = Defaults.Country.Enemy;
                    if (j == 0)
                    {
                        SpriteMgr.getInstance().addSoldier(campaignData.BattleList[campaignData.battleIndex].FormationList[i].SoldiersDict[j], Defaults.SoldierType.Masterman, new Vector3(j % 3 + _enemySoldierPoints[i].x, 0 + _enemySoldierPoints[i].y, (int)(j / 3) + _enemySoldierPoints[i].z));
                    }
                    else
                    {
                        SpriteMgr.getInstance().addSoldier(campaignData.BattleList[campaignData.battleIndex].FormationList[i].SoldiersDict[j], Defaults.SoldierType.Axeman, new Vector3(j % 3 + _enemySoldierPoints[i].x, 0 + _enemySoldierPoints[i].y, (int)(j / 3) + _enemySoldierPoints[i].z));
                    }
                }

                if (++spriteCount >= SPRITE_COUNT)
                {
                    isBreak = true;
                    break;
                }
            }

            if (isBreak)
            {
                break;
            }
        }
    }
 void Awake()
 {
     m_SpriteMgr = this;
     LoadSprite();
 }
Esempio n. 21
0
    void refreshBtn()
    {
        SpriteMgr sp = replay.GetComponentInChildren <SpriteMgr>();

        sp.setIndex(isPlaying ? 1 : 0);
    }
Esempio n. 22
0
    void showDissolveNotice(DissolveInfo dv)
    {
        RoomMgr rm = RoomMgr.GetInstance();

        mDissolve.SetActive(true);

        int now = (int)((DateTime.Now.Ticks - DateTime.Parse("1970-01-01").Ticks) / 10000000);

        mEndTime = dv.time + now;

        UIGrid grid = mSeats[0].GetComponentInParent <UIGrid>();

        int index = 0;

        for (int i = 0; i < rm.players.Count && i < mSeats.Count; i++, index++)
        {
            Transform  s = mSeats[i];
            PlayerInfo p = rm.players[i];

            s.gameObject.SetActive(true);
            s.Find("bghead/icon").GetComponent <IconLoader>().setUserID(p.userid);
            s.Find("name").GetComponent <UILabel>().text = p.name;
        }

        for (int i = index; i < mSeats.Count; i++)
        {
            mSeats[i].gameObject.SetActive(false);
        }

        string[] descs = new string[] { "等待中", "已拒绝", "已同意", "离线", "申请解散" };

        for (int i = 0; i < rm.players.Count && i < mSeats.Count; i++)
        {
            Transform status = mSeats [i].Find("status");

            UILabel   desc  = status.GetComponentInChildren <UILabel>();
            SpriteMgr sm    = status.Find("icon").GetComponent <SpriteMgr>();
            int       state = dv.states[i];
            int       id    = 0;

            if (state > 2)
            {
                id = 4;
            }

            bool online = dv.online[i];
            if (state <= 2)
            {
                if (!online)
                {
                    id = 3;
                }
                else
                {
                    id = state;
                }
            }

            sm.setIndex(id);
            desc.text = descs[id];
        }

        grid.Reposition();

        int si = rm.seatindex;
        int st = dv.states[si];

        bool[] check = new bool[] { false, false, false, false };

        if (dv.reason == "offline")
        {
            check [2] = true;
        }
        else
        {
            if (0 == st)
            {
                check [0] = true;
                check [1] = true;
            }
            else
            {
                check [3] = true;
            }
        }

        mBtnAgree.SetActive(check[0]);
        mBtnReject.SetActive(check[1]);
        mBtnDissolve.SetActive(check[2]);
    }
Esempio n. 23
0
 private void Awake()
 {
     instance = this;
 }
Esempio n. 24
0
    void initSeat(Transform seat, GameOverPlayerInfo info)
    {
        int x = 160;
        int y = -20;

        Debug.Log("initSeat");

        Mahjong2D[] mjs = seat.GetComponentsInChildren <Mahjong2D>();
        foreach (Mahjong2D mj in mjs)
        {
            Destroy(mj.gameObject);
        }

        foreach (int i in info.angangs)
        {
            initPengGangs(seat, i, "angang", x);
            x += 55 * 3 + 10;
        }

        foreach (int i in info.wangangs)
        {
            initPengGangs(seat, i, "wangang", x);
            x += 55 * 3 + 10;
        }

        foreach (int i in info.diangangs)
        {
            initPengGangs(seat, i, "diangang", x);
            x += 55 * 3 + 10;
        }

        foreach (int i in info.pengs)
        {
            initPengGangs(seat, i, "peng", x);
            x += 55 * 3 + 10;
        }

        foreach (int i in info.chis)
        {
            initChis(seat, i, x);
            x += 55 * 3 + 10;
        }

        ResultDetail detail = info.detail;
        UILabel      tips   = seat.Find("tips").GetComponent <UILabel> ();

        tips.text = detail == null ? "" : detail.tips;
        //tips.transform.localPosition = new Vector3 (x - 27, 50, 0);

        List <int> holds = info.holds;

        holds.Sort();

        for (int i = 0; i < holds.Count; i++)
        {
            initMahjong(seat, holds [i], new Vector2(x, y), 4);

            x += 55;
        }

        HuInfo hu   = info.hu;
        bool   hued = false;

        if (hu != null && hu.hued)
        {
            hued = true;
            x   += 80;
            initMahjong(seat, hu.pai, new Vector2(x, y), 4);
            x += 55;
        }

        int ma = info.ma;

        seat.Find("lbl").gameObject.SetActive(ma > 0);
        seat.Find("ma").gameObject.SetActive(ma > 0);
        if (ma > 0)
        {
            UILabel lbl = seat.Find("ma").GetComponent <UILabel> ();
            lbl.text = "+" + ma;
        }

        SpriteMgr huinfo = seat.Find("huinfo").GetComponent <SpriteMgr>();

        int huid = -1;

        if (hu != null)
        {
            if (hu.zimo)
            {
                huid = 1;                 // TODO
            }
            else if (hu.hued)
            {
                huid = 1;
            }
            else if (hu.fangpao)
            {
                huid = 0;
            }
        }

        Debug.Log("huid=" + huid);
        huinfo.setIndex(huid);
        //huinfo.transform.localPosition = new Vector2 (1142, 0);

        string score = info.score >= 0 ? "+" + info.score : "" + info.score;

        seat.Find("score").GetComponent <UILabel>().text = score;
#if !UNIT_TEST
        seat.Find("bghead/icon").GetComponent <IconLoader>().setUserID(info.userid);
#endif
        seat.Find("name").GetComponent <UILabel>().text = info.name;
    }