Пример #1
0
    private IEnumerator LevelUp(CharacterData characterData)
    {
        List <string> ms     = new List <string>();
        Status        growth = characterData.playerData.GrowthRate;

        characterData.lv++;
        characterData.status.maxHp    += growth.maxHp;
        characterData.status.maxMp    += growth.maxMp;
        characterData.status.attack   += growth.attack;
        characterData.status.deffence += growth.deffence;
        characterData.status.speed    += growth.speed;

        System.Text.StringBuilder sb = new System.Text.StringBuilder();
        sb.Append($"{characterData.GetName()}は レベル{characterData.lv}に あがった!");
        sb.Append($"\nさいだいHPが {growth.maxHp}ポイント あがった!");
        sb.Append($"\nさいだいMPが {growth.maxMp}ポイント あがった!");
        ms.Add(sb.ToString());

        sb.Clear();
        sb.Append($"こうげき+{growth.attack}  ぼうぎょ+{growth.deffence}\n");
        sb.Append($"すばやさ+{growth.speed}");
        ms.Add(sb.ToString());

        yield return(BattleMessage.GetWindow().ShowClick(ms));

        //呪文を覚える
        yield return(LearnSpell(characterData));

        //特技を覚える
        yield return(LearnSkill(characterData));

        yield break;
    }
Пример #2
0
    public IEnumerator GameOver()
    {
        BattleController.isBattle = false;
        yield return(StartCoroutine(BattleMessage.GetWindow().ShowClick("まけました")));

        SceneController.Instance.Transition("Title");
        yield break;
    }
    public override IEnumerator Execute()
    {
        //状態異常を解消する
        statusEffect.Refresh();
        battleCharacter.RemoveStatusEffect();
        yield return(BattleMessage.Show(statusEffect.refreshMessage));

        yield break;
    }
Пример #4
0
    public override IEnumerator Execute()
    {
        //死亡処理を行う
        deadCharacter.OnDead();

        yield return(BattleMessage.Show(deadCharacter.CharacterName + "は たおれた!"));

        yield break;
    }
    void SendBattleMessage()
    {
        var bMsg = new BattleMessage();

        bMsg.enemyID    = BattleData.playerName;
        bMsg.playerName = SaveSystem.currentPlayer;

        NetworkManager.Instance.SendBattle(bMsg);
    }
Пример #6
0
    public IEnumerator Do()
    {
        //暗転を解除
        yield return(StartCoroutine(SceneFader.FadeSceneIn()));

        //遭遇メッセージを表示
        yield return(StartCoroutine(BattleMessage.GetWindow().ShowAuto("敵が現れた")));

        yield break;
    }
Пример #7
0
 public override IEnumerator Execute()
 {
     //Hpを減らす
     target.ReceiveDamage(damage);
     //メッセージ表示
     if (message != null)
     {
         yield return(BattleMessage.Show(message));
     }
     yield break;
 }
Пример #8
0
    private IEnumerator LearnSkill(CharacterData characterData)
    {
        var   learnSkills = characterData.playerData.SkillDatas;
        Skill learnSkill  = learnSkills.FirstOrDefault(x => x.lv == characterData.lv)?.skill;

        if (learnSkill == null)
        {
            yield break;
        }
        yield return(BattleMessage.GetWindow().ShowClick($"{characterData.GetName()}は {learnSkill.skillName}の じゅもんを おぼえた!"));

        yield break;
    }
Пример #9
0
    public IEnumerator Do()
    {
        List <PlayerCharacter> aliveMember = PlayerParty.Instance.AliveMember();
        int dropExp = BattleController.instance.GetRewardExp();

        foreach (var alivePlayer in aliveMember)
        {
            alivePlayer.status.exp = dropExp;
            string ms = alivePlayer.CharacterName + "は" + dropExp + "けいけんちをかくとく";
            yield return(StartCoroutine(BattleMessage.GetWindow().ShowClick(ms)));
        }
        yield break;
    }
    public override IEnumerator Execute()
    {
        if (battleCharacter.GetStatusEffect() != null)
        {
            battleCharacter.GetStatusEffect().Refresh();
        }

        //状態異常を付与する
        battleCharacter.AddStatusEffect(statusEffect);
        statusEffect.OnAdd();
        yield return(BattleMessage.Show(statusEffect.addMessage));

        yield break;
    }
Пример #11
0
    private IEnumerator RewardItem()
    {
        Item item = BattleController.instance.GetRewardItem();

        if (item == null)
        {
            yield break;
        }
        InventorySystem.AddItem(item);
        string ms = "たからばこが おちている!\n" + item.itemName + "を てにいれた";

        yield return(BattleMessage.GetWindow().ShowClick(ms));

        yield break;
    }
Пример #12
0
    private void AddBattle(BattleMessage bMsg, int i)
    {
        //Check for duplicate (i.e. leaving player)
        foreach (var player in battleLobby)
        {
            if (player.data.playerName == bMsg.playerName)
            {
                battleLobby.Remove(player);
                Debug.Log("Player Removed!: " + bMsg.playerName);
                return;
            }
        }
        var battle = new Battle();

        battle.data     = bMsg;
        battle.playerID = m_Connections[i].InternalId;
        battleLobby.Add(battle);
    }
Пример #13
0
    public IEnumerator Escape()
    {
        MessageWindow messageWindow = BattleMessage.GetWindow();

        if (IsEscapeSuccess())
        {
            yield return(StartCoroutine(messageWindow.ShowAuto("逃げ切れた")));

            yield return(StartCoroutine(SceneController.Instance.BackToField()));

            yield break;
        }
        else
        {
            yield return(StartCoroutine(messageWindow.ShowAuto("逃げ切れなかった")));
        }

        escape = false;
        yield break;
    }
Пример #14
0
    void SendBattleMessage(PlayerMessage enemy, bool turn, NetworkConnection c)
    {
        Assert.IsTrue(c.IsCreated);

        var bMsg = new BattleMessage();

        bMsg.turn        = turn;
        bMsg.enemyID     = enemy.connectionID;
        bMsg.playerName  = enemy.playerName;
        bMsg.pokemonName = enemy.pokemonName;
        bMsg.hp          = enemy.hp;
        bMsg.Lvl         = enemy.Lvl;

        string             message = JsonUtility.ToJson(bMsg);
        var                writer  = m_Driver.BeginSend(NetworkPipeline.Null, c);
        NativeArray <byte> bytes   = new NativeArray <byte>(Encoding.ASCII.GetBytes(message), Allocator.Temp);

        writer.WriteBytes(bytes);
        m_Driver.EndSend(writer);
    }
Пример #15
0
        private void OnBattleStart(string[] data)
        {
            IsInBattle = true;
            Battle     = new Battle(data, PlayerName);

            _movements.Clear();
            _battleTimeout.Set();

            BattleStarted?.Invoke();

            string[] messages = Battle.Message.Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries);

            foreach (string message in messages)
            {
                if (!Battle.ProcessMessage(Team, message))
                {
                    BattleMessage?.Invoke(message);
                }
            }
        }
Пример #16
0
    public IEnumerator Do()
    {
        //お金を獲得
        int gold = BattleController.instance.GetRewardGold();

        GameController.Money += gold;
        if (gold > 0)
        {
            yield return(StartCoroutine(BattleMessage.GetWindow().ShowClick(gold + "ゴールドを てにいれた!")));
        }

        //経験値の獲得とレベルアップ
        List <PlayerCharacter> aliveMember = BattleController.instance.AlivePlayerCharacters;
        int dropExp = BattleController.instance.GetRewardExp();

        if (dropExp > 0)
        {
            foreach (var alivePlayer in aliveMember)
            {
                CharacterData characterData = Party.Find(alivePlayer.playerData.CharacterID);
                string        ms            = alivePlayer.CharacterName + "は" + dropExp + "けいけんちをかくとく";
                yield return(StartCoroutine(BattleMessage.GetWindow().ShowClick(ms)));

                int lv = characterData.lv;
                yield return(GiveExp(characterData, dropExp));

                if (characterData.lv == lv)
                {
                    continue;
                }
                //レベルが上昇したとき回復する
                alivePlayer.status.hp = characterData.status.maxHp;
                alivePlayer.status.mp = characterData.status.maxMp;
            }
        }

        //アイテムの獲得
        yield return(RewardItem());

        yield break;
    }
Пример #17
0
    void OnData(DataStreamReader stream, int i)
    {
        NativeArray <byte> bytes = new NativeArray <byte>(stream.Length, Allocator.Temp);

        stream.ReadBytes(bytes);
        string        recMsg = Encoding.ASCII.GetString(bytes.ToArray());
        MessageHeader header = JsonUtility.FromJson <MessageHeader>(recMsg);

        switch (header.type)
        {
        case MessageType.PLAYER_MSG:
            PlayerMessage pMsg = JsonUtility.FromJson <PlayerMessage>(recMsg);
            Debug.Log("Player message received!: " + pMsg.playerName);
            UpdateLobby(pMsg, i);
            break;

        case MessageType.HEARTBEAT:
            Debug.Log("Heartbeat received from: " + m_Connections[i].InternalId);
            break;

        case MessageType.BATTLE_MSG:
            BattleMessage bMsg = JsonUtility.FromJson <BattleMessage>(recMsg);
            Debug.Log("Battle started for: " + bMsg.playerName);
            AddBattle(bMsg, i);
            break;

        case MessageType.MOVE_MSG:
            Debug.Log("Move received");
            SendMove(recMsg, i);
            break;

        case MessageType.DISCONNECT:
            Debug.Log("Disconnection Received");
            OnDisconnect(i);
            break;

        default:
            Debug.Log("SERVER ERROR: Unrecognized message received!");
            break;
        }
    }
Пример #18
0
        private void OnBattleData(string[] data)
        {
            _battleTimeout.Set(Rand.Next(5000, 8000));

            string[] messages = data[5].Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries);

            foreach (string message in messages)
            {
                if (!Battle.ProcessMessage(_team, message))
                {
                    BattleMessage?.Invoke(message);
                }
            }

            TeamUpdated?.Invoke();

            if (Battle.IsFinished)
            {
                _sendBattleRefresh = true;
                IsInBattle         = false;
                Battle             = null;
                BattleEnded?.Invoke();
            }
        }
Пример #19
0
 public void SendBattle(BattleMessage battle)
 {
     SendToServer(JsonUtility.ToJson(battle));
 }
Пример #20
0
 private void Start()
 {
     message = BattleMessage.GetWindow();
 }
Пример #21
0
    public override IEnumerator Execute()
    {
        yield return(BattleMessage.Show(message));

        yield break;
    }
Пример #22
0
 private void Awake()
 {
     instance = this;
 }