예제 #1
0
        public void Handle(Selector selector, Player p1, Player p2, Field p1Field, Field p2Field,
                           KeyboardState state, KeyboardState previousState)
        {
            // Handles left and right
            HandleLeftRightWithMaxIndex(selector, state, previousState, 4);
            if (p1Field.monsterZone[selector.index].sprite == null)
            {
                selector.defaultPosition = p1Field.monsterPositions[selector.index];
            }
            selector.selected = p1Field.monsterZone[selector.index];

            // Handle Summon
            if (state.IsKeyDown(Keys.Enter) && previousState.IsKeyUp(Keys.Enter))
            {
                selector.state    = SelectedState.P1_MONSTER_ZONE;
                selector.selected = p1Field.monsterZone[selector.index];
                SetMonster.Apply(p1, p1Field, selector.summoning, selector.index);
                selector.summoning = null;
                p1.canNormalSummon = false;
            }
            else if (state.IsKeyDown(Keys.Back) && previousState.IsKeyUp(Keys.Back))
            {
                selector.state           = SelectedState.SUMMON_OR_SET;
                selector.action          = SelectedAction.SUMMON;
                selector.selected        = selector.summoning;
                selector.index           = 0;
                selector.defaultPosition = selectorPositions[1];
            }
        }
예제 #2
0
        public bool SettingMonster(Battler user, Monster setMon, int setMonIndex)
        {
            BattleCardEventArgs args = new BattleCardEventArgs(user, GetOpponent(user), setMon, setMonIndex);

            SetMonster?.Invoke(this, args);

            if (args.DestroyTriggerer)
            {
                args.TriggeringPlayer.DestroyCard(args.TriggeringCardIndex);
            }
            if (args.Cancel || args.DestroyTriggerer)
            {
                return(false);
            }

            args.TriggeringPlayer.Set((Monster)args.TriggeringCard, args.TriggeringCardIndex);

            return(true);
        }
예제 #3
0
    void Start()
    {
        if (type == TYPE.HP)
        {
            set = transform.parent.parent.GetComponent <SetMonster>();
        }
        else
        {
            set = transform.parent.GetComponent <SetMonster>();
        }

        mon = set.monster;

        image = GetComponent <Image>();
        text  = transform.GetChild(0).GetComponent <Text>();

        maxHp = mon.hp;

        if (mon.mon.name == "kraken")
        {
            kk = mon.GetComponent <Kraken>();
        }
    }
예제 #4
0
    // Si on clique sur une salle, on instancie le monstre dans cette salle avec les valeurs d'attaque et hp du canvas
    public void OnMouseDown()
    {
        //Si on est en train de placer le coeur
        // Cette condition est placée au dessus de la condition settingAdventurersRoom pour éviter de passer directement dedans une fois que l'on passe en.settingHeart = true (en attendant de trouver mieux ...)
        if (env.settingHeart == true)
        {
            //On enregistre la salle du coeur
            env.heartH = GetComponent <InfoRoom> ().H;
            env.heartW = GetComponent <InfoRoom> ().W;

            env.settingHeart = false;

            //On réactive le Canvas et on enlève le texte de Choix de salle de départ
            GameObject.Find("CanvasNight").GetComponent <Canvas> ().enabled = true;
            GameObject.Find("TextOverlay").GetComponent <Canvas> ().enabled = false;

            //On ne pourra plus sélectionner cette case donc on la détruit
            Destroy(gameObject);

            //On créé le coeur
            monster = Instantiate(GameObject.Find("Dungeon(Clone)").GetComponent <Dungeon> ().monsterList[0]) as GameObject;

            //monster = Instantiate (monsters [0]) as GameObject;
            Actor actor = monster.GetComponent <Actor> ();
            actor.isHeart = true;
            actor.roomH   = GetComponent <InfoRoom> ().H;
            actor.roomW   = GetComponent <InfoRoom> ().W;
            monster.transform.SetParent(Dungeon.monsters);
            GetComponentInParent <InfoRoom>().containsMonster = true;

            //On désactive l'overlay
            OverlayOff();
        }

        //Si on est en train de choisir la salle de départ
        if (env.settingAdventurersRoom == true)
        {
            //On enregistre la salle de départ des aventuriers
            env.startingH = GetComponent <InfoRoom> ().H;
            env.startingW = GetComponent <InfoRoom> ().W;

            //On n'est plus en train de choisir la salle de départ
            env.settingAdventurersRoom = false;

            //On ne pourra plus sélectionner cette case donc on la détruit
            Destroy(gameObject);

            //On change la couleur de la salle de départ pour la repérer
            GameObject[] groundTiles = GameObject.FindGameObjectsWithTag("Ground");
            foreach (GameObject Tile in groundTiles)
            {
                if ((Tile.GetComponent <InfoRoom>().H == GetComponent <InfoRoom>().H) && (Tile.GetComponent <InfoRoom>().W == GetComponent <InfoRoom>().W))
                {
                    Tile.GetComponent <SpriteRenderer>().color = new Color(0.8f, 0.8f, 0.8f, 1f);
                }
            }


            //On affiche toutes les salles pour choisir la salle du coeur
            GameObject[] gameObjectOverlay = GameObject.FindGameObjectsWithTag("Overlay");
            foreach (GameObject Overlay in gameObjectOverlay)
            {
                if (Overlay.GetComponentInParent <InfoRoom>().containsMonster == false)
                {
                    Overlay.GetComponent <Renderer> ().enabled          = true;
                    Overlay.GetComponent <PolygonCollider2D> ().enabled = true;
                    Overlay.GetComponent <SpriteRenderer> ().color      = new Color(0f, 1f, 0f, .2f);
                }
            }

            //On va choisir la salle du coeur
            env.settingHeart = true;
            GameObject.Find("TextOverlay").GetComponent <TextOverlay> ().SetTextOverlay();
        }



        //Si on est en train de placer un monstre
        if (env.addingMonster == true)
        {
            //MonsterPool monsterPool = GameObject.Find ("GenerateMonster").GetComponent<MonsterPool> ();
            int monsterNum = env.monsterNum;

            SetMonster selectedMonster = GameObject.Find("Monster" + (monsterNum).ToString()).GetComponent <SetMonster>();

            GameObject monster = Instantiate(GameObject.Find("Dungeon(Clone)").GetComponent <Dungeon> ().monsterList[selectedMonster.monsterID]) as GameObject;
            Actor      actor   = monster.GetComponent <Actor> ();

            //On retire le prix au trésor
            canvasInterface.BuyMonster(selectedMonster.monsterPrice);
            actor.roomH   = GetComponent <InfoRoom> ().H;
            actor.roomW   = GetComponent <InfoRoom> ().W;
            actor.hpmax   = selectedMonster.monsterHP;
            actor.attack  = selectedMonster.monsterAttack;
            actor.value   = selectedMonster.monsterPrice;
            actor.roomPos = 5;
            monster.transform.SetParent(Dungeon.monsters);
            env.addingMonster = false;
            GetComponentInParent <InfoRoom>().containsMonster = true;

            //On désactive l'overlay
            OverlayOff();
        }
    }