public static void positionAndParent_Meeple(GameObject Meeple, HexaPos position) { GameObject par = GameObject.Find("MeepleCollection"); GameObject fath = new GameObject(Meeple.GetComponent <Meeple>().meepleName); fath.transform.localScale = par.transform.lossyScale; fath.transform.position = par.transform.position; Meeple.transform.localScale = par.transform.lossyScale; Meeple.transform.position = par.transform.position; Meeple.transform.localEulerAngles = new Vector3(0, 180, 0); //Meeple.transform.Translate(new Vector3(0, 0.4f, 0), Space.Self); fath.transform.parent = par.transform; Meeple.transform.parent = fath.transform; setMeeplePos(Meeple, position); Meeple mip = Meeple.GetComponent <Meeple>(); if (mip.GetType().IsSubclassOf(typeof(Companion))) { Companion c = Meeple.GetComponent <Companion>(); if (c.GetType().Name != "PackAnimal") { c.setFoodPackages_hpBar(); } } }
public void fight(Meeple _target) { if (_target.GetType().IsSubclassOf(typeof(Companion)) || _target.GetType() == typeof(Companion)) { int rolledValue = SceneHandler.rollDice(diceValue); Companion targetComp = (Companion)_target; Debug.Log(meepleName + " strikes " + _target.meepleName + " with a " + rolledValue); targetComp.damaged(rolledValue); } else { Debug.Log(meepleName + " strikes " + _target.meepleName); _target.Alive = false; } //Todo: Implememnt actionOutstanding if neccessary. As example when queded intelligent interaction is needed from opponent side. //hasActionOutstanding = false; }
public static void setMeeplePos(GameObject meepleObj, HexaPos position) { Meeple meeple = meepleObj.GetComponentInChildren <Meeple>(); smallMap[meeple.Pos.x, meeple.Pos.y].GetComponent <innerTile>().meep = null; meepleObj.transform.parent.transform.localPosition = Map.MapTileToPosition(position); meeple.Pos = position; if (!(position.x < 0 || position.x > 14 || position.y < 0 || position.y > 14)) { smallMap[position.x, position.y].GetComponent <innerTile>().meep = meeple; } if (activeMode == GameMode.TACTICAL && meeple.GetType().IsSubclassOf(typeof(Companion))) { activeCompanion.HasActionOutstanding = false; } highlightUnguidedPackAnimals(); }
void OnMouseDown() { if (isActive) { Map.highlightAllInnerTiles(false); if (meep == null && SceneHandler.meeples.Contains(SceneHandler.activeCompanion)) { SceneHandler.setMeeplePos(SceneHandler.activeCompanion.gameObject, new HexaPos(posX, posY)); GameObject tileHolder = GameObject.Find("tileHolder"); SoundHelper sh = tileHolder.GetComponent <SoundHelper>(); sh.Play("run"); } else if (meep == null && SceneHandler.activeMode == GameMode.PREPARATION) { Type compType = SceneHandler.activeCompanion.GetType(); switch (compType.ToString()) { case "Mercenary": SceneHandler.createMeeple <Mercenary>("Mercenary", new HexaPos(posX, posY)); break; case "Hunter": SceneHandler.createMeeple <Hunter>("Mercenary", new HexaPos(posX, posY)); break; case "HuntedAnimal": SceneHandler.createMeeple <HuntedAnimal>("Mercenary", new HexaPos(posX, posY)); break; case "Healer": SceneHandler.createMeeple <Healer>("Mercenary", new HexaPos(posX, posY)); break; case "Scout": SceneHandler.createMeeple <Scout>("Mercenary", new HexaPos(posX, posY)); break; case "PackAnimal": SceneHandler.createMeeple <PackAnimal>("Mercenary", new HexaPos(posX, posY)); break; default: break; } } else if (meep.GetType() == typeof(Opponent) && SceneHandler.activeTacticalGame.GetType() == typeof(BattleGround)) { Mercenary merc = (Mercenary)SceneHandler.activeCompanion; int dist = Map.distance(meep.Pos, merc.Pos); int rnd = SceneHandler.rollDice(10); Debug.Log(rnd + " " + dist); if (rnd >= dist) { merc.fight(meep.GetComponent <Opponent>()); } merc.HasActionOutstanding = false; } else if (meep.GetType() == typeof(HuntedAnimal) && SceneHandler.activeTacticalGame.GetType() == typeof(HuntingGround)) { Debug.Log("HUNT"); Hunter hunter = (Hunter)SceneHandler.activeCompanion; SceneHandler.gainProviant(hunter.hunt(meep.GetComponent <HuntedAnimal>())); } SceneHandler.activeCompanion = null; } }