예제 #1
0
    public void CreateShip(CharacterTypeEnum characterType, long shipId, Action callBack)
    {
        CptUtil.RemoveChild(transform);

        GameLevelBean gameLevelData = handler_Game.GetGameLevelData();
        GameBean      gameData      = handler_Game.GetGameData();

        switch (characterType)
        {
        case CharacterTypeEnum.Player:
            manager.GetShipDataById((shipData) =>
            {
                shipData.ship_damage     = gameData.playerForDamage;
                shipData.characterType   = CharacterTypeEnum.Player;
                shipData.intervalForFire = handler_GameData.GetFireCD();
                StartCoroutine(CoroutineForCreateShip(shipData, callBack));
            }, shipId);
            break;

        case CharacterTypeEnum.Enemy:
            manager.GetShipDataById((shipData) =>
            {
                shipData.intervalForFire    = gameLevelData.enemy_fire_interval;
                shipData.characterType      = CharacterTypeEnum.Enemy;
                shipData.limitForFireNumber = gameLevelData.enemy_fire_limit_number;
                StartCoroutine(CoroutineForCreateShip(shipData, callBack));
            }, shipId);
            break;
        }
    }
예제 #2
0
 /// <summary>
 /// 根据等级插入数据
 /// </summary>
 /// <param name="gameLevelData"></param>
 public void InsertDataByLevel(GameLevelBean gameLevelData)
 {
     if (base.BaseDeleteData("level", gameLevelData.level + ""))
     {
         base.BaseInsertData(tableNameForMain, gameLevelData);
     }
 }
예제 #3
0
    protected void SetGoldPileData()
    {
        goldPileData = "";
        for (int i = 0; i < listGoldPile.Length; i++)
        {
            GameObject itemObj = listGoldPile[i];
            if (itemObj == null)
            {
                continue;
            }
            goldPileData += (itemObj.name + ":" + itemObj.transform.position.x + "," + itemObj.transform.position.y + "," + itemObj.transform.position.z + "|");
            DestroyImmediate(itemObj);
        }
        if (CheckUtil.StringIsNull(goldPileData))
        {
            return;
        }
        List <GameLevelBean> listData = gameLevelService.QueryDataByLevel(levelForGame);

        if (!CheckUtil.ListIsNull(listData))
        {
            GameLevelBean gameLevelData = listData[0];
            gameLevelData.gold_pile = goldPileData;
            gameLevelService.InsertDataByLevel(gameLevelData);
        }
    }
예제 #4
0
 public void GetGameLevelDataSuccess(GameLevelBean gameLevelData, Action <GameLevelBean> action)
 {
     this.gameLevelData = gameLevelData;
     if (callBack != null)
     {
         callBack.GetGameLevelDataSuccess(gameLevelData, action);
     }
 }
예제 #5
0
    public void ChangeGameStatus(GameStatusEnum gameStatus)
    {
        GetGameData().gameStatus = gameStatus;
        switch (gameStatus)
        {
        case GameStatusEnum.GamePre:
            //扫描地形
            //AstarPath.active.ScanAsync();
            //初始化数据
            handler_GameData.GetPlayerInitData(out float playerSpeed, out int playerLife);
            GameBean gameData = new GameBean(playerSpeed, playerLife);
            SetGameData(gameData);
            manager_UI.RefreshAllUI();
            //打开UI
            manager_UI.OpenUIAndCloseOther <UIGameStart>(UIEnum.GameStart);
            //创建金币
            GameLevelBean gameLevelData = GetGameLevelData();
            handler_Gold.CreateGold(gameLevelData.gold_pile, gameLevelData.gold_number, gameLevelData.gold_id);
            break;

        case GameStatusEnum.GameIng:
            //开启角色创建
            UserDataBean      userData            = handler_GameData.GetUserData();
            CharacterDataBean playerCharacterData = new CharacterDataBean(CharacterTypeEnum.Player)
            {
                life      = userData.life + GetGameData().playerForLife,
                maxLife   = userData.life + GetGameData().playerForLife,
                moveSpeed = userData.speed + GetGameData().GetPlayerSpeed()
            };
            CharacterDataBean enemyCharacterData = new CharacterDataBean(CharacterTypeEnum.Enemy)
            {
                life      = GetGameLevelData().enemy_life,
                maxLife   = GetGameLevelData().enemy_life,
                moveSpeed = GetGameLevelData().enemy_speed
            };
            StartCoroutine(handler_Character.InitCreateCharacter(playerCharacterData, enemyCharacterData, GetGameLevelData().enemy_number));
            //创建船
            Action enemyShipCallBack = () =>
            {
                //开启敌舰自动攻击
                handler_Ship.OpenShipFireAutoForEnemy();
            };
            handler_Ship.CreateShip(CharacterTypeEnum.Player, 1, null);
            handler_Ship.CreateShip(CharacterTypeEnum.Enemy, GetGameLevelData().enemy_ship_id, enemyShipCallBack);
            //开启经验计算
            StartCoroutine(CoroutineForLevelProgress());
            break;

        case GameStatusEnum.GameEnd:
            //打开UI
            manager_UI.OpenUIAndCloseOther <UIGameEnd>(UIEnum.GameEnd);
            CleanGameData();
            break;
        }
    }
예제 #6
0
    public IEnumerator CoroutineForEnemySpeedChange()
    {
        isBuildEnemy = true;
        GameLevelBean gameLevelData = handler_Game.GetGameLevelData();

        while (isBuildEnemy)
        {
            yield return(new WaitForSeconds(gameLevelData.enemy_speed_interval));

            AddCharacterSpeed(CharacterTypeEnum.Enemy, gameLevelData.enemy_speed_incremental);
        }
    }
    public void GetGameLevelDataByLevel(int level, Action <GameLevelBean> action)
    {
        GameLevelBean gameLevelData = GetModel().GetGameLevelDataByLevel(level);

        if (gameLevelData == null)
        {
            GetView().GetGameLevelDataFail("没有数据");
        }
        else
        {
            GetView().GetGameLevelDataSuccess(gameLevelData, action);
        }
    }
    public void GetGameLevelDataById(long id, Action <GameLevelBean> action)
    {
        GameLevelBean gameLevelData = GetModel().GetGameLevelDataById(id);

        if (gameLevelData == null)
        {
            GetView().GetGameLevelDataFail("没有数据");
        }
        else
        {
            GetView().GetGameLevelDataSuccess(gameLevelData, action);
        }
    }
예제 #9
0
    public IEnumerator CoroutineForEnemyLifeChange(CharacterDataBean enemyCharacterData)
    {
        isBuildEnemy = true;
        GameLevelBean gameLevelData = handler_Game.GetGameLevelData();

        while (isBuildEnemy)
        {
            yield return(new WaitForSeconds(gameLevelData.enemy_life_interval));

            enemyCharacterData.AddMaxLife(gameLevelData.enemy_life_incremental);
            SetCharacterLife(CharacterTypeEnum.Enemy, enemyCharacterData.maxLife);
        }
    }
예제 #10
0
    public IEnumerator CoroutineForCreateEnmeyCharacter(CharacterDataBean baseCharacterData)
    {
        isBuildEnemy = true;
        GameLevelBean gameLevelData = handler_Game.GetGameLevelData();

        while (isBuildEnemy)
        {
            CharacterDataBean enemyCharacterData = baseCharacterData.Clone();
            CreateCharacter(enemyCharacterData);
            if (gameLevelData.enemy_build_interval <= 0)
            {
                gameLevelData.enemy_build_interval = 1;
            }
            yield return(new WaitForSeconds(gameLevelData.enemy_build_interval));
        }
    }
예제 #11
0
    protected void GetGoldPileData()
    {
        //清空数据
        for (int i = 0; i < listGoldPile.Length; i++)
        {
            GameObject itemObj = listGoldPile[i];
            DestroyImmediate(itemObj);
        }

        List <GameLevelBean> listData = gameLevelService.QueryDataByLevel(levelForGame);

        if (!CheckUtil.ListIsNull(listData))
        {
            GameLevelBean gameLevelData = listData[0];
            string        goldPileData  = gameLevelData.gold_pile;
            if (CheckUtil.StringIsNull(goldPileData))
            {
                return;
            }
            string[] listGoldPileArray = StringUtil.SplitBySubstringForArrayStr(goldPileData, '|');

            sizeForGoldPile = listGoldPileArray.Length;
            listGoldPile    = new GameObject[sizeForGoldPile];

            for (int i = 0; i < listGoldPileArray.Length; i++)
            {
                string   itemGoldPileData = listGoldPileArray[i];
                string[] pileTempData     = StringUtil.SplitBySubstringForArrayStr(itemGoldPileData, ':');
                pileTempData[0] = pileTempData[0].Replace("(Clone)", "");
                GameObject objModel = Resources.Load("GoldPile/" + pileTempData[0]) as GameObject;
                GameObject objItem  = Instantiate(objModel);
                objItem.name = objItem.name.Replace("(Clone)", "");
                objItem.SetActive(true);
                float[] pileDataPosition = StringUtil.SplitBySubstringForArrayFloat(pileTempData[1], ',');
                objItem.transform.position = new Vector3(pileDataPosition[0], pileDataPosition[1], pileDataPosition[2]);
                listGoldPile[i]            = objItem;
            }
            Resources.UnloadUnusedAssets();
        }
    }
예제 #12
0
 public void GetGameLevelDataSuccess(GameLevelBean gameLevelData, Action <GameLevelBean> action)
 {
     action?.Invoke(gameLevelData);
 }