// Use this for initialization
 void Start()
 {
     if (rem == null)
     {
         rem           = this;
         encounterStep = UnityEngine.Random.Range(8, 24);
     }
 }
Beispiel #2
0
 // Use this for initialization
 void Start()
 {
     encountersEnabled = enableEncounters;
     if (rem == null)
     {
         rem           = this;
         encounterStep = UnityEngine.Random.Range(8, 24);
     }
 }
    IEnumerator MovingOneSpace(Vector3 tryDestination, bool canMoveAfter = true)
    {
        //Physics2D.OverlapSphere(tryDestination, 5f);

        Vector3 tempPosition    = transform.position;
        bool    battleActivated = false;

        if (false)
        {
        }
        else
        {
            int distanceX = Mathf.Abs((int)(tryDestination.x - gameObject.transform.position.x));
            int distanceY = Mathf.Abs((int)(tryDestination.y - gameObject.transform.position.y));

            int MoveDirX = 1;
            if (tryDestination.x < gameObject.transform.position.x)
            {
                MoveDirX = -1;
            }
            int MoveDirY = 1;
            if (tryDestination.y < gameObject.transform.position.y)
            {
                MoveDirY = -1;
            }

            float progress = 0;
            while (progress < distanceX)
            {
                progress          += Time.deltaTime * speed;
                tempPosition       = new Vector3(tempPosition.x + Time.deltaTime * speed * MoveDirX, tempPosition.y, tempPosition.z);
                transform.position = ClampToPixel(tempPosition);
                yield return(null);
            }
            progress = 0;
            while (progress < distanceY)
            {
                progress          += Time.deltaTime * speed;
                tempPosition       = new Vector3(tempPosition.x, tempPosition.y + Time.deltaTime * speed * MoveDirY, tempPosition.z);
                transform.position = ClampToPixel(tempPosition);
                yield return(null);
            }
            tempPosition = tryDestination;
            gameObject.transform.position = tempPosition;

            Animator anim = GetComponent <Animator>();
            if (anim)
            {
                anim.SetInteger("WalkState", 0);
            }

            if (GameManager.gm.leader == this && !debugEnabled)
            {
                char currGround = MapGenerator.mg.GetTile(transform.position, true);
                if (encountersEnabled)
                {
                    battleActivated = RandomEncounterManager.AdvanceStepCount(currGround);
                }
            }
        }

        //gameObject.transform.position = new Vector3((int)transform.position.x, (int)transform.position.y, (int)transform.position.z);

        if (canMoveAfter && !battleActivated)
        {
            canMove = true;
            CheckTile(transform.position);
        }

        // sr.sortingOrder = -(int)transform.position.y;
    }
Beispiel #4
0
    public void StartBattle(string[] introMessage            = null,
                            EnemyPartyManager enemyEncounter = null)
    {
        // Disable player movement
        //GameManager.gm.leader.DisableMovement();

        if (enemyEncounter == null)
        {
            Collider2D currentTile = Physics2D.OverlapCircle(GameManager.gm.leader.transform.position, 4, groundLayer);

            GroundTile ground = currentTile.GetComponent <GroundTile>();
            if (ground)
            {
                if (!MazeGenerator.inMaze)
                {
                    RandomEncounterManager.SetCurrArea(ground.tileChar);
                }
            }
            else
            {
                Debug.Log("Invalid Ground");
            }

            epm = GameObject.Instantiate(areaEncounters
                                         .GetRandomEncounter(RandomEncounterManager.currArea).gameObject)
                  .GetComponent <EnemyPartyManager>();
            Debug.Log("encounter at " + RandomEncounterManager.currArea);
        }
        else
        {
            epm = enemyEncounter;
        }

        int heroDisplayCount = allHeroStats.transform.childCount;

        for (int k = 0; k < heroDisplayCount; k++)
        {
            Destroy(allHeroStats.transform.GetChild(0).gameObject);
        }

        // Activate the panels that display HP, MP, etc.
        for (int i = 0; i < hpm.activePartyMembers.Count; i++)
        {
            HeroDisplayPanel heroDispPanel = GameObject.Instantiate(
                defaultHeroDisplay.gameObject, allHeroStats).GetComponent <HeroDisplayPanel>();
            heroDispPanel.InitiatePanel(hpm.activePartyMembers[i]);

            hpm.activePartyMembers[i].GetComponent <GridController>().canMove = false;

            battleMenu.heroDisplayMidHeight = heroDispPanel.transform.position.y;
        }

        heroesAlive = hpm.activePartyMembers.Count;

        totalGoldDrop = 0;

        // Set the background image
        if (epm.background != null)
        {
            enviroImg.sprite = epm.background;
        }

        // The Skeleton King's body parts shouldn't be lined up,
        // so disable the horizontal layout group.
        if (isFightingFinalBoss)
        {
            enviroImg.GetComponent <HorizontalLayoutGroup>().enabled = false;
        }
        else
        {
            enviroImg.GetComponent <HorizontalLayoutGroup>().enabled = true;
            enviroImg.sprite = AreaEncounters.currBackground;
        }

        // Instantiate the Enemy sprites
        for (int j = 0; j < epm.activePartyMembers.Count; j++)
        {
            GameObject enemyObj = GameObject.Instantiate(epm.activePartyMembers[j].gameObject);
            epm.activePartyMembers[j] = enemyObj.GetComponent <BaseCharacter>();
            Vector3 tempScale = enemyObj.transform.lossyScale;
            enemyObj.transform.SetParent(enviroImg.transform, false);
            tempScale = new Vector3(tempScale.x / enviroImg.transform.localScale.x,
                                    tempScale.y / enviroImg.transform.localScale.y, tempScale.z / enviroImg.transform.localScale.z);
            enemyObj.transform.localScale = tempScale;
            enemyObj.SetActive(false);

            if (isFightingFinalBoss)
            {
                enemyObj.GetComponent <RectTransform>().localScale *= 2;
                enemyObj.GetComponent <RectTransform>().position   += new Vector3((enviroImg.rectTransform.rect.width / 2) * 1.5f,
                                                                                  (-enviroImg.rectTransform.rect.height / 2) * 1.3f);
                enemyObj.GetComponent <RectTransform>().position = new Vector3(Screen.width / 2, Screen.height / 2);
            }

            totalGoldDrop += enemyObj.GetComponent <BaseCharacter>().goldDrop;
        }

        enemiesAlive = epm.activePartyMembers.Count;

        OpenWindow(introMessage);
    }