Exemple #1
0
    private void _updateView()
    {
        BattleHeroModel model     = _model;
        HeroModel       heroModel = model.getHeroModel();

        Image head = UITools.createBallImg(model);

        if (head == null)
        {
            string img = heroModel.getBodyImg();

            Sprite bodySprite = Resources.Load <Sprite> (img);
            bodyImg.sprite = bodySprite;
        }
        else
        {
            bodyImg.gameObject.SetActive(false);

            bodyImg = head;
            bodyImg.transform.SetParent(bodyImgContainer.transform);
        }

        hpSlider.maxValue = heroModel.getHp();
        hpSlider.value    = _model.getHp();
    }
Exemple #2
0
    private void _onMonsterDeath(BattleHeroModel model)
    {
        _monsters.Remove(model);
        _totalModel.Remove(model);

        _score += 100;
    }
Exemple #3
0
    public void readyForBattle()
    {
        _curRound   = -1;
        _actionTime = 0;
        _isWin      = false;

        _star  = 0;
        _score = 0;

        _gold  = 0;
        _paper = 0;

        SolaEngine engine = SolaEngine.getInstance();
        PartnerMgr pMgr   = (PartnerMgr)engine.getMgr(typeof(PartnerMgr));

        _partners = new Dictionary <int, BattleHeroModel> ();
        Dictionary <int, HeroModel> partner = pMgr.getPartners();

        foreach (int pos in partner.Keys)
        {
            HeroModel       model   = partner[pos];
            BattleHeroModel bhModel = new BattleHeroModel();
            bhModel.setModel(model, false, new Vector3(0, 0, 0));
            bhModel.formatModel();

            _partners.Add(pos, bhModel);
            bhModel.HERO_DIED += _onPartnerDeath;
        }

        MissionModel missionModel = _missionModel;

        _curBattleInfos = missionModel.getBattleInfos();
    }
Exemple #4
0
    private void _onPartnerDeath(BattleHeroModel model)
    {
        int removeKey = -1;

        foreach (int key in _partners.Keys)
        {
            if (_partners[key] == model)
            {
                removeKey = key;
            }
        }
        if (removeKey == -1)
        {
            return;
        }

        _partners.Remove(removeKey);
        _totalModel.Remove(model);

        if (_partners.Count == 0)
        {
            _isWin = false;
        }

        _score -= 200;
        if (_score < 0)
        {
            _score = 0;
        }
    }
Exemple #5
0
    public void setBattleModel(BattleHeroModel model)
    {
        _model = model;

        _model.HP_REDUCED           += _hitAni;
        _model.ACTION_CHANGED       += _actionChanged;
        _model.HERO_DIED            += _heroDie;
        _model.AUTO_ATK             += _autoAtk;
        _model.HERO_PUSHING_CHANGED += _onPushChanged;

        _updateView();
    }
    public void attacked(BattleHeroModel attacker)
    {
        int reduceHp = attacker.getAtk();

        _hp -= reduceHp;

        HP_REDUCED(reduceHp);
        if (_hp < 0)
        {
            _hp = 0;
        }
    }
    private void _onComfirmClicked(GameObject src)
    {
        SolaEngine engine = SolaEngine.getInstance();

        DialogueModel[] dialogueModels = new DialogueModel[0];
        MapModel        mapModel       = _mapModel;

        List <HeroModel> monsterModels = mapModel.getRandomMonster();
        int monsterSize = monsterModels.Count;

        BattleInfoModel[] battleInfos = new BattleInfoModel[3];

        for (int j = 0; j < battleInfos.Length; j++)
        {
            List <BattleHeroModel> rdModels = new List <BattleHeroModel> ();

            for (int i = 0; i < 3; i++)
            {
                int       monsterIndex = engine.randomInt(0, monsterSize);
                HeroModel monster      = monsterModels [monsterIndex];

                Vector3 pos = new Vector3();
                pos.x = engine.randomInt(-200, 200);
                pos.y = engine.randomInt(-300, 300);
                pos.z = 0;

                BattleHeroModel bhModel = new BattleHeroModel();
                bhModel.setModel(monster, true, pos);

                rdModels.Add(bhModel);
            }
            BattleInfoModel bInfoModel = new BattleInfoModel();
            bInfoModel.mapBattleInfo(0, 3, rdModels);

            battleInfos[j] = bInfoModel;
        }

        MissionModel missionModel = new MissionModel();

        missionModel.formatMapBattle(battleInfos, dialogueModels);

        BattleMgr bMgr = (BattleMgr)engine.getMgr(typeof(BattleMgr));

        bMgr.setMissionModel(missionModel);

        string sceneName = ScenesName.BATTLE;

        engine.enterScene(sceneName);
        Destroy(himeScroll.gameObject);
        Application.LoadLevel(sceneName);
    }
Exemple #8
0
    public static Image createBallImg(BattleHeroModel model)
    {
        int    configId   = model.getHeroModel().getConfigId();
        Object ballObject = Resources.Load <Image> (DEFAULT_BATTLE_BALL + configId);

        if (ballObject == null)
        {
            return(null);
        }

        Image ball = MonoBehaviour.Instantiate(ballObject) as Image;

        return(ball);
    }
Exemple #9
0
    private void _atk(Vector3 upPoint)
    {
        if (_canMove == false)
        {
            return;
        }

        _canMove   = false;
        _needCheck = true;

        BattleHeroModel model     = _model;
        bool            isMonster = model.isMonster();

        SolaEngine engine = SolaEngine.getInstance();
        BattleMgr  bMgr   = (BattleMgr)engine.getMgr(typeof(BattleMgr));

        List <BattleHeroModel> monsters = bMgr.getMonsters();

        foreach (BattleHeroModel monster in monsters)
        {
            monster.setPushable(isMonster);
        }

        Dictionary <int, BattleHeroModel> partners = bMgr.getPartners();

        foreach (BattleHeroModel parnter in partners.Values)
        {
            parnter.setPushable(!isMonster);
        }

//		selectedImg.gameObject.SetActive (false);

        float xF = -upPoint.x;
        float yF = -upPoint.y;

        float forces    = Mathf.Sqrt(xF * xF + yF * yF);
        float multipleX = xF / forces;
        float multipleY = yF / forces;

        float maxF = 3f;

        if (forces > maxF)
        {
            forces = maxF;
            xF     = multipleX * forces;
            yF     = multipleY * forces;
        }

        rBody.AddForce(new Vector2(xF * 1000, yF * 1000));
    }
Exemple #10
0
    public static Image createActionHead(BattleHeroModel model)
    {
        HeroModel hModel   = model.getHeroModel();
        int       configId = hModel.getConfigId();

        Object obj = Resources.Load <Image> (DEFAULT_ACTION_HEAD_BG + configId);

        if (obj == null)
        {
            return(null);
        }

        Image head = MonoBehaviour.Instantiate(obj) as Image;

        return(head);
    }
Exemple #11
0
    public List <BattleHeroModel> getActionSeq()
    {
        List <BattleHeroModel> totalModel = _totalModel;
        List <BattleHeroModel> actionSeq  = new List <BattleHeroModel> ();
        List <int>             restTime   = new List <int>();

        for (int i = 0; i < totalModel.Count; i++)
        {
            int curRestTime = totalModel[i].getRestTime();
            restTime.Add(curRestTime);
        }

        int nextActionIndex = -1;

        for (int previewIndex = 0; previewIndex < ACTION_PREVIEW_COUNT; previewIndex++)
        {
            for (int i = 0; i < restTime.Count; i++)
            {
                if (nextActionIndex == -1)
                {
                    nextActionIndex = i;
                    continue;
                }

                int curRestTime  = restTime [i];
                int nextRestTime = restTime [nextActionIndex];

                if (curRestTime < nextRestTime)
                {
                    nextActionIndex = i;
                }
            }

            BattleHeroModel nextModel = totalModel [nextActionIndex];
            actionSeq.Add(nextModel);

            int useTime = restTime [nextActionIndex];
            for (int i = 0; i < restTime.Count; i++)
            {
                restTime [i] = restTime [i] - useTime;
            }

            restTime [nextActionIndex] = nextModel.getNeedTime();
        }

        return(actionSeq);
    }
Exemple #12
0
    private void _createHeroBall(BattleHeroModel model)
    {
        BattleBall monsterBall = Instantiate(ballItem) as BattleBall;

        monsterBall.setBattleModel(model);

        monsterBall.transform.SetParent(ballContainer);
        monsterBall.transform.localScale = new Vector3(100, 100, 1);

        Vector3 point = model.getPos();

        monsterBall.transform.localPosition = point;

        monsterBall.gameObject.SetActive(true);
        model.setAction(false);
        model.MOVE_END += _nextAction;
    }
Exemple #13
0
    public bool nextRound()
    {
        _curRound++;

        if (_curRound >= _curBattleInfos.Length)
        {
            _isWin = true;
            _star  = 3;

            _missionModel.setStatus(MissionModel.status.FINISHED);
            return(true);
        }

        BattleInfoModel        infoModel = _curBattleInfos [_curRound];
        List <BattleHeroModel> monster   = infoModel.getMonsters();

        _monsters = new List <BattleHeroModel> ();
        for (int i = 0; i < monster.Count; i++)
        {
            BattleHeroModel model = monster [i];
            model.formatModel();
            _monsters.Add(model);
        }

        foreach (BattleHeroModel model in _monsters)
        {
            model.HERO_DIED += _onMonsterDeath;
        }

        List <BattleHeroModel> totalModel = new List <BattleHeroModel> ();

        foreach (BattleHeroModel model in _monsters)
        {
            totalModel.Add(model);
        }

        foreach (BattleHeroModel model in _partners.Values)
        {
            totalModel.Add(model);
        }

        _totalModel = totalModel;

        BattleEvent.NEXT_ROUND();
        return(false);
    }
Exemple #14
0
    void Start()
    {
        BattleEvent.NEXT_ROUND  += _onNextRound;
        BattleEvent.ITEM_DROPED += _onNextRound;

        dialogue.onEnded += _onDialogueEnded;

        _partnersPos = new List <Vector3> ();

        _partnersPos.Add(new Vector3(-250, -200, 0));
        _partnersPos.Add(new Vector3(-140, -95, 0));
        _partnersPos.Add(new Vector3(140, -95, 0));
        _partnersPos.Add(new Vector3(250, -200, 0));

        SolaEngine engine = SolaEngine.getInstance();
        BattleMgr  bMgr   = (BattleMgr)engine.getMgr(typeof(BattleMgr));

        bMgr.readyForBattle();

        Dictionary <int, BattleHeroModel> partners = bMgr.getPartners();
        int size = status.Length;

        for (int i = 0; i < size; i++)
        {
            BattleStatus statu = status[i];

            if (partners.ContainsKey(i))
            {
                statu.gameObject.SetActive(true);

                BattleHeroModel model = partners[i];
                model.setPos(_partnersPos[i]);
                statu.setHeroModel(model);

                _createHeroBall(model);
                continue;
            }

            statu.gameObject.SetActive(false);
        }

        bMgr.nextRound();
        _onItemDroped();
    }
Exemple #15
0
//	void OnDestroy(){
//		_bhModel.HP_REDUCED -= _updateHp;
//	}

    public void setHeroModel(BattleHeroModel model)
    {
        model.HP_REDUCED += _updateHp;
        model.HERO_DIED  += _onDied;
        _bhModel          = model;

        mpBar.gameObject.SetActive(false);

        HeroModel heroModel = model.getHeroModel();

        hpBar.setMaxValue(heroModel.getHp());

        string img        = heroModel.getBodyImg();
        Sprite bodySprite = Resources.Load <Sprite> (img);

        headImg.sprite = bodySprite;

        _updateView();
    }
Exemple #16
0
    void OnCollisionExit2D(Collision2D other)
    {
        if (_needCheck)
        {
            BattleBall targetBall = other.gameObject.GetComponent <BattleBall> ();

            if (targetBall == null)
            {
                return;
            }

            BattleHeroModel target = targetBall.getBattleModel();

            if (_model.isMonster() != target.isMonster())
            {
                target.attacked(_model);
            }
        }
    }
Exemple #17
0
    public void applyAction(BattleHeroModel actionModel)
    {
        List <BattleHeroModel> totalModel = _totalModel;

        int restTime = actionModel.getRestTime();

        actionModel.resetActionTime();

        foreach (BattleHeroModel model in totalModel)
        {
            model.setAction(false);

            if (actionModel != model)
            {
                model.reduceRestTime(restTime);
            }
        }

        _actionTime++;
    }
Exemple #18
0
    private void _autoAtk(BattleHeroModel model)
    {
        SolaEngine engine = SolaEngine.getInstance();
        BattleMgr  bMgr   = (BattleMgr)engine.getMgr(typeof(BattleMgr));

        List <BattleHeroModel> targets = new List <BattleHeroModel> ();
        bool isMonster = _model.isMonster();

        if (!isMonster)
        {
            targets = bMgr.getMonsters();
        }
        else
        {
            foreach (BattleHeroModel pModel in bMgr.getPartners().Values)
            {
                targets.Add(pModel);
            }
        }

        BattleHeroModel target      = null;
        float           minDistance = 0;
        Vector3         pos         = transform.localPosition;

        foreach (BattleHeroModel tModel in targets)
        {
            Vector3 tPos     = tModel.getPos();
            float   distance = Vector3.Distance(pos, tPos);

            if (target == null || distance < minDistance)
            {
                minDistance = distance;
                target      = tModel;
            }
        }

        pos = (pos - target.getPos());

        _atk(pos);
    }
    private void _updateView()
    {
        BattleHeroModel model = _model;

        Image head = UITools.createActionHead(model);

        if (head == null)
        {
            string img = model.getHeroModel().getBodyImg();

            Sprite bodySprite = Resources.Load <Sprite> (img);
            headImg.sprite = bodySprite;
        }
        else
        {
            headImg.gameObject.SetActive(false);

            headImg = head;
            headImg.transform.SetParent(headContainer.transform);
            headImg.transform.localEulerAngles = new Vector3(0, 0, 0);
        }
    }
Exemple #20
0
    public void setCfg(BattleInfoConfig cfg, HeroMgr hMgr)
    {
        _id       = Convert.ToInt32(cfg.id);
        _maxRound = Convert.ToInt32(cfg.round);

        int[] monsterInfos = cfg.monster;
        _monsters = new List <BattleHeroModel> ();

        for (int i = 0; i < monsterInfos.Length; i += 4)
        {
            int id    = Convert.ToInt32(monsterInfos[i]);
            int level = Convert.ToInt32(monsterInfos[i + 1]);

            HeroModel       heroModel = hMgr.createHero(id, level, 0);
            BattleHeroModel bhModel   = new BattleHeroModel();

            int x = Convert.ToInt32(monsterInfos[i + 2]);
            int y = Convert.ToInt32(monsterInfos[i + 3]);
            bhModel.setModel(heroModel, true, new Vector3(x, y, 0));

            _monsters.Add(bhModel);
        }
    }
    public void setModel(BattleHeroModel model)
    {
        _model = model;

        _updateView();
    }
Exemple #22
0
 private void _heroDie(BattleHeroModel model)
 {
     gameObject.SetActive(false);
     Destroy(gameObject);
 }
Exemple #23
0
 private void _onPushChanged(BattleHeroModel model, bool canPush)
 {
     rBody.isKinematic = !canPush;
 }
Exemple #24
0
    private void _updateHp(int reduceHp)
    {
        BattleHeroModel model = _bhModel;

        hpBar.setValue(model.getHp());
    }
Exemple #25
0
 private void _onDied(BattleHeroModel model)
 {
     hpBar.setValue(0);
 }
Exemple #26
0
    private void _nextAction(BattleHeroModel moveEndModel)
    {
        SolaEngine engine = SolaEngine.getInstance();
        BattleMgr  bMgr   = (BattleMgr)engine.getMgr(typeof(BattleMgr));

        if (bMgr.getMonsters().Count == 0)
        {
            bool isWin = bMgr.nextRound();

            if (isWin == true)
            {
                resultDialog.gameObject.SetActive(true);
                resultDialog.updateView();
            }
            return;
        }

        if (bMgr.isWin() == false && bMgr.getPartners().Count == 0)
        {
            resultDialog.gameObject.SetActive(true);
            resultDialog.updateView();

            return;
        }

        if (moveEndModel != null)
        {
            bMgr.applyAction(moveEndModel);
        }
        else
        {
            bMgr.resetAction();
        }

        List <BattleHeroModel> actionSeq   = bMgr.getActionSeq();
        BattleHeroModel        actionModel = actionSeq [0];

        actionModel.setAction(true);

        for (int i = 0; i < actionSeq.Count; i++)
        {
            BattleHeroModel model = actionSeq[i];

            GameObject container         = actionHeadContainers[i];
            Transform  containerTranform = container.transform;

            foreach (Transform child in containerTranform)
            {
                child.gameObject.SetActive(false);
                Destroy(child.gameObject);
            }

            BattleActionHead head = Instantiate(actionHeadItem) as BattleActionHead;
            head.setModel(model);

            head.transform.SetParent(containerTranform);
            head.transform.localScale       = new Vector3(1, 1, 1);
            head.transform.localPosition    = new Vector3(0, 0, 0);
            head.transform.localEulerAngles = new Vector3(0, 0, 0);
        }

        if (actionModel.isMonster())
        {
//			Debug.Log("actionModel.autoAtk();");
            actionModel.autoAtk();
        }
    }