Exemple #1
0
        //行データを作成する
        List <UguiNovelTextLine> CreateLineList(List <UguiNovelTextCharacter> characterDataList, float maxHeight)
        {
            //行データの作成&Y位置の調整
            List <UguiNovelTextLine> lineList = new List <UguiNovelTextLine>();

            //行データを作成
            UguiNovelTextLine currentLine = new UguiNovelTextLine();

            foreach (UguiNovelTextCharacter character in characterDataList)
            {
                currentLine.AddCharaData(character);
                //改行処理
                if (character.IsBrOrAutoBr)
                {
                    currentLine.EndCharaData(Generator);
                    lineList.Add(currentLine);
                    //次の行を追加
                    currentLine = new UguiNovelTextLine();
                }
            }
            if (currentLine.Characters.Count > 0)
            {
                currentLine.EndCharaData(Generator);
                lineList.Add(currentLine);
            }

            if (lineList.Count <= 0)
            {
                return(lineList);
            }

            float y = 0;

            //行間
            for (int i = 0; i < lineList.Count; ++i)
            {
                UguiNovelTextLine line = lineList[i];
                float             y0   = y;
                y -= line.MaxFontSize;
                //縦幅のチェック
                line.IsOver = IsOverMaxHeight(-y, maxHeight);
                //表示する幅を取得
                if (!line.IsOver)
                {
                    this.Height = -y;
                }
                this.PreferredHeight = -y;
                //Y座標を設定
                line.SetLineY(y, Generator);
                //行間を更新
                y = y0 - line.TotalHeight;
            }
            return(lineList);
        }
		//行データを作成する
		List<UguiNovelTextLine> CreateLineList(List<UguiNovelTextCharacter> characterDataList)
		{
			//行データの作成&Y位置の調整
			List<UguiNovelTextLine> lineList = new List<UguiNovelTextLine>();

			//行データを作成
			UguiNovelTextLine currentLine = new UguiNovelTextLine();
			foreach (UguiNovelTextCharacter character in characterDataList)
			{
				currentLine.AddCharaData(character);
				//改行処理
				if (character.IsBrOrAutoBr)
				{
					currentLine.EndCharaData(this);
					lineList.Add(currentLine);
					//次の行を追加
					currentLine = new UguiNovelTextLine();
				}
			}
			if (currentLine.Characters.Count > 0)
			{
				currentLine.EndCharaData(this);
				lineList.Add(currentLine);
			}

			if (lineList.Count <= 0) return lineList;

			float y = 0;
			//行間
			for(int i = 0; i < lineList.Count; ++i)
			{
				UguiNovelTextLine line = lineList[i];
				float y0 = y;
				y -= line.MaxFontSize;
				//縦幅のチェック
				line.IsOver = IsOverMaxHeight(-y);
				//表示する幅を取得
				if (!line.IsOver)
				{
					this.height = -y;
				}
				//Y座標を設定
				line.SetLineY(y, this);
				//行間を更新
				y = y0 - line.TotalHeight;
			}
			return lineList;
		}