//public static PlayerItem CreateActorItemWithLevel(ICharacter itemData, int level) //{ // if (level <= 0) // level = 1; // //var itemTier = itemData.itemTier; // var sumExp = 0; // var result = new PlayerItem(PlayerItem.ItemType.character); // result.itemType = PlayerItem.ItemType.character; // for (var i = 1; i < level; ++i) // { // //sumExp += itemTier.expTable.Calculate(i + 1, itemTier.maxLevel); // sumExp += Const.NextEXP; // } // result.ItemID = itemData.guid; // //if(!isplayer) // //result.GUID = itemData.; // result.Exp = sumExp; // result.ExtrAttributesData = GetExtraAttributes(type); // return result; //} static CalculationAttributes GetExtraAttributes(Const.StageType type) { switch (type) { case Const.StageType.Normal: return(null); break; case Const.StageType.Tower: return(FormulaUtils.GetTowerExtraAttributes(false)); break; } return(null); }
public BattleItem(IPlayerHasCharacters ihascharacter, Const.StageType type) { this.ihascharacter = ihascharacter; skills = ihascharacter.Character.GetCloneCustomSkills(); isEnemy = false; }
public BattleItem(ICharacter icharacter, int level, Const.StageType type) { this.icharacter = icharacter; skills = icharacter.GetCloneCustomSkills(); isEnemy = true; }
/// <summary> /// StageMasterを検索 /// </summary> public StageMaster FindByStageType(Const.StageType stageType) => Entities.Find(stageMaster => stageMaster.StageType == stageType);
public void DoFinishStage(Const.StageType stagetype, string session, ushort battleResult, int deadCharacters, UnityAction <FinishStageResult> onFinish) { //var cplayer = IPlayer.CurrentPlayer; //var playerId = cplayer.guid; //var loginToken = cplayer.loginToken; //var result = new FinishStageResult(); //var gameDb = GameInstance.GameDatabase; //var player = GameInstance.dbLogin.GetPlayerByLoginToken(playerId, loginToken); //var battle = GetPlayerBattleBySession(playerId, session); //if (player == null) // result.error = GameServiceErrorCode.INVALID_LOGIN_TOKEN; //else if (battle == null) // result.error = GameServiceErrorCode.INVALID_BATTLE_SESSION; //else //{ // var rating = 0; // battle.BattleResult = battleResult; // if (battleResult == BATTLE_RESULT_WIN) // { // rating = 3 - deadCharacters; // if (rating <= 0) // rating = 1; // } // battle.Rating = rating; // result.rating = rating; // GameInstance.dbDataUtils.ExecuteNonQuery(@"UPDATE playerBattle SET battleResult=@battleResult, rating=@rating WHERE id=@id", // new SqliteParameter("@battleResult", battle.BattleResult), // new SqliteParameter("@rating", battle.Rating), // new SqliteParameter("@id", battle.Id)); // if (battleResult == BATTLE_RESULT_WIN) // { // BaseStage stage = null; // switch (stagetype) // { // case Const.StageType.Normal: // stage = gameDb.Stages[battle.DataId]; // break; // case Const.StageType.Tower: // stage = gameDb.towerStages[0]; // break; // } // //var stage = gameDb.Stages[battle.GUID]; // var rewardPlayerExp = stage.rewardPlayerExp; // result.rewardPlayerExp = rewardPlayerExp; // // Player exp // player.exp += rewardPlayerExp; // GameInstance.dbDataUtils.ExecuteNonQuery(@"UPDATE player SET exp=@exp WHERE id=@playerId", // new SqliteParameter("@exp", player.exp), // new SqliteParameter("@playerId", playerId)); // result.player = player; // // Character exp // var countFormation = GameInstance.dbDataUtils.ExecuteScalar(@"SELECT COUNT(*) FROM playerFormation WHERE playerId=@playerId AND Guid=@Guid", // new SqliteParameter("@playerId", playerId), // new SqliteParameter("@Guid", player.selectedFormation)); // if (countFormation != null && (long)countFormation > 0) // { // var devivedExp = (int)(stage.rewardCharacterExp / (long)countFormation); // result.rewardCharacterExp = devivedExp; // var formations = GameInstance.dbDataUtils.ExecuteReader(@"SELECT itemId FROM playerFormation WHERE playerId=@playerId AND Guid=@Guid", // new SqliteParameter("@playerId", playerId), // new SqliteParameter("@Guid", player.selectedFormation)); // while (formations.Read()) // { // var itemId = formations.GetString(0); // var character = GameInstance.dbPlayerData.GetPlayerCharacterItemById(itemId); // if (character != null) // { // character.Exp += devivedExp; // GameInstance.dbDataUtils.ExecuteNonQuery(@"UPDATE playerHasCharacters SET exp=@exp WHERE Guid=@Guid", // new SqliteParameter("@exp", character.Exp), // new SqliteParameter("@Guid", character.GUID)); // result.updateItems.Add(character); // } // } // } // // Soft currency // var softCurrency = GameInstance.dbPlayerData.GetCurrency(playerId, gameDb.softCurrency.id); // var rewardSoftCurrency = Random.Range(stage.randomSoftCurrencyMinAmount, stage.randomSoftCurrencyMaxAmount); // result.rewardSoftCurrency = rewardSoftCurrency; // softCurrency.amount += rewardSoftCurrency; // GameInstance.dbDataUtils.ExecuteNonQuery(@"UPDATE playerCurrency SET amount=@amount WHERE id=@id", // new SqliteParameter("@amount", softCurrency.amount), // new SqliteParameter("@id", softCurrency.id)); // result.updateCurrencies.Add(softCurrency); // // Items // for (var i = 0; i < stage.rewardItems.Length; ++i) // { // var rewardItem = stage.rewardItems[i]; // if (rewardItem == null || rewardItem.item == null || Random.value > rewardItem.randomRate) // continue; // var createItems = new List<PlayerItem>(); // var updateItems = new List<PlayerItem>(); //todo 战斗胜利后的结算 //if (AddItems(player.characterGuid, rewardItem.characterGuid, rewardItem.amount, out createItems, out updateItems)) //{ // foreach (var createEntry in createItems) // { // createEntry.characterGuid = System.Guid.NewGuid().ToString(); // ExecuteNonQuery(@"INSERT INTO playerItem (id, playerId, Guid, amount, exp, equipItemGuid, equipPosition) VALUES (@id, @playerId, @Guid, @amount, @exp, @equipItemId, @equipPosition)", // new SqliteParameter("@id", createEntry.characterGuid), // new SqliteParameter("@playerId", createEntry.PlayerId), // new SqliteParameter("@Guid", createEntry.GUID), // new SqliteParameter("@amount", createEntry.Amount), // new SqliteParameter("@exp", createEntry.Exp), // new SqliteParameter("@equipItemGuid", createEntry.equipItemId), // new SqliteParameter("@equipPosition", createEntry.EquipPosition)); // result.rewardItems.Add(createEntry); // result.createItems.Add(createEntry); // HelperUnlockItem(player.characterGuid, rewardItem.characterGuid); // } // foreach (var updateEntry in updateItems) // { // ExecuteNonQuery(@"UPDATE playerItem SET playerId=@playerId, Guid=@Guid, amount=@amount, exp=@exp, equipItemGuid=@equipItemGuid, equipPosition=@equipPosition WHERE id=@id", // new SqliteParameter("@playerId", updateEntry.PlayerId), // new SqliteParameter("@Guid", updateEntry.GUID), // new SqliteParameter("@amount", updateEntry.Amount), // new SqliteParameter("@exp", updateEntry.Exp), // new SqliteParameter("@equipItemGuid", updateEntry.equipItemGuid), // new SqliteParameter("@equipPosition", updateEntry.EquipPosition), // new SqliteParameter("@id", updateEntry.characterGuid)); // result.rewardItems.Add(updateEntry); // result.updateItems.Add(updateEntry); // } //} // End add item condition // } // // End reward items loop // var clearedStage = HelperClearStage(playerId, stage.Id, rating); // result.clearStage = clearedStage; //} //} //onFinish(result); }
public static PlayerItemTemp CreateActorItemWithLevel(ICharacter itemData, int level, Const.StageType type, bool isplayer) { if (level <= 0) { level = 1; } //var itemTier = itemData.itemTier; var sumExp = 0; var result = new PlayerItemTemp(ItemType.character); result.itemType = ItemType.character; for (var i = 1; i < level; ++i) { //sumExp += itemTier.expTable.Calculate(i + 1, itemTier.maxLevel); sumExp += Const.NextEXP; } result.ItemID = itemData.guid; //if(!isplayer) //result.GUID = itemData.; result.Exp = sumExp; result.ExtrAttributesData = GetExtraAttributes(type); return(result); }