示例#1
0
    private void SceneChangeManagement(Scene scene, LoadSceneMode current)
    {
        NextStageTrigger = GameObject.FindWithTag("Portal");//Finds Next Level Trigger in current scene
        if (NextStageTrigger != null)
        {
            NextStageTrigger.gameObject.GetComponent <Collider>().isTrigger = true;//Makes sure the Trigger is actually a trigger
        }
        else
        {
            return;
        }

        StageLogic = GameObject.FindWithTag("Stage");//Finds Stage Logic in current scene

        if (StageLogic == null)
        {
            Debug.Log("No Stage Logic is present, Please add one to the current scene");
        }

        //Add to this list to add additional Stage Logic Objectives
        if (StageLogic.GetComponent <StageLogicGoTo>() != null)
        {
            isGoTo = true;
        }

        if (StageLogic.GetComponent <StageLogicKillAll>() != null)
        {
            isKillAll = true;
        }

        animator.SetBool("IsChanging", false);
        NextSceneToLoad = NextStageTrigger.GetComponent <PortalScript>().NextLevel;
    }
示例#2
0
    public Vector3 Load(LevelNode levelNode, int levelId, int stageId, Vector3 startpos)
    {
        stageEntity = LevelResManager.Instance.GetStage(levelId, levelNode.type);
        //stageEntity.gameObject.transform.position = levelNode.GetPosition (LevelManager.width,LevelManager.heigh);
        Vector3 local = startpos;

        local.x = local.x + stageEntity.getXSize() * 0.5f;
        local.y = local.y + stageEntity.getYSize() * 0.5f;
        stageEntity.gameObject.transform.position = local;
        if (levelNode.type == eNodeType.Start)
        {
            stageEntity.gameObject.name = "start";
        }
        if (levelNode.type == eNodeType.End)
        {
            stageEntity.gameObject.name = "end";
        }
        if (levelNode.type == eNodeType.Boss)
        {
            stageEntity.gameObject.name = "boss";
        }
        if (levelNode.type == eNodeType.Normal)
        {
            stageEntity.gameObject.name = "normal";
        }
        stageEntity.InitDoorState(levelNode, stageId);
        stageEntity.OpenAllEnableDoor();

        startpos.x = startpos.x + stageEntity.getXSize();

        return(startpos);
    }
示例#3
0
 public StageFacade(IServiceProvider serviceProvider, DealTrackingDbContext dbContext)
 {
     this.DbContext       = dbContext;
     this.DbSet           = this.DbContext.Set <Stage>();
     this.IdentityService = serviceProvider.GetService <IdentityService>();
     this.StageLogic      = serviceProvider.GetService <StageLogic>();
 }
示例#4
0
 public void ExitState(int stageId)
 {
     if (currentStage != null)
     {
         currentStage.OnExit();
     }
     currentStage = null;
 }
示例#5
0
    /// <summary>
    /// 地图编辑器测试运行使用
    /// </summary>
    /// <param name="target"></param>
    public void PlaceOneStageForTest(StageLogic target)
    {
        stageList = new List <StageInstance>();
        edgeList  = new List <EdgeInstance>();
        StageInstance stage = new StageInstance();

        stage.stageEntity = target;
        EnterState(0);
    }
示例#6
0
    public static StageLogic RandomMonsters(string stageID, List <ELEMENT_TYPE> skillElement, List <ELEMENT_TYPE> monsterEle)
    {
        StageLogic stageLogic = new StageLogic();

        stageLogic._Waves = new List <WaveInfo>();

        int        randomWave  = GameRandom.GetRandomLevel(10, 60, 35) + 1;
        List <int> waves       = GetRandomValue(randomWave, 3, 3, 1);
        int        stageIdInt  = int.Parse(stageID);
        string     stageBaseID = (stageIdInt + 1000).ToString();

        for (int i = 0; i < randomWave; ++i)
        {
            WaveInfo waveInfo = new WaveInfo();
            stageLogic._Waves.Add(waveInfo);
            waveInfo.NPCs = new List <string>();

            int atkTotal     = 12;
            int randomNpcCnt = GameRandom.GetRandomLevel(10, 45, 45) + 1;
            for (int j = 0; j < randomNpcCnt; ++j)
            {
                MonsterInfo monster = new MonsterInfo();
                monster.ID = stageBaseID + i + j;
                int isBoxSkill = Random.Range(0, 10000);
                if (skillElement.Count > 0 && stageIdInt >= MAX_LEVEL * 0.1f && isBoxSkill < 3333)
                {
                    int randomEleIdx = Random.Range(0, skillElement.Count);
                    monster.Element = skillElement[randomEleIdx];
                    monster.ExSkill = GetRandomBoxSkill(stageIdInt, BattleField.ElementTypeToTrapType(monster.Element), monster.ID);
                }
                else
                {
                    int randomEleIdx = Random.Range(0, skillElement.Count + monsterEle.Count);
                    if (randomEleIdx > skillElement.Count - 1)
                    {
                        monster.Element = monsterEle[randomEleIdx - skillElement.Count];
                    }
                    else
                    {
                        monster.Element = skillElement[randomEleIdx];
                    }
                }
                monster.AttackSkill = Random.Range(1, 10).ToString();
                int atkMax = Mathf.Min(atkTotal, 10);
                monster.AttackRate = Random.Range(1, atkMax);
                atkTotal          -= monster.AttackRate;
                atkTotal           = Mathf.Max(1, atkTotal);
                monster.HpRate     = Random.Range(1, 11);

                waveInfo.NPCs.Add(monster.ID);
                RandomMonsterList.Add(monster.ID, monster);
            }
        }

        return(stageLogic);
    }
示例#7
0
 public void Init()
 {
     currentStage = null;
     levelManager = new LevelManager();
     levelManager.Init();
     LevelManager.width = 40 * 0.6f;
     LevelManager.heigh = 30 * 0.6f;
     LevelManager.h1    = 10 * 0.6f;
     LevelManager.h2    = 2 * 0.6f;
 }
示例#8
0
    public void InitBattle(StageInfoRecord stageRecord, StageMapRecord stageMapRecord)
    {
        _StageRecord    = stageRecord;
        _StageMapRecord = stageMapRecord;
        _BattleRound    = 1;

        _StageLogic = stageMapRecord._MapStageLogic;
        InitRole();
        _CurWave     = -1;
        _CurOptRound = 0;
        StartNextWave();

        _IsWinBattle = false;

        LogicManager.Instance.EnterFightFinish();
        _AlreadyReviveTypes = new List <int>();
    }
示例#9
0
    public void CreateStage()
    {
        GameObject obj = new GameObject();

        obj.transform.parent = null;
        obj.name             = "Stage";
        Stage = obj.AddComponent <StageLogic> ();

        CreateLeft(xlenth, ylenth, 1);
        CreateRight(xlenth, ylenth, 1);
        CreateTop(xlenth, ylenth, 1);
        CreateBottom(xlenth, ylenth, 1);
        CreateBackGround(xlenth, ylenth, 1, GetBGSpriteName(), Stage.transform);
        Stage.dynamicRoot = CreateDynamicRoot();
        Stage.staticRoot  = CreateStaticRoot();
        Stage.OpenAllDoor();
        Stage.xLength = xlenth;
        Stage.yLength = ylenth;
        Stage.rato    = rato;
    }
示例#10
0
    public static StageLogic RandomMonstersV2(string stageID, List <ELEMENT_TYPE> skillElement, List <ELEMENT_TYPE> monsterEle)
    {
        StageLogic stageLogic = new StageLogic();

        stageLogic._Waves = new List <WaveInfo>();

        int    stageIdInt  = int.Parse(stageID);
        string stageBaseID = (stageIdInt + 1000).ToString();

        int monsterCnt = GameRandom.GetRandomLevel(2, 4, 10, 15, 37, 15, 10, 4, 3) + 1;

        if (stageIdInt == 1)
        {
            monsterCnt = 3;
        }
        else if (stageIdInt < 6)
        {
            monsterCnt = GameRandom.GetRandomLevel(0, 0, 30, 30, 40, 0, 0, 0, 0) + 1;
        }
        else if (stageIdInt < 20)
        {
            monsterCnt = GameRandom.GetRandomLevel(0, 5, 15, 20, 30, 15, 10, 5, 0) + 1;
        }
        List <int> waves = GetRandomIndependValue(monsterCnt, 3, 3, 1);

        for (int i = 0; i < waves.Count; ++i)
        {
            WaveInfo waveInfo = new WaveInfo();
            stageLogic._Waves.Add(waveInfo);
            waveInfo.NPCs = new List <string>();

            int atkTotal = 12;
            for (int j = 0; j < waves[i]; ++j)
            {
                MonsterInfo monster = new MonsterInfo();
                monster.ID = stageBaseID + i + j;
                int isBoxSkill = Random.Range(0, 10000);
                if (skillElement.Count > 0 && stageIdInt >= MAX_LEVEL * 0.1f && isBoxSkill < 3333)
                {
                    int randomEleIdx = Random.Range(0, skillElement.Count);
                    monster.Element = skillElement[randomEleIdx];
                    monster.ExSkill = GetRandomBoxSkill(stageIdInt, BattleField.ElementTypeToTrapType(monster.Element), monster.ID);
                }
                else
                {
                    int randomEleIdx = Random.Range(0, skillElement.Count + monsterEle.Count);
                    if (randomEleIdx > skillElement.Count - 1)
                    {
                        monster.Element = monsterEle[randomEleIdx - skillElement.Count];
                    }
                    else
                    {
                        monster.Element = skillElement[randomEleIdx];
                    }
                }
                monster.AttackSkill = "";

                int atkMax = Mathf.Min(atkTotal, 9);
                if (stageIdInt <= 10)
                {
                    atkMax = 5;
                    monster.AttackSkill = Random.Range(4, 10).ToString();
                }
                else if (stageIdInt <= 20)
                {
                    atkMax = 7;
                    monster.AttackSkill = Random.Range(2, 10).ToString();
                }
                monster.AttackRate = Random.Range(1, atkMax);

                if (string.IsNullOrEmpty(monster.AttackSkill))
                {
                    if (monsterCnt > 5 && monster.AttackRate > 5)
                    {
                        monster.AttackSkill = Random.Range(5, 10).ToString();
                    }
                    else if (monsterCnt > 5 && monster.AttackRate < 4)
                    {
                        monster.AttackSkill = Random.Range(2, 10).ToString();
                    }
                    else if (monsterCnt < 5 && monster.AttackRate < 4)
                    {
                        monster.AttackSkill = Random.Range(1, 4).ToString();
                    }
                    else if (monsterCnt < 5 && monster.AttackRate > 5)
                    {
                        monster.AttackSkill = Random.Range(2, 10).ToString();
                    }
                    else if (monster.AttackRate < 4)
                    {
                        monster.AttackSkill = Random.Range(1, 7).ToString();
                    }
                    else if (monster.AttackRate > 5)
                    {
                        monster.AttackSkill = Random.Range(4, 10).ToString();
                    }
                    else
                    {
                        monster.AttackSkill = Random.Range(1, 10).ToString();
                    }
                }

                atkTotal -= monster.AttackRate;
                atkTotal  = Mathf.Max(1, atkTotal);

                int minHPRate = 4;
                int maxHPRate = 10;
                if (monsterCnt == 4)
                {
                    maxHPRate = 8;
                }
                if (monsterCnt == 5)
                {
                    maxHPRate = 7;
                }
                if (monsterCnt == 6)
                {
                    minHPRate = 2;
                    maxHPRate = 6;
                }
                if (monsterCnt == 7)
                {
                    minHPRate = 2;
                    maxHPRate = 5;
                }
                if (monsterCnt == 8)
                {
                    minHPRate = 2;
                    maxHPRate = 5;
                }
                if (monsterCnt >= 9)
                {
                    minHPRate = 1;
                    maxHPRate = 4;
                }
                monster.HpRate = Random.Range(minHPRate, maxHPRate);

                waveInfo.NPCs.Add(monster.ID);
                RandomMonsterList.Add(monster.ID, monster);
            }
        }

        return(stageLogic);
    }
示例#11
0
 public void DeleteStage()
 {
     GameObject.DestroyImmediate(Stage.gameObject);
     Stage = null;
 }
示例#12
0
 public void EnterState(int stageId)
 {
     currentStage = stageList[stageId].stageEntity;
     currentStage.OnEnter();
 }
示例#13
0
 public void UnLoad()
 {
     GameObject.Destroy(stageEntity.gameObject);
     stageEntity = null;
 }