Ejemplo n.º 1
0
    //messageListを整理します
    private void RearrangeMessageList()
    {
        int startIndexToRemove;

        //削除を始める場所
        startIndexToRemove = -1;

        //最後にactivatedがfalseになっている場所を検索
        for (int i = 0; i < messageList.Count; i++)
        {
            ParamPrivate paramPrivate = messageList[i].paramPrivate;
            //Debug.Log(string.Format("[HUD_MessageManager] ID{0}.activated: {1}", i, paramPrivate.activated));
            //Debug.Log(paramPrivate.text);

            if (paramPrivate.activated)
            {
                startIndexToRemove = i + 1;
            }
            else
            {
                startIndexToRemove = i;
            }
        }

        if (startIndexToRemove >= 0)
        {
            messageList.RemoveRange(startIndexToRemove, messageList.Count - startIndexToRemove);
        }

        //現在使用している格納数に2つの余裕を持たせるように容量を確保
        messageList.Capacity = messageList.Count + 2;

        //Debug.Log(messageList.Count);
    }
Ejemplo n.º 2
0
    //
    //関数:
    //  説明:
    //      messageを設定する
    //
    /// <summary>
    /// messageを設定する
    /// </summary>
    /// <param name="text"></param>
    /// <param name="type"></param>
    /// <param name="mode"></param>
    /// <param name="messageParam"></param>
    /// <returns></returns>
    public int Set(string text, MESSAGE_TYPE type, MESSAGE_MODE mode, Param messageParam)
    {
        int          i;
        ParamPrivate paramPrivate;

        paramPrivate = new ParamPrivate();

        paramPrivate.activated        = true;
        paramPrivate.isPlaying        = false;
        paramPrivate.messageState     = MESSAGE_STATE.READY;
        paramPrivate.text             = text;
        paramPrivate.messageStartTime = 0.0f;
        paramPrivate.messageMode      = mode;
        paramPrivate.messageType      = type;
        paramPrivate.transparency     = 0.0f;

        if (messageList.Count == 0)
        {
            return(CreateMessageElement(0, paramPrivate, (Param)messageParam.Clone()));
        }
        for (i = 0; i < messageList.Count; i++)
        {
            if (!messageList[i].paramPrivate.activated)
            {
                break;
            }
        }

        return(CreateMessageElement(i, paramPrivate, (Param)messageParam.Clone()));
    }
Ejemplo n.º 3
0
    //関数: private int CreateMessageElement(int index, ParamPrivate paramPrivate, Param param)
    //  説明:
    //      messageList内の指定された場所にmessageElementを作成します
    private int CreateMessageElement(int index, ParamPrivate paramPrivate, Param param)
    {
        //格納数が足らないとき新たに格納場所を追加
        if (messageList.Count < index + 1)
        {
            messageList.Add(new MessageListElement());
        }

        //メッセージ変数を代入
        messageList[index].paramPrivate = paramPrivate;
        messageList[index].param        = param;

        return(index);
    }
Ejemplo n.º 4
0
    //
    //関数: Exit
    //  説明:
    //      messageを終了する
    //
    /// <summary>
    /// Messageを終了する
    /// </summary>
    /// <param name="id"></param>
    public void Exit(int id)
    {
        if (!CheckID(id))
        {
            return;
        }

        ParamPrivate paramPrivate = messageList[id].paramPrivate;

        if (paramPrivate.isPlaying)
        {
            paramPrivate.messageState = MESSAGE_STATE.TO_END;
        }
    }
Ejemplo n.º 5
0
    public void ShowDontOverride(int id)
    {
        if (!CheckID(id))
        {
            return;
        }

        ParamPrivate paramPrivate = messageList[id].paramPrivate;

        if (!paramPrivate.isPlaying)
        {
            Show(id);
        }
    }
Ejemplo n.º 6
0
    //
    //関数: Show, ShowDontOverride, ShowAlert, ShowAlertDontOverride
    //  説明:
    //      messageを開始する
    //
    /// <summary>
    /// Messageを表示する
    /// </summary>
    /// <param name="id"></param>
    public void Show(int id)
    {
        if (!CheckID(id))
        {
            return;
        }

        ParamPrivate paramPrivate = messageList[id].paramPrivate;

        paramPrivate.isPlaying        = true;
        paramPrivate.messageStartTime = Time.unscaledTime;
        paramPrivate.messageState     = MESSAGE_STATE.START;
        paramPrivate.transparency     = 0.0f;

        return;
    }
Ejemplo n.º 7
0
    //関数: private WriteMessage()
    //  説明:
    //      メッセージの描画処理を行います
    //      コンポーネント"Text"内のメンバー変数"Text"に文字列を格納します
    private void WriteMessage()
    {
        bool textBoxSwitch = false;

        string centerText      = "";
        string textBoxText     = "";
        string topText         = "";
        string bottomText      = "";
        string topLeftText     = "";
        string bottomRightText = "";

        //各メッセージを処理
        for (int i = 0; i < messageList.Count; i++)
        {
            string text = "";

            ParamPrivate paramPrivate = messageList[i].paramPrivate;
            Param        param        = messageList[i].param;

            //メッセージ内容代入
            if (paramPrivate.activated)
            {
                if (messageList[i].paramPrivate.isPlaying)
                {
                    int transparencyInt = (int)paramPrivate.transparency;
                    text += "<color=#" + param.color + "{a}" + ">";
                    text += paramPrivate.text;
                    text += "</color>\n";
                    text  = text.Replace("{a}", transparencyInt.ToString("X2"));

                    if (paramPrivate.messageType == MESSAGE_TYPE.BOX)
                    {
                        textBoxSwitch = true;
                    }
                }
            }

            //各描画位置へメッセージを代入
            switch (paramPrivate.messageType)
            {
            case MESSAGE_TYPE.CENTER:
                centerText += text;
                break;

            case MESSAGE_TYPE.BOX:
                textBoxText += text;
                break;

            case MESSAGE_TYPE.TOP:
                topText += text;
                break;

            case MESSAGE_TYPE.BOTTOM:
                bottomText += text;
                break;

            case MESSAGE_TYPE.TOP_LEFT:
                topLeftText += text;
                break;

            case MESSAGE_TYPE.BOTTOM_RIGHT:
                bottomRightText += text;
                break;
            }
        }

        //テキストボックス表示,非表示設定
        if (textBoxSwitch ^ textBoxObj.activeSelf)
        {
            textBoxObj.SetActive(textBoxSwitch);
        }

        //コンポーネント"Text"に文字列を格納
        centerTextText.text      = centerText;
        textBoxTextText.text     = textBoxText;
        topTextText.text         = topText;
        bottomTextText.text      = bottomText;
        topLeftTextText.text     = topLeftText;
        bottomRightTextText.text = bottomRightText;
    }