Exemple #1
0
    // button that logs player in
    public void Button_Login()
    {
        ServerResponse response = UserRequestLibrary.LoginRequest(m_NameText, m_PasswordText);

        // if response is positive, save name and password, and load next scene
        if (response.ResponseType == EServerResponseType.OK)
        {
            // save name and password
            PlayerData.playerName     = m_NameText.text.Remove(m_NameText.text.Length - 1);
            PlayerData.playerPassword = m_PasswordText.text.Remove(m_PasswordText.text.Length - 1);

            LoginBanner.gameObject.SetActive(true);
            LoginBannerText.text = response.Text;
            StartCoroutine(LoadStoryScene());
            return;
        }

        // if response is error, print out error message
        if (response.ResponseType == EServerResponseType.ERROR)
        {
            LoginBanner.gameObject.SetActive(true);
            LoginBannerText.text = response.Text;
            Invoke("DisableLoginBanner", 2.0f);
            return;
        }
    }
    // check if player unlocked a character
    string CheckForCharacterUnlock()
    {
        // check if there are any chars that can be unlocked
        if (m_CharactersThatCanBeUnlocked.Count <= 0)
        {
            UIControllerBattle.get.m_UnlockedCharacterIcon.sprite = UIControllerBattle.get.m_CharacterSpritesDict["NotUnlocked"];
            return("You've already unlocked all characters in this Level!");
        }
        // if there are any
        else
        {
            // check if a character is going to be unlocked
            System.Random rand         = new System.Random();
            int           unlockChance = rand.Next(0, 100);

            // player missed chance to unlock character
            if (unlockChance < 50)
            {
                UIControllerBattle.get.m_UnlockedCharacterIcon.sprite = UIControllerBattle.get.m_CharacterSpritesDict["NotUnlocked"];
                return("Nobody joined your team this time. Try again another time!");
            }
            // player hit chance to unlock character
            else
            {
                // calculate which character should be unlocked
                int characterIndex = rand.Next(0, m_CharactersThatCanBeUnlocked.Count);

                // Unlock character for player
                ServerResponse responseDelServer = UserRequestLibrary.UnlockCharacterForUser(m_CharactersThatCanBeUnlocked[characterIndex].m_CharacterName);

                UIControllerBattle.get.m_UnlockedCharacterIcon.sprite = UIControllerBattle.get.m_CharacterSpritesDict[m_CharactersThatCanBeUnlocked[characterIndex].m_CharacterName];
                return($"The {m_CharactersThatCanBeUnlocked[characterIndex].m_CharacterName} joined your team!");
            }
        }
    }
    public void Login()
    {
        // Set IP to the current ip text if not empty
        if (m_NewIPText.text == "")
        {
            return;
        }

        PlayerData.IP = m_NewIPText.text.Remove(m_NewIPText.text.Length - 1);

        ServerResponse sr = UserRequestLibrary.LoginRequest(m_NameText, m_PasswordText);

        // if response is positive, save name and password, and load next scene
        if (sr.ResponseType == EServerResponseType.OK)
        {
            // save name and password
            PlayerData.playerName     = m_NameText.text.Remove(m_NameText.text.Length - 1);
            PlayerData.playerPassword = m_PasswordText.text.Remove(m_PasswordText.text.Length - 1);

            LoginBanner.gameObject.SetActive(true);
            LoginBannerText.text = sr.Text;
            StartCoroutine(LoadMainScene());
            return;
        }

        // if response is error, print out error message
        if (sr.ResponseType == EServerResponseType.ERROR)
        {
            LoginBanner.gameObject.SetActive(true);
            LoginBannerText.text = sr.Text;
            Invoke("DisableLoginBanner", 2.0f);
            return;
        }
    }
    // get current character stats from database
    public void GetStats()
    {
        ServerResponse sr = UserRequestLibrary.GetCharacterStatsRequest(m_CharacterName);

        m_ExperienceGained = sr.Characters[0].Experience;
        m_Level            = sr.Characters[0].Level;
        m_UnlockStatus     = sr.Characters[0].UnlockStatus;
    }
    // gets the saved stepdata from database
    public void GetSavedSteps()
    {
        ServerResponse sr = UserRequestLibrary.GetResourcesRequest();

        m_currentStepTracker = sr.Resources.StepCounter;

        ResourcesWindow.get.m_StepCounterText.text = ((int)m_currentStepTracker).ToString();
    }
Exemple #6
0
    // button function to create a new account
    public void Button_CreateAccount()
    {
        ServerResponse response = UserRequestLibrary.CreateAccountRequest(m_NameText, m_PasswordText);

        // log the response to the player
        CreateAccountBanner.gameObject.SetActive(true);
        CreateAccountBannerText.text = response.Text;
        Invoke("DisableCreateAccountBanner", 2.0f);
        return;
    }
Exemple #7
0
    // gets this character values from the database
    public void GetStats()
    {
        ServerResponse response = UserRequestLibrary.GetCurrentCharStats(m_CharacterName);

        m_AttackDamage = response.Characters[0].AttackDamage;
        m_Defense      = response.Characters[0].Defense;
        m_Health       = response.Characters[0].HP;
        m_UnlockStatus = response.Characters[0].UnlockStatus;
        m_Level        = response.Characters[0].Level;
    }
    void SpawnEnemyTeam()
    {
        ServerResponse response = UserRequestLibrary.GetLevelData(PlayerData.LastSelectedLevel);

        // spawn enemies that are deposited in the database
        for (int i = 0; i < response.LevelData.Enemies.Count; i++)
        {
            // spawn enemy at the correct enemy spawnpoint
            GameObject go = Instantiate(m_CharacterDict[response.LevelData.Enemies[i].Name], m_EnemySpawnpoints[i]);

            Character EnemyReference = go.GetComponent <Character>();

            // if it is the first spawned, set as last selected enemy
            if (i == 0)
            {
                m_LastSelectedEnemy = EnemyReference;
            }

            // set character spawned to enemy team
            EnemyReference.m_TeamStatus = "Enemy";

            // set character values got from database
            EnemyReference.m_AttackDamage = response.LevelData.Enemies[i].AttackDamage;
            EnemyReference.m_Defense      = response.LevelData.Enemies[i].Defense;
            EnemyReference.m_Health       = response.LevelData.Enemies[i].HP;

            // save enemy in enemy list
            m_Enemies.Add(EnemyReference);

            // bottom chars should overlap top chars
            if (i > 0 && i % 2 != 0)
            {
                go.GetComponent <SpriteRenderer>().sortingOrder = 11;
            }
            else
            {
                go.GetComponent <SpriteRenderer>().sortingOrder = 10;
            }
        }

        // check which characters the player can unlock
        foreach (var charToBeUnlocked in m_Enemies)
        {
            // get current status character in database
            ServerResponse sr = UserRequestLibrary.GetCurrentCharStats(charToBeUnlocked.m_CharacterName);

            // if character has not unlocked the character yet
            if (sr.Characters[0].UnlockStatus == 0)
            {
                // add it to the list of characters that can be unlocked
                m_CharactersThatCanBeUnlocked.Add(charToBeUnlocked);
            }
        }
    }
Exemple #9
0
    // returns true if level is already unlocked
    // false otherwhise
    public void GetLevelStatus()
    {
        ServerResponse response = UserRequestLibrary.GetLevelStatusForUser(m_LevelID);

        if (response.LevelStatus.UnlockStatus == 1)
        {
            m_IsUnlocked = true;
            return;
        }

        m_IsUnlocked = false;
    }
    // saves the accumulated steps from player in the database
    public void UpdateStepsInDatabase()
    {
        ServerResponse sr = UserRequestLibrary.GetResourcesRequest();

        if (m_locationTrackable)
        {
            BA_Praxis_Library.Resources res = new BA_Praxis_Library.Resources()
            {
                StepCounter     = (int)m_currentStepTracker,
                AncientMaterial = sr.Resources.AncientMaterial,
                ChaosMaterial   = sr.Resources.ChaosMaterial,
                DarkMaterial    = sr.Resources.DarkMaterial,
                NatureMaterial  = sr.Resources.NatureMaterial,
                NeutralMaterial = sr.Resources.NeutralMaterial
            };

            sr = UserRequestLibrary.UpdateResourcesRequest(res);
        }
    }
    // tries to start the gps location system
    private IEnumerator StartGPSLocationService()
    {
        if (!Input.location.isEnabledByUser)
        {
            m_IsGPSEnabled.text = "User has not enabled GPS";
            yield break;
        }

        Input.location.Start();

        int maxWait = 20;

        while (Input.location.status == LocationServiceStatus.Initializing && maxWait > 0)
        {
            yield return(new WaitForSeconds(1));

            maxWait--;
        }

        if (maxWait <= 0)
        {
            m_IsGPSEnabled.text = "Timed out";
            yield break;
        }

        if (Input.location.status == LocationServiceStatus.Failed)
        {
            m_IsGPSEnabled.text = "Unable to get device location";
            yield break;
        }

        m_Latitude_Latest  = Input.location.lastData.latitude;
        m_Longitude_Latest = Input.location.lastData.longitude;

        m_locationTrackable = true;

        ServerResponse sr = UserRequestLibrary.GetResourcesRequest();

        m_currentStepTracker = sr.Resources.StepCounter;

        m_IsGPSEnabled.text = "GPS active";
    }
Exemple #12
0
    public static void UpdateResourcesForCurrentSelectedCharacter(int materialsGained)
    {
        int currentCharID = PlayerData.currentSelectedCharacter;

        ServerResponse sr = UserRequestLibrary.GetResourcesRequest();

        Resources resources = sr.Resources;

        // if character is adventurer
        if (currentCharID == 0)
        {
            resources.NeutralMaterial += materialsGained;
        }

        // if character is bandit | red ogre | werewolf
        else if (currentCharID == 1 || currentCharID == 5 || currentCharID == 9)
        {
            resources.DarkMaterial += materialsGained;
        }

        // if character is golem | satyr | yeti
        else if (currentCharID == 2 || currentCharID == 6 || currentCharID == 10)
        {
            resources.AncientMaterial += materialsGained;
        }

        // if character is wasp | rat | mandrake
        else if (currentCharID == 8 || currentCharID == 4 || currentCharID == 3)
        {
            resources.NatureMaterial += materialsGained;
        }

        // if character is shade
        else if (currentCharID == 7)
        {
            resources.ChaosMaterial += materialsGained;
        }

        UserRequestLibrary.UpdateResourcesRequest(resources);
    }
 // upgrade character in database
 public ServerResponse UpgradeCharacter()
 {
     return(UserRequestLibrary.UpgradeCharacterRequest(m_CharacterName));
 }
Exemple #14
0
 // unlocks this character in the database so it can be used ingame
 public void UnlockCharacter()
 {
     ServerResponse response = UserRequestLibrary.UnlockCharacterForUser(m_CharacterName);
 }
Exemple #15
0
    public static void UpdateExperience(int _expToAdd)
    {
        int currentCharID = PlayerData.currentSelectedCharacter;

        string characterName = "";

        switch (currentCharID)
        {
        case 0:
            characterName = "Adventurer";
            break;

        case 1:
            characterName = "Bandit";
            break;

        case 2:
            characterName = "Golem";
            break;

        case 3:
            characterName = "Mandrake";
            break;

        case 4:
            characterName = "Rat";
            break;

        case 5:
            characterName = "Red Ogre";
            break;

        case 6:
            characterName = "Satyr";
            break;

        case 7:
            characterName = "Shade";
            break;

        case 8:
            characterName = "Wasp";
            break;

        case 9:
            characterName = "Werewolf";
            break;

        case 10:
            characterName = "Yeti";
            break;

        default:
            break;
        }

        // get current stats from database
        ServerResponse sr = UserRequestLibrary.GetCharacterStatsRequest(characterName);

        // copy stats
        BA_Praxis_Library.Character charTMP = sr.Characters[0];

        //set name
        charTMP.Name = characterName;

        // add experience
        charTMP.Experience += _expToAdd;

        // update experience
        UserRequestLibrary.UpdateExperience(charTMP);
    }
    // handles the complete battle
    // first: player attacks chosen enemy
    // then: enemy attacks random team member
    // lastly: reset all battle states
    private void HandleRound()
    {
        // check if player has won
        if (m_Enemies.Count <= 0)
        {
            ResetBattlePhase();
            UIControllerBattle.get.m_AttackButton.gameObject.SetActive(false);
            UIControllerBattle.get.m_HelperMenuButton.gameObject.SetActive(false);

            // Activate the ending screen
            UIControllerBattle.get.m_EndingScreen.gameObject.SetActive(true);

            string tmp = CheckForCharacterUnlock();

            UIControllerBattle.get.m_EndingText.text = "You won!\n" + tmp;

            if (PlayerData.LastSelectedLevel < 5)
            {
                ServerResponse sr = UserRequestLibrary.UnlockLevelForUser(PlayerData.LastSelectedLevel + 1);
            }

            return;
        }

        // if player lost
        if (m_Team.Count <= 0)
        {
            ResetBattlePhase();
            UIControllerBattle.get.m_AttackButton.gameObject.SetActive(false);
            UIControllerBattle.get.m_HelperMenuButton.gameObject.SetActive(false);

            // Activate the ending screen
            UIControllerBattle.get.m_EndingScreen.gameObject.SetActive(true);

            UIControllerBattle.get.m_EndingText.text = "You lost.. try again with a better team!";

            return;
        }

        // round start
        if (!m_roundInitialized)
        {
            // get gameobject of current team member
            m_teamMember = m_LastSelectedTeamMember.gameObject;

            // save last position of team member
            m_teamMemberLastPos = m_teamMember.transform.position;

            // get animator
            m_teamMemberAnimator = m_teamMember.GetComponent <Animator>();

            // attacker should overlap attacked
            // save original sorting layer
            m_teamMemberSpriteLayer = m_teamMember.GetComponent <SpriteRenderer>().sortingOrder;
            m_teamMember.GetComponent <SpriteRenderer>().sortingOrder = 15;

            // get gameobject of current enemy
            m_enemyTarget = m_LastSelectedEnemy.gameObject;

            // get animator
            m_enemyTargetAnimator = m_enemyTarget.GetComponent <Animator>();

            // let enemy sprite be under player sprite
            // save original sorting layer
            m_enemyTargetSpriteLayer = m_enemyTarget.GetComponent <SpriteRenderer>().sortingOrder;
            m_enemyTarget.GetComponent <SpriteRenderer>().sortingOrder = 14;

            // direction where team member is headed
            m_direction = m_enemyTarget.transform.position - m_teamMember.transform.position;
            m_direction.Normalize();

            // round start done
            m_roundInitialized = true;

            // run animation
            m_teamMemberAnimator.SetBool("IsRunning", true);
        }

        // player attack turn
        else if (!m_PlayerAttacked)
        {
            // if is not playing animation
            if (m_teamMemberAnimator != null && !m_teamMemberAnimator.GetBool("IsAttacking"))
            {
                // if enemy was reached, attack
                if (m_teamMember.transform.position.x >= m_enemyTarget.transform.position.x - 1.5f)
                {
                    m_teamMemberAnimator.SetBool("IsAttacking", true);
                    m_enemyTargetAnimator.SetTrigger("IsHurt");
                }
                // if enemy was not reached yet, return, so position can be updated
                else
                {
                    // move towards enemy
                    m_teamMember.transform.position += m_direction * m_MoveSpeed * Time.deltaTime;
                    return;
                }
            }
            // if already is playing animation | wait for animation event to be called
            else
            {
                return;
            }
        }

        // player moves back to original position
        else if (!m_playerMoveBack)
        {
            // if player has returned to his original position
            if (m_teamMember.transform.position.x <= m_teamMemberLastPos.x)
            {
                m_teamMember.GetComponent <Animator>().SetBool("IsRunning", false);

                // Reset Sprite Layers
                m_teamMember.GetComponent <SpriteRenderer>().sortingOrder  = m_teamMemberSpriteLayer;
                m_enemyTarget.GetComponent <SpriteRenderer>().sortingOrder = m_enemyTargetSpriteLayer;

                m_playerMoveBack = true;
            }
            // if not move backwards
            else
            {
                m_teamMember.transform.position -= m_direction * m_MoveSpeed * Time.deltaTime;
                return;
            }
        }

        // check if enemy dead
        else if (m_LastSelectedEnemy.m_Health <= 0)
        {
            if (m_enemyTargetAnimator != null && !m_enemyTargetAnimator.GetBool("IsDead"))
            {
                m_enemyTargetAnimator.SetBool("IsDead", true);
            }

            return;
        }

        // enemy chooses a target to attack
        else if (!m_enemyTargetChoosen)
        {
            // choose a random target from the remaining team members
            // Remember: Random.Next(inclusive, exclusive)
            System.Random rand = new System.Random();
            m_enemy_ChosenTeamPlayerTarget = m_Team[rand.Next(0, m_Team.Count)];

            System.Random random = new System.Random();
            m_enemyAttackerCharacter = m_Enemies[random.Next(0, m_Enemies.Count)];

            // save spritelayer order for chosen target
            m_enemy_ChosenTeamPlayerTargetSpriteLayer = m_enemy_ChosenTeamPlayerTarget.GetComponent <SpriteRenderer>().sortingOrder;
            m_enemy_ChosenTeamPlayerTarget.GetComponent <SpriteRenderer>().sortingOrder = 14;
            m_enemy_ChosenTeamPlayerTargetAnimator = m_enemy_ChosenTeamPlayerTarget.GetComponent <Animator>();

            // get gameobject of current enemy
            m_enemyAttacker = m_enemyAttackerCharacter.gameObject;

            // save last position of current enemy
            m_enemyAttackerLastPos = m_enemyAttacker.transform.position;

            // get animator
            m_enemyAttackerAnimator = m_enemyAttacker.GetComponent <Animator>();

            // let enemy sprite be over player sprite
            // save original sorting layer
            m_enemyAttackerSpriteLayer = m_enemyAttacker.GetComponent <SpriteRenderer>().sortingOrder;
            m_enemyAttacker.GetComponent <SpriteRenderer>().sortingOrder = 15;

            // direction where enemy attacker is headed
            m_direction = m_enemy_ChosenTeamPlayerTarget.transform.position - m_enemyAttacker.transform.position;
            m_direction.Normalize();

            m_enemyAttacker.GetComponent <Animator>().SetBool("IsRunning", true);

            m_enemyTargetChoosen = true;
        }

        // enemy is attacking
        else if (!m_EnemyAttacked)
        {
            // if is not playing animation
            if (m_enemyAttackerAnimator != null && !m_enemyAttackerAnimator.GetBool("IsAttacking"))
            {
                // if player was reached, attack
                if (m_enemyAttacker.transform.position.x <= m_enemy_ChosenTeamPlayerTarget.transform.position.x + 1.5f)
                {
                    m_enemyAttackerAnimator.SetBool("IsAttacking", true);
                    m_enemy_ChosenTeamPlayerTargetAnimator.SetTrigger("IsHurt");
                }
                // if enemy was not reached yet, return, so position can be updated
                else
                {
                    // move towards enemy
                    m_enemyAttacker.transform.position += m_direction * m_MoveSpeed * Time.deltaTime;
                    return;
                }
            }
            // if already is playing animation | wait for animation event to be called
            else
            {
                return;
            }
        }

        // enemy moves back to original position
        else if (!m_enemyMoveBack)
        {
            // if player has returned to his original position
            if (m_enemyAttacker.transform.position.x >= m_enemyAttackerLastPos.x)
            {
                m_enemyAttacker.GetComponent <Animator>().SetBool("IsRunning", false);

                // Reset Sprite Layers
                m_enemy_ChosenTeamPlayerTarget.GetComponent <SpriteRenderer>().sortingOrder = m_enemy_ChosenTeamPlayerTargetSpriteLayer;
                m_enemyAttacker.GetComponent <SpriteRenderer>().sortingOrder = m_enemyAttackerSpriteLayer;

                m_enemyMoveBack = true;
            }
            // if not move backwards
            else
            {
                m_enemyAttacker.transform.position -= m_direction * m_MoveSpeed * Time.deltaTime;
                return;
            }
        }

        // team member targeted by enemy dead
        else if (m_enemy_ChosenTeamPlayerTarget.m_Health <= 0)
        {
            if (m_enemy_ChosenTeamPlayerTargetAnimator != null && !m_enemy_ChosenTeamPlayerTargetAnimator.GetBool("IsDead"))
            {
                m_enemy_ChosenTeamPlayerTargetAnimator.SetBool("IsDead", true);
            }
            return;
        }

        // round finished
        else
        {
            ResetBattlePhase();
        }
    }