Ejemplo n.º 1
0
    override public void init()
    {
        foreach (var entity in this.playerParty)
        {
            CButtonSprite playerButton = new CButtonSprite(entity.getName());
            playerButton.setXY(200, (playerButton.getHeight() * this.playerPartyButtons.Count) + 50);
            //playerButton.setSortingLayerName("Game");
            this.playerPartyButtons.Add(playerButton, entity);
        }


        mBackground = new CBackground();
        mBackground.setXY(0, 0);
        mBackground.setSortingLayerName("Background");
        this.setState(BattleState.SELECTING_ACTIONS);
    }
Ejemplo n.º 2
0
    override public void update()
    {
        switch (this.getState())
        {
        case BattleState.SELECTING_ACTIONS:
            // Botones de seleccion de personaje
            foreach (var entry in this.playerPartyButtons)
            {
                // entry.Key = CButtonSprite
                // entry.Value = BattleEntity
                entry.Key.update();

                //Si se hizo click en el botón y la entidad es diferente a la actual
                if (entry.Key.clicked() && this.selectedBattleEntity != entry.Value)
                {
                    this.selectedBattleEntity = entry.Value;

                    // Deselecciono la habilidad seleccionada
                    this.selectedSkill = null;

                    // Destruimos botones antiguos de skills
                    this.clearButtonDictionary(this.skillButtons);

                    // Agregamos botones con los skills de la entidad actual
                    foreach (var skill in this.selectedBattleEntity.getSkills())
                    {
                        CButtonSprite skillButton = new CButtonSprite(skill.getName());

                        /*
                         *      Posición de botones:
                         *      X = Ancho de pantalla - (Ancho de Botón + Margen)
                         *      Y = Alto de pantalla - (Alto de Botón * (Cantidad total de Skills - Cantidad de skills ya mostradas en botones))
                         */
                        skillButton.setXY(CGameConstants.SCREEN_WIDTH - (skillButton.getWidth() * 2.5f),
                                          CGameConstants.SCREEN_HEIGHT - (skillButton.getHeight() * (this.selectedBattleEntity.getSkills().Count - this.skillButtons.Count)));
                        //skillButton.setSortingLayerName("Game");
                        this.skillButtons.Add(skillButton, skill);
                    }
                }
                //for each entry in playerPartyButtons, if the entity is Dead, its key(button) and Value(unit) are
                deletebuttonsOfPartyMembers(entry.Key, entry.Value);
            }

            // Botones de skills
            foreach (var entry in this.skillButtons)
            {
                entry.Key.update();
                entry.Key.setVisible(this.selectedBattleEntity != null);

                // Si se hizo click en el botón de skill y la entidad es diferente a la actual
                if (entry.Key.clicked() && this.selectedSkill != entry.Value)
                {
                    this.selectedSkill = entry.Value;
                    this.setTargetButtons();
                }
            }

            // Botones de Enemigos
            foreach (var entry in this.targetButtons)
            {
                //Si no se ha clickeado un boton de skill anteriormente, el boton de enemigo no es visible.
                if (this.selectedSkill == null)
                {
                    entry.Key.setVisible(false);
                }
                else
                {
                    entry.Key.setVisible(true);
                }

                entry.Key.update();

                if (entry.Key.clicked())
                {
                    this.addAction(this.selectedBattleEntity, this.selectedSkill, entry.Value);

                    //Esconder el botón de el jugador que ya escogió accion
                    foreach (var playerButton in this.playerPartyButtons)
                    {
                        if (playerButton.Value == this.selectedBattleEntity)
                        {
                            playerButton.Key.setVisible(false);
                        }
                    }

                    this.selectedSkill        = null;
                    this.selectedBattleEntity = null;
                }
            }
            break;

        case BattleState.PERFORMING_ACTIONS:
            if (this.selectedActions.Count <= 0)
            {
                this.setState(BattleState.SELECTING_ACTIONS);
            }
            else
            {
                this.selectedActions[0].update();

                if (this.selectedActions[0].getState() == Action.FINISHED)
                {
                    Debug.Log("Accion: Terminada");
                    this.selectedActions[0].destroy();
                    this.selectedActions.RemoveAt(0);
                }
            }
            break;
        }

        foreach (var player in this.playerParty)
        {
            player.update();
        }

        foreach (var enemy in this.enemyParty)
        {
            enemy.update();
        }

        //se encarga de que cuando una abilidad que tiene efecto tardio y se esta performeando, se cargue la animacion
        //mTurnActionManager.update();
    }