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(); }
private void _onMonsterDeath(BattleHeroModel model) { _monsters.Remove(model); _totalModel.Remove(model); _score += 100; }
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(); }
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; } }
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); }
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); }
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)); }
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); }
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); }
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; }
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); }
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(); }
// 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(); }
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); } } }
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++; }
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); } }
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(); }
private void _heroDie(BattleHeroModel model) { gameObject.SetActive(false); Destroy(gameObject); }
private void _onPushChanged(BattleHeroModel model, bool canPush) { rBody.isKinematic = !canPush; }
private void _updateHp(int reduceHp) { BattleHeroModel model = _bhModel; hpBar.setValue(model.getHp()); }
private void _onDied(BattleHeroModel model) { hpBar.setValue(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(); } }