Files
SSG-Coder/SSG_Coder/Form/MainForm.cs

10856 lines
559 KiB
C#
Raw Permalink Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
using ClosedXML.Excel;
using DevExpress.XtraEditors;
using K3DAsyncEngineLib;
using Microsoft.VisualBasic.FileIO;
using Microsoft.Win32;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System;
using System.Collections.Generic;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Web;
using System.Windows.Forms;
using static System.Environment;
namespace SSG_Coder
{
public partial class MainForm : DevExpress.XtraEditors.XtraForm
{
#region
//Tornado SDK 관련
public KAEngine KAEngine;
public KAScenePlayer KAScenePlayer;
public KAScene KAScene;
public KAEventHandler KAEvent;
string channel = "채널1";
string path1 = CurrentDirectory + @"\Degisn\판매수량\판매수량.t2s";
string path2 = CurrentDirectory + @"\Degisn\경품추첨\경품추첨.t2s";
string path3_1 = CurrentDirectory + @"\Degisn\텍스트\텍스트_1.t2s";
string path3_2 = CurrentDirectory + @"\Degisn\텍스트\텍스트_2.t2s";
string path3_3 = CurrentDirectory + @"\Degisn\텍스트\텍스트_3.t2s";
string path3_4 = CurrentDirectory + @"\Degisn\텍스트\텍스트_4.t2s";
string path3_5 = CurrentDirectory + @"\Degisn\텍스트\텍스트_5.t2s";
string path3_6 = CurrentDirectory + @"\Degisn\텍스트\텍스트_6.t2s";
string path3_7 = CurrentDirectory + @"\Degisn\텍스트\텍스트_7.t2s";
string path3_8 = CurrentDirectory + @"\Degisn\텍스트\텍스트_8.t2s";
string path3_9 = CurrentDirectory + @"\Degisn\텍스트\텍스트_9.t2s";
string path3_10 = CurrentDirectory + @"\Degisn\텍스트\텍스트_10.t2s";
string path3_11 = CurrentDirectory + @"\Degisn\텍스트\텍스트_11.t2s";
string path3_12 = CurrentDirectory + @"\Degisn\텍스트\텍스트_12.t2s";
string path3_13 = CurrentDirectory + @"\Degisn\텍스트\텍스트_13.t2s";
string path3_14 = CurrentDirectory + @"\Degisn\텍스트\텍스트_14.t2s";
string path3_15 = CurrentDirectory + @"\Degisn\텍스트\텍스트_15.t2s";
string path3_16 = CurrentDirectory + @"\Degisn\텍스트\텍스트_16.t2s";
string path3_17 = CurrentDirectory + @"\Degisn\텍스트\텍스트_17.t2s";
string path3_18 = CurrentDirectory + @"\Degisn\텍스트\텍스트_18.t2s";
string path3_19 = CurrentDirectory + @"\Degisn\텍스트\텍스트_19.t2s";
string path3_20 = CurrentDirectory + @"\Degisn\텍스트\텍스트_20.t2s";
string path4 = CurrentDirectory + @"\Degisn\라이브톡\채팅.t2s";
string path4_0 = CurrentDirectory + @"\Degisn\라이브톡\채팅.t2s";
string path4_1 = CurrentDirectory + @"\Degisn\라이브톡\채팅.t2s";
string path4_2 = CurrentDirectory + @"\Degisn\라이브톡\채팅.t2s";
string path4_3 = CurrentDirectory + @"\Degisn\라이브톡\채팅.t2s";
string path4_4 = CurrentDirectory + @"\Degisn\라이브톡\채팅.t2s";
string path4_5 = CurrentDirectory + @"\Degisn\라이브톡\채팅.t2s";
string path5 = CurrentDirectory + @"\Degisn\라이브톡\상품평.t2s";
string path6 = CurrentDirectory + @"\Degisn\라이브톡\QnA.t2s";
string path7 = CurrentDirectory + @"\Degisn\라이브톡\공지.t2s";
string path8 = CurrentDirectory + @"\Degisn\라이브톡\채팅백판.t2s";
string path9 = CurrentDirectory + @"\Degisn\라이브톡\동영상.t2s";
string dbIP = "211.42.188.8";
string port = "60021";
string getURL() { return "http://" + dbIP + ":" + port + "/"; }
#endregion
#region
public MainForm()
{
InitializeComponent();
//SKD 선언
KAEngine = new KAEngine();
KAEvent = new KAEventHandler();
for (int i = 1; i < 12; i++)
{
cmbDisplayTerm.Items.Add((i * 5) + "초 갱신");
}
listViewInitation();
loadSettingData();
 
loadPushName();
cmbPushChoice.SelectedIndex = 0;
cmbPushType.SelectedIndex = 0;
Run_Watcher();
UpdateVideo();
}
private void Run_Watcher()
{
this.m_FolderWatcher = new FileSystemWatcher();
this.m_FolderWatcher.Filter = "*.*";
DirectoryInfo directoryInfo = new DirectoryInfo(Path.GetDirectoryName(path9) + "\\동영상");
if (!directoryInfo.Exists) directoryInfo.Create();
this.m_FolderWatcher.Path = directoryInfo.FullName;
this.m_FolderWatcher.IncludeSubdirectories = true;
this.m_FolderWatcher.NotifyFilter = NotifyFilters.LastWrite | NotifyFilters.FileName | NotifyFilters.DirectoryName;
this.m_FolderWatcher.Changed += new FileSystemEventHandler(Watcher_OnChanged);
this.m_FolderWatcher.Created += new FileSystemEventHandler(Watcher_OnChanged);
this.m_FolderWatcher.Deleted += new FileSystemEventHandler(Watcher_OnChanged);
this.m_FolderWatcher.Renamed += new RenamedEventHandler(Watcher_OnRenamed);
this.m_FolderWatcher.EnableRaisingEvents = true;
}
private void UpdateVideo()
{
//임시
return;
try
{
string saveStr = "";
if (System.IO.Directory.Exists(m_FolderWatcher.Path))
{
System.IO.DirectoryInfo di = new System.IO.DirectoryInfo(m_FolderWatcher.Path);
List<FileInfo> files = new List<FileInfo>();
foreach (var f in di.GetFiles()) if (f.Extension.ToLower().Equals(".vrv")) files.Add(f);
foreach (var item in files)
{
if (saveStr != "") saveStr += "|";
saveStr += item.Name;
}
}
string requestURL = getURL() + "동영상/씬이름/입력?씬이름=" + saveStr;
WebRequest request = WebRequest.Create(requestURL);
request.Method = "GET";
request.ContentType = "application/json; charset=UTF-8;";
using (WebResponse response = request.GetResponse())
using (Stream stream = response.GetResponseStream())
using (StreamReader reader = new StreamReader(stream))
{
//저장 완료
}
}
catch(Exception ex) { }
}
private void Watcher_OnChanged(object sender, FileSystemEventArgs e) {
UpdateVideo();
}
private void Watcher_OnRenamed(object sender, RenamedEventArgs e) {
UpdateVideo();
}
private void MainForm_FormClosing(object sender, FormClosingEventArgs e)
{
if (DialogResult.Yes == MessageBox.Show("SSG 코더 프로그램을 종료합니까?", "프로그램 종료", MessageBoxButtons.YesNo, MessageBoxIcon.Question))
{
if (!(mWorkerThread is null))
{
if (mWorkerThread.IsAlive)
{
mWorkerThread.Abort();
}
}
Dispose(true);
Application.Exit();
}
else
{
e.Cancel = true;
return;
}
}
private void listViewInitation()
{
listView1.OwnerDraw = true;
listView1.DrawColumnHeader += new DrawListViewColumnHeaderEventHandler(lv_DrawColumnHeader);
listView1.DrawSubItem += new DrawListViewSubItemEventHandler(lv_DrawSubItem);
listView1.MultiSelect = false;
listView1.Scrollable = true;
listView1.View = View.Details;
ColumnHeader header = new ColumnHeader();
header.Text = "당첨자를 확인해주세요.";
header.Name = "col1";
listView1.Columns.Add(header);
listView1.AutoResizeColumns(ColumnHeaderAutoResizeStyle.HeaderSize);
}
#endregion
#region Tornado2 ( )
bool isConnected = false;
private Thread mWorkerThread = null;
private bool isDisplay1 = false;
private bool isDisplay2 = false;
private bool isDisplay3 = false;
private bool isDisplay4 = false;
private bool isDisplay5 = false;
private bool isDisplay6 = false;
private bool isDisplay7 = false;
private bool isDisplay8 = false;
private bool isDisplay9 = false;
private bool isDisplay10 = false;
private bool isDisplay11 = false;
private bool isDisplay13 = false;
string strDisp8 = "";
private void buttonConnection_Click(object sender, EventArgs e)
{
if (!isConnected)
{
if (KAEngine == null)
return;
}
isConnected = !isConnected;
if (!isConnected) //연결됨 => 연결 끊김
{
KAEngine.Disconnect();
setConnection(false);
DoChangeAdjust(false, false, false, false, false, false, false, false, false);
timer4.Stop();
timer5.Stop();
}
else //연결 끊김 => 연결됨
{
if (KAEngine == null)
return;
KAEngine.KTAPConnect(1, "127.0.0.1", 30001, 0, KAEvent);
KAScenePlayer = KAEngine.GetScenePlayer();
setConnection(true);
mWorkerThread = new Thread(new ThreadStart(CheckerWorker));
mWorkerThread.Start();
}
seq매진 = "";
}
public void setConnection(bool connect)
{
if (connect)
{
label_connection.Text = "CONNECTED";
label_connection.BackColor = Color.Green;
lblExtraDisplay.Text = "외부제어 송출 ON";
lblExtraDisplay.BackColor = Color.Green;
btnConnection.Text = "Disconnection";
}
else
{
label_connection.Text = "DISCONNECTED";
label_connection.BackColor = Color.DarkRed;
lblExtraDisplay.Text = "외부제어 송출 OFF";
lblExtraDisplay.BackColor = Color.DarkRed;
btnConnection.Text = "Connection";
}
}
int for매진콜 = 1;
public void CheckerWorker()
{
while (isConnected)
{
try
{
//서버에서 정보를 읽어온다.
string requestURL = getURL() + channel + "/자막상황/조회?보낸사람=코더";
WebRequest request = WebRequest.Create(requestURL);
request.Method = "GET";
request.ContentType = "application/json; charset=UTF-8;";
//request.ContentType = "charset=UTF-8";
using (WebResponse response = request.GetResponse())
using (Stream stream = response.GetResponseStream())
using (StreamReader reader = new StreamReader(stream))
{
string data = reader.ReadToEnd();
JObject obj = JObject.Parse(data);
string item1 = obj["상품"].ToString();
string item2 = obj["경품"].ToString();
string item3 = obj["텍스트"].ToString();
string item4 = obj["채팅"].ToString();
string item5 = obj["상품평"].ToString();
string item6 = obj["QNA"].ToString();
string item7 = obj["공지"].ToString();
string item8 = obj["채팅판"].ToString();
string item9 = obj["동영상"].ToString();
bool b1 = item1.Equals("N") ? false : true;
bool b2 = item2.Equals("N") ? false : true;
bool b3 = item3.Equals("N") ? false : true;
bool b4 = item4.Equals("N") ? false : true;
bool b5 = item5.Equals("N") ? false : true;
bool b6 = item6.Equals("N") ? false : true;
bool b7 = item7.Equals("N") ? false : true;
bool b8 = item8.Equals("N") ? false : true;
bool b9 = item9.Equals("N") ? false : true;
if (this.InvokeRequired)
{
this.Invoke(new MethodInvoker(delegate ()
{
DoChangeAdjust(b1, b2, b3, b4, b5, b6, b7, b8, b9);
}));
}
else
{
DoChangeAdjust(b1, b2, b3, b4, b5, b6, b7, b8, b9);
}
}
Thread.Sleep(1000);
for매진콜--;
if (for매진콜 < 0 && toggleSwitch주문콜전체.IsOn)
{
for매진콜 = 4;
string mcode = channel == "채널1" ? "TV01" : "TV05";
//string date1 = DateTime.Now.ToString("yyyyMMdd") + "000000";
//string date2 = DateTime.Now.AddDays(1).ToString("yyyyMMdd") + "000000";
//string date1 = DateTime.Now.AddHours(-6).ToString("yyyyMMddHHmmss");
//string date2 = DateTime.Now.AddHours(6).ToString("yyyyMMddHHmmss");
double = Convert.ToDouble(textEdit1.Text);
= DateTime.Now.AddHours(-);
//기존조회시간 = DateTime.Now;
string date1 = .AddHours(-6).ToString("yyyyMMddHHmmss");
string date2 = .AddHours(6).ToString("yyyyMMddHHmmss");
//string date1 = 기존조회시간.AddHours(-6).ToString("yyyyMMddHHmmss");
//string date2 = 기존조회시간.AddHours(6).ToString("yyyyMMddHHmmss");
string urlAddOn = "&confirmYn=1";
//urlAddOn += "&livetalkYn=1";
requestURL = getURL() + "방송용/새데이터조회/방송편성?보낸사람=web&mediaCode=" + mcode + "&broadStartFromDate=" + date1 + "&broadStartToDate=" + date2 + urlAddOn;
request = WebRequest.Create(requestURL);
request.Method = "GET";
request.ContentType = "application/json; charset=UTF-8;";
//request.ContentType = "charset=UTF-8";
using (WebResponse response = request.GetResponse())
using (Stream stream = response.GetResponseStream())
using (StreamReader reader = new StreamReader(stream))
{
string data = reader.ReadToEnd();
JObject obj = JObject.Parse(data);
DateTime = Convert.ToDateTime(obj["조회시간"].ToString());
= .AddHours(-); //임시
foreach (var v in (JArray)obj["scheduleChart"])
{
DateTime start = Convert.ToDateTime(v["startTime"].ToString());
DateTime end = Convert.ToDateTime(v["endTime"].ToString());
if ( > start && < end)
{
if (v["seqGFrameNo"] != null)
{
string seqGFrameNo = v["seqGFrameNo"].ToString();
string programName = v["programName"].ToString();
tapeTime = Convert.ToInt32(v["tapeTime"].ToString());
int duration = Convert.ToInt32(v["duration"].ToString());
if (this.InvokeRequired)
{
this.Invoke(new MethodInvoker(delegate ()
{
set마진콜(start, end, seqGFrameNo, programName, , duration);
}));
}
else
{
set마진콜(start, end, seqGFrameNo, programName, , duration);
}
}
}
}
}
}
}
catch (Exception ex)
{
Console.WriteLine("Err : " + ex.Message); ;
}
}
}
DateTime = DateTime.Now;
public class C
{
public bool = false;
public bool = false;
public bool = false;
public bool = false;
public bool = false;
public bool 2 = false;
public bool = false;
public bool = false;
public bool VVIP송출 = false;
public bool VVIP전면송출 = false;
public bool = false;
public DateTime = DateTime.Now - TimeSpan.FromDays(1);
public DateTime VVIP송출시각 = DateTime.Now - TimeSpan.FromDays(1);
public DateTime VVIP전면송출시각 = DateTime.Now - TimeSpan.FromDays(1);
public List<C> = new List<C>();
public List<C> = new List<C>();
}
public class C
{
public int = -1;
public string = "";
public string = "";
public string = "";
public bool = false;
public bool = false;
public List<C> = new List<C>();
}
public class C
{
public string = "";
public string = "";
public bool = false;
public bool = false;
public bool = false;
public string = "0";
public string = "0";
public string = "";
public DateTime = DateTime.Now;
public DateTime = DateTime.Now;
public bool = false;
public bool = false;
public bool = false;
}
public class C
{
private string _카드사 = "";
public string
{
get
{
string rtn = _카드사;
if (rtn.Length > 2)
{
rtn = rtn.Substring(0, 2).Replace("국민","KB") + Environment.NewLine + rtn.Substring(2);
}
if (_카드사.Equals("우리독자카드"))
{
rtn = rtn.Substring(0, 2) + Environment.NewLine + "카드";
}
return rtn;
}
set { _카드사 = value; }
}
public string = "";
private string _기준적용금액 = "";
public string
{
get {
string rtn = _기준적용금액;
try
{
rtn = (Convert.ToInt32(rtn) / 10000).ToString();
}
catch(Exception ex) { }
return rtn + "만원 이상 실 결제시, 1인 1일";
}
set { _기준적용금액 = value; }
}
public string _최대할인금액 = "";
public string
{
get
{
string rtn = _최대할인금액;
try
{
rtn = (Convert.ToInt32(rtn) / 10000).ToString();
}
catch (Exception ex) { }
return "최대 할인 금액 "+ rtn + "만원 법인";
}
set
{
_최대할인금액 = value;
}
}
}
C = new C();
string seq매진 = "";
bool CheckYN(object obj)
{
return obj.ToString().Equals("Y");
}
int tapeTime = 1200;
bool isRestTime = false;
public sealed class AbsoluteWindow
{
public DateTime StartLocal { get; }
public DateTime EndLocal { get; } // [StartLocal, EndLocal) 관례 (끝 미포함)
public AbsoluteWindow(DateTime startLocal, DateTime endLocal)
{
if (endLocal <= startLocal) throw new ArgumentException("End must be > Start");
StartLocal = startLocal;
EndLocal = endLocal;
}
public bool Contains(DateTime tLocal) =>
tLocal >= StartLocal && tLocal < EndLocal;
}
private static bool TryParseExtendedTime(string text, out TimeSpan span)
{
span = default;
if (!TryParseHMS(text, out int h, out int m, out int s)) return false;
// TimeSpan은 24시간 초과도 표현 가능
try
{
span = new TimeSpan(h, m, s);
return true;
}
catch { return false; }
}
private static bool TryParseHMS(string text, out int h, out int m, out int s)
{
h = m = s = 0;
if (string.IsNullOrWhiteSpace(text)) return false;
var parts = text.Split(':');
if (parts.Length != 3) return false;
return int.TryParse(parts[0], out h)
&& int.TryParse(parts[1], out m)
&& int.TryParse(parts[2], out s)
&& (m >= 0 && m < 60) && (s >= 0 && s < 60);
}
List<AbsoluteWindow> VVIP금지시각 = new List<AbsoluteWindow>();
List<C> = new List<C>();
string = "";
public void set마진콜(DateTime start, DateTime end, string seq, string prm, DateTime , int duration)
{
= ;
bool isFirst = false;
if (seq매진 != seq || ..Count < 1)
{
isRestTime = false;
isFirst = true;
= new C();
seq매진 = seq;
= new List<C>();
= "";
VVIP금지시각 = new List<AbsoluteWindow>();
try
{
DateTime now = DateTime.Now;
string filePath = "VVIP\\" + now.ToString("yyMMdd") + ".csv";
DateTime baseDate = now.Date;
using (FileStream fs = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
using (var sr = new StreamReader(fs, Encoding.UTF8, detectEncodingFromByteOrderMarks: true))
using (var parser = new TextFieldParser(sr))
{
parser.TextFieldType = FieldType.Delimited;
parser.SetDelimiters(","); // CSV 구분자
parser.HasFieldsEnclosedInQuotes = true; // "값,값" 같은 케이스 처리
int rowIndex = 0;
while (!parser.EndOfData)
{
rowIndex++;
string[] fields = parser.ReadFields();
// 빈 줄/열 부족 스킵
if (fields == null || fields.Length < 2) continue;
string startText = fields[0]?.Trim() ?? "";
string endText = fields[1]?.Trim() ?? "";
// 헤더 가능성(예: "시작","종료")은 TryParse에서 걸러짐
if (!TryParseExtendedTime(startText, out var startSpan)) continue;
// 종료시각 계산 (24시 이상 허용)
if (!TryParseHMS(endText, out int h, out int m, out int s)) continue;
DateTime = baseDate.Add(startSpan);
DateTime ;
if (h >= 24)
{
= baseDate.AddDays(1).AddHours(h - 24).AddMinutes(m).AddSeconds(s);
}
else
{
= baseDate.AddHours(h).AddMinutes(m).AddSeconds(s);
}
try
{
VVIP금지시각.Add(new AbsoluteWindow(, ));
}
catch { /* 구간 유효성 오류는 무시 */ }
}
}
}
catch(Exception ex)
{
}
}
lblstartTime.Text = start.ToString();
lblendTime.Text = end.ToString();
lblseqGFrameNo.Text = seq;
lblprogramName.Text = prm;
TimeSpan timeSpanStart = - start;
TimeSpan timeSpan = end - ;
int noStart = Convert.ToInt32(txtNoCGStart.Text);
int noEnd = Convert.ToInt32(txtNoCGEnd.Text);
bool noTimeCheck(int min, bool isSec = false)
{
double = timeSpanStart.TotalSeconds;
double = timeSpan.TotalSeconds;
int sec = isSec ? min : min * 60;
//처음과 끝 검사
if ( < sec) return true;
for (int i = 0; i < 6; i++)
{
var newTapeTime = tapeTime * i;
//1번째 VOD 앞
if ( > newTapeTime)
if ( < newTapeTime + sec) return true;
}
return false;
}
bool noCGTimeCheck()
{
double = timeSpanStart.TotalSeconds;
double = timeSpan.TotalSeconds;
//처음과 끝 검사
if ( < noStart) return true;
if ( < noEnd) return true;
for (int i = 0; i < 6; i++)
{
var newTapeTime = tapeTime * i;
//1번째 VOD 앞
if ( > newTapeTime)
if ( < newTapeTime + noStart) return true;
//1번째 VOD 뒤
if ( > newTapeTime)
if ( < newTapeTime + noEnd) return true;
}
//Console.WriteLine(DateTime.Now.ToString("HHmmss") + " : 매진송출 가능");
return false;
}
if (noCGTimeCheck())
{
//Console.WriteLine(DateTime.Now.ToString("HHmmss") + " : 매진송출 불가능");
if (!isRestTime) KAEngine.UnloadAll();
isRestTime = true;
for매진콜 = 4;
eKSceneEffectType etype = eKSceneEffectType.SCENE_CHANGE_EFFECT_FADE;
KAScene = KAEngine.LoadScene(CurrentDirectory + @"\Degisn\Clear.t2s", "Clear");
KAScene.SetSceneEffectType(1, etype, fadeOutTime);
KAScenePlayer.Prepare(Layer11, KAScene);
KAScenePlayer.Play(Layer11);
if (toggleSwitch매진팁.IsOn)
{
KAScenePlayer.Prepare(Layer12, KAScene);
KAScenePlayer.Play(Layer12);
}
if (toggleSwitch카드프로모션.IsOn)
{
KAScenePlayer.Prepare(Layer13, KAScene);
KAScenePlayer.Play(Layer13);
}
if (toggleSwitch배송정보.IsOn)
{
KAScenePlayer.Prepare(Layer14, KAScene);
KAScenePlayer.Play(Layer14);
}
if (toggleSwitchVVIP.IsOn || toggleSwitchVVIP전면.IsOn)
{
KAScenePlayer.Prepare(Layer15, KAScene);
KAScenePlayer.Play(Layer15);
}
timer4.Stop();
timer5.Stop();
timer6.Stop();
timer7.Stop();
. = false;
.VVIP송출 = false;
.VVIP전면송출 = false;
. = false;
richTextBox1.Text = "미송출 시간이므로 콜 데이터와 매진 데이터를 수신하지 않습니다.";
return;
}
//매진정보 조회try{try
try
{
//http://inf.shinsegaetvshopping.com/broadcast/callScheduleChart?mediaCode=TV05&broadStartFromDate=20240711000000&broadStartToDate=20240712000000
//mediaCode=" + mcode + "&broadStartFromDate=" + date1 + "&broadStartToDate=" + date2 + urlAddOn;
//seq = "1000150039";
string requestURL = getURL() + @"방송용/새데이터조회/매진조회?보낸사람=코더&seqGFrameNo=" + seq;
//+ "&broadStartFromDate=" + start.ToString("yyyyMMddhhmmss") + "&broadStartToDate=" + end.ToString("yyyyMMddhhmmss");
var request = WebRequest.Create(requestURL);
request.Method = "GET";
request.ContentType = "application/json; charset=UTF-8;";
using (WebResponse response = request.GetResponse())
using (Stream stream = response.GetResponseStream())
using (StreamReader reader = new StreamReader(stream))
{
string data = reader.ReadToEnd();
if (data != "" && !data.Contains("조회된 내역이 없습니다"))
{
JObject obj = JObject.Parse(data);
richTextBox1.Text = obj["cgGoodsList"].ToString();
//상품에 남녀가 둘다 있는지 여부를 확인해야 한다.
string allGenderGb = "";
foreach (var v in (JArray)obj["cgGoodsList"])
{
int displayPriority = Convert.ToInt16(v["displayPriority"].ToString());
string mobileGoodsName = v["mobileGoodsName"].ToString().Trim();
bool = CheckYN(v["soldOut"]);
string genderGb = v["genderGb"].ToString();
string deliveryName = v["deliveryName"].ToString();
if (isFirst)
{
C = new C();
. = displayPriority;
. = mobileGoodsName;
. = ;
. = ;
. = genderGb;
. = deliveryName;
..Add();
allGenderGb += genderGb;
}
else
{
if ( == true) ..Find(x => x. == displayPriority). = ;
..Find(x => x. == displayPriority). = deliveryName;
}
foreach (var d in (JArray)v["cgGoodsdtList"])
{
var = ..Find(x => x..Equals(displayPriority));
string goodsdtName = d["goodsdtName"].ToString().Trim();
string goodsdtCode = d["goodsdtCode"].ToString();
bool expectSoldOut = CheckYN(d["expectSoldOut"]);
bool soldOut = CheckYN(d["soldOut"]);
string orderConcent = d["orderConcent"].ToString();
string aggregatedTime = d["aggregatedTime"].ToString().Substring(0,14);
if (isFirst)
{
var = new C();
. = goodsdtCode;
. = goodsdtName;
. = expectSoldOut;
. = expectSoldOut;
. = soldOut;
. = false; // 24.10.14 - 수정
. = orderConcent;
. = orderConcent;
. = aggregatedTime;
. = DateTime.Now;
..Add();
}
else
{
var = ..Find(x => x..Equals(goodsdtCode));
//현재세부상품.세부상품명 = goodsdtName;
. = expectSoldOut;
if (soldOut == true) . = soldOut;
if (. != aggregatedTime)
{
. = (Convert.ToInt32(.) + Convert.ToInt32(orderConcent)).ToString();
. = orderConcent;
. = aggregatedTime;
}
. = DateTime.Now;
}
}
}
//남녀표기 여부를 위한 재 확인 작업
if (isFirst)
{
bool = false;
//남녀가 중복되었는지 여부를 기록해 놓는다
if (allGenderGb.Contains("M") && allGenderGb.Contains("F")) = true;
foreach (var v in (JArray)obj["cgGoodsList"])
{
int displayPriority = Convert.ToInt16(v["displayPriority"].ToString());
var = ..Find(x => x. == displayPriority);
if ()
{
if (..Contains("M")) . = "[남] ";
if (..Contains("F")) . = "[여] ";
}
else . = "";
}
}
if (obj["cgCardPromoList"] != null)
{
richTextBox1.Text += obj["cgCardPromoList"].ToString();
//if (isFirst)
{
. = new List<C>();
foreach (var d in (JArray)obj["cgCardPromoList"])
{
var = new C();
. = d["cardName"].ToString();
. = d["doRate"].ToString();
. = d["appAmt"].ToString();
. = d["limitAmt"].ToString();
..Add();
}
if (..Count > 1)
{
//2개라고 가정하고 카드사 확인 후 할인율을 기준으로 삭제한다.
if (.[0]. == .[1].)
{
if (Convert.ToInt32(.[0].) > Convert.ToInt32(.[1].))
..RemoveAt(1);
else
..RemoveAt(0);
}
}
}
}
}
else
{
richTextBox1.Text = "조회내역이 없습니다..";
}
}
int = 0;
int = 0;
int = 0;
foreach (var in .)
{
foreach (var in .)
{
if (comboBox4.SelectedIndex > )
{
. = true;
++;
}
if (comboBox5.SelectedIndex > )
{
. = true;
++;
}
if (comboBox6.SelectedIndex > )
{
. = true;
++;
}
}
}
//콜 데이터 조회
requestURL = getURL() + "방송용/새데이터조회/콜데이터조회?보낸사람=코더&seqGFrameNo=" + seq;
request = WebRequest.Create(requestURL);
request.Method = "GET";
request.ContentType = "application/json; charset=UTF-8;";
//request.ContentType = "charset=UTF-8";
using (WebResponse response = request.GetResponse())
using (Stream stream = response.GetResponseStream())
using (StreamReader reader = new StreamReader(stream))
{
string data = reader.ReadToEnd();
if (data != "" && !data.Contains("조회된 내역이 없습니다"))
{
JObject obj = JObject.Parse(data);
int inqueue = 0;
int onacd = 0;
foreach (var v in (JArray)obj["broadCallInfo"])
{
inqueue = Convert.ToInt32(v["inqueue"].ToString());
onacd = Convert.ToInt32(v["onacd"].ToString());
}
lblinqueue.Text = inqueue.ToString();
lblonacd.Text = onacd.ToString();
. = inqueue >= Convert.ToInt32(txtonacd.Text);
.2 = inqueue >= Convert.ToInt32(txtonacd2.Text);
. = inqueue > 0;
}
}
}
catch (Exception ex)
{
}
//상품순서 재정리
..Sort((x,y) => x..CompareTo(y.));
for매진콜 = Convert.ToInt32(txtBarSec.Text) + Convert.ToInt32(txtCGSec.Text);
//송출검사파트
if (.) return;
if (..Count > 0 && ..Find(x => x..Equals(false)) == null) . = true;
for매진콜아웃 = Convert.ToInt32(txtBarSec.Text);
timer4.Start();
//카드프로모션
bool isSame(List<C> 1, List<C> 2)
{
if (1.Count != 2.Count) return false;
for (int i = 0; i < 1.Count; i++)
{
if (1[i]. != 2[i].) return false;
if (1[i]. != 2[i].) return false;
if (1[i]. != 2[i].) return false;
if (1[i]. != 2[i].) return false;
if (1[i]._최대할인금액 != 2[i]._최대할인금액) return false;
}
return true;
}
if (..Count > 0 && toggleSwitch카드프로모션.IsOn && duration > 1900)
{
if (!. || !isSame(, .))
{
= .;
if (..Count == 1)
{
KAScene = KAEngine.LoadScene(CurrentDirectory + @"\Degisn\매진콜\카드프로모션1.t2s", "카드프로모션1");
KAScene.GetObject("cardName1").SetValue(.[0].);
KAScene.GetObject("doRate1").SetValue(.[0].);
KAScene.GetObject("appAmt1_1").SetValue(.[0].);
KAScene.GetObject("limitAmt1").SetValue(.[0].);
KAScene.GetObject("appAmt1_2").SetValue(.[0].);
}
else
{
if (.[0]. == .[1]. && .[0]. == .[1]. && .[0]. == .[1].)
{
KAScene = KAEngine.LoadScene(CurrentDirectory + @"\Degisn\매진콜\카드프로모션2.t2s", "카드프로모션2");
string cardText = .[0]..Substring(0, 2) + Environment.NewLine + .[1]..Substring(0, 2);
if (.[0]..Substring(0, 2).Equals(.[1]..Substring(0, 2)))
cardText = .[0]..Substring(0, 2) + Environment.NewLine + "카드";
KAScene.GetObject("cardName1").SetValue(cardText);
KAScene.GetObject("doRate1").SetValue(.[0].);
KAScene.GetObject("appAmt1_1").SetValue(.[0].);
KAScene.GetObject("limitAmt1").SetValue(.[0].);
KAScene.GetObject("appAmt1_2").SetValue(.[0].);
}
else
{
KAScene = KAEngine.LoadScene(CurrentDirectory + @"\Degisn\매진콜\카드프로모션.t2s", "카드프로모션");
KAScene.GetObject("cardName1").SetValue(.[0].);
KAScene.GetObject("doRate1").SetValue(.[0].);
KAScene.GetObject("appAmt1_1").SetValue(.[0].);
KAScene.GetObject("limitAmt1").SetValue(.[0].);
KAScene.GetObject("appAmt1_2").SetValue(.[0].);
KAScene.GetObject("cardName2").SetValue(.[1].);
KAScene.GetObject("doRate2").SetValue(.[1].);
KAScene.GetObject("appAmt2_1").SetValue(.[1].);
KAScene.GetObject("limitAmt2").SetValue(.[1].);
KAScene.GetObject("appAmt2_2").SetValue(.[0].);
}
}
KAScenePlayer.Prepare(Layer13, KAScene);
KAScenePlayer.Play(Layer13);
. = true;
}
}
//배송정보
if (toggleSwitch배송정보.IsOn)
{
if (!noTimeCheck(Convert.ToInt32(txtNoDelivery.Text)))
{
try
{
//배송 정보가 있는지 부터 확인
string = "";
foreach (var in .)
{
if (. == "오늘") = "오늘";
else if (. == "내일") = "내일";
else if (. == "일요") = "일요";
}
if ( != "")
{
if ((DateTime.Now - .).TotalSeconds > Convert.ToInt32(txtDeliveryTerm.Text) * 60 ||
!= ) //송출중인지 확인
{
. = DateTime.Now;
= ;
KAScene = KAEngine.LoadScene(CurrentDirectory + @"\Degisn\매진콜\" + + "도착.t2s", + "도착");
KAScenePlayer.Prepare(Layer14, KAScene);
KAScenePlayer.Play(Layer14);
. = true;
for배송정보아웃 = Convert.ToInt32(txtDeliverySec.Text);
timer6.Start();
}
}
else
{
for배송정보아웃 = 0;
= "";
}
}
catch (Exception ex) { }
}
}
//VVIP
bool VVIP송출가능여부 = true;
foreach(var v in VVIP금지시각)
{
if (v.Contains(DateTime.Now))
{
VVIP송출가능여부 = false;
}
}
//바 VVIP
if (toggleSwitchVVIP.IsOn && VVIP송출가능여부)
{
if (!noTimeCheck(Convert.ToInt32(txtNoVVIP.Text)))
{
if (!.VVIP전면송출 && !.VVIP송출)
{
if ((DateTime.Now - .VVIP송출시각).TotalSeconds > Convert.ToInt32(txtVVIPTerm.Text))
{
try
{
//http://inf.shinsegaetvshopping.com/broadcast/callScheduleChart?mediaCode=TV05&broadStartFromDate=20240711000000&broadStartToDate=20240712000000
string requestURL = getURL() + @"방송용/새데이터조회/방송VVIP?보낸사람=코더&seqGFrameNo=" + seq;
var request = WebRequest.Create(requestURL);
request.Method = "GET";
request.ContentType = "application/json; charset=UTF-8;";
using (WebResponse response = request.GetResponse())
using (Stream stream = response.GetResponseStream())
using (StreamReader reader = new StreamReader(stream))
{
string data = reader.ReadToEnd();
if (data != "" && !data.Contains("조회된 내역이 없습니다"))
{
JObject obj = JObject.Parse(data);
string = obj["salePrice"].ToString();
string = obj["norestAllotMonths"].ToString();
string = obj["bestPrice"].ToString();
string = obj["choiceGoods"].ToString();
string = obj["vvipCoupon"].ToString();
string = obj["vvipMembership"].ToString();
string = obj["vvipMembershipDcAmt"].ToString();
string = obj["cardDcRate"].ToString();
string = obj["payInFullDcAmt"].ToString();
string = obj["arsDcAmt"].ToString();
string = obj["totalDcAmt"].ToString();
string = obj["immediateDcAmt"].ToString();
string = obj["cardDcAmt"].ToString();
string = obj["vvipCouponDcAmt"] == null ? "0" : obj["vvipCouponDcAmt"].ToString();
string tt = "[salePrice]상품판매가 : " + + Environment.NewLine;
tt += "[norestAllotMonths]할부조건 : " + + Environment.NewLine;
tt += "[bestPrice]최종할인가 : " + + Environment.NewLine;
tt += "[choiceGoods]선택사항 : " + + Environment.NewLine;
tt += "[vvipCoupon]할인쿠폰적용여부 : " + + Environment.NewLine;
tt += "[vvipMembership]맴버십할인여부 : " + + Environment.NewLine;
tt += "[vvipMembershipDcAmt]맴버십할인액 : " + + Environment.NewLine;
tt += "[cardDcRate]행사카드할인율 : " + + Environment.NewLine;
tt += "[payInFullDcAmt]일시불할인액 : " + + Environment.NewLine;
tt += "[arsDcAmt]자동주문할인액 : " + + Environment.NewLine;
tt += "[totalDcAmt]총할인액 : " + + Environment.NewLine;
tt += "[immediateDcAmt]즉시할인액 : " + + Environment.NewLine;
tt += "[cardDcAmt]카드할인액 : " + + Environment.NewLine;
tt += "[vvipCouponDcAmt]맴버십쿠폰할인액 : " + + Environment.NewLine;
//richTextBox2.Text = tt;
richTextBox2.Text = obj.ToString();
if ( == "적용" && != "0" && == "5")
{
//VVIP 송출 정보
.VVIP송출시각 = DateTime.Now;
KAScene = KAEngine.LoadScene(CurrentDirectory + @"\Degisn\매진콜\(5프로)vvip바.t2s", "VVIP바");
string (string s)
{
int ii = Convert.ToInt32(s);
return "- " + ii.ToString("#,##0") + "원";
}
int int = Convert.ToInt32();
string Str = int.ToString("#,##0");
int int = Convert.ToInt32();
string Str = int.ToString("#,##0");
KAScene.GetObject("salePrice").SetValue(Str + "원");
KAScene.GetObject("price2").SetValue(Str);
KAScene.GetObject("price1").SetCounterNumberKey(0, int);
KAScene.GetObject("price1").SetCounterNumberKey(1, int);
KAScene.GetObject("price1").SetCounterNumberKey(2, int);
List<KeyValuePair<string, string>> dics = new List<KeyValuePair<string, string>>();
if ( != "0") dics.Add(new KeyValuePair<string, string>("자동주문", ()));
if ( != "0") dics.Add(new KeyValuePair<string, string>("멤버십 쿠폰 6%", ()));
if ( != "0") dics.Add(new KeyValuePair<string, string>("일시불", ()));
if ( != "0") dics.Add(new KeyValuePair<string, string>("맴버십 할인 5%", ()));
if ( != "0") dics.Add(new KeyValuePair<string, string>("행사카드 5%", ()));
dics.Add(new KeyValuePair<string, string>("", ""));
dics.Add(new KeyValuePair<string, string>(" ", " "));
dics.Add(new KeyValuePair<string, string>(" ", " "));
for (int i = 0; i < 5; i++)
{
string key = dics[i].Key;
string value = dics[i].Value;
KAScene.GetObject("sub" + (i + 1)).SetValue(key);
KAScene.GetObject("txt" + (i + 1)).SetValue(value);
}
if ( != "없음")
{
KAScene.GetObject("title").SetValue("(" + + ")");
}
else
{
KAScene.GetObject("title").SetValue("");
}
KAScenePlayer.Prepare(Layer15, KAScene);
KAScenePlayer.Play(Layer15);
.VVIP송출 = true;
forVVIP아웃 = Convert.ToInt32(txtVVIPSec.Text);
timer7.Start();
}
}
}
}
catch (Exception ex)
{
}
}
}
}
}
//전면VVIP
if (toggleSwitchVVIP전면.IsOn && VVIP송출가능여부)
{
if (!noTimeCheck(Convert.ToInt32(txtNoVVIP전면.Text), true))
{
if (!.VVIP전면송출 && !.VVIP송출)
{
if ((DateTime.Now - .VVIP전면송출시각).TotalSeconds > Convert.ToInt32(txtVVIPTerm전면.Text))
{
try
{
//http://inf.shinsegaetvshopping.com/broadcast/callScheduleChart?mediaCode=TV05&broadStartFromDate=20240711000000&broadStartToDate=20240712000000
string requestURL = getURL() + @"방송용/새데이터조회/방송VVIP?보낸사람=코더&seqGFrameNo=" + seq;
var request = WebRequest.Create(requestURL);
request.Method = "GET";
request.ContentType = "application/json; charset=UTF-8;";
using (WebResponse response = request.GetResponse())
using (Stream stream = response.GetResponseStream())
using (StreamReader reader = new StreamReader(stream))
{
string data = reader.ReadToEnd();
if (data != "" && !data.Contains("조회된 내역이 없습니다"))
{
JObject obj = JObject.Parse(data);
string = obj["salePrice"].ToString();
string = obj["norestAllotMonths"].ToString();
string = obj["bestPrice"].ToString();
string = obj["choiceGoods"].ToString();
string = obj["vvipCoupon"].ToString();
string = obj["vvipMembership"].ToString();
string = obj["vvipMembershipDcAmt"].ToString();
string = obj["cardDcRate"].ToString();
string = obj["payInFullDcAmt"].ToString();
string = obj["arsDcAmt"].ToString();
string = obj["totalDcAmt"].ToString();
string = obj["immediateDcAmt"].ToString();
string = obj["cardDcAmt"].ToString();
string = obj["vvipCouponDcAmt"] == null ? "0" : obj["vvipCouponDcAmt"].ToString();
string tt = "[salePrice]상품판매가 : " + + Environment.NewLine;
tt += "[norestAllotMonths]할부조건 : " + + Environment.NewLine;
tt += "[bestPrice]최종할인가 : " + + Environment.NewLine;
tt += "[choiceGoods]선택사항 : " + + Environment.NewLine;
tt += "[vvipCoupon]할인쿠폰적용여부 : " + + Environment.NewLine;
tt += "[vvipMembership]맴버십할인여부 : " + + Environment.NewLine;
tt += "[vvipMembershipDcAmt]맴버십할인액 : " + + Environment.NewLine;
tt += "[cardDcRate]행사카드할인율 : " + + Environment.NewLine;
tt += "[payInFullDcAmt]일시불할인액 : " + + Environment.NewLine;
tt += "[arsDcAmt]자동주문할인액 : " + + Environment.NewLine;
tt += "[totalDcAmt]총할인액 : " + + Environment.NewLine;
tt += "[immediateDcAmt]즉시할인액 : " + + Environment.NewLine;
tt += "[cardDcAmt]카드할인액 : " + + Environment.NewLine;
tt += "[vvipCouponDcAmt]맴버십쿠폰할인액 : " + + Environment.NewLine;
//richTextBox2.Text = tt;
richTextBox2.Text = obj.ToString();
if ( == "적용" && != "0" && == "5")
{
//VVIP 송출 정보
.VVIP전면송출시각 = DateTime.Now;
KAScene = KAEngine.LoadScene(CurrentDirectory + @"\Degisn\매진콜\(5프로)vvip전면.t2s", "VVIP전면");
string (string s)
{
int ii = Convert.ToInt32(s);
return "- " + ii.ToString("#,##0") + "원";
}
int int = Convert.ToInt32();
string Str = int.ToString("#,##0");
int int = Convert.ToInt32();
string Str = int.ToString("#,##0");
KAScene.GetObject("salePrice").SetValue(Str + "원");
KAScene.GetObject("price2").SetValue(Str);
KAScene.GetObject("price1").SetCounterNumberKey(0, int);
KAScene.GetObject("price1").SetCounterNumberKey(1, int);
KAScene.GetObject("price1").SetCounterNumberKey(2, int);
List<KeyValuePair<string, string>> dics = new List<KeyValuePair<string, string>>();
if ( != "0") dics.Add(new KeyValuePair<string, string>("자동주문", ()));
if ( != "0") dics.Add(new KeyValuePair<string, string>("멤버십 쿠폰 6%", ()));
if ( != "0") dics.Add(new KeyValuePair<string, string>("일시불", ()));
if ( != "0") dics.Add(new KeyValuePair<string, string>("맴버십 할인 5%", ()));
if ( != "0") dics.Add(new KeyValuePair<string, string>("행사카드 5%", ()));
dics.Add(new KeyValuePair<string, string>("", ""));
dics.Add(new KeyValuePair<string, string>(" ", " "));
dics.Add(new KeyValuePair<string, string>(" ", " "));
for (int i = 0; i < 5; i++)
{
string key = dics[i].Key;
string value = dics[i].Value;
KAScene.GetObject("sub" + (i + 1)).SetValue(key);
KAScene.GetObject("txt" + (i + 1)).SetValue(value);
}
if ( != "없음")
{
KAScene.GetObject("title").SetValue("(" + +")");
}
else
{
KAScene.GetObject("title").SetValue("");
}
KAScenePlayer.Prepare(Layer15, KAScene);
KAScenePlayer.Play(Layer15);
.VVIP전면송출 = true;
forVVIP전면아웃 = Convert.ToInt32(txtVVIP전면Sec.Text);
timer8.Start();
}
}
}
}
catch (Exception ex)
{
}
}
}
}
}
//전체매진
if (. && toggleSwitch전체매진.IsOn)
{
. = true;
KAScene = KAEngine.LoadScene(CurrentDirectory + @"\Degisn\매진콜\전체매진.t2s", "전체매진");
KAScenePlayer.Prepare(Layer11, KAScene);
KAScenePlayer.Play(Layer11);
timer4.Stop();
return;
}
//매진예상
List<string[]> = new List<string[]>();
foreach(var in .)
{
string = .;
foreach (var in .)
{
//이미 매진이라면 매진예상이 아닌 매진으로 송출한다.
if (!. && . && !.)
{
.Add(new string[] { ..ToString(), . });
break;
}
}
}
if (.Count > 0 && toggleSwitch매진예상.IsOn)
{
List<string> = new List<string>();
var = ..Find(x => x..ToString().Equals([0][0]));
var = ..Find(x => x..Equals([0][1]));
. = true;
if (..Equals("단일상품"))
{
.Add(.);
}
else
{
.Add("<선택" + ..ToString() + ">");
.Add(. + .);
.Add(.);
}
KAScene = KAEngine.LoadScene(CurrentDirectory + @"\Degisn\매진콜\매진예상"+ .Count +"줄.t2s", "매진예상" + .Count);
KAScene.GetObject("txt1").SetValue([0]);
if (.Count > 1) {
KAScene.GetObject("txt2").SetValue([1]);
KAScene.GetObject("txt3").SetValue([2]);
}
KAScenePlayer.Prepare(Layer11, KAScene);
KAScenePlayer.Play(Layer11);
return;
}
//단품매진
List<string[]> = new List<string[]>();
foreach (var in .)
{
string = .;
foreach (var in .)
{
//세부상품.세부매진 = true; //임시
//이미 매진이라면 매진예상이 아닌 매진으로 송출한다.
if (. && !.)
{
.Add(new string[] { ..ToString(), . });
break;
}
}
}
if (.Count > 0 && toggleSwitch매진.IsOn)
{
List<string> = new List<string>();
var = ..Find(x => x..ToString().Equals([0][0]));
var = ..Find(x => x..Equals([0][1]));
. = true;
if (..Equals("단일상품"))
{
.Add(.);
}
else
{
.Add("<선택" + ..ToString() + ">");
.Add(. + .);
.Add(.);
}
KAScene = KAEngine.LoadScene(CurrentDirectory + @"\Degisn\매진콜\단품매진" + .Count + "줄.t2s", "단품매진" + .Count);
KAScene.GetObject("txt1").SetValue([0]);
if (.Count > 1)
{
KAScene.GetObject("txt2").SetValue([1]);
KAScene.GetObject("txt3").SetValue([2]);
}
KAScenePlayer.Prepare(Layer11, KAScene);
KAScenePlayer.Play(Layer11);
for매진팁 = 5 + Convert.ToInt32(txtBarSec.Text);
timer5.Start();
return;
}
//중간 휴지기간 이후 시작 시
if (isRestTime)
{
isRestTime = false;
if (toggleSwitch매진.IsOn)
{
for매진팁 = 5 + Convert.ToInt32(txtBarSec.Text);
timer5.Start();
}
}
//주문집중
if (timeSpanStart.TotalSeconds > Convert.ToInt32(txtNoSellFocus.Text) * 60)
{
try
{
if (..Count == 1 && .[0]..Count == 1)
{
//전체 상품 가짓수가 1개면 주문집중을 보낼 필요는 없다.
}
else
{
if ((.[0].[0]. - .[0].[0].).TotalSeconds > Convert.ToInt32(txtSellFocusTerm.Text) * 60)
{
if (toggleSwitch최소판매표출.IsOn)
{
//가장 적게 팔린 놈을 확인한다
int mostSellCount = 1000000;
foreach (var in .)
{
foreach (var in .)
{
int nowSellCount = Convert.ToInt32(.);
if (nowSellCount < mostSellCount) mostSellCount = nowSellCount;
}
}
//if (mostSellCount != 0)
//가장많이 판매한 숫자와 같으면 송출을 진행한다.
foreach (var in .)
{
foreach (var in .)
{
int nowSellCount = Convert.ToInt32(.);
. = false;
. = "0";
. = false;
//세부상품.주문량기록시간 = "";
. = .;
if (nowSellCount == mostSellCount)
{
. = true;
}
}
}
}
else
{
//가장 많이 팔린 놈을 확인한다
int mostSellCount = 0;
foreach (var in .)
{
foreach (var in .)
{
int nowSellCount = Convert.ToInt32(.);
if (nowSellCount > mostSellCount) mostSellCount = nowSellCount;
}
}
//if (mostSellCount != 0)
//가장많이 판매한 숫자와 같으면 송출을 진행한다.
foreach (var in .)
{
foreach (var in .)
{
int nowSellCount = Convert.ToInt32(.);
. = false;
. = "0";
. = false;
//세부상품.주문량기록시간 = "";
. = .;
if (nowSellCount == mostSellCount)
{
if (mostSellCount != 0) . = true;
}
}
}
}
}
}
}
catch(Exception ex) { }
List<string[]> = new List<string[]>();
foreach (var in .)
{
string = .;
foreach (var in .)
{
//이미 매진이라면 매진예상이 아닌 매진으로 송출한다.
if (!. && . && !.)
{
.Add(new string[] { ..ToString(), . });
break;
}
}
}
if (.Count > 0 && toggleSwitch주문집중.IsOn)
{
List<string> = new List<string>();
var = ..Find(x => x..ToString().Equals([0][0]));
var = ..Find(x => x..Equals([0][1]));
. = true;
if (..Equals("단일상품"))
{
.Add(.);
}
else
{
.Add("<선택" + ..ToString() + ">");
.Add(. + .);
.Add(.);
}
KAScene = KAEngine.LoadScene(CurrentDirectory + @"\Degisn\매진콜\주문집중" + .Count + "줄.t2s", "주문집중" + .Count);
if (toggleSwitch최소판매표출.IsOn) KAScene = KAEngine.LoadScene(CurrentDirectory + @"\Degisn\매진콜\인기" + .Count + "줄.t2s", "인기" + .Count);
KAScene.GetObject("txt1").SetValue([0]);
if (.Count > 1)
{
KAScene.GetObject("txt2").SetValue([1]);
KAScene.GetObject("txt3").SetValue([2]);
}
KAScenePlayer.Prepare(Layer11, KAScene);
KAScenePlayer.Play(Layer11);
return;
}
}
if ((. || .2) && toggleSwitch자동주문.IsOn)
{
if ((DateTime.Now - ).TotalSeconds > Convert.ToInt32(txtCallSec.Text))
{
= DateTime.Now;
. = true;
KAScene = KAEngine.LoadScene(CurrentDirectory + @"\Degisn\매진콜\자동주문1.t2s", "자동주문1");
KAScenePlayer.Prepare(Layer11, KAScene);
KAScenePlayer.Play(Layer11);
return;
}
else if ((DateTime.Now - ).TotalSeconds > Convert.ToInt32(txtCallSec2.Text))
{
= DateTime.Now;
. = true;
KAScene = KAEngine.LoadScene(CurrentDirectory + @"\Degisn\매진콜\자동주문1.t2s", "자동주문1");
KAScenePlayer.Prepare(Layer11, KAScene);
KAScenePlayer.Play(Layer11);
return;
}
}
for매진콜 = 4;
}
DateTime = new DateTime(2022,1,1);
int for매진콜아웃 = 7;
private void timer4_Tick(object sender, EventArgs e)
{
for매진콜아웃--;
if (for매진콜아웃 < 0) {
eKSceneEffectType etype = eKSceneEffectType.SCENE_CHANGE_EFFECT_FADE;
KAScene = KAEngine.LoadScene(CurrentDirectory + @"\Degisn\Clear.t2s", "Clear");
KAScene.SetSceneEffectType(1, etype, fadeOutTime);
KAScenePlayer.Prepare(Layer11, KAScene);
KAScenePlayer.Play(Layer11);
timer4.Stop();
}
}
int for배송정보아웃 = 7;
private void timer6_Tick(object sender, EventArgs e)
{
for배송정보아웃--;
if (for배송정보아웃 < 0)
{
eKSceneEffectType etype = eKSceneEffectType.SCENE_CHANGE_EFFECT_FADE;
KAScene = KAEngine.LoadScene(CurrentDirectory + @"\Degisn\Clear.t2s", "Clear");
KAScene.SetSceneEffectType(1, etype, fadeOutTime);
KAScenePlayer.Prepare(Layer14, KAScene);
KAScenePlayer.Play(Layer14);
. = false;
timer6.Stop();
}
}
int forVVIP아웃 = 7;
int forVVIP전면아웃 = 7;
private void timer7_Tick(object sender, EventArgs e)
{
forVVIP아웃--;
if (forVVIP아웃 < 0)
{
eKSceneEffectType etype = eKSceneEffectType.SCENE_CHANGE_EFFECT_FADE;
KAScene = KAEngine.LoadScene(CurrentDirectory + @"\Degisn\Clear.t2s", "Clear");
KAScene.SetSceneEffectType(1, etype, fadeOutTime);
KAScenePlayer.Prepare(Layer15, KAScene);
KAScenePlayer.Play(Layer15);
.VVIP송출 = false;
timer7.Stop();
}
}
int for매진팁 = 5;
int for매진팁Count = 0;
private void timer5_Tick(object sender, EventArgs e)
{
for매진팁--;
if (for매진팁 < 0 && toggleSwitch매진팁.IsOn)
{
for매진팁Count++;
KAScene = KAEngine.LoadScene(CurrentDirectory + @"\Degisn\매진콜\매진팁.t2s", "매진팁" + for매진팁Count);
KAScene.GetObject("txt1").StoreTextStyle();
KAScene.GetObject("txt1").SetValue("매진");
List<string> = new List<string>();
foreach(var in .)
{
foreach (var in .)
{
if (. && .)
{
if (..Trim() == "단일상품")
{
.Add(.);
}
else
{
string = .;
= .Replace("[남] ", "남)");
= .Replace("[여] ", "여)");
string = "선택" + . + "." + + . + Environment.NewLine;
bool isAdd = false;
string = .;
string right2 = .Substring(.Length - 2).ToLower();
if (right2 == "mm" || right2 == "cm") = .Substring(0, .Length - 2);
// '/'가 없는 경우
if (!.Contains("/") && .FindAll(x => x.Contains()).Count > 0)
{
int index = .FindIndex(x => x.Contains());
[index] += ", " + ;
isAdd = true;
}
// '/'가 있는 경우
if (.Contains("/"))
{
string[] = .Split('/');
// '/'가 1개만 있는 경우 일반적인 상태
if (.Length == 2)
{
string = + [0];
if (.FindAll(x => x.Contains()).Count > 0)
{
int index = .FindIndex(x => x.Contains());
[index] += ", " + [1];
isAdd = true;
}
}
else if (.Length == 3)
{
string = + [0] + "/" + [1];
if (.FindAll(x => x.Contains()).Count > 0)
{
int index = .FindIndex(x => x.Contains());
[index] += ", " + [2];
isAdd = true;
}
}
}
if (!isAdd)
{
//처음 들어간 경우
string = + ;
.Add();
}
/* 남녀 넣기 전
// '/'가 없는 경우
if (!세부상품명.Contains("/") && 매진상품들.FindAll(x => x.Contains("선택" + 상품.순서 + ".")).Count > 0)
{
int index = 매진상품들.FindIndex(x => x.Contains("선택" + 상품.순서 + "."));
매진상품들[index] += ", " + 세부상품명;
isAdd = true;
}
// '/'가 있는 경우
if (세부상품명.Contains("/"))
{
string[] 세부상품명분할 = 세부상품명.Split('/');
// '/'가 1개만 있는 경우 일반적인 상태
if (세부상품명분할.Length == 2)
{
string 접미사 = "선택" + 상품.순서 + "." + 세부상품명분할[0];
if (매진상품들.FindAll(x => x.Contains(접미사)).Count > 0)
{
int index = 매진상품들.FindIndex(x => x.Contains(접미사));
매진상품들[index] += ", " + 세부상품명분할[1];
isAdd = true;
}
}
else if (세부상품명분할.Length == 3)
{
string 접미사 = "선택" + 상품.순서 + "." + 세부상품명분할[0] + "/" + 세부상품명분할[1];
if (매진상품들.FindAll(x => x.Contains(접미사)).Count > 0)
{
int index = 매진상품들.FindIndex(x => x.Contains(접미사));
매진상품들[index] += ", " + 세부상품명분할[2];
isAdd = true;
}
}
}
if (!isAdd)
{
//처음 들어간 경우
string 매진상품 = "선택" + 상품.순서 + "." + 세부상품명;
매진상품들.Add(매진상품);
}
*/
}
}
}
}
List<string> = new List<string>();
string = "";
foreach (var v in )
{
//중복된 값을 지우는 과정을 거친다.
var v2 = v.Replace(Environment.NewLine, "^").Split('^');
foreach (var v3 in v2)
{
if (v3.Contains("선택"))
{
if (.Contains(v3))
{
= v3 + Environment.NewLine;
}
else
{
.Add(v3);
}
}
}
string addText = Environment.NewLine + v;
if ( != "")
{
addText = Environment.NewLine + v.Replace(, "");
}
KAScene.GetObject("txt1").AddText(addText, 4);
}
if (.Count != 0)
{
KAScenePlayer.Prepare(Layer12, KAScene);
KAScenePlayer.Play(Layer12);
}
timer5.Stop();
}
}
public void DoChangeAdjust(bool a, bool b, bool c, bool d, bool e, bool f, bool g, bool h, bool i)
{
try
{
if (!h)
{
label56.BackColor = Color.DarkRed;
label56.Text = "채팅백판";
btnDisp8.Text = "채팅백판";
SetDisplay(8, false);
}
else
{
label56.BackColor = Color.Green;
label56.Text = "채팅백판 송출중..";
btnDisp8.Text = "채팅백판 OUT";
SetDisplay(8, true);
}
if (!i)
{
label80.BackColor = Color.DarkRed;
label80.Text = "동영상";
btnDisp9.Text = "동영상";
SetDisplay(9, false);
}
else
{
label80.BackColor = Color.Green;
label80.Text = "동영상 송출중..";
btnDisp9.Text = "동영상 OUT";
SetDisplay(9, true);
}
if (!a)
{
label11.BackColor = Color.DarkRed;
label11.Text = "판매수량";
btnDisp1.Text = "판매수량";
SetDisplay(1, false);
}
else
{
label11.BackColor = Color.Green;
label11.Text = "판매수량 송출중..";
btnDisp1.Text = "판매수량 OUT";
SetDisplay(1, true);
}
if (!b)
{
label12.BackColor = Color.DarkRed;
label12.Text = "경품추첨";
btnDisp2.Text = "경품추첨";
SetDisplay(2, false);
}
else
{
label12.BackColor = Color.Green;
label12.ForeColor = Color.White;
label12.Text = "경품추첨 송출중..";
btnDisp2.Text = "경품추첨 OUT";
SetDisplay(2, true);
}
if (!c)
{
label19.BackColor = Color.DarkRed;
label19.Text = "텍스트";
btnDisp3.Text = "텍스트";
SetDisplay(3, false);
}
else
{
label19.BackColor = Color.Green;
label19.Text = "텍스트 송출중..";
btnDisp3.Text = "텍스트 OUT";
SetDisplay(3, true);
}
if (!d)
{
label66.BackColor = Color.DarkRed;
label66.Text = "채팅";
btnDisp4.Text = "채팅";
SetDisplay(4, false);
}
else
{
label66.BackColor = Color.Green;
label66.Text = "채팅 송출중..";
btnDisp4.Text = "채팅 OUT";
SetDisplay(4, true);
}
if (!e)
{
label67.BackColor = Color.DarkRed;
label67.Text = "상품평";
btnDisp5.Text = "상품평";
SetDisplay(5, false);
}
else
{
label67.BackColor = Color.Green;
label67.Text = "상품평 송출중..";
btnDisp5.Text = "상품평 OUT";
SetDisplay(5, true);
}
if (!f)
{
label68.BackColor = Color.DarkRed;
label68.Text = "QnA";
btnDisp6.Text = "QnA";
SetDisplay(6, false);
}
else
{
label68.BackColor = Color.Green;
label68.Text = "QnA 송출중..";
btnDisp6.Text = "QnA OUT";
SetDisplay(6, true);
}
if (!g)
{
label55.BackColor = Color.DarkRed;
label55.Text = "공지";
btnDisp7.Text = "공지";
SetDisplay(7, false);
}
else
{
label55.BackColor = Color.Green;
label55.Text = "공지 송출중..";
btnDisp7.Text = "공지 OUT";
SetDisplay(7, true);
}
}
catch (Exception ex)
{
}
}
int Layer1 = 1;
int Layer2 = 2;
int Layer3 = 3;
int Layer4 = 4;
int Layer5 = 5;
int Layer6 = 6;
int Layer7 = 7;
int Layer8 = 8;
int Layer9 = 9;
int Layer10 = 10;
int Layer11 = 11;
int Layer12 = 12;
int Layer13 = 13;
int Layer14 = 14;
int Layer15 = 14;
int fadeOutTime = 10;
string[] informationDisp1 = new string[4];
string disp1TxtStr = "";
int termDisp1 = 10;
int orderDisp1Index = 0;
int orderDisp4Index = 0;
int orderDisp9Index = 0;
string liveChatBefore = "";
string liveChatBefore2 = "";
string[] aliveLiveChatText = { "", "", "", "", "", "", "", "", "" };
string[] aliveLiveChatText2 = { "", "", "", "", "", "", "", "", "" };
string[] aliveLiveChatText3 = { "", "", "", "", "", "", "", "", "" };
string[] aliveLiveChatText4 = { "", "", "", "", "", "", "", "", "" };
bool isTopLeft = true;
List<NewGroup> beforeNewGroups = new List<NewGroup>();
public void SetDisplay(int DisplayIndex, bool showing)
{
//DisplayIndex : 1 판매량, 2 경품, 3 텍스트
if (DisplayIndex == 1)
{
if (showing)
{
if (isDisplay1)
{
//이미 송출 중이므로 넘긴다
}
else
{
//송출을 위한 데이터를 읽어와서 송출한다.
//주기적으로 송출하게 되므로
//데이터 읽는 부분
//서버에서 정보를 읽어온다.
//주기적 송출을 할 것이므로 Disp1Worker의 함수로 넘겨서 진행한다.
isDisplay1 = true;
string dispStr = "";
//211.42.188.8
string requestURL = getURL() + channel + "/입력데이터조회/상품수량";
WebRequest request = WebRequest.Create(requestURL);
request.Method = "GET";
request.ContentType = "application/json; charset=UTF-8;";
//request.ContentType = "charset=UTF-8";
using (WebResponse response = request.GetResponse())
using (Stream stream = response.GetResponseStream())
using (StreamReader reader = new StreamReader(stream))
{
string data = reader.ReadToEnd();
JObject obj = JObject.Parse(data);
dispStr = obj["텍스트"].ToString();
}
//송출부분
string[] strs = dispStr.Split('|');
//서버에 있는 정보를 저장해야 한다
disp1TxtStr = strs[0];
informationDisp1[0] = strs[2];
informationDisp1[1] = strs[3];
informationDisp1[2] = strs[4];
termDisp1 = Convert.ToInt32(strs[5]);
orderDisp1Index = Convert.ToInt32(strs[6]);
//순서 : 텍스트로 나갈 정보,판매수량, PGM, 시작일, 종료일, 주기, 순번의 형태로 저장
mWorkerThread = new Thread(new ThreadStart(Disp1Worker));
mWorkerThread.Start();
}
isDisplay1 = true;
}
else
{
if (isDisplay1)
{
//송출 중 이므로 송출을 종료시킨다.
eKSceneEffectType etype = eKSceneEffectType.SCENE_CHANGE_EFFECT_FADE;
KAScene = KAEngine.LoadScene(CurrentDirectory + @"\Degisn\Clear.t2s", "Clear");
KAScene.SetSceneEffectType(1, etype, fadeOutTime);
KAScenePlayer.Prepare(Layer1, KAScene);
KAScenePlayer.Play(Layer1);
}
else
{
//미송출 중이므로 넘긴다.
}
isDisplay1 = false;
}
}
else if (DisplayIndex == 2)
{
if (showing)
{
if (isDisplay2)
{
//이미 송출 중이므로 넘긴다
}
else
{
//송출을 위한 데이터를 읽어와서 송출한다.
//송출을 위한 데이터를 읽어와서 송출한다.
//데이터 읽는 부분
//서버에서 정보를 읽어온다.
string dispStr = "";
string requestURL = getURL() + channel + "/입력데이터조회/경품프로모션";
WebRequest request = WebRequest.Create(requestURL);
request.Method = "GET";
request.ContentType = "application/json; charset=UTF-8;";
//request.ContentType = "charset=UTF-8";
using (WebResponse response = request.GetResponse())
using (Stream stream = response.GetResponseStream())
using (StreamReader reader = new StreamReader(stream))
{
string data = reader.ReadToEnd();
JObject obj = JObject.Parse(data);
dispStr = obj["텍스트"].ToString();
}
//송출부분
KAScene = KAEngine.LoadScene(path2, "경품추첨");
KAObject KAObject;
string[] strs = dispStr.Split('|');
for (int i = 0; i < strs.Length / 3; i++)
{
KAObject = KAScene.GetObject("name" + (i + 1));
KAObject.SetValue(strs[i * 3]);
KAObject = KAScene.GetObject("address" + (i + 1));
KAObject.SetValue(strs[i * 3 + 1]);
KAObject = KAScene.GetObject("phone" + (i + 1));
KAObject.SetValue(strs[i * 3 + 2]);
}
//Prepare
KAScenePlayer.Prepare(Layer2, KAScene);
//Play
KAScenePlayer.Play(Layer2);
}
isDisplay2 = true;
}
else
{
if (isDisplay2)
{
//송출 중 이므로 송출을 종료시킨다.
eKSceneEffectType etype = eKSceneEffectType.SCENE_CHANGE_EFFECT_FADE;
KAScene = KAEngine.LoadScene(CurrentDirectory + @"\Degisn\Clear.t2s", "Clear");
KAScene.SetSceneEffectType(1, etype, fadeOutTime);
KAScenePlayer.Prepare(Layer2, KAScene);
KAScenePlayer.Play(Layer2);
}
else
{
//미송출 중이므로 넘긴다.
}
isDisplay2 = false;
}
}
else if (DisplayIndex == 3)
{
if (showing)
{
if (isDisplay3)
{
//이미 송출 중이므로 넘긴다
}
else
{
//송출을 위한 데이터를 읽어와서 송출한다.
//송출을 위한 데이터를 읽어와서 송출한다.
//데이터 읽는 부분
//서버에서 정보를 읽어온다.
string dispStr = "";
string requestURL = getURL() + channel + "/텍스트/조회";
WebRequest request = WebRequest.Create(requestURL);
request.Method = "GET";
request.ContentType = "application/json; charset=UTF-8;";
//request.ContentType = "charset=UTF-8";
using (WebResponse response = request.GetResponse())
using (Stream stream = response.GetResponseStream())
using (StreamReader reader = new StreamReader(stream))
{
string data = reader.ReadToEnd();
JObject obj = JObject.Parse(data);
dispStr = obj["텍스트"].ToString();
}
//특수문자 처리를 위함
dispStr = utils.replaceSpecialStr(dispStr);
string[] strs = dispStr.Split('|');
string path3 = path3_1;
if (strs[0].Equals("1")) path3 = path3_1;
else if (strs[0].Equals("2")) path3 = path3_2;
else if (strs[0].Equals("3")) path3 = path3_3;
else if (strs[0].Equals("4")) path3 = path3_4;
else if (strs[0].Equals("5")) path3 = path3_5;
else if (strs[0].Equals("6")) path3 = path3_6;
else if (strs[0].Equals("7")) path3 = path3_7;
else if (strs[0].Equals("8")) path3 = path3_8;
else if (strs[0].Equals("9")) path3 = path3_9;
else if (strs[0].Equals("10")) path3 = path3_10;
else if (strs[0].Equals("11")) path3 = path3_11;
else if (strs[0].Equals("12")) path3 = path3_12;
else if (strs[0].Equals("13")) path3 = path3_13;
else if (strs[0].Equals("14")) path3 = path3_14;
else if (strs[0].Equals("15")) path3 = path3_15;
else if (strs[0].Equals("16")) path3 = path3_16;
else if (strs[0].Equals("17")) path3 = path3_17;
else if (strs[0].Equals("18")) path3 = path3_18;
else if (strs[0].Equals("19")) path3 = path3_19;
else if (strs[0].Equals("20")) path3 = path3_20;
//송출부분
KAScene = KAEngine.LoadScene(path3, "텍스트" + strs[0]);
KAObject KAObject;
for (int i = 1; i < 6; i++)
{
KAObject = KAScene.GetObject("txt" + i);
KAObject.SetValue(strs.Length - 1 < i ? "" : strs[i]);
}
//Prepare
KAScenePlayer.Prepare(Layer3, KAScene);
//Play
KAScenePlayer.Play(Layer3);
}
isDisplay3 = true;
}
else
{
if (isDisplay3)
{
//송출 중 이므로 송출을 종료시킨다.
eKSceneEffectType etype = eKSceneEffectType.SCENE_CHANGE_EFFECT_FADE;
KAScene = KAEngine.LoadScene(CurrentDirectory + @"\Degisn\Clear.t2s", "Clear");
KAScene.SetSceneEffectType(1, etype, fadeOutTime);
KAScenePlayer.Prepare(Layer3, KAScene);
KAScenePlayer.Play(Layer3);
}
else
{
//미송출 중이므로 넘긴다.
}
isDisplay3 = false;
}
}
else if (DisplayIndex == 4)
{
if (showing)
{
string dispStr = "";
string requestURL = getURL() + channel + "/채팅/조회";
WebRequest request = WebRequest.Create(requestURL);
request.Method = "GET";
request.ContentType = "application/json; charset=UTF-8;";
//request.ContentType = "charset=UTF-8";
using (WebResponse response = request.GetResponse())
using (Stream stream = response.GetResponseStream())
using (StreamReader reader = new StreamReader(stream))
{
string data = reader.ReadToEnd();
JObject obj = JObject.Parse(data);
dispStr = obj["채팅"].ToString();
}
//if (isDisplay4)
if (isDisplay4 && dispStr.Equals(liveChatBefore))
{
//이미 송출 중이므로 넘긴다
}
else
{
if (timer1.Enabled) timer1.Stop();
if (timer2.Enabled) timer2.Stop();
if (timer3.Enabled) timer3.Stop();
liveChatBefore2 = liveChatBefore;
liveChatBefore = dispStr;
int dispLines = 0;
int timeOfChange = 15;
int timeOfWait = 60;
int timeOfBefore = 0;
int timeOfClear = 30;
string isLoop = "";
//특수문자 처리를 위함
dispStr = utils.replaceSpecialStr(dispStr);
string[] strs = dispStr.Split('|');
if (strs[8].Equals("Y"))
isLoop = "true";
else if (strs[8].Equals("C"))
isLoop = "clear";
dispLines = Convert.ToInt16(strs[9]);
timeOfChange = Convert.ToInt32(strs[10]);
//timeOfChange = 1;
timeOfWait = Convert.ToInt32(strs[11]);
timeOfClear = Convert.ToInt32(strs[12]);
//색상리턴용 내부함수
sKStyleColor getColor(Label lbl)
{
sKStyleColor sKStyleColor = new sKStyleColor();
sKStyleColor.A = lbl.BackColor.A;
sKStyleColor.R = lbl.BackColor.R;
sKStyleColor.G = lbl.BackColor.G;
sKStyleColor.B = lbl.BackColor.B;
return sKStyleColor;
}
//송출부분
orderDisp4Index++;
if (dispLines == 2)
{
KAScene = KAEngine.LoadScene(path4, "채팅" + orderDisp4Index);
}
else if (dispLines == 1)
{
KAScene = KAEngine.LoadScene(path4_1, "채팅" + orderDisp4Index);
}
else if (dispLines == 3)
{
KAScene = KAEngine.LoadScene(path4_2, "채팅" + orderDisp4Index);
}
else if (dispLines == 4)
{
KAScene = KAEngine.LoadScene(path4_3, "채팅" + orderDisp4Index);
}
else if (dispLines == 5)
{
KAScene = KAEngine.LoadScene(path4_4, "채팅" + orderDisp4Index);
}
else if (dispLines == 6)
{
KAScene = KAEngine.LoadScene(path4_5, "채팅" + orderDisp4Index);
}
else if (dispLines == 0)
{
KAScene = KAEngine.LoadScene(path4_0, "채팅" + orderDisp4Index);
}
KAObject KAObject;
if (dispLines == 2)
{
int timeOfWaitFirst = 1;
bool FirstChecker = true;
for (int i = 0; i < 6; i++)
{
if (aliveLiveChatText[i].Trim() != "") FirstChecker = false;
}
if (!FirstChecker) timeOfWaitFirst = timeOfWait;
KAObject = KAScene.GetObject("name1");
for (int i = 0; i < 6; i++)
{
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, i, i, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
}
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 5, timeOfChange + timeOfWaitFirst + timeOfChange + 2, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 4, timeOfChange + timeOfWaitFirst + timeOfChange + 1, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 3, timeOfChange + timeOfWaitFirst + timeOfChange, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 2, timeOfChange + timeOfWaitFirst, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 1, timeOfChange, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 0, 0, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
//5번의 위치만 변동될 수 있다
KAObject.SetPositionKey(0, 0, -70f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(1, 0, -37f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(2, 0, -37f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(3, 0, -0.4f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(4, 0, -0.4f, 0, eKVectorType.VECTOR_TYPE_Y);
if (strs[6].Trim() == "")
{
//2번째 택스트가 1개인 경우
KAObject.SetPositionKey(5, 0, -0.4f, 0, eKVectorType.VECTOR_TYPE_Y);
}
else
{
//아래가 2줄 이상 올라오게 되면
KAObject.SetPositionKey(5, 0, 33f, 0, eKVectorType.VECTOR_TYPE_Y);
}
KAObject = KAScene.GetObject("group0");
for (int i = 0; i < 4; i++)
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, i, i, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
//-432.38
KAObject.SetPositionKey(1, 0, -397.38f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(2, 0, -397.38f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(3, 0, -362.38f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 3, timeOfChange + timeOfWait + timeOfChange, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 2, timeOfChange + timeOfWait, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 1, timeOfChange, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject = KAScene.GetObject("name0_1");
KAObject.SetValue(aliveLiveChatText[0]);
KAObject.SetStyleColor(getColor(aliveLiveChatText[2] == "" ? lbl_color_3 : lbl_color_1));
KAObject = KAScene.GetObject("txt0_1");
KAObject.SetValue(aliveLiveChatText[1]);
KAObject.SetStyleColor(getColor(aliveLiveChatText[2] == "" ? lbl_color_4 : lbl_color_2));
KAObject = KAScene.GetObject("name0_2");
KAObject.SetValue(aliveLiveChatText[2]);
KAObject.SetStyleColor(getColor(lbl_color_3));
KAObject = KAScene.GetObject("txt0_2");
KAObject.SetValue(aliveLiveChatText[3]);
KAObject.SetStyleColor(getColor(lbl_color_4));
//색상 설정의 경우의 수
// n1,t1,t2가 있는 경우 : 일반적인 상황
// n1 = color3, t1 = color4, t2 = color4
//n2가 존재하면
// n1,n2,t1,t2 다 있는 경우 : n2는 이때만 존재
// n1 = color1, t1 = color2, n2 = color3, t2 = color4
KAObject = KAScene.GetObject("txt1");
for (int i = 0; i < 10; i++)
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, i, i, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
if (strs[2].Trim() == "")
{
//1줄만 기록된 경우
KAObject.SetPositionKey(1, 0, -105.8f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(2, 0, -105.8f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(3, 0, -71.54f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(4, 0, -71.54f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(5, 0, -71.54f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(6, 0, -71.54f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(7, 0, -71.54f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(8, 0, -71.54f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(9, 0, -36.18f, 0, eKVectorType.VECTOR_TYPE_Y);
if (strs[6].Trim() == "")
{
KAObject.SetPositionKey(9, 0, -71.54f, 0, eKVectorType.VECTOR_TYPE_Y);
}
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 9, timeOfChange + timeOfWaitFirst + timeOfChange + 6, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 8, timeOfChange + timeOfWaitFirst + timeOfChange + 5, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 7, timeOfChange + timeOfWaitFirst + timeOfChange + 4, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 6, timeOfChange + timeOfWaitFirst + timeOfChange + 3, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 5, timeOfChange + timeOfWaitFirst + timeOfChange + 2, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 4, timeOfChange + timeOfWaitFirst + timeOfChange + 1, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 3, timeOfChange + timeOfWaitFirst + timeOfChange, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 2, timeOfChange + timeOfWaitFirst, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 1, timeOfChange, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
timeOfBefore = timeOfChange + timeOfWaitFirst;
}
else
{
if (strs[3].Trim() == "")
{
//2줄만 기록된 경우
KAObject.SetPositionKey(1, 0, -105.8f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(2, 0, -105.8f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(3, 0, -71.54f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(4, 0, -71.54f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(5, 0, -36.18f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(6, 0, -36.18f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(7, 0, -36.18f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(8, 0, -36.18f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(9, 0, -2.31f, 0, eKVectorType.VECTOR_TYPE_Y);
if (strs[6].Trim() == "")
{
KAObject.SetPositionKey(9, 0, -36.18f, 0, eKVectorType.VECTOR_TYPE_Y);
}
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 9, timeOfChange + timeOfWaitFirst + timeOfChange + timeOfWait + timeOfChange + 4, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 8, timeOfChange + timeOfWaitFirst + timeOfChange + timeOfWait + timeOfChange + 3, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 7, timeOfChange + timeOfWaitFirst + timeOfChange + timeOfWait + timeOfChange + 2, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 6, timeOfChange + timeOfWaitFirst + timeOfChange + timeOfWait + timeOfChange + 1, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 5, timeOfChange + timeOfWaitFirst + timeOfChange + timeOfWait + timeOfChange, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 4, timeOfChange + timeOfWaitFirst + timeOfChange + timeOfWait, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 3, timeOfChange + timeOfWaitFirst + timeOfChange, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 2, timeOfChange + timeOfWaitFirst, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 1, timeOfChange, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
timeOfBefore = timeOfChange + timeOfWaitFirst + timeOfChange + timeOfWait;
}
else
{
//3줄다 기록된 경우
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 9, timeOfChange + timeOfWaitFirst + timeOfChange + timeOfWait + timeOfChange + timeOfWait + timeOfChange + 2, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 8, timeOfChange + timeOfWaitFirst + timeOfChange + timeOfWait + timeOfChange + timeOfWait + timeOfChange + 1, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 7, timeOfChange + timeOfWaitFirst + timeOfChange + timeOfWait + timeOfChange + timeOfWait + timeOfChange, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 6, timeOfChange + timeOfWaitFirst + timeOfChange + timeOfWait + timeOfChange + timeOfWait, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 5, timeOfChange + timeOfWaitFirst + timeOfChange + timeOfWait + timeOfChange, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 4, timeOfChange + timeOfWaitFirst + timeOfChange + timeOfWait, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 3, timeOfChange + timeOfWaitFirst + timeOfChange, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 2, timeOfChange + timeOfWaitFirst, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 1, timeOfChange, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetPositionKey(1, 0, -105.8f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(2, 0, -105.8f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(3, 0, -71.54f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(4, 0, -71.54f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(5, 0, -36.18f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(6, 0, -36.18f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(7, 0, -2.31f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(8, 0, -2.31f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(9, 0, 30f, 0, eKVectorType.VECTOR_TYPE_Y);
if (strs[6].Trim() == "")
{
KAObject.SetPositionKey(9, 0, -2.31f, 0, eKVectorType.VECTOR_TYPE_Y);
}
timeOfBefore = timeOfChange + timeOfWaitFirst + timeOfChange + timeOfWait + timeOfChange + timeOfWait;
}
}
//시간 계산 변경
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 9, timeOfBefore + timeOfChange + timeOfWait + timeOfChange, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 8, timeOfBefore + timeOfChange + timeOfWait, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject = KAScene.GetObject("name1");
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 5, timeOfBefore + timeOfChange + timeOfWait + timeOfChange, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 4, timeOfBefore + timeOfChange + timeOfWait, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject = KAScene.GetObject("name2");
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 0, 0, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 1, 1, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 2, 2, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 3, 3, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 4, 4, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 4, timeOfBefore + timeOfChange + timeOfWait + timeOfChange, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 3, timeOfBefore + timeOfChange + timeOfWait, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 2, timeOfBefore + timeOfChange, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 1, timeOfBefore, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
if (strs[6].Trim() == "")
{
KAObject.SetPositionKey(4, 0, -0.3f, 0, eKVectorType.VECTOR_TYPE_Y);
}
else
{
KAObject.SetPositionKey(4, 0, 33f, 0, eKVectorType.VECTOR_TYPE_Y);
}
KAObject = KAScene.GetObject("txt2");
for (int i = 0; i < 7; i++)
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, i, i, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
if (strs[6].Trim() == "")
{
//1줄만 기록된 경우
KAObject.SetPositionKey(2, 0, 0.5f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(3, 0, 0.5f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(4, 0, 0.5f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(5, 0, 0.5f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(6, 0, 0.5f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 6, timeOfBefore + timeOfChange + 4, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 5, timeOfBefore + timeOfChange + 3, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 4, timeOfBefore + timeOfChange + 2, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 3, timeOfBefore + timeOfChange + 1, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 2, timeOfBefore + timeOfChange, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 1, timeOfBefore, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
timeOfBefore += timeOfChange + timeOfWait;
aliveLiveChatText[0] = strs[0];
if (strs[3] != "")
{
aliveLiveChatText[1] = strs[3];
}
else if (strs[2] != "")
{
aliveLiveChatText[1] = strs[2];
}
else
{
aliveLiveChatText[1] = strs[1];
}
aliveLiveChatText[2] = strs[4];
aliveLiveChatText[3] = strs[5];
}
else
{
if (strs[7].Trim() == "")
{
//2줄만 기록된 경우
KAObject.SetPositionKey(2, 0, 0.5f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(3, 0, 0.5f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(4, 0, 35.5f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(5, 0, 35.5f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(6, 0, 35.5f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 6, timeOfBefore + timeOfChange + timeOfWait + timeOfChange + 2, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 5, timeOfBefore + timeOfChange + timeOfWait + timeOfChange + 1, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 4, timeOfBefore + timeOfChange + timeOfWait + timeOfChange, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 3, timeOfBefore + timeOfChange + timeOfWait, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 2, timeOfBefore + timeOfChange, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 1, timeOfBefore, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
timeOfBefore += timeOfChange + timeOfWait + timeOfChange + timeOfWait;
aliveLiveChatText[0] = strs[4];
aliveLiveChatText[1] = strs[5];
aliveLiveChatText[2] = "";
aliveLiveChatText[3] = strs[6];
}
else
{
//3줄다 기록된 경우
KAObject.SetPositionKey(2, 0, 0.5f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(3, 0, 0.5f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(4, 0, 35.5f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(5, 0, 35.5f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(6, 0, 70.5f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 6, timeOfBefore + timeOfChange + timeOfWait + timeOfChange + timeOfWait + timeOfChange, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 5, timeOfBefore + timeOfChange + timeOfWait + timeOfChange + timeOfWait, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 4, timeOfBefore + timeOfChange + timeOfWait + timeOfChange, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 3, timeOfBefore + timeOfChange + timeOfWait, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 2, timeOfBefore + timeOfChange, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 1, timeOfBefore, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
timeOfBefore += timeOfChange + timeOfWait + timeOfChange + timeOfWait + timeOfChange + timeOfWait;
aliveLiveChatText[0] = strs[4];
aliveLiveChatText[1] = strs[6];
aliveLiveChatText[2] = "";
aliveLiveChatText[3] = strs[7];
}
}
KAObject = KAScene.GetObject("name1");
KAObject.SetStyleColor(getColor(lbl_color_1));
KAObject.SetValue(strs[0]);
KAObject = KAScene.GetObject("txt1_1");
KAObject.SetStyleColor(getColor(lbl_color_2));
KAObject.SetValue(strs[1]);
KAObject = KAScene.GetObject("txt1_2");
KAObject.SetStyleColor(getColor(lbl_color_2));
KAObject.SetValue(strs[2]);
KAObject = KAScene.GetObject("txt1_3");
KAObject.SetStyleColor(getColor(lbl_color_2));
KAObject.SetValue(strs[3]);
KAObject = KAScene.GetObject("name2");
KAObject.SetStyleColor(getColor(lbl_color_3));
KAObject.SetValue(strs[4]);
KAObject = KAScene.GetObject("txt2_1");
KAObject.SetStyleColor(getColor(lbl_color_4));
KAObject.SetValue(strs[5]);
KAObject = KAScene.GetObject("txt2_2");
KAObject.SetStyleColor(getColor(lbl_color_4));
KAObject.SetValue(strs[6]);
KAObject = KAScene.GetObject("txt2_3");
KAObject.SetStyleColor(getColor(lbl_color_4));
KAObject.SetValue(strs[7]);
}
else if (dispLines == 11)
{
KAObject = KAScene.GetObject("name1");
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 5, timeOfChange + timeOfWait + timeOfChange + 2, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 4, timeOfChange + timeOfWait + timeOfChange + 1, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 3, timeOfChange + timeOfWait + timeOfChange, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 2, timeOfChange + timeOfWait, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 1, timeOfChange, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
//5번의 위치만 변동될 수 있다
KAObject.SetPositionKey(0, 0, -37f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(1, 0, -0.4f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(2, 0, -0.4f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(3, 0, -0.4f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(4, 0, -0.4f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(5, 0, 33f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject = KAScene.GetObject("group0");
for (int i = 0; i < 4; i++)
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, i, i, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
//-432.38
KAObject.SetPositionKey(1, 0, -397.38f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(2, 0, -397.38f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(3, 0, -362.38f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 3, timeOfChange + timeOfWait + timeOfChange, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 2, timeOfChange + timeOfWait, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 1, timeOfChange, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject = KAScene.GetObject("name0_2");
KAObject.SetValue(aliveLiveChatText[2]);
KAObject.SetStyleColor(getColor(lbl_color_3));
KAObject = KAScene.GetObject("txt0_2");
KAObject.SetValue(aliveLiveChatText[3]);
KAObject.SetStyleColor(getColor(lbl_color_4));
KAObject = KAScene.GetObject("txt1");
for (int i = 0; i < 10; i++)
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, i, i, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
if (strs[2].Trim() == "")
{
//1줄만 기록된 경우
KAObject.SetPositionKey(0, 0, -105.8f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(1, 0, -71.54f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(2, 0, -71.54f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(3, 0, -36.18f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(4, 0, -36.18f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(5, 0, -36.18f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(6, 0, -36.18f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(7, 0, -36.18f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 7, timeOfChange + timeOfWait + timeOfChange + 4, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 6, timeOfChange + timeOfWait + timeOfChange + 3, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 5, timeOfChange + timeOfWait + timeOfChange + 2, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 4, timeOfChange + timeOfWait + timeOfChange + 1, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 3, timeOfChange + timeOfWait + timeOfChange, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 2, timeOfChange + timeOfWait, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 1, timeOfChange, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
timeOfBefore = timeOfChange + timeOfWait;
}
else
{
if (strs[3].Trim() == "")
{
//2줄만 기록된 경우
KAObject.SetPositionKey(0, 0, -105.8f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(1, 0, -71.54f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(2, 0, -71.54f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(3, 0, -36.18f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(4, 0, -36.18f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(5, 0, -2.31f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(6, 0, -2.31f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(7, 0, -2.31f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 7, timeOfChange + timeOfWait + timeOfChange + timeOfWait + timeOfChange + 2, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 6, timeOfChange + timeOfWait + timeOfChange + timeOfWait + timeOfChange + 1, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 5, timeOfChange + timeOfWait + timeOfChange + timeOfWait + timeOfChange, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 4, timeOfChange + timeOfWait + timeOfChange + timeOfWait, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 3, timeOfChange + timeOfWait + timeOfChange, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 2, timeOfChange + timeOfWait, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 1, timeOfChange, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
timeOfBefore = timeOfChange + timeOfWait + timeOfChange + timeOfWait;
}
else
{
//3줄다 기록된 경우
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 7, timeOfChange + timeOfWait + timeOfChange + timeOfWait + timeOfChange + timeOfWait + timeOfChange, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 6, timeOfChange + timeOfWait + timeOfChange + timeOfWait + timeOfChange + timeOfWait, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 5, timeOfChange + timeOfWait + timeOfChange + timeOfWait + timeOfChange, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 4, timeOfChange + timeOfWait + timeOfChange + timeOfWait, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 3, timeOfChange + timeOfWait + timeOfChange, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 2, timeOfChange + timeOfWait, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 1, timeOfChange, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetPositionKey(0, 0, -105.8f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(1, 0, -71.54f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(2, 0, -71.54f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(3, 0, -36.18f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(4, 0, -36.18f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(5, 0, -2.31f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(6, 0, -2.31f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(7, 0, 30f, 0, eKVectorType.VECTOR_TYPE_Y);
timeOfBefore = timeOfChange + timeOfWait + timeOfChange + timeOfWait + timeOfChange + timeOfWait;
}
}
//시간 계산 변경
KAObject = KAScene.GetObject("name1");
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 5, timeOfBefore + timeOfChange, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 4, timeOfBefore, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject = KAScene.GetObject("name2");
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 0, 0, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 1, 1, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 2, 2, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 2, timeOfBefore + timeOfChange, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 1, timeOfBefore, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
aliveLiveChatText[0] = "";
aliveLiveChatText[1] = "";
aliveLiveChatText[2] = strs[4];
KAObject = KAScene.GetObject("txt2");
for (int i = 0; i < 7; i++)
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, i, i, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
if (strs[6].Trim() == "")
{
//1줄만 기록된 경우
KAObject.SetPositionKey(1, 0, 0.5f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(2, 0, 35.5f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(3, 0, 35.5f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(4, 0, 35.5f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(5, 0, 35.5f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(6, 0, 35.5f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 6, timeOfBefore + timeOfChange + 4, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 5, timeOfBefore + timeOfChange + 3, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 4, timeOfBefore + timeOfChange + 2, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 3, timeOfBefore + timeOfChange + 1, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 2, timeOfBefore + timeOfChange, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 1, timeOfBefore, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
timeOfBefore += timeOfChange + timeOfWait;
aliveLiveChatText[3] = strs[5];
}
else
{
if (strs[7].Trim() == "")
{
//2줄만 기록된 경우
KAObject.SetPositionKey(1, 0, 0.5f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(2, 0, 35.5f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(3, 0, 35.5f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(4, 0, 70.5f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(5, 0, 70.5f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(6, 0, 70.5f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 6, timeOfBefore + timeOfChange + timeOfWait + timeOfChange + 2, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 5, timeOfBefore + timeOfChange + timeOfWait + timeOfChange + 1, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 4, timeOfBefore + timeOfChange + timeOfWait + timeOfChange, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 3, timeOfBefore + timeOfChange + timeOfWait, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 2, timeOfBefore + timeOfChange, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 1, timeOfBefore, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
timeOfBefore += timeOfChange + timeOfWait + timeOfChange + timeOfWait;
aliveLiveChatText[3] = strs[6];
}
else
{
//3줄다 기록된 경우
KAObject.SetPositionKey(1, 0, 0.5f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(2, 0, 35.5f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(3, 0, 35.5f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(4, 0, 70.5f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(5, 0, 70.5f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(6, 0, 105.5f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 6, timeOfBefore + timeOfChange + timeOfWait + timeOfChange + timeOfWait + timeOfChange, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 5, timeOfBefore + timeOfChange + timeOfWait + timeOfChange + timeOfWait, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 4, timeOfBefore + timeOfChange + timeOfWait + timeOfChange, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 3, timeOfBefore + timeOfChange + timeOfWait, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 2, timeOfBefore + timeOfChange, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 1, timeOfBefore, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
timeOfBefore += timeOfChange + timeOfWait + timeOfChange + timeOfWait + timeOfChange + timeOfWait;
aliveLiveChatText[3] = strs[7];
}
}
KAObject = KAScene.GetObject("name1");
KAObject.SetStyleColor(getColor(lbl_color_1));
KAObject.SetValue(strs[0]);
KAObject = KAScene.GetObject("txt1_1");
KAObject.SetStyleColor(getColor(lbl_color_2));
KAObject.SetValue(strs[1]);
KAObject = KAScene.GetObject("txt1_2");
KAObject.SetStyleColor(getColor(lbl_color_2));
KAObject.SetValue(strs[2]);
KAObject = KAScene.GetObject("txt1_3");
KAObject.SetStyleColor(getColor(lbl_color_2));
KAObject.SetValue(strs[3]);
KAObject = KAScene.GetObject("name2");
KAObject.SetStyleColor(getColor(lbl_color_3));
KAObject.SetValue(strs[4]);
KAObject = KAScene.GetObject("txt2_1");
KAObject.SetStyleColor(getColor(lbl_color_4));
KAObject.SetValue(strs[5]);
KAObject = KAScene.GetObject("txt2_2");
KAObject.SetStyleColor(getColor(lbl_color_4));
KAObject.SetValue(strs[6]);
KAObject = KAScene.GetObject("txt2_3");
KAObject.SetStyleColor(getColor(lbl_color_4));
KAObject.SetValue(strs[7]);
}
else if (dispLines == 3)
{
int lineCountQuestion = 3;
int lineCountAnswer = 3;
//이전 텍스트 처리
int countOfNames = 0;
if (aliveLiveChatText[0] != "") countOfNames++;
if (aliveLiveChatText[2] != "") countOfNames++;
if (aliveLiveChatText[4] != "") countOfNames++;
for (int i = 1; i < 4; i++)
{
KAObject = KAScene.GetObject("txt0_" + i);
KAObject.SetValue("");
KAObject = KAScene.GetObject("name0_" + i);
KAObject.SetValue("");
}
if (countOfNames == 1)
{
KAObject = KAScene.GetObject("name0_1");
KAObject.SetValue(aliveLiveChatText[0]);
KAObject.SetStyleColor(getColor(lbl_color_3));
KAObject = KAScene.GetObject("txt0_1");
KAObject.SetValue(aliveLiveChatText[1]);
KAObject.SetStyleColor(getColor(lbl_color_4));
KAObject = KAScene.GetObject("txt0_2");
KAObject.SetValue(aliveLiveChatText[3]);
KAObject.SetStyleColor(getColor(lbl_color_4));
KAObject = KAScene.GetObject("txt0_3");
KAObject.SetValue(aliveLiveChatText[5]);
KAObject.SetStyleColor(getColor(lbl_color_4));
}
else if (countOfNames == 2)
{
KAObject = KAScene.GetObject("name0_1");
KAObject.SetValue(aliveLiveChatText[0]);
KAObject.SetStyleColor(getColor(lbl_color_1));
KAObject = KAScene.GetObject("txt0_1");
KAObject.SetValue(aliveLiveChatText[1]);
KAObject.SetStyleColor(getColor(lbl_color_2));
KAObject = KAScene.GetObject("name0_2");
KAObject.SetValue(aliveLiveChatText[2]);
KAObject.SetStyleColor(getColor(lbl_color_3));
KAObject = KAScene.GetObject("txt0_2");
KAObject.SetValue(aliveLiveChatText[3]);
KAObject.SetStyleColor(getColor(aliveLiveChatText[2] == "" ? lbl_color_2 : lbl_color_4));
KAObject = KAScene.GetObject("name0_3");
KAObject.SetValue(aliveLiveChatText[4]);
KAObject.SetStyleColor(getColor(lbl_color_3));
KAObject = KAScene.GetObject("txt0_3");
KAObject.SetValue(aliveLiveChatText[5]);
KAObject.SetStyleColor(getColor(lbl_color_4));
}
if (strs[2].Trim() == "") lineCountQuestion = 1;
else if (strs[3].Trim() == "") lineCountQuestion = 2;
if (strs[6].Trim() == "") lineCountAnswer = 1;
else if (strs[7].Trim() == "") lineCountAnswer = 2;
KAObject = KAScene.GetObject("txt0");
KAObject.SetPosition(0, 35f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject = KAScene.GetObject("group0");
for (int i = 0; i < 6; i++)
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, i, i, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetPositionKey(0, 0, 0f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(1, 0, 35f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(2, 0, 35f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(3, 0, 70f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(4, 0, 70f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(5, 0, 105f, 0, eKVectorType.VECTOR_TYPE_Y);
//이전에 상위 2줄을 쓰는 경우
bool isBeforeLine2 = true;
int timeOfAdded = 0;
for (int i = 0; i < 6; i++)
{
if (i < 4)
{
if (aliveLiveChatText[i].Trim() == "") isBeforeLine2 = false;
}
else
{
if (aliveLiveChatText[i].Trim() != "") isBeforeLine2 = false;
}
}
if (isBeforeLine2) timeOfAdded = timeOfChange + timeOfWait;
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 5, timeOfAdded + timeOfChange + timeOfWait + timeOfChange + timeOfWait + timeOfChange, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 4, timeOfAdded + timeOfChange + timeOfWait + timeOfChange + timeOfWait, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 3, timeOfAdded + timeOfChange + timeOfWait + timeOfChange, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 2, timeOfAdded + timeOfChange + timeOfWait, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 1, timeOfAdded + timeOfChange, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 0, timeOfAdded, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
int timeOfWaitFirst = 1;
bool FirstChecker = true;
for (int i = 0; i < 6; i++)
{
if (aliveLiveChatText[i].Trim() != "") FirstChecker = false;
}
if (!FirstChecker) timeOfWaitFirst = timeOfWait;
for (int j = 0; j < 2; j++)
{
KAObject = KAScene.GetObject(j == 0 ? "name1" : "txt1");
for (int i = 0; i < 12; i++)
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, i, i, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 11, timeOfChange + timeOfWaitFirst + timeOfChange + timeOfWaitFirst + timeOfChange + timeOfWait + timeOfChange + timeOfWait + timeOfChange + timeOfWait + timeOfChange, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 10, timeOfChange + timeOfWaitFirst + timeOfChange + timeOfWaitFirst + timeOfChange + timeOfWait + timeOfChange + timeOfWait + timeOfChange + timeOfWait, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 9, timeOfChange + timeOfWaitFirst + timeOfChange + timeOfWaitFirst + timeOfChange + timeOfWait + timeOfChange + timeOfWait + timeOfChange, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 8, timeOfChange + timeOfWaitFirst + timeOfChange + timeOfWaitFirst + timeOfChange + timeOfWait + timeOfChange + timeOfWait, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 7, timeOfChange + timeOfWaitFirst + timeOfChange + timeOfWaitFirst + timeOfChange + timeOfWait + timeOfChange, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 6, timeOfChange + timeOfWaitFirst + timeOfChange + timeOfWaitFirst + timeOfChange + timeOfWait, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 5, timeOfChange + timeOfWaitFirst + timeOfChange + timeOfWaitFirst + timeOfChange, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 4, timeOfChange + timeOfWaitFirst + timeOfChange + timeOfWaitFirst, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 3, timeOfChange + timeOfWaitFirst + timeOfChange, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 2, timeOfChange + timeOfWaitFirst, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 1, timeOfChange, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetPositionKey(0, 0, -70f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(1, 0, -35f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(2, 0, -35f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(3, 0, 0f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(4, 0, 0f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(5, 0, 35f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(6, 0, 35f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(7, 0, 70f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(8, 0, 70f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(9, 0, 105f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(10, 0, 105f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(11, 0, 140f, 0, eKVectorType.VECTOR_TYPE_Y);
}
if (lineCountQuestion == 1)
{
timeOfBefore = timeOfChange + timeOfWaitFirst;
}
else if (lineCountQuestion == 2)
{
timeOfBefore = timeOfChange + timeOfWaitFirst + timeOfChange + timeOfWaitFirst;
}
else if (lineCountQuestion == 3)
{
timeOfBefore = timeOfChange + timeOfWaitFirst + timeOfChange + timeOfWaitFirst + timeOfChange + timeOfWait;
}
//기준이 되는 수치를 집어넣고 변경되는 경우마다 처리한다
for (int j = 0; j < 2; j++)
{
KAObject = KAScene.GetObject(j == 0 ? "name2" : "txt2");
for (int i = 0; i < 7; i++)
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, i, i, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
if (lineCountQuestion == 1)
{
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 6, timeOfBefore + timeOfChange + timeOfWaitFirst + timeOfChange + timeOfWait + timeOfChange, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 5, timeOfBefore + timeOfChange + timeOfWaitFirst + timeOfChange + timeOfWait, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 4, timeOfBefore + timeOfChange + timeOfWaitFirst + timeOfChange, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 3, timeOfBefore + timeOfChange + timeOfWaitFirst, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 2, timeOfBefore + timeOfChange, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 1, timeOfBefore, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
}
else
{
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 6, timeOfBefore + timeOfChange + timeOfWait + timeOfChange + timeOfWait + timeOfChange, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 5, timeOfBefore + timeOfChange + timeOfWait + timeOfChange + timeOfWait, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 4, timeOfBefore + timeOfChange + timeOfWait + timeOfChange, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 3, timeOfBefore + timeOfChange + timeOfWait, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 2, timeOfBefore + timeOfChange, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 1, timeOfBefore, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
}
KAObject.SetPositionKey(0, 0, -70f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(1, 0, -70f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(2, 0, -35f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(3, 0, -35f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(4, 0, 0f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(5, 0, 0f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(6, 0, 35f, 0, eKVectorType.VECTOR_TYPE_Y);
}
if (lineCountAnswer == 1)
{
KAObject = KAScene.GetObject("name1");
KAObject.SetPositionKey(7, 0, 35f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject = KAScene.GetObject("txt1");
if (lineCountQuestion == 1)
{
for (int i = 7; i < 12; i++)
KAObject.SetPositionKey(i, 0, 35f, 0, eKVectorType.VECTOR_TYPE_Y);
for (int j = 0; j < 2; j++)
{
KAObject = KAScene.GetObject(j == 0 ? "name2" : "txt2");
KAObject.SetPositionKey(6, 0, 0f, 0, eKVectorType.VECTOR_TYPE_Y);
}
}
else
{
if (lineCountQuestion == 2)
{
for (int i = 7; i < 12; i++)
KAObject.SetPositionKey(i, 0, 35f, 0, eKVectorType.VECTOR_TYPE_Y);
}
else if (lineCountQuestion == 3)
{
for (int i = 9; i < 12; i++)
KAObject.SetPositionKey(i, 0, 70f, 0, eKVectorType.VECTOR_TYPE_Y);
}
for (int j = 0; j < 2; j++)
{
KAObject = KAScene.GetObject(j == 0 ? "name2" : "txt2");
KAObject.SetPositionKey(4, 0, -35f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(5, 0, -35f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(6, 0, -35f, 0, eKVectorType.VECTOR_TYPE_Y);
}
}
timeOfBefore += lineCountQuestion == 1 ? 2 * (timeOfChange + timeOfWait) : timeOfChange + timeOfWait;
}
else if (lineCountAnswer == 2)
{
for (int j = 0; j < 2; j++)
{
KAObject = KAScene.GetObject(j == 0 ? "name2" : "txt2");
KAObject.SetPositionKey(6, 0, 0f, 0, eKVectorType.VECTOR_TYPE_Y);
}
//name1과 txt1의 위치를 조절해야 한다.
KAObject = KAScene.GetObject("name1");
KAObject.SetPositionKey(7, 0, 35f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject = KAScene.GetObject("txt1");
if (lineCountQuestion == 1)
{
for (int i = 7; i < 12; i++)
KAObject.SetPositionKey(i, 0, 35f, 0, eKVectorType.VECTOR_TYPE_Y);
}
else if (lineCountQuestion == 2)
{
for (int i = 9; i < 12; i++)
KAObject.SetPositionKey(i, 0, 70f, 0, eKVectorType.VECTOR_TYPE_Y);
}
else if (lineCountQuestion == 3)
{
KAObject.SetPositionKey(11, 0, 105f, 0, eKVectorType.VECTOR_TYPE_Y);
}
timeOfBefore += timeOfChange + timeOfWait + timeOfChange + timeOfWait;
}
else if (lineCountAnswer == 3)
{
//3줄다 기록된 경우
if (lineCountQuestion == 1)
{
timeOfBefore += timeOfChange + timeOfWaitFirst + timeOfChange + timeOfWait + timeOfChange + timeOfWait;
}
else
{
timeOfBefore += timeOfChange + timeOfWait + timeOfChange + timeOfWait + timeOfChange + timeOfWait;
}
KAObject = KAScene.GetObject("name1");
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 7, timeOfBefore - timeOfWait, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 6, timeOfBefore - timeOfWait - timeOfChange, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
}
KAObject = KAScene.GetObject("name1");
KAObject.SetStyleColor(getColor(lbl_color_1));
KAObject.SetValue(strs[0]);
KAObject = KAScene.GetObject("txt1_1");
KAObject.SetStyleColor(getColor(lbl_color_2));
KAObject.SetValue(strs[1]);
KAObject = KAScene.GetObject("txt1_2");
KAObject.SetStyleColor(getColor(lbl_color_2));
KAObject.SetValue(strs[2]);
KAObject = KAScene.GetObject("txt1_3");
KAObject.SetStyleColor(getColor(lbl_color_2));
KAObject.SetValue(strs[3]);
KAObject = KAScene.GetObject("name2");
KAObject.SetStyleColor(getColor(lbl_color_3));
KAObject.SetValue(strs[4]);
KAObject = KAScene.GetObject("txt2_1");
KAObject.SetStyleColor(getColor(lbl_color_4));
KAObject.SetValue(strs[5]);
KAObject = KAScene.GetObject("txt2_2");
KAObject.SetStyleColor(getColor(lbl_color_4));
KAObject.SetValue(strs[6]);
KAObject = KAScene.GetObject("txt2_3");
KAObject.SetStyleColor(getColor(lbl_color_4));
KAObject.SetValue(strs[7]);
//경우의 수를 통한 표출 텍스트 정보를 저장
for (int i = 0; i < aliveLiveChatText.Length; i++)
{
aliveLiveChatText[i] = "";
}
if (lineCountAnswer == 3)
{
aliveLiveChatText[0] = strs[4];
aliveLiveChatText[1] = strs[5];
aliveLiveChatText[3] = strs[6];
aliveLiveChatText[5] = strs[7];
}
else if (lineCountAnswer == 2)
{
aliveLiveChatText[0] = strs[0];
aliveLiveChatText[1] = strs[lineCountQuestion];
aliveLiveChatText[2] = strs[4];
aliveLiveChatText[3] = strs[5];
aliveLiveChatText[5] = strs[6];
}
else if (lineCountAnswer == 1)
{
aliveLiveChatText[0] = strs[0];
if (lineCountQuestion == 1)
{
aliveLiveChatText[1] = strs[1];
aliveLiveChatText[2] = strs[4];
aliveLiveChatText[3] = strs[5];
}
else if (lineCountQuestion == 2)
{
aliveLiveChatText[1] = strs[1];
aliveLiveChatText[3] = strs[2];
aliveLiveChatText[4] = strs[4];
aliveLiveChatText[5] = strs[5];
}
else if (lineCountQuestion == 3)
{
aliveLiveChatText[1] = strs[2];
aliveLiveChatText[3] = strs[3];
aliveLiveChatText[4] = strs[4];
aliveLiveChatText[5] = strs[5];
}
}
}
else if (dispLines == 4)
{
//구조체를 생성 값을 넣고 계산하고 동작하게 진행하는 방식
//시작점의 위치를 입력 => 보여지는 영역인 경우 텍스트 마지막 글자까지 남아있다 올라가는 방식으로 진행
// 해당알고리즘을 진행하는 방식을 어떻게 적용할 것인가?!
//텍스트 위치를 정렬
int lineCountQuestion = 3;
int lineCountAnswer = 3;
//텍스트 값 변경
KAObject = KAScene.GetObject("name1");
KAObject.SetStyleColor(getColor(lbl_color_1));
KAObject.SetValue(strs[0]);
KAObject = KAScene.GetObject("name2");
KAObject.SetStyleColor(getColor(lbl_color_3));
KAObject.SetValue(strs[4]);
List<string> txts = new List<string>();
lineCountQuestion = 0;
lineCountAnswer = 0;
for (int i = 1; i < 8; i++)
{
if (i != 4 && strs[i].Trim() != "")
{
if (i < 4)
{
lineCountQuestion++;
}
else
{
lineCountAnswer++;
}
txts.Add(strs[i]);
}
}
for (int i = 0; i < 6; i++)
{
if (i < txts.Count)
{
KAObject = KAScene.GetObject("txt1_" + (i + 1));
KAObject.SetStyleColor(getColor(i < lineCountQuestion ? lbl_color_2 : lbl_color_4));
KAObject.SetValue(txts[i]);
}
else
{
KAObject = KAScene.GetObject("txt1_" + (i + 1));
KAObject.SetValue("");
}
}
//기본 시간 계산
int timeOfWaitFirst = 1;
bool FirstChecker = true;
for (int i = 0; i < 8; i++)
{
if (aliveLiveChatText[i].Trim() != "") FirstChecker = false;
}
if (!FirstChecker) timeOfWaitFirst = timeOfWait;
//Name,Text 위치 및 시간계산
for (int j = 0; j < 3; j++)
{
KAObject = KAScene.GetObject(j == 0 ? "name1" : j == 1 ? "txts" : "name2");
for (int i = 0; i < 12; i++)
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, i, i, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 11, timeOfChange + timeOfWaitFirst + timeOfChange + timeOfWaitFirst + timeOfChange + timeOfWaitFirst + timeOfChange + timeOfWait + timeOfChange + timeOfWait + timeOfChange, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 10, timeOfChange + timeOfWaitFirst + timeOfChange + timeOfWaitFirst + timeOfChange + timeOfWaitFirst + timeOfChange + timeOfWait + timeOfChange + timeOfWait, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 9, timeOfChange + timeOfWaitFirst + timeOfChange + timeOfWaitFirst + timeOfChange + timeOfWaitFirst + timeOfChange + timeOfWait + timeOfChange, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 8, timeOfChange + timeOfWaitFirst + timeOfChange + timeOfWaitFirst + timeOfChange + timeOfWaitFirst + timeOfChange + timeOfWait, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 7, timeOfChange + timeOfWaitFirst + timeOfChange + timeOfWaitFirst + timeOfChange + timeOfWaitFirst + timeOfChange, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 6, timeOfChange + timeOfWaitFirst + timeOfChange + timeOfWaitFirst + timeOfChange + timeOfWaitFirst, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 5, timeOfChange + timeOfWaitFirst + timeOfChange + timeOfWaitFirst + timeOfChange, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 4, timeOfChange + timeOfWaitFirst + timeOfChange + timeOfWaitFirst, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 3, timeOfChange + timeOfWaitFirst + timeOfChange, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 2, timeOfChange + timeOfWaitFirst, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 1, timeOfChange, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
if (j != 2)
{
for (int i = 0; i < 12; i++)
{
float yPos = (30 * ((i + 1) / 2)) - 85;
if (j == 0) yPos += 15; //name
else
{
if (lineCountAnswer + lineCountQuestion < 5 && i > 8)
{
yPos = 30 * 4 - 85;
}
else if (lineCountAnswer + lineCountQuestion == 5 && i > 9)
{
yPos = 30 * 5 - 85;
}
}
KAObject.SetPositionKey(i, 0, yPos, 0, eKVectorType.VECTOR_TYPE_Y);
Console.WriteLine("YPos Name1 : " + yPos);
}
}
else //name2
{
for (int i = 0; i < 12; i++)
{
float yPos = (30 * ((i + 1) / 2)) - 70;
yPos += lineCountQuestion * -30;
//가장아래에 있는 경우
if (lineCountQuestion == 3 && lineCountAnswer == 1)
{
if (yPos > -40) yPos = -40;
}
else if ((lineCountQuestion == 2 && lineCountAnswer == 1) ||
(lineCountQuestion == 2 && lineCountAnswer == 2) ||
(lineCountQuestion == 3 && lineCountAnswer == 2))
{
if (yPos > -10) yPos = -10;
}
else
{
if (yPos > 20) yPos = 20;
}
KAObject.SetPositionKey(i, 0, yPos, 0, eKVectorType.VECTOR_TYPE_Y);
Console.WriteLine("YPos Name2 : " + yPos);
}
}
}
//이전 텍스트 처리
bool isReply = false;
for (int i = 0; i < 8; i++)
{
if (i == 0)
{
KAObject = KAScene.GetObject("name0_1");
KAObject.SetValue(aliveLiveChatText[0]);
KAObject.SetStyleColor(getColor(lbl_color_1));
KAObject = KAScene.GetObject("name0_2");
KAObject.SetValue("");
}
else if (i % 2 == 0)
{
if (aliveLiveChatText[i].Trim() != "")
{
isReply = true;
KAObject = KAScene.GetObject("name0_2");
KAObject.SetValue(aliveLiveChatText[i]);
KAObject.SetStyleColor(getColor(lbl_color_3));
}
}
else
{
KAObject = KAScene.GetObject("txt0_" + (i / 2 + 1));
KAObject.SetValue(aliveLiveChatText[i]);
KAObject.SetStyleColor(getColor(isReply ? lbl_color_4 : lbl_color_2));
}
}
int beforeTextReplayPos()
{
if (aliveLiveChatText[6].Trim() != "") return 4;
else if (aliveLiveChatText[4].Trim() != "") return 3;
else if (aliveLiveChatText[2].Trim() != "") return 2;
else return 0;
}
int beforeTextReplayCount()
{
if (aliveLiveChatText[6].Trim() != "") return 1;
else if (aliveLiveChatText[4].Trim() != "")
{
return aliveLiveChatText[7].Trim() == "" ? 1 : 2;
}
else if (aliveLiveChatText[2].Trim() != "")
{
if (aliveLiveChatText[7].Trim() != "") return 3;
else if (aliveLiveChatText[5].Trim() != "") return 2;
else return 1;
}
else return 0;
}
string[] keyNames = { "group0", "", "name0_1t", "name0_2t" };
foreach (var k in keyNames)
{
KAObject = KAScene.GetObject(k);
for (int i = 0; i < 8; i++)
{
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, i, i, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
}
}
int blankCount = 0;
if (aliveLiveChatText[7] == "")
{
blankCount++;
if (aliveLiveChatText[5] == "") blankCount++;
}
int blankWait = 0;
for (int i = 0; i < blankCount; i++) blankWait += timeOfChange + timeOfWaitFirst;
foreach (var k in keyNames)
{
KAObject = KAScene.GetObject(k);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 7, blankWait + timeOfChange + timeOfWaitFirst + timeOfChange + timeOfWaitFirst + timeOfChange + timeOfWaitFirst + timeOfChange, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 6, blankWait + timeOfChange + timeOfWaitFirst + timeOfChange + timeOfWaitFirst + timeOfChange + timeOfWaitFirst, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 5, blankWait + timeOfChange + timeOfWaitFirst + timeOfChange + timeOfWaitFirst + timeOfChange, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 4, blankWait + timeOfChange + timeOfWaitFirst + timeOfChange + timeOfWaitFirst, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 3, blankWait + timeOfChange + timeOfWaitFirst + timeOfChange, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 2, blankWait + timeOfChange + timeOfWaitFirst, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 1, blankWait + timeOfChange, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 0, blankWait, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
}
KAObject = KAScene.GetObject("group0");
for (int i = 0; i < 8; i++)
{
float yPos = (30 * ((i + 1) / 2));
KAObject.SetPositionKey(i, 0, yPos, 0, eKVectorType.VECTOR_TYPE_Y);
}
KAObject = KAScene.GetObject("name0_1t");
for (int i = 0; i < 8; i++)
{
float yPos = (30 * ((i + 1) / 2));
if (beforeTextReplayPos() == 2)
{ }
else if (beforeTextReplayPos() == 3)
{
yPos -= 30;
}
else if (beforeTextReplayPos() == 4)
{
yPos -= 60;
}
if (yPos < 0) yPos = 0;
KAObject.SetPositionKey(i, 0, yPos, 0, eKVectorType.VECTOR_TYPE_Y);
}
KAObject = KAScene.GetObject("name0_2t");
int countOfZero = 0;
for (int i = 0; i < 8; i++)
{
float yPos = (30 * ((i + 1) / 2));
yPos -= (beforeTextReplayPos() - 1) * 30;
if (yPos > 0)
{
countOfZero++;
if (countOfZero <= (beforeTextReplayCount() - 1) * 2) yPos = 0;
if (yPos > 0) yPos = 30;
}
KAObject.SetPositionKey(i, 0, yPos, 0, eKVectorType.VECTOR_TYPE_Y);
}
//보이는 값 저장하기
for (int i = 0; i < aliveLiveChatText.Length; i++)
{
aliveLiveChatText[i] = "";
}
txts.Reverse();
for (int i = 0; i < 4; i++)
{
if (txts.Count > i) aliveLiveChatText[7 - (i * 2)] = txts[i];
}
for (int i = 0; i < 2; i++)
{
if (aliveLiveChatText[1].Trim() == "")
{
aliveLiveChatText[1] = aliveLiveChatText[3];
aliveLiveChatText[3] = aliveLiveChatText[5];
aliveLiveChatText[5] = aliveLiveChatText[7];
aliveLiveChatText[7] = "";
}
}
aliveLiveChatText[0] = strs[0];
if (lineCountQuestion == 3 && lineCountAnswer == 1)
{
aliveLiveChatText[6] = strs[4];
}
else if ((lineCountQuestion == 2 && lineCountAnswer == 1) ||
(lineCountQuestion == 2 && lineCountAnswer == 2) ||
(lineCountQuestion == 3 && lineCountAnswer == 2))
{
aliveLiveChatText[4] = strs[4];
}
else
{
aliveLiveChatText[2] = strs[4];
}
// 기본적으로 위로 올라가는 시간
for (int i = 0; i < 4; i++)
{
timeOfBefore += timeOfWaitFirst + timeOfChange;
}
for (int i = 0; i < lineCountQuestion + lineCountAnswer - 4; i++)
{
timeOfBefore += timeOfWait + timeOfChange;
}
}
else if (dispLines == 0 || dispLines == 1)
{
timeOfChange = 1;
string = strs[13];
bool hasBeforeScene = false;
bool hasBeforeScene2 = false;
bool hasBeforeScene3 = false;
bool hasBeforeScene4 = false;
//기존 텍스트 존재 검사
if (!isNullArray(aliveLiveChatText4))
{
hasBeforeScene = true;
hasBeforeScene2 = true;
hasBeforeScene3 = true;
hasBeforeScene4 = true;
}
else if (!isNullArray(aliveLiveChatText3))
{
hasBeforeScene = true;
hasBeforeScene2 = true;
hasBeforeScene3 = true;
}
else if (!isNullArray(aliveLiveChatText2))
{
//존재한다 좆됐다!
hasBeforeScene = true;
hasBeforeScene2 = true;
}
else if (!isNullArray(aliveLiveChatText))
{
//존재한다 좆됐다!
hasBeforeScene = true;
}
//말풍선 색상 변경
KAScene.GetObject("txtbox1").SetStyleColor(getColor(lbl_color_5));
KAScene.GetObject("txtbox2").SetStyleColor(getColor(lbl_color_6));
if (hasBeforeScene)
{
KAScene.GetObject("txtbox3").SetStyleColor(getColor(lbl_color_5));
KAScene.GetObject("txtbox4").SetStyleColor(getColor(lbl_color_6));
}
if (hasBeforeScene2)
{
KAScene.GetObject("txtbox5").SetStyleColor(getColor(lbl_color_5));
KAScene.GetObject("txtbox6").SetStyleColor(getColor(lbl_color_6));
}
if (hasBeforeScene3)
{
KAScene.GetObject("txtbox7").SetStyleColor(getColor(lbl_color_5));
KAScene.GetObject("txtbox8").SetStyleColor(getColor(lbl_color_6));
}
if (hasBeforeScene4)
{
KAScene.GetObject("txtbox9").SetStyleColor(getColor(lbl_color_5));
KAScene.GetObject("txtbox10").SetStyleColor(getColor(lbl_color_6));
}
//텍스트 값 변경 - 작성자
KAObject = KAScene.GetObject("name1");
KAObject.SetStyleColor(getColor(lbl_color_1));
KAObject.SetValue(strs[0]);
KAObject = KAScene.GetObject("name2");
KAObject.SetStyleColor(getColor(lbl_color_3));
KAObject.SetValue(strs[4]);
bool[] = { false, false, false, false, false, false, false, false, false, false, false };
void (string , string )
{
int index = Convert.ToInt32(.Replace("name", ""));
if (.Contains("undefined") || .Substring(.Length - 2).Equals("_"))
{
KAObject = KAScene.GetObject();
KAObject.SetPosition(-100, 0, 0, eKVectorType.VECTOR_TYPE_X);
KAObject = KAScene.GetObject( + "Icon");
KAObject.SetVisible(0);
}
else
{
KAObject = KAScene.GetObject();
KAObject.SetPosition(-40, 0, 0, eKVectorType.VECTOR_TYPE_X);
KAObject = KAScene.GetObject( + "Icon");
KAObject.SetValue(getIconPath(, true, true));
KAObject.SetImageOriginalSize();
KAObject.SetVisible(1);
[index] = true;
}
}
("name2", );
if (hasBeforeScene)
{
KAObject = KAScene.GetObject("name3");
KAObject.SetStyleColor(getColor(lbl_color_1));
KAObject.SetValue(aliveLiveChatText[0]);
KAObject = KAScene.GetObject("name4");
KAObject.SetStyleColor(getColor(lbl_color_3));
KAObject.SetValue(aliveLiveChatText[4]);
("name4", aliveLiveChatText[8]);
}
if (hasBeforeScene2)
{
KAObject = KAScene.GetObject("name5");
KAObject.SetStyleColor(getColor(lbl_color_1));
KAObject.SetValue(aliveLiveChatText2[0]);
KAObject = KAScene.GetObject("name6");
KAObject.SetStyleColor(getColor(lbl_color_3));
KAObject.SetValue(aliveLiveChatText2[4]);
("name6", aliveLiveChatText2[8]);
}
if (hasBeforeScene3)
{
KAObject = KAScene.GetObject("name7");
KAObject.SetStyleColor(getColor(lbl_color_1));
KAObject.SetValue(aliveLiveChatText3[0]);
KAObject = KAScene.GetObject("name8");
KAObject.SetStyleColor(getColor(lbl_color_3));
KAObject.SetValue(aliveLiveChatText3[4]);
("name8", aliveLiveChatText3[8]);
}
if (hasBeforeScene4)
{
KAObject = KAScene.GetObject("name9");
KAObject.SetStyleColor(getColor(lbl_color_1));
KAObject.SetValue(aliveLiveChatText4[0]);
KAObject = KAScene.GetObject("name10");
KAObject.SetStyleColor(getColor(lbl_color_3));
KAObject.SetValue(aliveLiveChatText4[4]);
("name10", aliveLiveChatText4[8]);
}
//기본 시간 계산
int timeOfWaitFirst = 1;
bool FirstChecker = true;
for (int i = 0; i < 8; i++)
{
if (aliveLiveChatText[i].Trim() != "") FirstChecker = false;
}
if (!FirstChecker) timeOfWaitFirst = timeOfWait;
int[] = new int[11];
int = 0;
[0] = 0;
for (int i = 1; i < 11; i++)
{
int = i % 2 == 1 ? timeOfChange : timeOfWait;
[i] = [i - 1] + ;
}
//Animation 정렬 초기화
for (int j = 0; j < 2; j++)
{
KAObject = j == 0 ? KAScene.GetObject("boxs") : KAScene.GetObject("boxs2");
for (int i = 0; i < 11; i++) KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, i, i, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
//설정된 프레임 시간 맞추기
for (int i = 10; i > -1; i--)
{
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, i, [i], eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
}
}
//이모지 정보 저장용
List<Emoji> emojis = new List<Emoji>();
//큰아이콘 정보 저장용
List<LargeIcon> largeIcons = new List<LargeIcon>();
//사진아이콘 정보 저장용
List<PhotoIcon> photoIcons = new List<PhotoIcon>();
List<Emoji> beforeEmojis = new List<Emoji>();
List<LargeIcon> beforeLargeIcons = new List<LargeIcon>();
List<PhotoIcon> beforePhotoIcons = new List<PhotoIcon>();
List<Emoji> beforeEmojis2 = new List<Emoji>();
List<LargeIcon> beforeLargeIcons2 = new List<LargeIcon>();
List<PhotoIcon> beforePhotoIcons2 = new List<PhotoIcon>();
List<Emoji> beforeEmojis3 = new List<Emoji>();
List<LargeIcon> beforeLargeIcons3 = new List<LargeIcon>();
List<PhotoIcon> beforePhotoIcons3 = new List<PhotoIcon>();
List<Emoji> beforeEmojis4 = new List<Emoji>();
List<LargeIcon> beforeLargeIcons4 = new List<LargeIcon>();
List<PhotoIcon> beforePhotoIcons4 = new List<PhotoIcon>();
//표출 말풍선 정보
int QLines = strs[3].Trim() != "" ? 3 : strs[2].Trim() != "" ? 2 : 1;
int ALines = strs[7].Trim() != "" ? 3 : strs[6].Trim() != "" ? 2 : 1;
string txtQ = setTxt(new string[] { strs[1], strs[2], strs[3] }, true, 0);
string txtA = setTxt(new string[] { strs[5], strs[6], strs[7] }, false, 0);
if (txtQ.Replace(Environment.NewLine, "").Trim().Equals("")) QLines = 0;
if (txtA.Replace(Environment.NewLine, "").Trim().Equals("")) ALines = 0;
int beforeQLines = aliveLiveChatText[3].Trim() != "" ? 3 : aliveLiveChatText[2].Trim() != "" ? 2 : 1;
int beforeALines = aliveLiveChatText[7].Trim() != "" ? 3 : aliveLiveChatText[6].Trim() != "" ? 2 : 1;
string beforetxtQ = setTxt(new string[] { aliveLiveChatText[1], aliveLiveChatText[2], aliveLiveChatText[3] }, true, 1);
string beforetxtA = setTxt(new string[] { aliveLiveChatText[5], aliveLiveChatText[6], aliveLiveChatText[7] }, false, 1);
if (beforetxtQ.Replace(Environment.NewLine, "").Trim().Equals("")) beforeQLines = 0;
if (beforetxtA.Replace(Environment.NewLine, "").Trim().Equals("")) beforeALines = 0;
int beforeQLines2 = aliveLiveChatText2[3].Trim() != "" ? 3 : aliveLiveChatText2[2].Trim() != "" ? 2 : 1;
int beforeALines2 = aliveLiveChatText2[7].Trim() != "" ? 3 : aliveLiveChatText2[6].Trim() != "" ? 2 : 1;
string beforetxtQ2 = setTxt(new string[] { aliveLiveChatText2[1], aliveLiveChatText2[2], aliveLiveChatText2[3] }, true, 2);
string beforetxtA2 = setTxt(new string[] { aliveLiveChatText2[5], aliveLiveChatText2[6], aliveLiveChatText2[7] }, false, 2);
if (beforetxtQ2.Replace(Environment.NewLine, "").Trim().Equals("")) beforeQLines2 = 0;
if (beforetxtA2.Replace(Environment.NewLine, "").Trim().Equals("")) beforeALines2 = 0;
int beforeQLines3 = aliveLiveChatText3[3].Trim() != "" ? 3 : aliveLiveChatText3[2].Trim() != "" ? 2 : 1;
int beforeALines3 = aliveLiveChatText3[7].Trim() != "" ? 3 : aliveLiveChatText3[6].Trim() != "" ? 2 : 1;
string beforetxtQ3 = setTxt(new string[] { aliveLiveChatText3[1], aliveLiveChatText3[2], aliveLiveChatText3[3] }, true, 3);
string beforetxtA3 = setTxt(new string[] { aliveLiveChatText3[5], aliveLiveChatText3[6], aliveLiveChatText3[7] }, false, 3);
if (beforetxtQ3.Replace(Environment.NewLine, "").Trim().Equals("")) beforeQLines3 = 0;
if (beforetxtA3.Replace(Environment.NewLine, "").Trim().Equals("")) beforeALines3 = 0;
int beforeQLines4 = aliveLiveChatText4[3].Trim() != "" ? 3 : aliveLiveChatText4[2].Trim() != "" ? 2 : 1;
int beforeALines4 = aliveLiveChatText4[7].Trim() != "" ? 3 : aliveLiveChatText4[6].Trim() != "" ? 2 : 1;
string beforetxtQ4 = setTxt(new string[] { aliveLiveChatText4[1], aliveLiveChatText4[2], aliveLiveChatText4[3] }, true, 4);
string beforetxtA4 = setTxt(new string[] { aliveLiveChatText4[5], aliveLiveChatText4[6], aliveLiveChatText4[7] }, false, 4);
if (beforetxtQ4.Replace(Environment.NewLine, "").Trim().Equals("")) beforeQLines4 = 0;
if (beforetxtA4.Replace(Environment.NewLine, "").Trim().Equals("")) beforeALines4 = 0;
string setTxt(string[] inputs, bool isQuestion, int isBeFore)
{
//이모지존재 체크
for (int i = 0; i < 3; i++) inputs[i] = CheckEmoji(inputs[i], isQuestion, i + 1, isBeFore);
string txt = inputs[0];
if (inputs[1].Trim() != "") txt += Environment.NewLine + inputs[1];
if (inputs[2].Trim() != "") txt += Environment.NewLine + inputs[2];
return txt;
}
int calculGapOfX(string txt)
{
int posX = 0;
//영문 또는 숫자인 경우 절반만 적용하는 방식을 적용해 본다
foreach (char v in txt)
{
//length * 25
if ((0xAC00 <= v && v <= 0xD7A3) || (0x3131 <= v && v <= 0x318E)) posX += 25;
else if (Char.IsWhiteSpace(v)) posX += 5;
else posX += 15;
}
return posX;
}
string CheckEmoji(string str, bool isQuestion, int line, int isBefore)
{
while (str.Contains("[PH:"))
{
int indexOfSI = str.IndexOf("[PH:");
int indexOfEOF = str.Substring(indexOfSI).IndexOf("]") + indexOfSI;
int gapOfX = 0;
string ImgName = str.Substring(indexOfSI + 4, indexOfEOF - indexOfSI - 4);
str = str.Remove(indexOfSI, indexOfEOF - indexOfSI + 1);
bool hasContents = true;
if (line == 1) if (str.Trim().Equals("")) hasContents = false;
PhotoIcon photoIcon = new PhotoIcon(isQuestion, hasContents, false, ImgName);
if (isBefore == 4) beforePhotoIcons4.Add(photoIcon);
else if (isBefore == 3) beforePhotoIcons3.Add(photoIcon);
else if (isBefore == 2) beforePhotoIcons2.Add(photoIcon);
else if (isBefore == 1) beforePhotoIcons.Add(photoIcon);
else photoIcons.Add(photoIcon);
}
while (str.Contains("[LI:"))
{
int indexOfSI = str.IndexOf("[LI:");
int indexOfEOF = str.Substring(indexOfSI).IndexOf("]") + indexOfSI;
int gapOfX = 0;
string ImgName = str.Substring(indexOfSI + 4, indexOfEOF - indexOfSI - 4);
str = str.Remove(indexOfSI, indexOfEOF - indexOfSI + 1);
bool hasContents = true;
if (line == 1) if (str.Trim().Equals("")) hasContents = false;
LargeIcon largeIcon = new LargeIcon(isQuestion, hasContents, false, ImgName);
if (isBefore == 4) beforeLargeIcons4.Add(largeIcon);
else if (isBefore == 3) beforeLargeIcons3.Add(largeIcon);
else if (isBefore == 2) beforeLargeIcons2.Add(largeIcon);
else if (isBefore == 1) beforeLargeIcons.Add(largeIcon);
else largeIcons.Add(largeIcon);
}
while (str.Contains("[CI:"))
{
int indexOfSI = str.IndexOf("[CI:");
int indexOfEOF = str.Substring(indexOfSI).IndexOf("]") + indexOfSI;
int gapOfX = 0;
string ImgName = str.Substring(indexOfSI + 4, indexOfEOF - indexOfSI - 4);
str = str.Remove(indexOfSI, indexOfEOF - indexOfSI + 1);
bool hasContents = true;
if (line == 1) if (str.Trim().Equals("")) hasContents = false;
LargeIcon largeIcon = new LargeIcon(isQuestion, hasContents, true, ImgName);
if (isBefore == 4) beforeLargeIcons4.Add(largeIcon);
else if (isBefore == 3) beforeLargeIcons3.Add(largeIcon);
else if (isBefore == 2) beforeLargeIcons2.Add(largeIcon);
else if (isBefore == 1) beforeLargeIcons.Add(largeIcon);
else largeIcons.Add(largeIcon);
}
while (str.Contains("[SI:"))
{
int indexOfSI = str.IndexOf("[SI:");
int indexOfEOF = str.Substring(indexOfSI).IndexOf("]") + indexOfSI;
int gapOfX = 0;
if (isQuestion)
{
gapOfX = 155; //오른쪽
//gapOfX += -calculGapOfX(str.Substring(0, indexOfSI));
}
else
{
gapOfX = -125; //왼쪽
gapOfX += calculGapOfX(str.Substring(0, indexOfSI));
//최대값 넣어야함
if (gapOfX > 125) gapOfX = 125;
}
string ImgName = str.Substring(indexOfSI + 4, indexOfEOF - indexOfSI - 4);
str = str.Remove(indexOfSI, indexOfEOF - indexOfSI + 1);
str = str.Insert(indexOfSI, " ");
Emoji emoji = new Emoji(isQuestion, line, gapOfX, ImgName);
if (isBefore == 4) beforeEmojis4.Add(emoji);
else if (isBefore == 3) beforeEmojis3.Add(emoji);
else if (isBefore == 2) beforeEmojis2.Add(emoji);
else if (isBefore == 1) beforeEmojis.Add(emoji);
else emojis.Add(emoji);
}
return str;
}
KAScene.GetObject("txt1").SetValue(txtQ);
KAScene.GetObject("txt2").SetValue(txtA);
if (hasBeforeScene)
{
KAScene.GetObject("txt3").SetValue(beforetxtQ);
KAScene.GetObject("txt4").SetValue(beforetxtA);
}
if (hasBeforeScene2)
{
KAScene.GetObject("txt5").SetValue(beforetxtQ2);
KAScene.GetObject("txt6").SetValue(beforetxtA2);
}
if (hasBeforeScene3)
{
KAScene.GetObject("txt7").SetValue(beforetxtQ3);
KAScene.GetObject("txt8").SetValue(beforetxtA3);
}
if (hasBeforeScene4)
{
KAScene.GetObject("txt9").SetValue(beforetxtQ4);
KAScene.GetObject("txt10").SetValue(beforetxtA4);
}
//아이콘 Visible Setting
for (int i = 1; i < 11; i++)
{
KAScene.GetObject("img" + i).SetVisible(0);
KAScene.GetObject("img" + i + "_가로형").SetVisible(0);
KAScene.GetObject("img" + i + "_정사각").SetVisible(0);
KAScene.GetObject("img" + i + "_세로형").SetVisible(0);
for (int j = 1; j < 6; j++) KAScene.GetObject("emoji" + i + "_" + j).SetVisible(0);
}
//이모지 표출을 위치 계산
//path4_0 의 경로 내부의 icon값을 토대로 정의한다
string getIconPath(string fileName, bool isEmoji, bool isCharecter)
{
var directory = Path.GetDirectoryName(path4_0);
var path = "";
if (isCharecter)
{
if (isEmoji) path = directory + @"\character\" + fileName + "_60.png";
else path = directory + @"\character\" + fileName + "_120.png";
}
else
{
if (isEmoji) path = directory + @"\icons_small\" + fileName + "_s.png";
else path = directory + @"\icons\" + fileName + ".png";
}
return path;
}
//임시 - X값 계산 수식을 다시 정해야함..
int emojiQ = 0;
int emojiA = 0;
foreach (var emoji in emojis)
{
string tag = "";
if (emoji.isQuestion)
{
emojiQ++;
tag = "emoji1_" + emojiQ;
}
else
{
emojiA++;
tag = "emoji2_" + emojiA;
}
int[] Ypos = new int[] { 0, -10, -40, -70 };
KAObject = KAScene.GetObject(tag);
KAObject.SetPosition(emoji.gapOfX, Ypos[emoji.line], 0, eKVectorType.VECTOR_TYPE_XY);
//path4_0 의 경로 내부의 icon값을 토대로 정의한다
KAObject.SetValue(getIconPath(emoji.value, true, false));
KAObject.SetVisible(1);
}
if (hasBeforeScene)
{
emojiQ = 0;
emojiA = 0;
foreach (var emoji in beforeEmojis)
{
string tag = "";
if (emoji.isQuestion)
{
emojiQ++;
tag = "emoji3_" + emojiQ;
}
else
{
emojiA++;
tag = "emoji4_" + emojiA;
}
int[] Ypos = new int[] { 0, -12, -42, -72 };
KAObject = KAScene.GetObject(tag);
KAObject.SetPosition(emoji.gapOfX, Ypos[emoji.line], 0, eKVectorType.VECTOR_TYPE_XY);
//path4_0 의 경로 내부의 icon값을 토대로 정의한다
KAObject.SetValue(getIconPath(emoji.value, true, false));
KAObject.SetVisible(1);
}
}
if (hasBeforeScene2)
{
emojiQ = 0;
emojiA = 0;
foreach (var emoji in beforeEmojis2)
{
string tag = "";
if (emoji.isQuestion)
{
emojiQ++;
tag = "emoji5_" + emojiQ;
}
else
{
emojiA++;
tag = "emoji6_" + emojiA;
}
int[] Ypos = new int[] { 0, -12, -42, -72 };
KAObject = KAScene.GetObject(tag);
KAObject.SetPosition(emoji.gapOfX, Ypos[emoji.line], 0, eKVectorType.VECTOR_TYPE_XY);
//path4_0 의 경로 내부의 icon값을 토대로 정의한다
KAObject.SetValue(getIconPath(emoji.value, true, false));
KAObject.SetVisible(1);
}
}
if (hasBeforeScene3)
{
emojiQ = 0;
emojiA = 0;
foreach (var emoji in beforeEmojis3)
{
string tag = "";
if (emoji.isQuestion)
{
emojiQ++;
tag = "emoji7_" + emojiQ;
}
else
{
emojiA++;
tag = "emoji8_" + emojiA;
}
int[] Ypos = new int[] { 0, -12, -42, -72 };
KAObject = KAScene.GetObject(tag);
KAObject.SetPosition(emoji.gapOfX, Ypos[emoji.line], 0, eKVectorType.VECTOR_TYPE_XY);
//path4_0 의 경로 내부의 icon값을 토대로 정의한다
KAObject.SetValue(getIconPath(emoji.value, true, false));
KAObject.SetVisible(1);
}
}
if (hasBeforeScene4)
{
emojiQ = 0;
emojiA = 0;
foreach (var emoji in beforeEmojis3)
{
string tag = "";
if (emoji.isQuestion)
{
emojiQ++;
tag = "emoji9_" + emojiQ;
}
else
{
emojiA++;
tag = "emoji10_" + emojiA;
}
int[] Ypos = new int[] { 0, -12, -42, -72 };
KAObject = KAScene.GetObject(tag);
KAObject.SetPosition(emoji.gapOfX, Ypos[emoji.line], 0, eKVectorType.VECTOR_TYPE_XY);
//path4_0 의 경로 내부의 icon값을 토대로 정의한다
KAObject.SetValue(getIconPath(emoji.value, true, false));
KAObject.SetVisible(1);
}
}
//텍스트 라인 수에 따른 위치 조절
KAObject = KAScene.GetObject("boxs");
//시작값 -400
int keyIndex = 0;
int Y값 = -400;
int Y값위치기본 = 620;
int Y값위치 = 620;
int Y값 = Convert.ToInt32(textBox10.Text); //80;//75;
int = Convert.ToInt32(txt답변값.Text);
int = Convert.ToInt32(textBox11.Text); // 35;
int 1 = Convert.ToInt32(textBox12.Text); // 30;
int Y값 = Convert.ToInt32(textBox13.Text); //130;
int Y값 = 330;
int = 500;
int Y값 = 0;
bool = false;
List<int> 500 = new List<int>();
for (int i = 1; i < 11; i++)
{
KAScene.GetObject("box" + i).SetVisible(0);
KAScene.GetObject("txtbox" + i).SetVisible(0);
}
void SetBox(string boxName, int Lines, bool areadyShown)
{
KAScene.GetObject("txt" + boxName).SetVisible(1);
KAObject = KAScene.GetObject(boxName);
KAObject.SetVisible(1);
KAObject.SetPosition(0, Y값위치, 0, eKVectorType.VECTOR_TYPE_Y);
int = Convert.ToInt32(boxName.Replace("box", ""));
int = Y값 + (1 * Lines); ;
//답변자아이콘 추가에 따른 값
if ( % 2 == 0)
{
if ([])
{
//답변이 있는 경우
+= ;
float Y컨텐츠 = (float)-10.5 - ;
KAScene.GetObject("boxContents" + ).SetPosition(0, Y컨텐츠, 0, eKVectorType.VECTOR_TYPE_Y);
}
else
{
//답변이 없는 경우
float Y컨텐츠 = (float)-10.5;
KAScene.GetObject("boxContents" + ).SetPosition(0, Y컨텐츠, 0, eKVectorType.VECTOR_TYPE_Y);
}
}
//box 측면에서 보이게 하는 값 설정 - 임시 이미 보이는 상태라면 바로 보이도록 변경해야함
if (areadyShown || Y값 > )
{
KAObject.SetPositionKey(0, (float)-16.5, 0, 0, eKVectorType.VECTOR_TYPE_X);
KAObject.SetPositionKey(1, (float)-16.5, 0, 0, eKVectorType.VECTOR_TYPE_X);
//KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_X, 0, 0, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
//KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_X, 1, 0, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
}
else
{
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_X, 1, [] + 1, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_X, 0, [], eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
if ( || (Y값 < && Y값 + < ))
{
++;
++;
}
}
Y값 += ;
if (Y값 > )
{
if (!areadyShown) 500.Add(Y값);
= true;
}
//Console.WriteLine(boxName + " 표출누적Y값 : " + 표출누적Y값);
}
void SetLargeIcon(string boxName, int Lines, List<LargeIcon> icons, bool isQuestion, string imgName, bool areadyShown)
{
//아이콘 값이 있는지 확인
foreach (var largeIcon in icons)
{
if (largeIcon.isQuestion == isQuestion)
{
KAObject = KAScene.GetObject(boxName);
KAObject.SetVisible(1);
KAObject.SetPosition(0, Y값위치, 0, eKVectorType.VECTOR_TYPE_Y);
int iconYPos = 0;
int = largeIcon.hasContents ? Y값 : Y값 + 55;
if (largeIcon.hasContents)
{
iconYPos += -(Lines * 1 + 100);
}
else
{
iconYPos += -55;
//컨텐츠가 없으므로, 박스가 나오는 시간을 정상화 시켜야 한다
if (areadyShown || Y값 > )
{
KAObject.SetPositionKey(0, (float)-16.5, 0, 0, eKVectorType.VECTOR_TYPE_X);
KAObject.SetPositionKey(1, (float)-16.5, 0, 0, eKVectorType.VECTOR_TYPE_X);
}
else
{
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_X, 1, [] + 1, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_X, 0, [], eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
if ( || (Y값 < && Y값 + < ))
{
++;
++;
}
}
}
string tag = imgName;
KAObject = KAScene.GetObject(tag);
//if (!isQuestion) iconYPos -= 답변자케릭터추가값;
iconYPos += ;
KAObject.SetPosition(0, iconYPos, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetValue(getIconPath(largeIcon.value, false, largeIcon.isCharecter));
KAObject.SetImageOriginalSize();
KAObject.SetVisible(1);
if (areadyShown || Y값 > )
{
if (isQuestion)
{
KAObject.SetPositionKey(0, (float)115, 0, 0, eKVectorType.VECTOR_TYPE_X);
KAObject.SetPositionKey(1, (float)115, 0, 0, eKVectorType.VECTOR_TYPE_X);
}
else
{
KAObject.SetPositionKey(0, (float)-38.15, 0, 0, eKVectorType.VECTOR_TYPE_X);
KAObject.SetPositionKey(1, (float)-38.15, 0, 0, eKVectorType.VECTOR_TYPE_X);
}
}
else
{
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_X, 1, [] + 1, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_X, 0, [], eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
if ( || (Y값 < && Y값 + < ))
{
++;
++;
}
}
Y값 += ;
if (Y값 > )
{
if (!areadyShown) 500.Add(Y값);
= true;
}
}
}
//Console.WriteLine(boxName + " icon 표출누적Y값 : " + 표출누적Y값);
}
void SetPhotoIcon(string boxName, int Lines, List<PhotoIcon> icons, bool isQuestion, string imgName, bool areadyShown)
{
//아이콘 값이 있는지 확인
foreach (var photoIcon in icons)
{
if (photoIcon.isQuestion == isQuestion)
{
KAObject = KAScene.GetObject(boxName);
KAObject.SetVisible(1);
KAObject.SetPosition(0, Y값위치, 0, eKVectorType.VECTOR_TYPE_Y);
int iconYPos = 0;
string photoSize = photoIcon.value.Split(':')[1];
int = photoIcon.hasContents ? Y값 : Y값 + 0;
if (photoIcon.hasContents)
{
iconYPos += -(Lines * 1 + 100);
if (photoSize.Equals("세로형"))
{
+= 55;
}
else if (photoSize.Equals("가로형"))
{
+= -95;
}
}
else
{
iconYPos += -55;
+= 80;
if (photoSize.Equals("세로형"))
{
+= 55;
}
else if (photoSize.Equals("가로형"))
{
+= -95;
}
//컨텐츠가 없으므로, 박스가 나오는 시간을 정상화 시켜야 한다
if (areadyShown || Y값 > )
{
KAObject.SetPositionKey(0, (float)-16.5, 0, 0, eKVectorType.VECTOR_TYPE_X);
KAObject.SetPositionKey(1, (float)-16.5, 0, 0, eKVectorType.VECTOR_TYPE_X);
}
else
{
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_X, 1, [] + 1, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_X, 0, [], eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
if ( || (Y값 < && Y값 + < ))
{
++;
++;
}
}
}
string tag = imgName;
KAObject = KAScene.GetObject(tag + "_" + photoSize);
//if (!isQuestion) iconYPos -= 답변자케릭터추가값;
iconYPos += ;
//이미지이기 떄문에 변경
iconYPos += 65;
KAObject.SetPosition(0, iconYPos, 0, eKVectorType.VECTOR_TYPE_Y);
//임시 VRV테스트용도
KAObject.SetValue(getPhotoIconPath(photoIcon.value));
//KAObject.SetVideoFrame(600 ,600);
KAObject.SetVisible(1);
//KAObject.SetVideoRepeatInfo(0, 10000, 1000, 1, 1);
if (areadyShown || Y값 > )
{
if (isQuestion)
{
KAObject.SetPositionKey(0, (float)17.42, 0, 0, eKVectorType.VECTOR_TYPE_X);
KAObject.SetPositionKey(1, (float)17.42, 0, 0, eKVectorType.VECTOR_TYPE_X);
}
else
{
KAObject.SetPositionKey(0, (float)59.27, 0, 0, eKVectorType.VECTOR_TYPE_X);
KAObject.SetPositionKey(1, (float)59.27, 0, 0, eKVectorType.VECTOR_TYPE_X);
}
}
else
{
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_X, 1, [] + 1, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_X, 0, [], eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
if ( || (Y값 < && Y값 + < ))
{
++;
++;
}
}
Y값 += ;
if (Y값 > )
{
if (!areadyShown) 500.Add(Y값);
= true;
}
}
}
//Console.WriteLine(boxName + "Photo icon 표출누적Y값 : " + 표출누적Y값);
}
int = -400;
if (hasBeforeScene4)
{
Y값위치 = Y값위치기본 - Y값;
//Console.WriteLine("박스Y값위치9 : " + 박스Y값위치);
if (beforeQLines4 > 0) SetBox("box9", beforeQLines4, true);
SetLargeIcon("box9", beforeQLines4, beforeLargeIcons4, true, "img9", true);
SetPhotoIcon("box9", beforeQLines4, beforePhotoIcons4, true, "img9", true);
Y값위치 = Y값위치기본 - Y값;
//Console.WriteLine("박스Y값위치10 : " + 박스Y값위치);
if (beforeALines4 > 0) SetBox("box10", beforeALines4, true);
SetLargeIcon("box10", beforeALines4, beforeLargeIcons4, false, "img10", true);
SetPhotoIcon("box10", beforeALines4, beforePhotoIcons4, false, "img10", true);
}
if (hasBeforeScene3)
{
Y값위치 = Y값위치기본 - Y값;
//Console.WriteLine("박스Y값위치7 : " + 박스Y값위치);
if (beforeQLines3 > 0) SetBox("box7", beforeQLines3, true);
SetLargeIcon("box7", beforeQLines3, beforeLargeIcons3, true, "img7", true);
SetPhotoIcon("box7", beforeQLines3, beforePhotoIcons3, true, "img7", true);
Y값위치 = Y값위치기본 - Y값;
//Console.WriteLine("박스Y값위치8 : " + 박스Y값위치);
if (beforeALines3 > 0) SetBox("box8", beforeALines3, true);
SetLargeIcon("box8", beforeALines3, beforeLargeIcons3, false, "img8", true);
SetPhotoIcon("box8", beforeALines3, beforePhotoIcons3, false, "img8", true);
}
if (hasBeforeScene2)
{
Y값위치 = Y값위치기본 - Y값;
//Console.WriteLine("박스Y값위치5 : " + 박스Y값위치);
if (beforeQLines2 > 0) SetBox("box5", beforeQLines2, true);
SetLargeIcon("box5", beforeQLines2, beforeLargeIcons2, true, "img5", true);
SetPhotoIcon("box5", beforeQLines2, beforePhotoIcons2, true, "img5", true);
Y값위치 = Y값위치기본 - Y값;
//Console.WriteLine("박스Y값위치6 : " + 박스Y값위치);
if (beforeALines2 > 0) SetBox("box6", beforeALines2, true);
SetLargeIcon("box6", beforeALines2, beforeLargeIcons2, false, "img6", true);
SetPhotoIcon("box6", beforeALines2, beforePhotoIcons2, false, "img6", true);
}
if (hasBeforeScene)
{
Y값위치 = Y값위치기본 - Y값;
//Console.WriteLine("박스Y값위치3 : " + 박스Y값위치);
if (beforeQLines > 0) SetBox("box3", beforeQLines, true);
SetLargeIcon("box3", beforeQLines, beforeLargeIcons, true, "img3", true);
SetPhotoIcon("box3", beforeQLines, beforePhotoIcons, true, "img3", true);
Y값위치 = Y값위치기본 - Y값;
//Console.WriteLine("박스Y값위치4 : " + 박스Y값위치);
if (beforeALines > 0) SetBox("box4", beforeALines, true);
SetLargeIcon("box4", beforeALines, beforeLargeIcons, false, "img4", true);
SetPhotoIcon("box4", beforeALines, beforePhotoIcons, false, "img4", true);
}
if (Y값 > 500) = = -400 + Y값 - 500;
//Console.WriteLine("송출전마지막값1 : " + 마지막값);
Y값위치 = Y값위치기본 - Y값;
//Console.WriteLine("박스Y값위치1 : " + 박스Y값위치);
if (QLines > 0) SetBox("box1", QLines, false);
SetLargeIcon("box1", QLines, largeIcons, true, "img1", false);
SetPhotoIcon("box1", QLines, photoIcons, true, "img1", false);
Y값위치 = Y값위치기본 - Y값;
//Console.WriteLine("박스Y값위치2 : " + 박스Y값위치);
if (ALines > 0) SetBox("box2", ALines, false);
SetLargeIcon("box2", ALines, largeIcons, false, "img2", false);
SetPhotoIcon("box2", ALines, photoIcons, false, "img2", false);
//현재 값 계산 - 끝
//Y값 애니메이션 위치 조절
KAObject = KAScene.GetObject("boxs");
for (int i = 0; i <= ; i++)
{
KAObject.SetPositionKey(i, 0, , 0, eKVectorType.VECTOR_TYPE_Y);
}
++;
foreach (var v in 500)
{
= -400 + v - ;
KAObject.SetPositionKey(, 0, , 0, eKVectorType.VECTOR_TYPE_Y);
++;
KAObject.SetPositionKey(, 0, , 0, eKVectorType.VECTOR_TYPE_Y);
++;
//Console.WriteLine("송출전마지막값 누적표출초과 계산 후 : " + 마지막값);
}
timeOfBefore = [];
for (int i = ; i < 11; i++)
{
KAObject.SetPositionKey(i, 0, , 0, eKVectorType.VECTOR_TYPE_Y);
}
//Console.WriteLine("마지막값 : " + 마지막값);
//현재 텍스트 저장
for (int i = 0; i < 9; i++) aliveLiveChatText4[i] = aliveLiveChatText3[i];
for (int i = 0; i < 9; i++) aliveLiveChatText3[i] = aliveLiveChatText2[i];
for (int i = 0; i < 9; i++) aliveLiveChatText2[i] = aliveLiveChatText[i];
for (int i = 0; i < 8; i++) aliveLiveChatText[i] = strs[i];
aliveLiveChatText[8] = strs[13];
}
else if (dispLines == 5)
{
if (!isTopLeft) beforeNewGroups = new List<NewGroup>();
isTopLeft = true;
int = 6;
int = 0;
for (int i = 1; i < 4; i++) if (!strs[i].Equals("")) ++;
int = 6 + ;
int = 0;
for (int i = 5; i < 8; i++) if (!strs[i].Equals("")) ++;
int = + ;
if ( > 0) beforeNewGroups.Add(new NewGroup(true, strs[0], strs[1], strs[2], strs[3], "", ));
if ( > 0) beforeNewGroups.Add(new NewGroup(false, strs[4], strs[5], strs[6], strs[7], strs[13], ));
#region Tornado2
for (int i = 1; i < 7; i++)
{
KAScene.GetObject("gq" + i).SetVisible(0);
KAScene.GetObject("ga" + i).SetVisible(0);
KAScene.GetObject("gb" + i).SetVisible(0);
}
int = 1;
int = 1;
int = 1;
float = 370;
float = 374;
while (beforeNewGroups.Count > 6)
{
beforeNewGroups.RemoveAt(0);
}
foreach (var b in beforeNewGroups)
{
string directory = Path.GetDirectoryName(path4_4);
string path = directory + @"\character\" + b.profilePath + "_50.png";
bool itHasImage = File.Exists(path);
int index = ;
if (!b.isQuestion) index = itHasImage ? : ;
string tag = "gq";
if (!b.isQuestion) tag = itHasImage ? "ga" : "gb";
tag = tag + index;
//Profile
if (!b.isQuestion && itHasImage) KAScene.GetObject(tag + "p").SetValue(path);
//Visible
KAScene.GetObject(tag).SetVisible(1);
KAScene.GetObject(tag + "l1").SetVisible(b.line1.Equals("") ? 0 : 1);
KAScene.GetObject(tag + "l2").SetVisible(b.line2.Equals("") ? 0 : 1);
KAScene.GetObject(tag + "l3").SetVisible(b.line3.Equals("") ? 0 : 1);
//FrameSetting
for (int i = 0; i < 12; i++)
KAScene.GetObject(tag).SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, i, i, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
for (int i = 11; i > -1; i--)
{
int time = 0;
for (int j = 1; j <= i; j++) time += j % 2 == 0 ? timeOfWait : timeOfChange;
KAScene.GetObject(tag).SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, i, time, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
}
//Position
float posY = b.isQuestion ? : ;
posY -= (51 * b.yPos);
float lastPos = 0;
for (int i = 0; i < 12; i++)
{
if ((i + 1) / 2 <= ) lastPos = posY + (((i + 1) / 2) * 51);
KAScene.GetObject(tag).SetPositionKey(i, 0, lastPos, 0, eKVectorType.VECTOR_TYPE_Y);
}
//TextValue
KAScene.GetObject(tag + "w").SetValue(b.id);
if (b.isQuestion)
{
KAScene.GetObject(tag + "l1t").SetValue(b.line1);
KAScene.GetObject(tag + "l2t").SetValue(b.line2);
KAScene.GetObject(tag + "l3t").SetValue(b.line3);
}
else
{
KAScene.GetObject(tag + "l1t1").SetValue(b.line1);
KAScene.GetObject(tag + "l1t2").SetValue(b.line1);
KAScene.GetObject(tag + "l1t3").SetValue(b.line1);
/*
KAScene.GetObject(tag + "l1t1").SetValue(b.line1);
KAScene.GetObject(tag + "l1t2").SetValue(b.line1);
KAScene.GetObject(tag + "l1t3").SetValue(b.line1);
KAScene.GetObject(tag + "l2t").SetValue(b.line2);
KAScene.GetObject(tag + "l2t").SetVisible(1);
KAScene.GetObject(tag + "l2b").SetVisible(1);
KAScene.GetObject(tag + "l3t").SetValue(b.line3);
KAScene.GetObject(tag + "l3t").SetVisible(1);
KAScene.GetObject(tag + "l3b").SetVisible(1);
*/
if (Encoding.Default.GetByteCount(b.line1) < Encoding.Default.GetByteCount(b.line2))
{
KAScene.GetObject(tag + "l1t2").SetValue(b.line2);
KAScene.GetObject(tag + "l1t2").SetVisible(1);
KAScene.GetObject(tag + "l2t").SetVisible(0);
KAScene.GetObject(tag + "l2b").SetVisible(0);
}
else
{
KAScene.GetObject(tag + "l2t").SetValue(b.line2);
KAScene.GetObject(tag + "l1t2").SetVisible(0);
KAScene.GetObject(tag + "l2t").SetVisible(1);
KAScene.GetObject(tag + "l2b").SetVisible(1);
KAScene.GetObject(tag + "l2").SetVisible(0);
if (b.line2.Equals("")) KAScene.GetObject(tag + "l2b").SetVisible(0);
}
if (Encoding.Default.GetByteCount(b.line1) < Encoding.Default.GetByteCount(b.line3))
{
KAScene.GetObject(tag + "l1t3").SetValue(b.line3);
KAScene.GetObject(tag + "l1t3").SetVisible(1);
KAScene.GetObject(tag + "l3t").SetVisible(0);
KAScene.GetObject(tag + "l3b").SetVisible(0);
}
else
{
KAScene.GetObject(tag + "l3t").SetValue(b.line3);
KAScene.GetObject(tag + "l1t3").SetVisible(0);
KAScene.GetObject(tag + "l3t").SetVisible(1);
KAScene.GetObject(tag + "l3b").SetVisible(1);
KAScene.GetObject(tag + "l3").SetVisible(0);
if (b.line3.Equals("")) KAScene.GetObject(tag + "l3b").SetVisible(0);
}
}
//Color
KAScene.GetObject(tag + "w").SetStyleColor(getColor(b.isQuestion ? lbl_color_1 : lbl_color_3));
for (int i = 1; i < 4; i++)
{
KAScene.GetObject(tag + "l" + i + "t").SetStyleColor(getColor(b.isQuestion ? lbl_color_2 : lbl_color_4));
KAScene.GetObject(tag + "l" + i + "t1").SetStyleColor(getColor(b.isQuestion ? lbl_color_2 : lbl_color_4));
KAScene.GetObject(tag + "l" + i).SetStyleColor(getColor(b.isQuestion ? lbl_color_5 : lbl_color_6));
if (!b.isQuestion)
{
KAScene.GetObject(tag + "l" + i + "b").SetStyleColor(getColor(lbl_color_6));
KAScene.GetObject(tag + "l" + i).SetStyleColor(getColor(lbl_color_6));
KAScene.GetObject(tag + "l1t" + i).SetStyleColor(getColor(lbl_color_4));
}
}
if (b.isQuestion) ++;
else
{
if (itHasImage) ++;
else ++;
}
}
#endregion
//송출라인만큼 올려서 화면에 표출할 필요가 없으면 제거한다
foreach (var v in beforeNewGroups) v.setYPos();
beforeNewGroups = beforeNewGroups.FindAll(x => x.yPos > -2);
timeOfBefore = * (timeOfWait + timeOfChange);
}
else if (dispLines == 6)
{
if (isTopLeft) beforeNewGroups = new List<NewGroup>();
isTopLeft = false;
int = 6;
int = 0;
bool VRV여부 = false;
NewGroup = new NewGroup(true, strs[0], strs[1], strs[2], strs[3], "", );
if (!.line1.Equals("")) ++;
if (!.line2.Equals("")) ++;
if (!.line3.Equals("")) ++;
if ( > 0) beforeNewGroups.Add();
int = 6 + ;
int = 0;
NewGroup = new NewGroup(false, strs[4], strs[5], strs[6], strs[7], strs[13], );
if (.isHaveVrv)
{
.line1 = "";
.line2 = "";
.line3 = "";
}
if (!.line1.Equals("")) ++;
if (!.line2.Equals("")) ++;
if (!.line3.Equals("")) ++;
if (.isHaveImage) += 2;
else if (.isHaveIcon) += 2;
else if (.isHaveVrv)
{
+= 2;
VRV여부 = true;
}
int = + ;
if ( > 0) beforeNewGroups.Add();
#region Tornado2
for (int i = 1; i < 4; i++)
{
KAScene.GetObject("gq" + i).SetVisible(0);
KAScene.GetObject("ga" + i).SetVisible(0);
KAScene.GetObject("gb" + i).SetVisible(0);
KAScene.GetObject("gc" + i).SetVisible(0);
KAScene.GetObject("gd" + i).SetVisible(0);
KAScene.GetObject("ge" + i).SetVisible(0);
}
int = 1;
int = 1;
int = 1;
int = 1;
int = 1;
int VRV순서 = 1;
float = -181;
while (beforeNewGroups.Count > 4)
{
beforeNewGroups.RemoveAt(0);
}
List<NewGroup> bufG = new List<NewGroup>();
for (int i = 0; i < beforeNewGroups.Count; i++)
bufG.Add(beforeNewGroups[beforeNewGroups.Count - 1 - i]);
//foreach (var b in beforeNewGroups)
int vrvCount = 0;
foreach (var b in bufG)
{
string directory = Path.GetDirectoryName(path4_5);
string path = directory + @"\character\" + b.profilePath + "_50.png";
bool itHasProfileImage = File.Exists(path);
if (b.isHaveVrv) vrvCount++;
int index = ;
if (!b.isQuestion)
{
if (b.isHaveImage) index = ;
else if (b.isHaveIcon) index = ;
else index = itHasProfileImage ? : ;
}
if (b.isHaveVrv)
{
if (!VRV여부) index = 2;
else
{
index = vrvCount;
}
}
string tag = "gq";
if (!b.isQuestion)
{
if (b.isHaveImage) tag = "gc";
else if (b.isHaveIcon) tag = "gd";
else if (b.isHaveVrv) tag = "ge";
else tag = itHasProfileImage ? "ga" : "gb";
}
tag = tag + index;
//Profile
if (!b.isQuestion && itHasProfileImage)
{
KAScene.GetObject(tag + "p").SetVisible(1);
KAScene.GetObject(tag + "p").SetValue(path);
}
else KAScene.GetObject(tag + "p").SetVisible(0);
//Visible
KAScene.GetObject(tag).SetVisible(1);
KAScene.GetObject(tag + "l1").SetVisible(b.line1.Equals("") ? 0 : 1);
KAScene.GetObject(tag + "l2").SetVisible(b.line2.Equals("") ? 0 : 1);
KAScene.GetObject(tag + "l3").SetVisible(b.line3.Equals("") ? 0 : 1);
//FrameSetting
for (int i = 0; i < 18; i++)
KAScene.GetObject(tag).SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, i, i, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
for (int i = 17; i > -1; i--)
{
int time = 0;
for (int j = 1; j <= i; j++) time += j % 2 == 0 ? timeOfWait : timeOfChange;
KAScene.GetObject(tag).SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, i, time, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
}
//Position
float posY = ;
posY -= (50 * b.yPos);
float lastPos = 0;
float firstPos = 0;
for (int i = 0; i < 18; i++)
{
//기존방식
/*
if ((i + 1) / 2 <= 송출라인수)
{
lastPos = posY + (((i + 1) / 2) * 50);
}
*/
//VRV가 있고 VRV가 적용되는 포지션에서는 한번 더 숫자를 더해준다.
if (VRV여부)
{
if ((i + 1) / 2 < )
{
lastPos = posY + (((i + 1) / 2) * 50);
if ((i + 1) / 2 >= ( + 1))
{
lastPos = posY + (((i + 1) / 2) * 50) + 50;
}
}
}
else
{
if ((i + 1) / 2 <= )
{
lastPos = posY + (((i + 1) / 2) * 50);
}
}
if (i > 0)
{
if ((VRV여부 && vrvCount > 1) || (!VRV여부 && vrvCount > 0))
{
lastPos = posY + (((i + 1) / 2) * 50) + 50;
}
}
KAScene.GetObject(tag).SetPositionKey(i, 0, lastPos, 0, eKVectorType.VECTOR_TYPE_Y);
if (i == 0) firstPos = lastPos;
}
//이미지및 이모티콘 적용
if (b.isHaveImage)
{
KAScene.GetObject(tag + "photo").SetValue(getPhotoIconPath(b.imgName));
}
else if (b.isHaveIcon)
{
if (b.isHaveCIcon)
{
string path2 = directory + @"\character2\" + b.iconName + "_100.png";
KAScene.GetObject(tag + "i").SetValue(path2);
KAScene.GetObject(tag + "i").SetImageOriginalSize();
}
else
{
string path2 = directory + @"\icons2\" + b.iconName + ".png";
KAScene.GetObject(tag + "i").SetValue(path2);
}
}
KAScene.GetObject(tag + "1_tag").SetVisible(b.isHaveTag1 ? 1 : 0);
KAScene.GetObject(tag + "2_tag").SetVisible(b.isHaveTag2 ? 1 : 0);
KAScene.GetObject(tag + "3_tag").SetVisible(b.isHaveTag3 ? 1 : 0);
if (b.isHaveTag1)
{
string path2 = directory + @"\tag\" + b.tagName + ".vrv";
KAScene.GetObject(tag + "1_tag").SetValue(path2);
if (firstPos > -450) KAScene.GetObject(tag + "1_tag").SetVideoFrame(frameTAG, frameTAG);
}
if (b.isHaveTag2)
{
string path2 = directory + @"\tag\" + b.tagName + ".vrv";
KAScene.GetObject(tag + "2_tag").SetValue(path2);
if (firstPos > -450) KAScene.GetObject(tag + "2_tag").SetVideoFrame(frameTAG, frameTAG);
}
if (b.isHaveTag3)
{
string path2 = directory + @"\tag\" + b.tagName + ".vrv";
KAScene.GetObject(tag + "3_tag").SetValue(path2);
if (firstPos > -450) KAScene.GetObject(tag + "3_tag").SetVideoFrame(frameTAG, frameTAG);
}
if (b.isHaveVrv)
{
string path2 = directory + @"\vrv\" + b.vrvName + ".vrv";
KAScene.GetObject(tag + "v").SetValue(path2);
if (firstPos > -450) KAScene.GetObject(tag + "v").SetVideoFrame(frameVRV, frameVRV);
}
//TextValue
KAScene.GetObject(tag + "w").SetValue(b.id);
if (b.isQuestion)
{
KAScene.GetObject(tag + "l1t1").SetValue(b.line1);
KAScene.GetObject(tag + "l1t2").SetValue(b.line1);
KAScene.GetObject(tag + "l1t3").SetValue(b.line1);
for (int i = 1; i < 4; i++)
{
if (i == 1) KAScene.GetObject(tag + "l1t" + i).SetValue(b.line1);
else if (i == 2) KAScene.GetObject(tag + "l1t" + i).SetValue(b.line2);
else if (i == 3) KAScene.GetObject(tag + "l1t" + i).SetValue(b.line3);
KAScene.GetObject(tag + "l1t" + i).SetVisible(1);
KAScene.GetObject(tag + "l" + i + "t").SetVisible(0);
KAScene.GetObject(tag + "l" + i + "b").SetVisible(0);
}
}
else
{
KAScene.GetObject(tag + "l1t1").SetValue(b.line1);
KAScene.GetObject(tag + "l1t2").SetValue(b.line1);
KAScene.GetObject(tag + "l1t3").SetValue(b.line1);
if (b.isHaveIcon || b.isHaveImage)
{
for (int i = 1; i < 4; i++)
{
if (i == 1) KAScene.GetObject(tag + "l1t" + i).SetValue(b.line1);
else if (i == 2) KAScene.GetObject(tag + "l1t" + i).SetValue(b.line2);
else if (i == 3) KAScene.GetObject(tag + "l1t" + i).SetValue(b.line3);
KAScene.GetObject(tag + "l1t" + i).SetVisible(1);
KAScene.GetObject(tag + "l" + i + "t").SetVisible(0);
KAScene.GetObject(tag + "l" + i + "b").SetVisible(0);
}
}
else
{
for (int i = 1; i < 4; i++)
{
if (i == 1) KAScene.GetObject(tag + "l1t" + i).SetValue(b.line1);
else if (i == 2) KAScene.GetObject(tag + "l1t" + i).SetValue(b.line2);
else if (i == 3) KAScene.GetObject(tag + "l1t" + i).SetValue(b.line3);
KAScene.GetObject(tag + "l1t" + i).SetVisible(1);
KAScene.GetObject(tag + "l" + i + "t").SetVisible(0);
KAScene.GetObject(tag + "l" + i + "b").SetVisible(0);
}
}
}
//Color
KAScene.GetObject(tag + "w").SetStyleColor(getColor(b.isQuestion ? lbl_color_1 : lbl_color_3));
if (!b.isQuestion) KAScene.GetObject(tag + "wb").SetStyleColor(getColor(lbl_color_6));
for (int i = 1; i < 4; i++)
{
KAScene.GetObject(tag + "l" + i + "t").SetStyleColor(getColor(b.isQuestion ? lbl_color_2 : lbl_color_4));
KAScene.GetObject(tag + "l" + i + "t1").SetStyleColor(getColor(b.isQuestion ? lbl_color_2 : lbl_color_4));
KAScene.GetObject(tag + "l" + i).SetStyleColor(getColor(b.isQuestion ? lbl_color_5 : lbl_color_6));
if (!b.isQuestion)
{
KAScene.GetObject(tag + "l" + i + "b").SetStyleColor(getColor(lbl_color_6));
KAScene.GetObject(tag + "l1t" + i).SetStyleColor(getColor(lbl_color_4));
}
else
{
KAScene.GetObject(tag + "l" + i + "b").SetStyleColor(getColor(lbl_color_5));
KAScene.GetObject(tag + "l1t" + i).SetStyleColor(getColor(lbl_color_2));
}
}
if (b.isQuestion) ++;
else
{
if (b.isHaveImage) ++;
else if (b.isHaveIcon) ++;
else if (itHasProfileImage) ++;
else ++;
}
}
#endregion
//송출라인만큼 올려서 화면에 표출할 필요가 없으면 제거한다
foreach (var v in beforeNewGroups) v.setYPos();
beforeNewGroups = beforeNewGroups.FindAll(x => x.yPos > -2);
timeOfBefore = * (timeOfWait + timeOfChange);
#region legacy
/* 이전코드
if (isTopLeft) beforeNewGroups = new List<NewGroup>();
isTopLeft = false;
int 질문자시작순서 = 6;
int 질문자라인수 = 0;
NewGroup 질문 = new NewGroup(true, strs[0], strs[1], strs[2], strs[3], "", 질문자시작순서);
if (!질문.line1.Equals("")) 질문자라인수++;
if (!질문.line2.Equals("")) 질문자라인수++;
if (!질문.line3.Equals("")) 질문자라인수++;
if (질문자라인수 > 0) beforeNewGroups.Add(질문);
int 답변자시작순서 = 6 + 질문자라인수;
int 답변자라인수 = 0;
NewGroup 답변 = new NewGroup(false, strs[4], strs[5], strs[6], strs[7], strs[13], 답변자시작순서);
if (!답변.line1.Equals("")) 답변자라인수++;
if (!답변.line2.Equals("")) 답변자라인수++;
if (!답변.line3.Equals("")) 답변자라인수++;
if (답변.isHaveImage) 답변자라인수 += 3;
else if (답변.isHaveIcon) 답변자라인수 += 2;
int 송출라인수 = 질문자라인수 + 답변자라인수;
if (답변자라인수 > 0) beforeNewGroups.Add(답변);
#region Tornado2 값 변경 파트
for (int i = 1; i < 7; i++)
{
KAScene.GetObject("gq" + i).SetVisible(0);
KAScene.GetObject("ga" + i).SetVisible(0);
KAScene.GetObject("gb" + i).SetVisible(0);
KAScene.GetObject("gc" + i).SetVisible(0);
KAScene.GetObject("gd" + i).SetVisible(0);
}
int 질문자순서 = 1;
int 답변자순서 = 1;
int 답변자프로필순서 = 1;
int 답변자사진순서 = 1;
int 답변자아이콘순서 = 1;
float 기본위치 = -181;
while (beforeNewGroups.Count > 4)
{
beforeNewGroups.RemoveAt(0);
}
foreach (var b in beforeNewGroups)
{
string directory = Path.GetDirectoryName(path4_4);
string path = directory + @"\character\" + b.profilePath + "_50.png";
bool itHasProfileImage = File.Exists(path);
int index = 질문자순서;
if (!b.isQuestion)
{
if (b.isHaveImage) index = 답변자사진순서;
else if (b.isHaveIcon) index = 답변자아이콘순서;
else index = itHasProfileImage ? 답변자프로필순서 : 답변자순서;
}
string tag = "gq";
if (!b.isQuestion)
{
if (b.isHaveImage) tag = "gc";
else if (b.isHaveIcon) tag = "gd";
else tag = itHasProfileImage ? "ga" : "gb";
}
tag = tag + index;
//Profile
if (!b.isQuestion && itHasProfileImage)
{
KAScene.GetObject(tag + "p").SetVisible(1);
KAScene.GetObject(tag + "p").SetValue(path);
}
else KAScene.GetObject(tag + "p").SetVisible(0);
//Visible
KAScene.GetObject(tag).SetVisible(1);
KAScene.GetObject(tag + "l1").SetVisible(b.line1.Equals("") ? 0 : 1);
KAScene.GetObject(tag + "l2").SetVisible(b.line2.Equals("") ? 0 : 1);
KAScene.GetObject(tag + "l3").SetVisible(b.line3.Equals("") ? 0 : 1);
//FrameSetting
for (int i = 0; i < 18; i++)
KAScene.GetObject(tag).SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, i, i, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
for (int i = 17; i > -1; i--)
{
int time = 0;
for (int j = 1; j <= i; j++) time += j % 2 == 0 ? timeOfWait : timeOfChange;
KAScene.GetObject(tag).SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, i, time, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
}
//Position
float posY = 기본위치;
posY -= (50 * b.yPos);
float lastPos = 0;
for (int i = 0; i < 18; i++)
{
if ((i + 1) / 2 <= 송출라인수) lastPos = posY + (((i + 1) / 2) * 50);
KAScene.GetObject(tag).SetPositionKey(i, 0, lastPos, 0, eKVectorType.VECTOR_TYPE_Y);
}
//이미지및 이모티콘 적용
if (b.isHaveImage)
{
KAScene.GetObject(tag + "photo").SetValue(getPhotoIconPath(b.imgName));
}
else if (b.isHaveIcon)
{
if (b.isHaveCIcon)
{
string path2 = directory + @"\character2\" + b.iconName + "_100.png";
KAScene.GetObject(tag + "i").SetValue(path2);
KAScene.GetObject(tag + "i").SetImageOriginalSize();
}
else
{
string path2 = directory + @"\icons2\" + b.iconName + ".png";
KAScene.GetObject(tag + "i").SetValue(path2);
}
}
//TextValue
KAScene.GetObject(tag + "w").SetValue(b.id);
if (b.isQuestion)
{
KAScene.GetObject(tag + "l1t").SetValue(b.line1);
KAScene.GetObject(tag + "l2t").SetValue(b.line2);
KAScene.GetObject(tag + "l3t").SetValue(b.line3);
}
else
{
KAScene.GetObject(tag + "l1t1").SetValue(b.line1);
KAScene.GetObject(tag + "l1t2").SetValue(b.line1);
KAScene.GetObject(tag + "l1t3").SetValue(b.line1);
if (b.isHaveIcon || b.isHaveImage)
{
for (int i = 1; i < 4; i++)
{
if (i == 1) KAScene.GetObject(tag + "l1t" + i).SetValue(b.line1);
else if (i==2) KAScene.GetObject(tag + "l1t" + i).SetValue(b.line2);
else if (i == 3) KAScene.GetObject(tag + "l1t" + i).SetValue(b.line3);
KAScene.GetObject(tag + "l1t" + i).SetVisible(1);
KAScene.GetObject(tag + "l" + i + "t").SetVisible(0);
KAScene.GetObject(tag + "l" + i + "b").SetVisible(0);
}
}
else
{
KAScene.GetObject(tag + "l1t2").SetValue(b.line2);
KAScene.GetObject(tag + "l1t2").SetVisible(1);
KAScene.GetObject(tag + "l2t").SetVisible(0);
KAScene.GetObject(tag + "l2b").SetVisible(1);
KAScene.GetObject(tag + "l1t3").SetValue(b.line3);
KAScene.GetObject(tag + "l1t3").SetVisible(1);
KAScene.GetObject(tag + "l3t").SetVisible(0);
KAScene.GetObject(tag + "l3b").SetVisible(1);
}
}
//Color
KAScene.GetObject(tag + "w").SetStyleColor(getColor(b.isQuestion ? lbl_color_1 : lbl_color_3));
if (!b.isQuestion) KAScene.GetObject(tag + "wb").SetStyleColor(getColor(lbl_color_6));
for (int i = 1; i < 4; i++)
{
KAScene.GetObject(tag + "l" + i + "t").SetStyleColor(getColor(b.isQuestion ? lbl_color_2 : lbl_color_4));
KAScene.GetObject(tag + "l" + i + "t1").SetStyleColor(getColor(b.isQuestion ? lbl_color_2 : lbl_color_4));
KAScene.GetObject(tag + "l" + i).SetStyleColor(getColor(b.isQuestion ? lbl_color_5 : lbl_color_6));
if (!b.isQuestion)
{
KAScene.GetObject(tag + "l" + i + "b").SetStyleColor(getColor(lbl_color_6));
KAScene.GetObject(tag + "l1t" + i).SetStyleColor(getColor(lbl_color_4));
}
}
if (b.isQuestion) 질문자순서++;
else
{
if (b.isHaveImage) 답변자사진순서++;
else if (b.isHaveIcon) 답변자아이콘순서++;
else if (itHasProfileImage) 답변자프로필순서++;
else 답변자순서++;
}
}
#endregion
//송출라인만큼 올려서 화면에 표출할 필요가 없으면 제거한다
foreach (var v in beforeNewGroups) v.setYPos(송출라인수);
beforeNewGroups = beforeNewGroups.FindAll(x => x.yPos > -2);
timeOfBefore = 송출라인수 * (timeOfWait + timeOfChange);
*/
#endregion
}
KAScene.SetChangeOut(eKChangeOutType.CHANGE_OUT_TYPE_CHANGE_OUT);
//Prepare
KAScenePlayer.Prepare(Layer4, KAScene);
//Play
KAScenePlayer.Play(Layer4);
if (isLoop == "true")
{
if (!timer2.Enabled)
{
timer2.Interval = (timeOfBefore + timeOfClear) * 34;
timer2.Start();
}
}
else if (isLoop == "clear")
{
if (!timer3.Enabled)
{
timer3.Interval = (timeOfBefore + timeOfClear) * 34;
timer3.Start();
}
}
else
{
}
}
isDisplay4 = true;
}
else
{
if (isDisplay4)
{
//송출 중 이므로 송출을 종료시킨다.
eKSceneEffectType etype = eKSceneEffectType.SCENE_CHANGE_EFFECT_FADE;
KAScene = KAEngine.LoadScene(CurrentDirectory + @"\Degisn\Clear.t2s", "Clear");
KAScene.SetSceneEffectType(1, etype, fadeOutTime);
KAScenePlayer.Prepare(Layer4, KAScene);
KAScenePlayer.Play(Layer4);
//KAEngine.UnloadAll();
}
else
{
//미송출 중이므로 넘긴다.
}
for (int i = 0; i < aliveLiveChatText.Length; i++)
{
aliveLiveChatText[i] = "";
aliveLiveChatText2[i] = "";
aliveLiveChatText3[i] = "";
aliveLiveChatText4[i] = "";
}
beforeNewGroups = new List<NewGroup>();
if (timer1.Enabled) timer1.Stop();
if (timer2.Enabled) timer2.Stop();
if (timer3.Enabled) timer3.Stop();
isDisplay4 = false;
}
}
else if (DisplayIndex == 5)
{
if (showing)
{
if (isDisplay5)
{
//이미 송출 중이므로 넘긴다
}
else
{
//송출을 위한 데이터를 읽어와서 송출한다.
//송출을 위한 데이터를 읽어와서 송출한다.
//데이터 읽는 부분
//서버에서 정보를 읽어온다.
string dispStr = "";
string requestURL = getURL() + channel + "/상품평/조회";
WebRequest request = WebRequest.Create(requestURL);
request.Method = "GET";
request.ContentType = "application/json; charset=UTF-8;";
//request.ContentType = "charset=UTF-8";
using (WebResponse response = request.GetResponse())
using (Stream stream = response.GetResponseStream())
using (StreamReader reader = new StreamReader(stream))
{
string data = reader.ReadToEnd();
JObject obj = JObject.Parse(data);
dispStr = obj["상품평"].ToString();
}
//특수문자 처리를 위함
dispStr = utils.replaceSpecialStr(dispStr);
string[] strs = dispStr.Split('|');
//송출부분
KAScene = KAEngine.LoadScene(path5, "상품평");
KAObject KAObject;
KAObject = KAScene.GetObject("name");
KAObject.SetValue(strs[0]);
for(int i = 1; i < 11; i++)
{
KAObject = KAScene.GetObject("txt" + i);
KAObject.SetValue(strs[i]);
}
//Prepare
KAScenePlayer.Prepare(Layer5, KAScene);
//Play
KAScenePlayer.Play(Layer5);
}
isDisplay5 = true;
}
else
{
if (isDisplay5)
{
//송출 중 이므로 송출을 종료시킨다.
//송출 중 이므로 송출을 종료시킨다.
eKSceneEffectType etype = eKSceneEffectType.SCENE_CHANGE_EFFECT_FADE;
KAScene = KAEngine.LoadScene(CurrentDirectory + @"\Degisn\Clear.t2s", "Clear");
KAScene.SetSceneEffectType(1, etype, fadeOutTime);
KAScenePlayer.Prepare(Layer5, KAScene);
KAScenePlayer.Play(Layer5);
}
else
{
//미송출 중이므로 넘긴다.
}
isDisplay5 = false;
}
}
else if (DisplayIndex == 6)
{
if (showing)
{
if (isDisplay6)
{
//이미 송출 중이므로 넘긴다
}
else
{
//송출을 위한 데이터를 읽어와서 송출한다.
//송출을 위한 데이터를 읽어와서 송출한다.
//데이터 읽는 부분
//서버에서 정보를 읽어온다.
string dispStr = "";
string requestURL = getURL() + channel + "/QNA/조회";
WebRequest request = WebRequest.Create(requestURL);
request.Method = "GET";
request.ContentType = "application/json; charset=UTF-8;";
//request.ContentType = "charset=UTF-8";
using (WebResponse response = request.GetResponse())
using (Stream stream = response.GetResponseStream())
using (StreamReader reader = new StreamReader(stream))
{
string data = reader.ReadToEnd();
JObject obj = JObject.Parse(data);
dispStr = obj["QNA"].ToString();
}
//특수문자 처리를 위함
dispStr = utils.replaceSpecialStr(dispStr);
string[] strs = dispStr.Split('|');
//송출부분
KAScene = KAEngine.LoadScene(path6, "QNA");
KAObject KAObject;
KAObject = KAScene.GetObject("name1");
KAObject.SetValue(strs[0]);
KAObject = KAScene.GetObject("txt1_1");
KAObject.SetValue(strs[1]);
KAObject = KAScene.GetObject("txt1_2");
KAObject.SetValue(strs[2]);
KAObject = KAScene.GetObject("txt1_3");
KAObject.SetValue(strs[3]);
KAObject = KAScene.GetObject("name2");
KAObject.SetValue(strs[4]);
KAObject = KAScene.GetObject("txt2_1");
KAObject.SetValue(strs[5]);
KAObject = KAScene.GetObject("txt2_2");
KAObject.SetValue(strs[6]);
KAObject = KAScene.GetObject("txt2_3");
KAObject.SetValue(strs[7]);
//Prepare
KAScenePlayer.Prepare(Layer6, KAScene);
//Play
KAScenePlayer.Play(Layer6);
}
isDisplay6 = true;
}
else
{
if (isDisplay6)
{
//송출 중 이므로 송출을 종료시킨다.
//송출 중 이므로 송출을 종료시킨다.
eKSceneEffectType etype = eKSceneEffectType.SCENE_CHANGE_EFFECT_FADE;
KAScene = KAEngine.LoadScene(CurrentDirectory + @"\Degisn\Clear.t2s", "Clear");
KAScene.SetSceneEffectType(1, etype, fadeOutTime);
KAScenePlayer.Prepare(Layer6, KAScene);
KAScenePlayer.Play(Layer6);
}
else
{
//미송출 중이므로 넘긴다.
}
isDisplay6 = false;
}
}
else if (DisplayIndex == 7)
{
if (showing)
{
if (isDisplay7)
{
//이미 송출 중이므로 넘긴다
}
else
{
//송출을 위한 데이터를 읽어와서 송출한다.
//송출을 위한 데이터를 읽어와서 송출한다.
//데이터 읽는 부분
//서버에서 정보를 읽어온다.
string dispStr = "";
string requestURL = getURL() + channel + "/공지/조회";
WebRequest request = WebRequest.Create(requestURL);
request.Method = "GET";
request.ContentType = "application/json; charset=UTF-8;";
//request.ContentType = "charset=UTF-8";
using (WebResponse response = request.GetResponse())
using (Stream stream = response.GetResponseStream())
using (StreamReader reader = new StreamReader(stream))
{
string data = reader.ReadToEnd();
JObject obj = JObject.Parse(data);
dispStr = obj["공지"].ToString();
}
//특수문자 처리를 위함
dispStr = utils.replaceSpecialStr(dispStr);
//송출부분
KAScene = KAEngine.LoadScene(path7, "공지");
KAObject KAObject;
KAObject = KAScene.GetObject("txt");
KAObject.SetValue(dispStr);
//Prepare
KAScenePlayer.Prepare(Layer7, KAScene);
//Play
KAScenePlayer.Play(Layer7);
}
isDisplay7 = true;
}
else
{
if (isDisplay7)
{
//송출 중 이므로 송출을 종료시킨다.
//송출 중 이므로 송출을 종료시킨다.
eKSceneEffectType etype = eKSceneEffectType.SCENE_CHANGE_EFFECT_FADE;
KAScene = KAEngine.LoadScene(CurrentDirectory + @"\Degisn\Clear.t2s", "Clear");
KAScene.SetSceneEffectType(1, etype, fadeOutTime);
KAScenePlayer.Prepare(Layer7, KAScene);
KAScenePlayer.Play(Layer7);
}
else
{
//미송출 중이므로 넘긴다.
}
isDisplay7 = false;
}
}
else if (DisplayIndex == 8)
{
if (showing)
{
string dispStr = "";
string requestURL = getURL() + channel + "/채팅판/조회";
WebRequest request = WebRequest.Create(requestURL);
request.Method = "GET";
request.ContentType = "application/json; charset=UTF-8;";
//request.ContentType = "charset=UTF-8";
using (WebResponse response = request.GetResponse())
using (Stream stream = response.GetResponseStream())
using (StreamReader reader = new StreamReader(stream))
{
string data = reader.ReadToEnd();
JObject obj = JObject.Parse(data);
dispStr = obj["채팅판"].ToString();
}
//특수문자 처리를 위함
dispStr = utils.replaceSpecialStr(dispStr);
if (isDisplay8 && strDisp8 != dispStr)
{
orderDisp4Index++;
string bufPath = path4_5.ToLower().Replace(".t2s", "_공지.t2s");
KAScene = KAEngine.LoadScene(bufPath, "채팅" + orderDisp4Index);
KAScene.GetObject("show").SetVisible(1);
KAScene.GetObject("start").SetVisible(0);
KAScene.GetObject("stay").SetVisible(1);
KAScene.GetObject("t1").SetValue(dispStr + " ");
KAScene.GetObject("t2").SetValue(dispStr + " ");
KAScene.SetChangeOut(eKChangeOutType.CHANGE_OUT_TYPE_CHANGE_OUT);
//Prepare
KAScenePlayer.Prepare(Layer10, KAScene);
//Play
KAScenePlayer.Play(Layer10);
}
else if (!isDisplay8)
{
orderDisp4Index++;
string bufPath = path4_5.ToLower().Replace(".t2s", "_공지.t2s");
KAScene = KAEngine.LoadScene(bufPath, "채팅" + orderDisp4Index);
KAScene.GetObject("show").SetVisible(0);
KAScene.GetObject("start").SetVisible(1);
KAScene.GetObject("stay").SetVisible(0);
KAScene.SetChangeOut(eKChangeOutType.CHANGE_OUT_TYPE_CHANGE_OUT);
//Prepare
KAScenePlayer.Prepare(Layer10, KAScene);
//Play
KAScenePlayer.Play(Layer10);
}
isDisplay8 = true;
strDisp8 = dispStr;
}
else
{
if (isDisplay8)
{
//송출 중 이므로 송출을 종료시킨다.
//송출 중 이므로 송출을 종료시킨다.
eKSceneEffectType etype = eKSceneEffectType.SCENE_CHANGE_EFFECT_FADE;
KAScene = KAEngine.LoadScene(CurrentDirectory + @"\Degisn\Clear.t2s", "Clear");
KAScene.SetSceneEffectType(1, etype, fadeOutTime);
KAScenePlayer.Prepare(Layer10, KAScene);
KAScenePlayer.Play(Layer10);
}
else
{
//미송출 중이므로 넘긴다.
}
isDisplay8 = false;
}
}
else if (DisplayIndex == 9)
{
if (showing)
{
if (isDisplay9)
{
//이미 송출 중이므로 넘긴다
}
else
{
//송출을 위한 데이터를 읽어와서 송출한다.
//송출을 위한 데이터를 읽어와서 송출한다.
//데이터 읽는 부분
//서버에서 정보를 읽어온다.
string dispStr = "";
string requestURL = getURL() + channel + "/동영상/조회";
WebRequest request = WebRequest.Create(requestURL);
request.Method = "GET";
request.ContentType = "application/json; charset=UTF-8;";
//request.ContentType = "charset=UTF-8";
using (WebResponse response = request.GetResponse())
using (Stream stream = response.GetResponseStream())
using (StreamReader reader = new StreamReader(stream))
{
string data = reader.ReadToEnd();
JObject obj = JObject.Parse(data);
dispStr = obj["동영상"].ToString();
}
//특수문자 처리를 위함
dispStr = utils.replaceSpecialStr(dispStr);
string[] strs = dispStr.Split('|');
//송출부분
orderDisp9Index++;
if (strs[0] == "0")
{
KAScene = KAEngine.LoadScene(path9, "동영상" + orderDisp9Index);
}
else
{
string bufPath = path9.Replace(".t2s", "_상.t2s");
KAScene = KAEngine.LoadScene(bufPath, "동영상" + orderDisp9Index);
}
KAObject KAObject;
KAObject = KAScene.GetObject("video");
string path = Path.GetDirectoryName(path9) + "\\동영상\\" + strs[1];
KAObject.SetValue(path);
//Prepare
KAScenePlayer.Prepare(Layer9, KAScene);
//Play
KAScenePlayer.Play(Layer9);
//sendURL(getURL() + channel + "/자막상황/입력?동영상=N");
}
isDisplay9 = true;
}
else
{
if (isDisplay9)
{
//구경민 부장의 요청에 의해 자동 아웃이 이미 구현되어 있으므로 넘긴다
//송출 중 이므로 송출을 종료시킨다.
//송출 중 이므로 송출을 종료시킨다.
eKSceneEffectType etype = eKSceneEffectType.SCENE_CHANGE_EFFECT_FADE;
KAScene = KAEngine.LoadScene(CurrentDirectory + @"\Degisn\Clear.t2s", "Clear");
KAScene.SetSceneEffectType(1, etype, fadeOutTime);
KAScenePlayer.Prepare(Layer9, KAScene);
KAScenePlayer.Play(Layer9);
}
else
{
//미송출 중이므로 넘긴다.
}
isDisplay9 = false;
}
}
}
public void Disp1Worker()
{
while (isConnected && isDisplay1 )
{
try
{
//서버에서 정보를 읽어온다.
//실시간 수량 확인을 위한 진행
int orderCount = 0;
string requestURL = getURL() + channel + "/새데이터조회/상품수량?조회시작일=" + informationDisp1[1] +
"&방송일=" + informationDisp1[2] + "&PGM코드=" + informationDisp1[0] + "&보낸사람=Coder송출전확인";
WebRequest request = WebRequest.Create(requestURL);
request.Method = "GET";
request.ContentType = "application/json; charset=UTF-8;";
//request.ContentType = "charset=UTF-8";
using (WebResponse response = request.GetResponse())
using (Stream stream = response.GetResponseStream())
using (StreamReader reader = new StreamReader(stream))
{
string data = reader.ReadToEnd();
JObject obj = JObject.Parse(data);
var list = obj["saleList"];
if (list.Count() > 0)
{
int index = 0;
foreach (var item in list)
{
index++;
//모든 수량의 합
if (orderDisp1Index == 0)
{
orderCount += Convert.ToInt32(item["totalQty"]);
} else if (orderDisp1Index == index)
{
orderCount = Convert.ToInt32(item["totalQty"]);
}
}
}
else
{
Console.WriteLine("Err : " + "수량데이터 없음");
}
}
KAScene = KAEngine.LoadScene(path1, "판매수량");
KAObject KAObject;
KAObject = KAScene.GetObject("txt");
KAObject.SetValue(disp1TxtStr);
KAObject = KAScene.GetObject("counter");
KAObject.SetCounterNumberKey(1, 0);
KAObject.SetCounterNumberKey(2, Convert.ToDouble(orderCount));
//KAObject.SetValue(strs[1]);
//Prepare
KAScenePlayer.Prepare(Layer1, KAScene);
//Play
KAScenePlayer.Play(Layer1);
if (lblExtraDisplay.BackColor == Color.DarkRed)
{
if (this.InvokeRequired)
{
this.Invoke(new MethodInvoker(delegate ()
{
lblExtraDisplay.Text = "외부제어 송출 ON";
lblExtraDisplay.BackColor = Color.Green;
}));
}
else
{
lblExtraDisplay.Text = "외부제어 송출 ON";
lblExtraDisplay.BackColor = Color.Green;
}
}
}
catch (Exception ex)
{
Console.WriteLine("Time : " + DateTime.Now.ToString("hhmmss"));
Console.WriteLine("Err : " + ex.Message);
Console.WriteLine("Err : " + ex.StackTrace);
if (this.InvokeRequired)
{
this.Invoke(new MethodInvoker(delegate ()
{
lblExtraDisplay.Text = "서버 응답 Error";
lblExtraDisplay.BackColor = Color.DarkRed;
}));
}
else
{
lblExtraDisplay.Text = "서버 응답 Error";
lblExtraDisplay.BackColor = Color.DarkRed;
}
}
for (int i = 0; i < termDisp1*10; i++)
{
Thread.Sleep(100);
if (!isConnected || !isDisplay1)
return;
}
}
}
#endregion
 
#region Coder
#region
struct goos
{
public int index;
public string goosName;
public int sellCount;
}
List<goos> salesGoos = new List<goos>();
string nowpgmName = "";
private void btnSalesData_Click(object sender, EventArgs e)
{
try
{
string date1 = dateTimePicker1.Value.ToString("yyyyMMdd");
string date2 = dateTimePicker2.Value.ToString("yyyyMMdd");
string requestURL = getURL() + channel + "/새데이터조회/상품수량?조회시작일=" + date1 + "&방송일=" + date2 + "&PGM코드=" + txtPGM.Text + "&보낸사람=Coder";
WebRequest request = WebRequest.Create(requestURL);
request.Method = "GET";
request.ContentType = "application/json; charset=UTF-8;";
//request.ContentType = "charset=UTF-8";
using (WebResponse response = request.GetResponse())
using (Stream stream = response.GetResponseStream())
using (StreamReader reader = new StreamReader(stream))
{
string data = reader.ReadToEnd();
JObject obj = JObject.Parse(data);
var list = obj["saleList"];
if (list.Count() > 0)
{
salesGoos = new List<goos>();
cmbChoiceGoos.Items.Clear();
txtDispTxt1.Text = dateTimePicker1.Value.ToString("yy.MM.dd") + "~" + dateTimePicker2.Value.ToString("yy.MM.dd");
int index = 0;
foreach (var item in list)
{
//Console.WriteLine(string.Format("{0}: {1}", "상품명", item["pgmName"]));
//Console.WriteLine(string.Format("{0}: {1}", "세부명", item["pgmGoosName"]));
//Console.WriteLine(string.Format("{0}: {1}", "상품GoosCode?", item["pgmGoosCode"]));
//Console.WriteLine(string.Format("{0}: {1}", "판매량", item["totalQty"]));
//Console.WriteLine(string.Format("{0}: {1}", "코드", item["pgmCode"]));
if (index == 0)
{
nowpgmName = item["pgmName"].ToString();
//cmbChoiceGoos.Items.Add(nowpgmName);
cmbChoiceGoos.Items.Add("전체");
}
index++;
goos target = new goos();
target.index = index;
target.goosName = item["pgmGoosName"].ToString();
target.sellCount = Convert.ToInt32(item["totalQty"]);
salesGoos.Add(target);
cmbChoiceGoos.Items.Add(target.goosName);
}
cmbChoiceGoos.SelectedIndex = -1;
cmbChoiceGoos.SelectedIndex = 0;
}
else
{
MessageBox.Show("조회된 데이터가 없습니다.", "확인");
}
}
}
catch(Exception ex)
{
MessageBox.Show("서버의 응답이 정상적이지 않습니다.", "데이터 서버 응답 오류");
}
}
private void cmbChoiceGoos_SelectedIndexChanged(object sender, EventArgs e)
{
if (cmbChoiceGoos.SelectedIndex == -1)
{
return;
}
else
{
bool isChecker = false;
int forCount = 0;
foreach (var c in salesGoos)
{
if (cmbChoiceGoos.SelectedItem.ToString().Equals(c.goosName))
{
isChecker = true;
txt_totalQty.Text = c.sellCount.ToString();
}
forCount += c.sellCount;
}
if (!isChecker)
{
txt_totalQty.Text = forCount.ToString();
}
}
}
private void btnDisp1_Click(object sender, EventArgs e)
{
if (isConnected){
if (isDisplay1)
{
sendURL(getURL() + channel + "/자막상황/입력?상품=N");
}
else
{
try
{
double checkDbl = Convert.ToDouble(txt_totalQty.Text);
string txt = txtDispTxt1.Text + "|" + txt_totalQty.Text;
string date1 = dateTimePicker1.Value.ToString("yyyyMMdd");
string date2 = dateTimePicker2.Value.ToString("yyyyMMdd");
txt += "|" + txtPGM.Text + "|" + date1 + "|" + date2 + "|" + ((cmbDisplayTerm.SelectedIndex + 1)*5) + "|" + cmbChoiceGoos.SelectedIndex;
//순서 : 텍스트로 나갈 정보,판매수량, PGM, 시작일, 종료일, 주기, 순번의 형태로 저장
string requestURL = getURL() + channel + "/데이터입력/상품수량?텍스트=" + txt + "&보낸사람=코더";
sendURL(requestURL);
sendURL(getURL() + channel + "/자막상황/입력?상품=Y");
}
catch(Exception ex)
{
MessageBox.Show("정상적인 값이 입력되지 않았습니다.");
}
}
}
else
{
MessageBox.Show("토네이도 연결이 필요합니다.");
}
}
private void cmbDisplayTerm_SelectedIndexChanged(object sender, EventArgs e)
{
RegistryKey key = Registry.CurrentUser.CreateSubKey(subKey);
key.SetValue("DisplayTerm", cmbDisplayTerm.SelectedIndex);
}
#endregion
#region
private void btnPrizeDraw_Click(object sender, EventArgs e)
{
try
{
//listView 초기화
listView1.Items.Clear();
string requestURL = getURL() + channel + "/새데이터조회/경품프로모션?프로모션코드=" + txtPromotion.Text + "&보낸사람=Coder";
WebRequest request = WebRequest.Create(requestURL);
request.Method = "GET";
request.ContentType = "application/json; charset=UTF-8;";
using (WebResponse response = request.GetResponse())
using (Stream stream = response.GetResponseStream())
using (StreamReader reader = new StreamReader(stream))
{
string data = reader.ReadToEnd();
JObject obj = JObject.Parse(data);
var list = obj["prizeList"];
if (list.Count() > 0)
{
int index = 0;
foreach (var item in list)
{
//Console.WriteLine(string.Format("{0}: {1}", "promoName", item["promoName"]));
//Console.WriteLine(string.Format("{0}: {1}", "endYn", item["endYn"]));
//Console.WriteLine(string.Format("{0}: {1}", "defAddr", item["defAddr"]));
//Console.WriteLine(string.Format("{0}: {1}", "confirmCnt", item["confirmCnt"]));
//Console.WriteLine(string.Format("{0}: {1}", "custName", item["custName"]));
//Console.WriteLine(string.Format("{0}: {1}", "doType", item["doType"]));
//Console.WriteLine(string.Format("{0}: {1}", "defHp", item["defHp"]));
//Console.WriteLine(string.Format("{0}: {1}", "insertId", item["insertId"]));
listView1.Items.Add(item["custName"].ToString() + ", " + item["defAddr"].ToString() + ", " + item["defHp"].ToString());
index++;
}
}
else
{
MessageBox.Show("조회된 데이터가 없습니다.", "확인");
}
}
}
catch (Exception ex)
{
MessageBox.Show("서버의 응답이 정상적이지 않습니다.", "데이터 서버 응답 오류");
}
}
private void btnDisp2_Click(object sender, EventArgs e)
{
try
{
if (isConnected)
{
if (isDisplay2)
{
//송출중인 상태 - 송출 아웃
sendURL(getURL() + channel + "/자막상황/입력?경품=N");
}
else
{
string txt = "";
foreach (ListViewItem i in listView1.Items)
{
string[] strs = i.Text.Replace(", ", "|").Split('|');
txt += strs[0] + "|" + strs[1] + "|" + strs[2] + "|";
}
if (txt.Equals(""))
{
MessageBox.Show("조회된 데이터가 없거나 정상적이지 않습니다.");
return;
}
string requestURL = getURL() + channel + "/데이터입력/경품프로모션?텍스트=" + txt + "&보낸사람=코더";
sendURL(requestURL);
sendURL(getURL() + channel + "/자막상황/입력?경품=Y");
}
}
else
{
MessageBox.Show("토네이도 연결이 필요합니다.");
}
}
catch (Exception ex)
{
MessageBox.Show("서버의 응답이 정상적이지 않습니다.", "데이터 서버 응답 오류");
}
}
#region ListView
void lv_DrawSubItem(object sender, DrawListViewSubItemEventArgs e)
{
//Console.WriteLine(e.ItemIndex);
e.DrawBackground();
if (listView1.SelectedItems.Count > 0)
if (e.ItemIndex == listView1.SelectedItems[0].Index)
{
e.Graphics.FillRectangle(new SolidBrush(Color.FromArgb(150, 150, 150)), e.Bounds);
}
//e.DrawBackground();
e.DrawText();
}
void lv_DrawColumnHeader(object sender, DrawListViewColumnHeaderEventArgs e)
{
using (var sf = new StringFormat())
{
sf.Alignment = StringAlignment.Center;
sf.LineAlignment = StringAlignment.Center;
using (var headerFont = new Font("Microsoft Sans Serif", 9, FontStyle.Bold))
{
e.Graphics.FillRectangle(new SolidBrush(Color.FromArgb(100, 100, 100)), e.Bounds);
e.Graphics.DrawString(e.Header.Text, headerFont,
Brushes.White, e.Bounds, sf);
}
}
/*
e.Graphics.FillRectangle(new SolidBrush(Color.FromArgb(100, 100, 100)), e.Bounds);
e.DrawText();
*/
}
#endregion
#endregion
private void sendURL(string rURL)
{
try
{
WebRequest request = WebRequest.Create(rURL);
request.Method = "GET";
request.ContentType = "application/json; charset=UTF-8;";
request.GetResponse();
request.Abort();
}
catch(Exception e)
{
}
}
#endregion
#region
string subKey = @"SOFTWARE\SSGCoder";
private void loadSettingData()
{
RegistryKey key = Registry.CurrentUser.CreateSubKey(subKey);
txt답변값.Text = key.GetValue("답변높이") != null ? key.GetValue("답변높이").ToString() : "40";
//디자인 경로 1
if (key.GetValue("path1") != null)
{
path1 = key.GetValue("path1").ToString();
path2 = key.GetValue("path2").ToString();
Layer1 = Convert.ToInt32(key.GetValue("layer1").ToString());
Layer2 = Convert.ToInt32(key.GetValue("layer2").ToString());
cmbDisplayTerm.SelectedIndex = Convert.ToInt32(key.GetValue("DisplayTerm").ToString());
path3_1 = key.GetValue("path3_1") != null ? key.GetValue("path3_1").ToString() : CurrentDirectory + @"\Degisn\텍스트\텍스트_1.t2s";
path3_2 = key.GetValue("path3_2") != null ? key.GetValue("path3_2").ToString() : CurrentDirectory + @"\Degisn\텍스트\텍스트_2.t2s";
path3_3 = key.GetValue("path3_3") != null ? key.GetValue("path3_3").ToString() : CurrentDirectory + @"\Degisn\텍스트\텍스트_3.t2s";
path3_4 = key.GetValue("path3_4") != null ? key.GetValue("path3_4").ToString() : CurrentDirectory + @"\Degisn\텍스트\텍스트_4.t2s";
path3_5 = key.GetValue("path3_5") != null ? key.GetValue("path3_5").ToString() : CurrentDirectory + @"\Degisn\텍스트\텍스트_5.t2s";
path3_6 = key.GetValue("path3_6") != null ? key.GetValue("path3_6").ToString() : CurrentDirectory + @"\Degisn\텍스트\텍스트_6.t2s";
path3_7 = key.GetValue("path3_7") != null ? key.GetValue("path3_7").ToString() : CurrentDirectory + @"\Degisn\텍스트\텍스트_7.t2s";
path3_8 = key.GetValue("path3_8") != null ? key.GetValue("path3_8").ToString() : CurrentDirectory + @"\Degisn\텍스트\텍스트_8.t2s";
path3_9 = key.GetValue("path3_9") != null ? key.GetValue("path3_9").ToString() : CurrentDirectory + @"\Degisn\텍스트\텍스트_9.t2s";
path3_10 = key.GetValue("path3_10") != null ? key.GetValue("path3_10").ToString() : CurrentDirectory + @"\Degisn\텍스트\텍스트_10.t2s";
path3_11 = key.GetValue("path3_11") != null ? key.GetValue("path3_11").ToString() : CurrentDirectory + @"\Degisn\텍스트\텍스트_11.t2s";
path3_12 = key.GetValue("path3_12") != null ? key.GetValue("path3_12").ToString() : CurrentDirectory + @"\Degisn\텍스트\텍스트_12.t2s";
path3_13 = key.GetValue("path3_13") != null ? key.GetValue("path3_13").ToString() : CurrentDirectory + @"\Degisn\텍스트\텍스트_13.t2s";
path3_14 = key.GetValue("path3_14") != null ? key.GetValue("path3_14").ToString() : CurrentDirectory + @"\Degisn\텍스트\텍스트_14.t2s";
path3_15 = key.GetValue("path3_15") != null ? key.GetValue("path3_15").ToString() : CurrentDirectory + @"\Degisn\텍스트\텍스트_15.t2s";
path3_16 = key.GetValue("path3_16") != null ? key.GetValue("path3_16").ToString() : CurrentDirectory + @"\Degisn\텍스트\텍스트_16.t2s";
path3_17 = key.GetValue("path3_17") != null ? key.GetValue("path3_17").ToString() : CurrentDirectory + @"\Degisn\텍스트\텍스트_17.t2s";
path3_18 = key.GetValue("path3_18") != null ? key.GetValue("path3_18").ToString() : CurrentDirectory + @"\Degisn\텍스트\텍스트_18.t2s";
path3_19 = key.GetValue("path3_19") != null ? key.GetValue("path3_19").ToString() : CurrentDirectory + @"\Degisn\텍스트\텍스트_19.t2s";
path3_20 = key.GetValue("path3_20") != null ? key.GetValue("path3_20").ToString() : CurrentDirectory + @"\Degisn\텍스트\텍스트_20.t2s";
dbIP = key.GetValue("dbIP") != null ? key.GetValue("dbIP").ToString() : "211.42.188.8";
Layer3 = key.GetValue("layer3") != null ? Convert.ToInt32(key.GetValue("layer3")) : 3;
Layer4 = key.GetValue("layer4") != null ? Convert.ToInt32(key.GetValue("layer4")) : 4;
Layer5 = key.GetValue("layer5") != null ? Convert.ToInt32(key.GetValue("layer5")) : 5;
Layer6 = key.GetValue("layer6") != null ? Convert.ToInt32(key.GetValue("layer6")) : 6;
Layer7 = key.GetValue("layer7") != null ? Convert.ToInt32(key.GetValue("layer7")) : 7;
Layer8 = key.GetValue("layer8") != null ? Convert.ToInt32(key.GetValue("layer8")) : 8;
Layer9 = key.GetValue("layer9") != null ? Convert.ToInt32(key.GetValue("layer9")) : 9;
Layer10 = key.GetValue("layer10") != null ? Convert.ToInt32(key.GetValue("layer10")) : 10;
Layer11 = key.GetValue("layer11") != null ? Convert.ToInt32(key.GetValue("layer11")) : 11;
Layer12 = key.GetValue("layer12") != null ? Convert.ToInt32(key.GetValue("layer12")) : 12;
Layer13 = key.GetValue("layer13") != null ? Convert.ToInt32(key.GetValue("layer13")) : 12;
Layer14 = key.GetValue("layer14") != null ? Convert.ToInt32(key.GetValue("layer14")) : 12;
Layer15 = key.GetValue("layer15") != null ? Convert.ToInt32(key.GetValue("layer15")) : 12;
fadeOutTime = key.GetValue("fadeOutTime") != null ? Convert.ToInt32(key.GetValue("fadeOutTime")) : 10;
frameVRV = key.GetValue("frameVRV") != null ? Convert.ToInt32(key.GetValue("frameVRV")) : 52;
frameTAG = key.GetValue("frameTAG") != null ? Convert.ToInt32(key.GetValue("frameTAG")) : 149;
path4 = key.GetValue("path4") != null ? key.GetValue("path4").ToString() : CurrentDirectory + @"\Degisn\라이브톡\채팅.t2s";
path4_0 = key.GetValue("path4_0") != null ? key.GetValue("path4_0").ToString() : CurrentDirectory + @"\Degisn\라이브톡\채팅.t2s";
path4_1 = key.GetValue("path4_1") != null ? key.GetValue("path4_1").ToString() : CurrentDirectory + @"\Degisn\라이브톡\채팅.t2s";
path4_2 = key.GetValue("path4_2") != null ? key.GetValue("path4_2").ToString() : CurrentDirectory + @"\Degisn\라이브톡\채팅.t2s";
path4_3 = key.GetValue("path4_3") != null ? key.GetValue("path4_3").ToString() : CurrentDirectory + @"\Degisn\라이브톡\채팅.t2s";
path4_4 = key.GetValue("path4_4") != null ? key.GetValue("path4_4").ToString() : CurrentDirectory + @"\Degisn\라이브톡\채팅.t2s";
path4_5 = key.GetValue("path4_5") != null ? key.GetValue("path4_5").ToString() : CurrentDirectory + @"\Degisn\라이브톡\채팅.t2s";
path5 = key.GetValue("path5") != null ? key.GetValue("path5").ToString() : CurrentDirectory + @"\Degisn\라이브톡\상품평.t2s";
path6 = key.GetValue("path6") != null ? key.GetValue("path6").ToString() : CurrentDirectory + @"\Degisn\라이브톡\QnA.t2s";
path7 = key.GetValue("path7") != null ? key.GetValue("path7").ToString() : CurrentDirectory + @"\Degisn\라이브톡\공지.t2s";
path8 = key.GetValue("path8") != null ? key.GetValue("path8").ToString() : CurrentDirectory + @"\Degisn\라이브톡\채팅백판.t2s";
path9 = key.GetValue("path9") != null ? key.GetValue("path9").ToString() : CurrentDirectory + @"\Degisn\라이브톡\동영상.t2s";
if (key.GetValue("Color1R") != null)
{
int R = Convert.ToInt16(key.GetValue("Color1R").ToString());
int G = Convert.ToInt16(key.GetValue("Color1G").ToString());
int B = Convert.ToInt16(key.GetValue("Color1B").ToString());
Color color = Color.FromArgb(R, G, B);
lbl_color_1.BackColor = color;
}
if (key.GetValue("Color2R") != null)
{
int R = Convert.ToInt16(key.GetValue("Color2R").ToString());
int G = Convert.ToInt16(key.GetValue("Color2G").ToString());
int B = Convert.ToInt16(key.GetValue("Color2B").ToString());
Color color = Color.FromArgb(R, G, B);
lbl_color_2.BackColor = color;
}
if (key.GetValue("Color3R") != null)
{
int R = Convert.ToInt16(key.GetValue("Color3R").ToString());
int G = Convert.ToInt16(key.GetValue("Color3G").ToString());
int B = Convert.ToInt16(key.GetValue("Color3B").ToString());
Color color = Color.FromArgb(R, G, B);
lbl_color_3.BackColor = color;
}
if (key.GetValue("Color4R") != null)
{
int R = Convert.ToInt16(key.GetValue("Color4R").ToString());
int G = Convert.ToInt16(key.GetValue("Color4G").ToString());
int B = Convert.ToInt16(key.GetValue("Color4B").ToString());
Color color = Color.FromArgb(R, G, B);
lbl_color_4.BackColor = color;
}
if (key.GetValue("Color5R") != null)
{
int R = Convert.ToInt16(key.GetValue("Color5R").ToString());
int G = Convert.ToInt16(key.GetValue("Color5G").ToString());
int B = Convert.ToInt16(key.GetValue("Color5B").ToString());
Color color = Color.FromArgb(R, G, B);
lbl_color_5.BackColor = color;
}
if (key.GetValue("Color6R") != null)
{
int R = Convert.ToInt16(key.GetValue("Color6R").ToString());
int G = Convert.ToInt16(key.GetValue("Color6G").ToString());
int B = Convert.ToInt16(key.GetValue("Color6B").ToString());
Color color = Color.FromArgb(R, G, B);
lbl_color_6.BackColor = color;
}
if (key.GetValue("channel") != null)
{
toggleChannel.IsOn = Convert.ToBoolean(key.GetValue("channel"));
toggleChannel_Toggled(toggleChannel, new EventArgs());
}
else
{
key.SetValue("channel", toggleChannel.IsOn);
}
txtIP.Text = "211.42.188.8";
}
else //첫실행 이므로 해당 값들을 모두 디폴트로 저장시킨다.
{
key.SetValue("path1", CurrentDirectory + @"\Degisn\판매수량\판매수량.t2s");
key.SetValue("path2", CurrentDirectory + @"\Degisn\경품추첨\경품추첨.t2s");
key.SetValue("path3_1", CurrentDirectory + @"\Degisn\텍스트\텍스트_1.t2s");
key.SetValue("path3_2", CurrentDirectory + @"\Degisn\텍스트\텍스트_2.t2s");
key.SetValue("path3_3", CurrentDirectory + @"\Degisn\텍스트\텍스트_3.t2s");
key.SetValue("path3_4", CurrentDirectory + @"\Degisn\텍스트\텍스트_4.t2s");
key.SetValue("path3_5", CurrentDirectory + @"\Degisn\텍스트\텍스트_5.t2s");
key.SetValue("path3_6", CurrentDirectory + @"\Degisn\텍스트\텍스트_6.t2s");
key.SetValue("path3_7", CurrentDirectory + @"\Degisn\텍스트\텍스트_7.t2s");
key.SetValue("path3_8", CurrentDirectory + @"\Degisn\텍스트\텍스트_8.t2s");
key.SetValue("path3_9", CurrentDirectory + @"\Degisn\텍스트\텍스트_9.t2s");
key.SetValue("path3_10", CurrentDirectory + @"\Degisn\텍스트\텍스트_10.t2s");
key.SetValue("path4", CurrentDirectory + @"\Degisn\라이브톡\채팅.t2s");
key.SetValue("path4_0", CurrentDirectory + @"\Degisn\라이브톡\채팅.t2s");
key.SetValue("path4_1", CurrentDirectory + @"\Degisn\라이브톡\채팅.t2s");
key.SetValue("path4_2", CurrentDirectory + @"\Degisn\라이브톡\채팅.t2s");
key.SetValue("path4_3", CurrentDirectory + @"\Degisn\라이브톡\채팅.t2s");
key.SetValue("path5", CurrentDirectory + @"\Degisn\라이브톡\상품평.t2s");
key.SetValue("path6", CurrentDirectory + @"\Degisn\라이브톡\QnA.t2s");
key.SetValue("path7", CurrentDirectory + @"\Degisn\라이브톡\공지.t2s");
key.SetValue("path8", CurrentDirectory + @"\Degisn\라이브톡\채팅백판.t2s");
key.SetValue("path8", CurrentDirectory + @"\Degisn\라이브톡\동영상.t2s");
key.SetValue("layer1", 1);
key.SetValue("layer2", 2);
key.SetValue("layer3", 3);
key.SetValue("layer4", 4);
key.SetValue("layer5", 5);
key.SetValue("layer6", 6);
key.SetValue("layer7", 7);
key.SetValue("layer8", 8);
key.SetValue("fadeOutTime", 10);
key.SetValue("DisplayTerm", 2);
key.SetValue("channel", toggleChannel.IsOn);
key.SetValue("dbIP", "211.42.188.8");
cmbDisplayTerm.SelectedIndex = 2;
}
//해당 Control 값들 변경
txtDisplay1Path.Text = path1;
txtDisplay2Path.Text = path2;
if (cmbPushType.SelectedIndex == 0)
txtDisplay3Path.Text = path3_1;
else if (cmbPushType.SelectedIndex == 1)
txtDisplay3Path.Text = path3_2;
else if (cmbPushType.SelectedIndex == 2)
txtDisplay3Path.Text = path3_3;
else if (cmbPushType.SelectedIndex == 3)
txtDisplay3Path.Text = path3_4;
else if (cmbPushType.SelectedIndex == 4)
txtDisplay3Path.Text = path3_5;
else if (cmbPushType.SelectedIndex == 5)
txtDisplay3Path.Text = path3_6;
else if (cmbPushType.SelectedIndex == 6)
txtDisplay3Path.Text = path3_7;
else if (cmbPushType.SelectedIndex == 7)
txtDisplay3Path.Text = path3_8;
else if (cmbPushType.SelectedIndex == 8)
txtDisplay3Path.Text = path3_9;
else if (cmbPushType.SelectedIndex == 9)
txtDisplay3Path.Text = path3_10;
else if (cmbPushType.SelectedIndex == 10)
txtDisplay3Path.Text = path3_11;
else if (cmbPushType.SelectedIndex == 11)
txtDisplay3Path.Text = path3_12;
else if (cmbPushType.SelectedIndex == 12)
txtDisplay3Path.Text = path3_13;
else if (cmbPushType.SelectedIndex == 13)
txtDisplay3Path.Text = path3_14;
else if (cmbPushType.SelectedIndex == 14)
txtDisplay3Path.Text = path3_15;
else if (cmbPushType.SelectedIndex == 15)
txtDisplay3Path.Text = path3_16;
else if (cmbPushType.SelectedIndex == 16)
txtDisplay3Path.Text = path3_17;
else if (cmbPushType.SelectedIndex == 17)
txtDisplay3Path.Text = path3_18;
else if (cmbPushType.SelectedIndex == 18)
txtDisplay3Path.Text = path3_19;
else if (cmbPushType.SelectedIndex == 19)
txtDisplay3Path.Text = path3_20;
txtFrameTAG.Text = frameTAG.ToString();
txtFrameVRV.Text = frameVRV.ToString();
txtDisplay4Path.Text = path4;
txtDisplay4_0Path.Text = path4_0;
txtDisplay4_1Path.Text = path4_1;
txtDisplay4_2Path.Text = path4_2;
txtDisplay4_3Path.Text = path4_3;
txtDisplay4_4Path.Text = path4_4;
txtDisplay4_5Path.Text = path4_5;
txtonacd.Text = key.GetValue("txtonacd") != null ? key.GetValue("txtonacd").ToString() : "3";
txtonacd2.Text = key.GetValue("txtonacd2") != null ? key.GetValue("txtonacd2").ToString() : "10";
txtBarSec.Text = key.GetValue("txtBarSec") != null ? key.GetValue("txtBarSec").ToString() : "7";
txtCGSec.Text = key.GetValue("txtCGSec") != null ? key.GetValue("txtCGSec").ToString() : "30";
txtCallSec.Text = key.GetValue("txtCallSec") != null ? key.GetValue("txtCallSec").ToString() : "60";
txtCallSec2.Text = key.GetValue("txtCallSec2") != null ? key.GetValue("txtCallSec2").ToString() : "60";
txtNoCGStart.Text = key.GetValue("txtNoCGStart") != null ? key.GetValue("txtNoCGStart").ToString() : "60";
txtNoCGEnd.Text = key.GetValue("txtNoCGEnd") != null ? key.GetValue("txtNoCGEnd").ToString() : "60";
txtNoSellFocus.Text = key.GetValue("txtNoSellFocus") != null ? key.GetValue("txtNoSellFocus").ToString() : "60";
txtSellFocusTerm.Text = key.GetValue("txtSellFocusTerm") != null ? key.GetValue("txtSellFocusTerm").ToString() : "5";
txtNoDelivery.Text = key.GetValue("txtNoDelivery") != null ? key.GetValue("txtNoDelivery").ToString() : "60";
txtDeliveryTerm.Text = key.GetValue("txtDeliveryTerm") != null ? key.GetValue("txtDeliveryTerm").ToString() : "5";
txtNoVVIP.Text = key.GetValue("txtNoVVIP") != null ? key.GetValue("txtNoVVIP").ToString() : "60";
txtNoVVIP전면.Text = key.GetValue("txtNoVVIP전면") != null ? key.GetValue("txtNoVVIP전면").ToString() : "60";
txtVVIPTerm.Text = key.GetValue("txtVVIPTerm") != null ? key.GetValue("txtVVIPTerm").ToString() : "5";
txtVVIPTerm전면.Text = key.GetValue("txtVVIPTerm전면") != null ? key.GetValue("txtVVIPTerm전면").ToString() : "5";
txtDeliverySec.Text = key.GetValue("txtDeliverySec") != null ? key.GetValue("txtDeliverySec").ToString() : "7";
txtVVIPSec.Text = key.GetValue("txtVVIPSec") != null ? key.GetValue("txtVVIPSec").ToString() : "7";
txtVVIP전면Sec.Text = key.GetValue("txtVVIP전면Sec") != null ? key.GetValue("txtVVIP전면Sec").ToString() : "7";
void setToggle(ToggleSwitch target) => target.IsOn = key.GetValue(target.Name) != null ? Convert.ToBoolean(key.GetValue(target.Name).ToString()) : true;
setToggle(toggleSwitch매진);
setToggle(toggleSwitch매진예상);
setToggle(toggleSwitch매진팁);
setToggle(toggleSwitch자동주문);
setToggle(toggleSwitch전체매진);
setToggle(toggleSwitch주문집중);
setToggle(toggleSwitch주문콜전체);
setToggle(toggleSwitch카드프로모션);
setToggle(toggleSwitch배송정보);
setToggle(toggleSwitchVVIP);
setToggle(toggleSwitchVVIP전면);
txtDisplay5Path.Text = path5;
txtDisplay6Path.Text = path6;
txtDisplay7Path.Text = path7;
txtDisplay8Path.Text = path8;
txtDisplay9Path.Text = path9;
txtDisplay1Layer.Text = Layer1.ToString();
txtDisplay2Layer.Text = Layer2.ToString();
txtDisplay3Layer.Text = Layer3.ToString();
txtDisplay4Layer.Text = Layer4.ToString();
txtDisplay5Layer.Text = Layer5.ToString();
txtDisplay6Layer.Text = Layer6.ToString();
txtDisplay7Layer.Text = Layer7.ToString();
txtDisplay8Layer.Text = Layer8.ToString();
txtDisplay9Layer.Text = Layer9.ToString();
txtDisplay10Layer.Text = Layer10.ToString();
txtDisplay11Layer.Text = Layer11.ToString();
txtDisplay12Layer.Text = Layer12.ToString();
txtDisplay13Layer.Text = Layer13.ToString();
txtDisplay14Layer.Text = Layer14.ToString();
txtDisplay15Layer.Text = Layer15.ToString();
txtIP.Text = dbIP;
}
private void toggleChannel_Toggled(object sender, EventArgs e)
{
RegistryKey key = Registry.CurrentUser.CreateSubKey(subKey);
if (toggleChannel.IsOn)
{
channel = "채널2";
}
else
{
channel = "채널1";
}
key.SetValue("channel", toggleChannel.IsOn);
loadPushName();
}
private void btnChangeDB_Click(object sender, EventArgs e)
{
RegistryKey key = Registry.CurrentUser.CreateSubKey(subKey);
dbIP = txtIP.Text;
key.SetValue("dbIP", dbIP);
MessageBox.Show("DB 설정이 변경되었습니다.");
}
private void btnDisplayPathChange_Click(object sender, EventArgs e)
{
var targetName = ((Button)sender).Name;
//if (isDisplay1 || isDisplay2 || isDisplay3)
if (isConnected)
{
MessageBox.Show("연결 중 변경은 불가능 합니다." + NewLine + "Disconnection 후 변경해 주세요.");
return;
}
if (sender == btnDisplay8PathChange)
{
MessageBox.Show("송출 셋팅된 채팅 경로를 기반으로 설정됩니다." + Environment.NewLine +
@"기존경로t2s 파일명 + _back으로 자동설정" + Environment.NewLine +
@"예) 채팅 송출 => C:\디자인\채팅.t2s 인 경우" + Environment.NewLine +
@"채팅백판 송출 => C:\디자인\채팅_back.t2s 로 결정" + Environment.NewLine);
return;
}
int index = 1;
if (sender == btnDisplay2PathChange) index = 2;
if (sender == btnDisplay3PathChange) index = 3;
if (sender == btnDisplay4PathChange) index = 4;
if (sender == btnDisplay4_0PathChange) index = 40;
if (sender == btnDisplay4_1PathChange) index = 41;
if (sender == btnDisplay4_2PathChange) index = 42;
if (sender == btnDisplay4_3PathChange) index = 43;
if (sender == btnDisplay4_4PathChange) index = 44;
if (sender == btnDisplay4_5PathChange) index = 45;
if (sender == btnDisplay5PathChange) index = 5;
if (sender == btnDisplay6PathChange) index = 6;
if (sender == btnDisplay7PathChange) index = 7;
if (sender == btnDisplay8PathChange) index = 8;
if (sender == btnDisplay9PathChange) index = 9;
OpenFileDialog fileDialog = new OpenFileDialog();
fileDialog.Filter = "토네이도 file (*.t2s) | *.t2s";
fileDialog.Multiselect = false;
fileDialog.RestoreDirectory = true;
switch (index)
{
case 1:
fileDialog.InitialDirectory = Path.GetDirectoryName(path1);
fileDialog.FileName = path1;
break;
case 2:
fileDialog.InitialDirectory = Path.GetDirectoryName(path2);
fileDialog.FileName = path2;
break;
case 3:
string targetStr = "";
if (cmbPushType.SelectedIndex == 0) targetStr = path3_1;
else if (cmbPushType.SelectedIndex == 1) targetStr = path3_2;
else if (cmbPushType.SelectedIndex == 2) targetStr = path3_3;
else if (cmbPushType.SelectedIndex == 3) targetStr = path3_4;
else if (cmbPushType.SelectedIndex == 4) targetStr = path3_5;
else if (cmbPushType.SelectedIndex == 5) targetStr = path3_6;
else if (cmbPushType.SelectedIndex == 6) targetStr = path3_7;
else if (cmbPushType.SelectedIndex == 7) targetStr = path3_8;
else if (cmbPushType.SelectedIndex == 8) targetStr = path3_9;
else if (cmbPushType.SelectedIndex == 9) targetStr = path3_10;
else if (cmbPushType.SelectedIndex == 10) targetStr = path3_11;
else if (cmbPushType.SelectedIndex == 11) targetStr = path3_12;
else if (cmbPushType.SelectedIndex == 12) targetStr = path3_13;
else if (cmbPushType.SelectedIndex == 13) targetStr = path3_14;
else if (cmbPushType.SelectedIndex == 14) targetStr = path3_15;
else if (cmbPushType.SelectedIndex == 15) targetStr = path3_16;
else if (cmbPushType.SelectedIndex == 16) targetStr = path3_17;
else if (cmbPushType.SelectedIndex == 17) targetStr = path3_18;
else if (cmbPushType.SelectedIndex == 18) targetStr = path3_19;
else if (cmbPushType.SelectedIndex == 19) targetStr = path3_20;
fileDialog.InitialDirectory = Path.GetDirectoryName(targetStr);
fileDialog.FileName = targetStr;
break;
case 4:
fileDialog.InitialDirectory = Path.GetDirectoryName(path4);
fileDialog.FileName = path4;
break;
case 40:
fileDialog.InitialDirectory = Path.GetDirectoryName(path4_0);
fileDialog.FileName = path4_0;
break;
case 41:
fileDialog.InitialDirectory = Path.GetDirectoryName(path4_1);
fileDialog.FileName = path4_1;
break;
case 42:
fileDialog.InitialDirectory = Path.GetDirectoryName(path4_2);
fileDialog.FileName = path4_2;
break;
case 43:
fileDialog.InitialDirectory = Path.GetDirectoryName(path4_3);
fileDialog.FileName = path4_3;
break;
case 44:
fileDialog.InitialDirectory = Path.GetDirectoryName(path4_4);
fileDialog.FileName = path4_4;
break;
case 45:
fileDialog.InitialDirectory = Path.GetDirectoryName(path4_5);
fileDialog.FileName = path4_5;
break;
case 5:
fileDialog.InitialDirectory = Path.GetDirectoryName(path5);
fileDialog.FileName = path5;
break;
case 6:
fileDialog.InitialDirectory = Path.GetDirectoryName(path6);
fileDialog.FileName = path6;
break;
case 7:
fileDialog.InitialDirectory = Path.GetDirectoryName(path7);
fileDialog.FileName = path7;
break;
case 8:
fileDialog.InitialDirectory = Path.GetDirectoryName(path8);
fileDialog.FileName = path8;
break;
case 9:
fileDialog.InitialDirectory = Path.GetDirectoryName(path9);
fileDialog.FileName = path9;
break;
}
if (fileDialog.ShowDialog() == DialogResult.OK)
{
RegistryKey key = Registry.CurrentUser.CreateSubKey(subKey);
string selected = fileDialog.FileName;
switch (index)
{
case 1:
key.SetValue("path1", selected);
path1 = selected;
txtDisplay1Path.Text = selected;
break;
case 2:
key.SetValue("path2", selected);
path2 = selected;
txtDisplay2Path.Text = selected;
break;
case 3:
if (cmbPushType.SelectedIndex == 0) path3_1 = selected;
else if (cmbPushType.SelectedIndex == 1) path3_2 = selected;
else if (cmbPushType.SelectedIndex == 2) path3_3 = selected;
else if (cmbPushType.SelectedIndex == 3) path3_4 = selected;
else if (cmbPushType.SelectedIndex == 4) path3_5 = selected;
else if (cmbPushType.SelectedIndex == 5) path3_6 = selected;
else if (cmbPushType.SelectedIndex == 6) path3_7 = selected;
else if (cmbPushType.SelectedIndex == 7) path3_8 = selected;
else if (cmbPushType.SelectedIndex == 8) path3_9 = selected;
else if (cmbPushType.SelectedIndex == 9) path3_10 = selected;
else if (cmbPushType.SelectedIndex == 10) path3_11 = selected;
else if (cmbPushType.SelectedIndex == 11) path3_12 = selected;
else if (cmbPushType.SelectedIndex == 12) path3_13 = selected;
else if (cmbPushType.SelectedIndex == 13) path3_14 = selected;
else if (cmbPushType.SelectedIndex == 14) path3_15 = selected;
else if (cmbPushType.SelectedIndex == 15) path3_16 = selected;
else if (cmbPushType.SelectedIndex == 16) path3_17 = selected;
else if (cmbPushType.SelectedIndex == 17) path3_18 = selected;
else if (cmbPushType.SelectedIndex == 18) path3_19 = selected;
else if (cmbPushType.SelectedIndex == 19) path3_20 = selected;
key.SetValue("path3_" + (cmbPushType.SelectedIndex+1), selected);
txtDisplay3Path.Text = selected;
break;
case 4:
key.SetValue("path4", selected);
path4 = selected;
txtDisplay4Path.Text = selected;
break;
case 40:
key.SetValue("path4_0", selected);
path4_0 = selected;
txtDisplay4_0Path.Text = selected;
break;
case 41:
key.SetValue("path4_1", selected);
path4_1 = selected;
txtDisplay4_1Path.Text = selected;
break;
case 42:
key.SetValue("path4_2", selected);
path4_2 = selected;
txtDisplay4_2Path.Text = selected;
break;
case 43:
key.SetValue("path4_3", selected);
path4_3 = selected;
txtDisplay4_3Path.Text = selected;
break;
case 44:
key.SetValue("path4_4", selected);
path4_4 = selected;
txtDisplay4_4Path.Text = selected;
break;
case 45:
key.SetValue("path4_5", selected);
path4_5 = selected;
txtDisplay4_5Path.Text = selected;
break;
case 5:
key.SetValue("path5", selected);
path5 = selected;
txtDisplay5Path.Text = selected;
break;
case 6:
key.SetValue("path6", selected);
path6 = selected;
txtDisplay6Path.Text = selected;
break;
case 7:
key.SetValue("path7", selected);
path7 = selected;
txtDisplay7Path.Text = selected;
break;
case 8:
key.SetValue("path8", selected);
path8 = selected;
txtDisplay8Path.Text = selected;
break;
case 9:
key.SetValue("path9", selected);
path9 = selected;
txtDisplay9Path.Text = selected;
break;
}
}
}
private void btnDisplay3TxtMaxChange_Click(object sender, EventArgs e)
{
try
{
int pushIndex = cmbPushType.SelectedIndex + 1;
string saveStr = txtMaxText1.Text + "|" + txtMaxText2.Text + "|";
saveStr += txtMaxText3.Text + "|" + txtMaxText4.Text + "|" + txtMaxText5.Text;
string requestURL = getURL() + channel + "_" + pushIndex + "/씬이름/입력?씬이름=" + saveStr;
WebRequest request = WebRequest.Create(requestURL);
request.Method = "GET";
request.ContentType = "application/json; charset=UTF-8;";
using (WebResponse response = request.GetResponse())
using (Stream stream = response.GetResponseStream())
using (StreamReader reader = new StreamReader(stream))
{
//저장 완료
}
}
catch(Exception ex)
{
Console.WriteLine("Err : " + ex.Message);
}
}
private void btnDisplayLayer(object sender, EventArgs e)
{
if (isDisplay1 || isDisplay2 || isDisplay3 || isDisplay4 || isDisplay5 || isDisplay6 || isDisplay7 || isDisplay8 || isDisplay9)
{
MessageBox.Show("송출중 변경은 불가능 합니다.");
return;
}
RegistryKey key = Registry.CurrentUser.CreateSubKey(subKey);
void layerUpDown(ref int layer, bool isUp, TextBox layerTextBox, string keyName)
{
if ((isUp && layer != 15) || (!isUp && layer != 0))
{
if (isUp) layer++;
else layer--;
layerTextBox.Text = layer.ToString();
key.SetValue(keyName, layer);
}
}
if (sender == btnDisplay1LayerUp)
{
layerUpDown(ref Layer1, true, txtDisplay1Layer, "layer1");
}
else if (sender == btnDisplay1LayerDown)
{
layerUpDown(ref Layer1, false, txtDisplay1Layer, "layer1");
}
else if (sender == btnDisplay2LayerUp)
{
layerUpDown(ref Layer2, true, txtDisplay2Layer, "layer2");
}
else if (sender == btnDisplay2LayerDown)
{
layerUpDown(ref Layer2, false, txtDisplay2Layer, "layer2");
}
else if (sender == btnDisplay3LayerUp)
{
layerUpDown(ref Layer3, true, txtDisplay3Layer, "layer3");
}
else if (sender == btnDisplay3LayerDown)
{
layerUpDown(ref Layer3, false, txtDisplay3Layer, "layer3");
}
else if (sender == btnDisplay4LayerUp)
{
layerUpDown(ref Layer4, true, txtDisplay4Layer, "layer4");
}
else if (sender == btnDisplay4LayerDown)
{
layerUpDown(ref Layer4, false, txtDisplay4Layer, "layer4");
}
else if (sender == btnDisplay5LayerUp)
{
layerUpDown(ref Layer5, true, txtDisplay5Layer, "layer5");
}
else if (sender == btnDisplay5LayerDown)
{
layerUpDown(ref Layer5, false, txtDisplay5Layer, "layer5");
}
else if (sender == btnDisplay6LayerUp)
{
layerUpDown(ref Layer6, true, txtDisplay6Layer, "layer6");
}
else if (sender == btnDisplay6LayerDown)
{
layerUpDown(ref Layer6, false, txtDisplay6Layer, "layer6");
}
else if (sender == btnDisplay7LayerUp)
{
layerUpDown(ref Layer7, true, txtDisplay7Layer, "layer7");
}
else if (sender == btnDisplay7LayerDown)
{
layerUpDown(ref Layer7, false, txtDisplay7Layer, "layer7");
}
else if (sender == btnDisplay8LayerUp)
{
layerUpDown(ref Layer8, true, txtDisplay8Layer, "layer8");
}
else if (sender == btnDisplay8LayerDown)
{
layerUpDown(ref Layer8, false, txtDisplay8Layer, "layer8");
}
else if (sender == btnDisplay9LayerUp)
{
layerUpDown(ref Layer9, true, txtDisplay9Layer, "layer9");
}
else if (sender == btnDisplay9LayerDown)
{
layerUpDown(ref Layer9, false, txtDisplay9Layer, "layer9");
}
else if (sender == btnDisplay10LayerUp)
{
layerUpDown(ref Layer10, true, txtDisplay10Layer, "layer10");
}
else if (sender == btnDisplay10LayerDown)
{
layerUpDown(ref Layer10, false, txtDisplay10Layer, "layer10");
}
else if (sender == btnDisplay11LayerUp)
{
layerUpDown(ref Layer11, true, txtDisplay11Layer, "layer11");
}
else if (sender == btnDisplay11LayerDown)
{
layerUpDown(ref Layer11, false, txtDisplay11Layer, "layer11");
}
else if (sender == btnDisplay12LayerUp)
{
layerUpDown(ref Layer12, true, txtDisplay12Layer, "layer12");
}
else if (sender == btnDisplay12LayerDown)
{
layerUpDown(ref Layer12, false, txtDisplay12Layer, "layer12");
}
else if (sender == btnDisplay13LayerUp)
{
layerUpDown(ref Layer13, true, txtDisplay13Layer, "layer13");
}
else if (sender == btnDisplay13LayerDown)
{
layerUpDown(ref Layer13, false, txtDisplay13Layer, "layer13");
}
else if (sender == btnDisplay14LayerUp)
{
layerUpDown(ref Layer14, true, txtDisplay14Layer, "layer14");
}
else if (sender == btnDisplay14LayerDown)
{
layerUpDown(ref Layer14, false, txtDisplay14Layer, "layer14");
}
else if (sender == btnDisplay15LayerUp)
{
layerUpDown(ref Layer15, true, txtDisplay15Layer, "layer15");
}
else if (sender == btnDisplay15LayerDown)
{
layerUpDown(ref Layer15, false, txtDisplay15Layer, "layer15");
}
else if (sender == btnFadeOutUp)
{
fadeOutTime++;
txtFadeOut.Text = fadeOutTime.ToString();
key.SetValue("fadeOutTime", Layer8);
}
else if (sender == btnFadeOutDown)
{
fadeOutTime--;
txtFadeOut.Text = fadeOutTime.ToString();
key.SetValue("fadeOutTime", Layer8);
}
}
private void txtonacd_EditValueChanged(object sender, EventArgs e)
{
TextEdit target = ((TextEdit)sender);
RegistryKey key = Registry.CurrentUser.CreateSubKey(subKey);
key.SetValue(target.Name, target.Text);
}
private void toggleSwitch주문콜_Toggled(object sender, EventArgs e)
{
ToggleSwitch target = ((ToggleSwitch)sender);
RegistryKey key = Registry.CurrentUser.CreateSubKey(subKey);
key.SetValue(target.Name, target.EditValue);
if (target.IsOn == false)
{
if (target == toggleSwitch주문콜전체)
{
simpleButton2_Click(null, null);
simpleButton9_Click(null, null);
simpleButton10_Click(null, null);
simpleButton11_Click(null, null);
}
else if (target == toggleSwitch매진팁)
{
simpleButton9_Click(null, null);
}
else if (target == toggleSwitch카드프로모션)
{
simpleButton10_Click(null, null);
}
else if (target == toggleSwitch배송정보)
{
simpleButton11_Click(null, null);
}
else if (target == toggleSwitchVVIP || target == toggleSwitchVVIP전면)
{
if (!toggleSwitchVVIP.IsOn && !toggleSwitchVVIP전면.IsOn) simpleButton12_Click(null, null);
}
else
{
simpleButton2_Click(null, null);
}
}
else
{
if (target == toggleSwitch매진팁)
{
timer5.Start();
}
else if (target == toggleSwitchVVIP)
{
.VVIP송출시각 = DateTime.Now - TimeSpan.FromDays(1);
}
else if (target == toggleSwitchVVIP전면)
{
.VVIP전면송출시각 = DateTime.Now - TimeSpan.FromDays(1);
}
else if (target == toggleSwitch배송정보)
{
. = DateTime.Now - TimeSpan.FromDays(1);
}
}
}
private void cmbPushType_SelectedIndexChanged(object sender, EventArgs e)
{
txtPushName.Text = cmbPushType.SelectedItem.ToString();
if (cmbPushType.SelectedIndex == 0) txtDisplay3Path.Text = path3_1;
else if (cmbPushType.SelectedIndex == 1) txtDisplay3Path.Text = path3_2;
else if (cmbPushType.SelectedIndex == 2) txtDisplay3Path.Text = path3_3;
else if (cmbPushType.SelectedIndex == 3) txtDisplay3Path.Text = path3_4;
else if (cmbPushType.SelectedIndex == 4) txtDisplay3Path.Text = path3_5;
else if (cmbPushType.SelectedIndex == 5) txtDisplay3Path.Text = path3_6;
else if (cmbPushType.SelectedIndex == 6) txtDisplay3Path.Text = path3_7;
else if (cmbPushType.SelectedIndex == 7) txtDisplay3Path.Text = path3_8;
else if (cmbPushType.SelectedIndex == 8) txtDisplay3Path.Text = path3_9;
else if (cmbPushType.SelectedIndex == 9) txtDisplay3Path.Text = path3_10;
else if (cmbPushType.SelectedIndex == 10) txtDisplay3Path.Text = path3_11;
else if (cmbPushType.SelectedIndex == 11) txtDisplay3Path.Text = path3_12;
else if (cmbPushType.SelectedIndex == 12) txtDisplay3Path.Text = path3_13;
else if (cmbPushType.SelectedIndex == 13) txtDisplay3Path.Text = path3_14;
else if (cmbPushType.SelectedIndex == 14) txtDisplay3Path.Text = path3_15;
else if (cmbPushType.SelectedIndex == 15) txtDisplay3Path.Text = path3_16;
else if (cmbPushType.SelectedIndex == 16) txtDisplay3Path.Text = path3_17;
else if (cmbPushType.SelectedIndex == 17) txtDisplay3Path.Text = path3_18;
else if (cmbPushType.SelectedIndex == 18) txtDisplay3Path.Text = path3_19;
else if (cmbPushType.SelectedIndex == 19) txtDisplay3Path.Text = path3_20;
//MaxText 입력..
txtMaxText1.Text = ""; txtMaxText2.Text = "";
txtMaxText3.Text = ""; txtMaxText4.Text = ""; txtMaxText5.Text = "";
try
{
//서버에서 정보를 읽어온다.
string requestURL = getURL() + channel + "_" + (cmbPushType.SelectedIndex + 1) + "/씬이름/조회";
WebRequest request = WebRequest.Create(requestURL);
request.Method = "GET";
request.ContentType = "application/json; charset=UTF-8;";
//request.ContentType = "charset=UTF-8";
using (WebResponse response = request.GetResponse())
using (Stream stream = response.GetResponseStream())
using (StreamReader reader = new StreamReader(stream))
{
string data = reader.ReadToEnd();
JObject obj = JObject.Parse(data);
string item = obj["씬이름"].ToString();
if (this.InvokeRequired)
{
this.Invoke(new MethodInvoker(delegate ()
{
DoChangeMaxText(item);
}));
}
else
{
DoChangeMaxText(item);
}
}
}
catch (Exception ex)
{
Console.WriteLine("Err : " + ex.Message); ;
}
}
private void DoChangeMaxText(string item)
{
try
{
string[] items = item.Split('|');
for (int i = 0; i < items.Length; i++)
{
if (i == 0) txtMaxText1.Text = items[i];
else if (i == 1) txtMaxText2.Text = items[i];
else if (i == 2) txtMaxText3.Text = items[i];
else if (i == 3) txtMaxText4.Text = items[i];
else if (i == 4) txtMaxText5.Text = items[i];
}
}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
}
private void btnPushNameChange_Click(object sender, EventArgs e)
{
//선택된 인덱스를 현재 택스트로 변경하고 저장한다.
cmbPushType.Items[cmbPushType.SelectedIndex] = txtPushName.Text;
savePushName();
//송출명 서버에서 불러오기
loadPushName();
}
private void savePushName()
{
try
{
//서버에서 정보를 읽어온다.
string saveStr = "";
for (int i = 0; i < cmbPushType.Items.Count; i++)
{
if (i != 0) saveStr += "|";
saveStr += cmbPushType.Items[i].ToString();
}
string requestURL = getURL() + channel.Replace("채널", "") + "/씬이름/입력?씬이름=" + saveStr;
WebRequest request = WebRequest.Create(requestURL);
request.Method = "GET";
request.ContentType = "application/json; charset=UTF-8;";
//request.ContentType = "charset=UTF-8";
using (WebResponse response = request.GetResponse())
using (Stream stream = response.GetResponseStream())
using (StreamReader reader = new StreamReader(stream))
{
loadPushName();
}
}
catch (Exception ex)
{
Console.WriteLine("Err : " + ex.Message); ;
}
}
private void loadPushName()
{
try
{
//서버에서 정보를 읽어온다.
string requestURL = getURL() + channel.Replace("채널","") + "/씬이름/조회";
WebRequest request = WebRequest.Create(requestURL);
request.Method = "GET";
request.ContentType = "application/json; charset=UTF-8;";
//request.ContentType = "charset=UTF-8";
using (WebResponse response = request.GetResponse())
using (Stream stream = response.GetResponseStream())
using (StreamReader reader = new StreamReader(stream))
{
string data = reader.ReadToEnd();
JObject obj = JObject.Parse(data);
string item = obj["씬이름"].ToString();
if (this.InvokeRequired)
{
this.Invoke(new MethodInvoker(delegate ()
{
DoChangePush(item);
}));
}
else
{
DoChangePush(item);
}
}
}
catch (Exception ex)
{
Console.WriteLine("Err : " + ex.Message); ;
}
}
private void DoChangePush(string item)
{
try
{
string[] items = item.Split('|');
for (int i = 0; i < items.Length; i++)
{
cmbPushChoice.Items[i] = items[i];
cmbPushType.Items[i] = items[i];
}
}catch(Exception e)
{
Console.WriteLine(e.Message);
}
}
#endregion
private void btnTest_Click(object sender, EventArgs e)
{
txtPGM.Text = "016147";
dateTimePicker1.Value = new DateTime(2021, 12, 1);
dateTimePicker2.Value = new DateTime(2021, 12, 1);
txtPromotion.Text = "202111050001";
}
private void pictureEdit7_EditValueChanged(object sender, EventArgs e)
{
}
private void btndis_Click(object sender, EventArgs e)
{
System.Diagnostics.Process.Start(@"C:\Tornado2\Tornado2.exe");
}
private void btnDisp3_Click(object sender, EventArgs e)
{
if (isConnected)
{
if (isDisplay3)
{
sendURL(getURL() + channel + "/자막상황/입력?텍스트=N");
}
else
{
try
{
//순서 : PUSH, TXT1 ~ 5
string txt = (cmbPushChoice.SelectedIndex+1).ToString();
txt += "|" + txtDisp3T1.Text;
txt += "|" + txtDisp3T2.Text;
txt += "|" + txtDisp3T3.Text;
txt += "|" + txtDisp3T4.Text;
txt += "|" + txtDisp3T5.Text;
//특수 개행문자 처리
txt = utils.replaceSpecialStrReverse(txt);
string requestURL = getURL() + channel + "/텍스트/입력?보낸사람=코더&텍스트=" + txt ;
sendURL(requestURL);
sendURL(getURL() + channel + "/자막상황/입력?텍스트=Y");
}
catch (Exception ex)
{
MessageBox.Show("정상적인 값이 입력되지 않았습니다.");
}
}
}
else
{
MessageBox.Show("토네이도 연결이 필요합니다.");
}
}
private void cmbPushChoice_SelectedIndexChanged(object sender, EventArgs e)
{
txtDisp3T1.Text = "";
txtDisp3T2.Text = "";
txtDisp3T3.Text = "";
txtDisp3T4.Text = "";
txtDisp3T5.Text = "";
}
private void btnDisp4_Click(object sender, EventArgs e)
{
if (isConnected)
{
if (isDisplay4)
{
sendURL(getURL() + channel + "/자막상황/입력?채팅=N");
}
else
{
MessageBox.Show("채팅 송출은 웹 URL을 통해 사용해 주시기 바랍니다.");
}
}
else
{
MessageBox.Show("토네이도 연결이 필요합니다.");
}
}
private void btnDisp5_Click(object sender, EventArgs e)
{
if (isConnected)
{
if (isDisplay5)
{
sendURL(getURL() + channel + "/자막상황/입력?상품평=N");
}
else
{
MessageBox.Show("상품평 송출은 웹 URL을 통해 사용해 주시기 바랍니다.");
}
}
else
{
MessageBox.Show("토네이도 연결이 필요합니다.");
}
}
private void btnDisp6_Click(object sender, EventArgs e)
{
if (isConnected)
{
if (isDisplay6)
{
sendURL(getURL() + channel + "/자막상황/입력?QNA=N");
}
else
{
MessageBox.Show("Q&A 송출은 웹 URL을 통해 사용해 주시기 바랍니다.");
}
}
else
{
MessageBox.Show("토네이도 연결이 필요합니다.");
}
}
private void btnDisp7_Click(object sender, EventArgs e)
{
if (isConnected)
{
if (isDisplay7)
{
sendURL(getURL() + channel + "/자막상황/입력?공지=N");
}
else
{
MessageBox.Show("공지 송출은 웹 URL을 통해 사용해 주시기 바랍니다.");
}
}
else
{
MessageBox.Show("토네이도 연결이 필요합니다.");
}
}
private void btnDisp8_Click(object sender, EventArgs e)
{
if (isConnected)
{
if (isDisplay8)
{
sendURL(getURL() + channel + "/자막상황/입력?채팅판=N");
}
else
{
MessageBox.Show("공지 송출은 웹 URL을 통해 사용해 주시기 바랍니다.");
}
}
else
{
MessageBox.Show("토네이도 연결이 필요합니다.");
}
}
private void btnDisp9_Click(object sender, EventArgs e)
{
if (isConnected)
{
if (isDisplay9)
{
sendURL(getURL() + channel + "/자막상황/입력?동영상=N");
}
else
{
MessageBox.Show("동영상 송출은 웹 URL을 통해 사용해 주시기 바랍니다.");
}
}
else
{
MessageBox.Show("토네이도 연결이 필요합니다.");
}
}
//이전 송출 있는 경우를 위한 딜레이 타이머
private void timer1_Tick(object sender, EventArgs e)
{
KAScenePlayer.Play(Layer4);
}
//무한루프를 위한 타이머
private void timer2_Tick(object sender, EventArgs e)
{
if (!isDisplay4)
{
if (timer2.Enabled)
timer2.Stop();
return;
}
int dispLines = 0;
int timeOfChange = 15;
int timeOfWait = 60;
int timeOfBefore = 0;
int timeOfClear = 30;
string isLoop = "";
//송출을 위한 데이터를 읽어와서 송출한다.
//송출을 위한 데이터를 읽어와서 송출한다.
//데이터 읽는 부분
//서버에서 정보를 읽어온다.
string dispStr = "";
string requestURL = getURL() + channel + "/채팅/조회";
WebRequest request = WebRequest.Create(requestURL);
request.Method = "GET";
request.ContentType = "application/json; charset=UTF-8;";
//request.ContentType = "charset=UTF-8";
using (WebResponse response = request.GetResponse())
using (Stream stream = response.GetResponseStream())
using (StreamReader reader = new StreamReader(stream))
{
string data = reader.ReadToEnd();
JObject obj = JObject.Parse(data);
dispStr = obj["채팅"].ToString();
}
//특수문자 처리를 위함
dispStr = utils.replaceSpecialStr(dispStr);
string[] strs = dispStr.Split('|');
if (strs[8].Equals("Y"))
isLoop = "true";
else if (strs[8].Equals("C"))
isLoop = "clear";
dispLines = Convert.ToInt16(strs[9]);
timeOfChange = Convert.ToInt32(strs[10]);
timeOfWait = Convert.ToInt32(strs[11]);
timeOfClear = Convert.ToInt32(strs[12]);
//색상리턴용 내부함수
sKStyleColor getColor(Label lbl)
{
sKStyleColor sKStyleColor = new sKStyleColor();
sKStyleColor.A = lbl.BackColor.A;
sKStyleColor.R = lbl.BackColor.R;
sKStyleColor.G = lbl.BackColor.G;
sKStyleColor.B = lbl.BackColor.B;
return sKStyleColor;
}
//송출부분
orderDisp4Index++;
if (dispLines == 2)
{
KAScene = KAEngine.LoadScene(path4, "채팅" + orderDisp4Index);
}
else if (dispLines == 1)
{
KAScene = KAEngine.LoadScene(path4_1, "채팅" + orderDisp4Index);
}
else if (dispLines == 3)
{
KAScene = KAEngine.LoadScene(path4_2, "채팅" + orderDisp4Index);
}
else if (dispLines == 4)
{
KAScene = KAEngine.LoadScene(path4_3, "채팅" + orderDisp4Index);
}
else if (dispLines == 5)
{
KAScene = KAEngine.LoadScene(path4_4, "채팅" + orderDisp4Index);
}
else if (dispLines == 6)
{
KAScene = KAEngine.LoadScene(path4_5, "채팅" + orderDisp4Index);
}
else if (dispLines == 0)
{
KAScene = KAEngine.LoadScene(path4_0, "채팅" + orderDisp4Index);
}
KAObject KAObject;
if (dispLines == 2)
{
KAObject = KAScene.GetObject("name1");
//
for (int i = 0; i < 6; i++)
{
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, i, i, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
}
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 5, timeOfChange + timeOfWait + timeOfChange + 2, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 4, timeOfChange + timeOfWait + timeOfChange + 1, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 3, timeOfChange + timeOfWait + timeOfChange, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 2, timeOfChange + timeOfWait, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 1, timeOfChange, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 0, 0, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
//5번의 위치만 변동될 수 있다
KAObject.SetPositionKey(0, 0, -70f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(1, 0, -37f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(2, 0, -37f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(3, 0, -0.4f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(4, 0, -0.4f, 0, eKVectorType.VECTOR_TYPE_Y);
if (strs[6].Trim() == "")
{
//2번째 택스트가 1개인 경우
KAObject.SetPositionKey(5, 0, -0.4f, 0, eKVectorType.VECTOR_TYPE_Y);
}
else
{
//아래가 2줄 이상 올라오게 되면
KAObject.SetPositionKey(5, 0, 33f, 0, eKVectorType.VECTOR_TYPE_Y);
}
KAObject = KAScene.GetObject("group0");
for (int i = 0; i < 4; i++)
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, i, i, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
//-432.38
KAObject.SetPositionKey(1, 0, -397.38f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(2, 0, -397.38f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(3, 0, -362.38f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 3, timeOfChange + timeOfWait + timeOfChange, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 2, timeOfChange + timeOfWait, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 1, timeOfChange, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject = KAScene.GetObject("name0_1");
KAObject.SetValue(aliveLiveChatText[0]);
KAObject.SetStyleColor(getColor(aliveLiveChatText[2] == "" ? lbl_color_3 : lbl_color_1));
KAObject = KAScene.GetObject("txt0_1");
KAObject.SetValue(aliveLiveChatText[1]);
KAObject.SetStyleColor(getColor(aliveLiveChatText[2] == "" ? lbl_color_4 : lbl_color_2));
KAObject = KAScene.GetObject("name0_2");
KAObject.SetValue(aliveLiveChatText[2]);
KAObject.SetStyleColor(getColor(lbl_color_3));
KAObject = KAScene.GetObject("txt0_2");
KAObject.SetValue(aliveLiveChatText[3]);
KAObject.SetStyleColor(getColor(lbl_color_4));
//색상 설정의 경우의 수
// n1,t1,t2가 있는 경우 : 일반적인 상황
// n1 = color3, t1 = color4, t2 = color4
//n2가 존재하면
// n1,n2,t1,t2 다 있는 경우 : n2는 이때만 존재
// n1 = color1, t1 = color2, n2 = color3, t2 = color4
KAObject = KAScene.GetObject("txt1");
for (int i = 0; i < 10; i++)
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, i, i, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
if (strs[2].Trim() == "")
{
//1줄만 기록된 경우
KAObject.SetPositionKey(1, 0, -105.8f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(2, 0, -105.8f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(3, 0, -71.54f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(4, 0, -71.54f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(5, 0, -71.54f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(6, 0, -71.54f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(7, 0, -71.54f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(8, 0, -71.54f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(9, 0, -36.18f, 0, eKVectorType.VECTOR_TYPE_Y);
if (strs[6].Trim() == "")
{
KAObject.SetPositionKey(9, 0, -71.54f, 0, eKVectorType.VECTOR_TYPE_Y);
}
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 9, timeOfChange + timeOfWait + timeOfChange + 6, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 8, timeOfChange + timeOfWait + timeOfChange + 5, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 7, timeOfChange + timeOfWait + timeOfChange + 4, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 6, timeOfChange + timeOfWait + timeOfChange + 3, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 5, timeOfChange + timeOfWait + timeOfChange + 2, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 4, timeOfChange + timeOfWait + timeOfChange + 1, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 3, timeOfChange + timeOfWait + timeOfChange, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 2, timeOfChange + timeOfWait, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 1, timeOfChange, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
timeOfBefore = timeOfChange + timeOfWait;
}
else
{
if (strs[3].Trim() == "")
{
//2줄만 기록된 경우
KAObject.SetPositionKey(1, 0, -105.8f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(2, 0, -105.8f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(3, 0, -71.54f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(4, 0, -71.54f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(5, 0, -36.18f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(6, 0, -36.18f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(7, 0, -36.18f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(8, 0, -36.18f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(9, 0, -2.31f, 0, eKVectorType.VECTOR_TYPE_Y);
if (strs[6].Trim() == "")
{
KAObject.SetPositionKey(9, 0, -36.18f, 0, eKVectorType.VECTOR_TYPE_Y);
}
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 9, timeOfChange + timeOfWait + timeOfChange + timeOfWait + timeOfChange + 4, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 8, timeOfChange + timeOfWait + timeOfChange + timeOfWait + timeOfChange + 3, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 7, timeOfChange + timeOfWait + timeOfChange + timeOfWait + timeOfChange + 2, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 6, timeOfChange + timeOfWait + timeOfChange + timeOfWait + timeOfChange + 1, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 5, timeOfChange + timeOfWait + timeOfChange + timeOfWait + timeOfChange, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 4, timeOfChange + timeOfWait + timeOfChange + timeOfWait, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 3, timeOfChange + timeOfWait + timeOfChange, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 2, timeOfChange + timeOfWait, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 1, timeOfChange, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
timeOfBefore = timeOfChange + timeOfWait + timeOfChange + timeOfWait;
}
else
{
//3줄다 기록된 경우
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 9, timeOfChange + timeOfWait + timeOfChange + timeOfWait + timeOfChange + timeOfWait + timeOfChange + 2, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 8, timeOfChange + timeOfWait + timeOfChange + timeOfWait + timeOfChange + timeOfWait + timeOfChange + 1, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 7, timeOfChange + timeOfWait + timeOfChange + timeOfWait + timeOfChange + timeOfWait + timeOfChange, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 6, timeOfChange + timeOfWait + timeOfChange + timeOfWait + timeOfChange + timeOfWait, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 5, timeOfChange + timeOfWait + timeOfChange + timeOfWait + timeOfChange, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 4, timeOfChange + timeOfWait + timeOfChange + timeOfWait, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 3, timeOfChange + timeOfWait + timeOfChange, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 2, timeOfChange + timeOfWait, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 1, timeOfChange, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetPositionKey(1, 0, -105.8f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(2, 0, -105.8f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(3, 0, -71.54f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(4, 0, -71.54f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(5, 0, -36.18f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(6, 0, -36.18f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(7, 0, -2.31f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(8, 0, -2.31f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(9, 0, 30f, 0, eKVectorType.VECTOR_TYPE_Y);
if (strs[6].Trim() == "")
{
KAObject.SetPositionKey(9, 0, -2.31f, 0, eKVectorType.VECTOR_TYPE_Y);
}
timeOfBefore = timeOfChange + timeOfWait + timeOfChange + timeOfWait + timeOfChange + timeOfWait;
}
}
//시간 계산 변경
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 9, timeOfBefore + timeOfChange + timeOfWait + timeOfChange, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 8, timeOfBefore + timeOfChange + timeOfWait, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject = KAScene.GetObject("name1");
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 5, timeOfBefore + timeOfChange + timeOfWait + timeOfChange, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 4, timeOfBefore + timeOfChange + timeOfWait, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject = KAScene.GetObject("name2");
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 0, 0, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 1, 1, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 2, 2, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 3, 3, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 4, 4, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 4, timeOfBefore + timeOfChange + timeOfWait + timeOfChange, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 3, timeOfBefore + timeOfChange + timeOfWait, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 2, timeOfBefore + timeOfChange, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 1, timeOfBefore, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
if (strs[6].Trim() == "")
{
KAObject.SetPositionKey(4, 0, -0.3f, 0, eKVectorType.VECTOR_TYPE_Y);
}
else
{
KAObject.SetPositionKey(4, 0, 33f, 0, eKVectorType.VECTOR_TYPE_Y);
}
KAObject = KAScene.GetObject("txt2");
for (int i = 0; i < 7; i++)
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, i, i, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
if (strs[6].Trim() == "")
{
//1줄만 기록된 경우
KAObject.SetPositionKey(2, 0, 0.5f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(3, 0, 0.5f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(4, 0, 0.5f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(5, 0, 0.5f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(6, 0, 0.5f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 6, timeOfBefore + timeOfChange + 4, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 5, timeOfBefore + timeOfChange + 3, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 4, timeOfBefore + timeOfChange + 2, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 3, timeOfBefore + timeOfChange + 1, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 2, timeOfBefore + timeOfChange, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 1, timeOfBefore, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
timeOfBefore += timeOfChange + timeOfWait;
aliveLiveChatText[0] = strs[0];
if (strs[3] != "")
{
aliveLiveChatText[1] = strs[3];
}
else if (strs[2] != "")
{
aliveLiveChatText[1] = strs[2];
}
else
{
aliveLiveChatText[1] = strs[1];
}
aliveLiveChatText[2] = strs[4];
aliveLiveChatText[3] = strs[5];
}
else
{
if (strs[7].Trim() == "")
{
//2줄만 기록된 경우
KAObject.SetPositionKey(2, 0, 0.5f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(3, 0, 0.5f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(4, 0, 35.5f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(5, 0, 35.5f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(6, 0, 35.5f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 6, timeOfBefore + timeOfChange + timeOfWait + timeOfChange + 2, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 5, timeOfBefore + timeOfChange + timeOfWait + timeOfChange + 1, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 4, timeOfBefore + timeOfChange + timeOfWait + timeOfChange, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 3, timeOfBefore + timeOfChange + timeOfWait, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 2, timeOfBefore + timeOfChange, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 1, timeOfBefore, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
timeOfBefore += timeOfChange + timeOfWait + timeOfChange + timeOfWait;
aliveLiveChatText[0] = strs[4];
aliveLiveChatText[1] = strs[5];
aliveLiveChatText[2] = "";
aliveLiveChatText[3] = strs[6];
}
else
{
//3줄다 기록된 경우
KAObject.SetPositionKey(2, 0, 0.5f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(3, 0, 0.5f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(4, 0, 35.5f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(5, 0, 35.5f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(6, 0, 70.5f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 6, timeOfBefore + timeOfChange + timeOfWait + timeOfChange + timeOfWait + timeOfChange, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 5, timeOfBefore + timeOfChange + timeOfWait + timeOfChange + timeOfWait, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 4, timeOfBefore + timeOfChange + timeOfWait + timeOfChange, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 3, timeOfBefore + timeOfChange + timeOfWait, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 2, timeOfBefore + timeOfChange, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 1, timeOfBefore, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
timeOfBefore += timeOfChange + timeOfWait + timeOfChange + timeOfWait + timeOfChange + timeOfWait;
aliveLiveChatText[0] = strs[4];
aliveLiveChatText[1] = strs[6];
aliveLiveChatText[2] = "";
aliveLiveChatText[3] = strs[7];
}
}
KAObject = KAScene.GetObject("name1");
KAObject.SetStyleColor(getColor(lbl_color_1));
KAObject.SetValue(strs[0]);
KAObject = KAScene.GetObject("txt1_1");
KAObject.SetStyleColor(getColor(lbl_color_2));
KAObject.SetValue(strs[1]);
KAObject = KAScene.GetObject("txt1_2");
KAObject.SetStyleColor(getColor(lbl_color_2));
KAObject.SetValue(strs[2]);
KAObject = KAScene.GetObject("txt1_3");
KAObject.SetStyleColor(getColor(lbl_color_2));
KAObject.SetValue(strs[3]);
KAObject = KAScene.GetObject("name2");
KAObject.SetStyleColor(getColor(lbl_color_3));
KAObject.SetValue(strs[4]);
KAObject = KAScene.GetObject("txt2_1");
KAObject.SetStyleColor(getColor(lbl_color_4));
KAObject.SetValue(strs[5]);
KAObject = KAScene.GetObject("txt2_2");
KAObject.SetStyleColor(getColor(lbl_color_4));
KAObject.SetValue(strs[6]);
KAObject = KAScene.GetObject("txt2_3");
KAObject.SetStyleColor(getColor(lbl_color_4));
KAObject.SetValue(strs[7]);
}
else if (dispLines == 11)
{
KAObject = KAScene.GetObject("name1");
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 5, timeOfChange + timeOfWait + timeOfChange + 2, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 4, timeOfChange + timeOfWait + timeOfChange + 1, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 3, timeOfChange + timeOfWait + timeOfChange, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 2, timeOfChange + timeOfWait, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 1, timeOfChange, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
//5번의 위치만 변동될 수 있다
KAObject.SetPositionKey(0, 0, -37f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(1, 0, -0.4f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(2, 0, -0.4f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(3, 0, -0.4f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(4, 0, -0.4f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(5, 0, 33f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject = KAScene.GetObject("group0");
for (int i = 0; i < 4; i++)
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, i, i, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
//-432.38
KAObject.SetPositionKey(1, 0, -397.38f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(2, 0, -397.38f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(3, 0, -362.38f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 3, timeOfChange + timeOfWait + timeOfChange, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 2, timeOfChange + timeOfWait, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 1, timeOfChange, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject = KAScene.GetObject("name0_2");
KAObject.SetValue(aliveLiveChatText[2]);
KAObject.SetStyleColor(getColor(lbl_color_3));
KAObject = KAScene.GetObject("txt0_2");
KAObject.SetValue(aliveLiveChatText[3]);
KAObject.SetStyleColor(getColor(lbl_color_4));
KAObject = KAScene.GetObject("txt1");
for (int i = 0; i < 10; i++)
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, i, i, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
if (strs[2].Trim() == "")
{
//1줄만 기록된 경우
KAObject.SetPositionKey(0, 0, -105.8f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(1, 0, -71.54f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(2, 0, -71.54f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(3, 0, -36.18f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(4, 0, -36.18f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(5, 0, -36.18f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(6, 0, -36.18f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(7, 0, -36.18f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 7, timeOfChange + timeOfWait + timeOfChange + 4, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 6, timeOfChange + timeOfWait + timeOfChange + 3, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 5, timeOfChange + timeOfWait + timeOfChange + 2, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 4, timeOfChange + timeOfWait + timeOfChange + 1, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 3, timeOfChange + timeOfWait + timeOfChange, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 2, timeOfChange + timeOfWait, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 1, timeOfChange, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
timeOfBefore = timeOfChange + timeOfWait;
}
else
{
if (strs[3].Trim() == "")
{
//2줄만 기록된 경우
KAObject.SetPositionKey(0, 0, -105.8f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(1, 0, -71.54f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(2, 0, -71.54f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(3, 0, -36.18f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(4, 0, -36.18f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(5, 0, -2.31f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(6, 0, -2.31f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(7, 0, -2.31f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 7, timeOfChange + timeOfWait + timeOfChange + timeOfWait + timeOfChange + 2, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 6, timeOfChange + timeOfWait + timeOfChange + timeOfWait + timeOfChange + 1, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 5, timeOfChange + timeOfWait + timeOfChange + timeOfWait + timeOfChange, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 4, timeOfChange + timeOfWait + timeOfChange + timeOfWait, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 3, timeOfChange + timeOfWait + timeOfChange, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 2, timeOfChange + timeOfWait, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 1, timeOfChange, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
timeOfBefore = timeOfChange + timeOfWait + timeOfChange + timeOfWait;
}
else
{
//3줄다 기록된 경우
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 7, timeOfChange + timeOfWait + timeOfChange + timeOfWait + timeOfChange + timeOfWait + timeOfChange, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 6, timeOfChange + timeOfWait + timeOfChange + timeOfWait + timeOfChange + timeOfWait, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 5, timeOfChange + timeOfWait + timeOfChange + timeOfWait + timeOfChange, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 4, timeOfChange + timeOfWait + timeOfChange + timeOfWait, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 3, timeOfChange + timeOfWait + timeOfChange, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 2, timeOfChange + timeOfWait, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 1, timeOfChange, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetPositionKey(0, 0, -105.8f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(1, 0, -71.54f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(2, 0, -71.54f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(3, 0, -36.18f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(4, 0, -36.18f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(5, 0, -2.31f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(6, 0, -2.31f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(7, 0, 30f, 0, eKVectorType.VECTOR_TYPE_Y);
timeOfBefore = timeOfChange + timeOfWait + timeOfChange + timeOfWait + timeOfChange + timeOfWait;
}
}
//시간 계산 변경
KAObject = KAScene.GetObject("name1");
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 5, timeOfBefore + timeOfChange, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 4, timeOfBefore, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject = KAScene.GetObject("name2");
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 0, 0, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 1, 1, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 2, 2, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 2, timeOfBefore + timeOfChange, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 1, timeOfBefore, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
aliveLiveChatText[0] = "";
aliveLiveChatText[1] = "";
aliveLiveChatText[2] = strs[4];
KAObject = KAScene.GetObject("txt2");
for (int i = 0; i < 7; i++)
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, i, i, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
if (strs[6].Trim() == "")
{
//1줄만 기록된 경우
KAObject.SetPositionKey(1, 0, 0.5f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(2, 0, 35.5f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(3, 0, 35.5f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(4, 0, 35.5f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(5, 0, 35.5f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(6, 0, 35.5f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 6, timeOfBefore + timeOfChange + 4, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 5, timeOfBefore + timeOfChange + 3, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 4, timeOfBefore + timeOfChange + 2, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 3, timeOfBefore + timeOfChange + 1, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 2, timeOfBefore + timeOfChange, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 1, timeOfBefore, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
timeOfBefore += timeOfChange + timeOfWait;
aliveLiveChatText[3] = strs[5];
}
else
{
if (strs[7].Trim() == "")
{
//2줄만 기록된 경우
KAObject.SetPositionKey(1, 0, 0.5f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(2, 0, 35.5f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(3, 0, 35.5f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(4, 0, 70.5f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(5, 0, 70.5f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(6, 0, 70.5f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 6, timeOfBefore + timeOfChange + timeOfWait + timeOfChange + 2, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 5, timeOfBefore + timeOfChange + timeOfWait + timeOfChange + 1, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 4, timeOfBefore + timeOfChange + timeOfWait + timeOfChange, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 3, timeOfBefore + timeOfChange + timeOfWait, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 2, timeOfBefore + timeOfChange, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 1, timeOfBefore, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
timeOfBefore += timeOfChange + timeOfWait + timeOfChange + timeOfWait;
aliveLiveChatText[3] = strs[6];
}
else
{
//3줄다 기록된 경우
KAObject.SetPositionKey(1, 0, 0.5f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(2, 0, 35.5f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(3, 0, 35.5f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(4, 0, 70.5f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(5, 0, 70.5f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(6, 0, 105.5f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 6, timeOfBefore + timeOfChange + timeOfWait + timeOfChange + timeOfWait + timeOfChange, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 5, timeOfBefore + timeOfChange + timeOfWait + timeOfChange + timeOfWait, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 4, timeOfBefore + timeOfChange + timeOfWait + timeOfChange, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 3, timeOfBefore + timeOfChange + timeOfWait, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 2, timeOfBefore + timeOfChange, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 1, timeOfBefore, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
timeOfBefore += timeOfChange + timeOfWait + timeOfChange + timeOfWait + timeOfChange + timeOfWait;
aliveLiveChatText[3] = strs[7];
}
}
KAObject = KAScene.GetObject("name1");
KAObject.SetStyleColor(getColor(lbl_color_1));
KAObject.SetValue(strs[0]);
KAObject = KAScene.GetObject("txt1_1");
KAObject.SetStyleColor(getColor(lbl_color_2));
KAObject.SetValue(strs[1]);
KAObject = KAScene.GetObject("txt1_2");
KAObject.SetStyleColor(getColor(lbl_color_2));
KAObject.SetValue(strs[2]);
KAObject = KAScene.GetObject("txt1_3");
KAObject.SetStyleColor(getColor(lbl_color_2));
KAObject.SetValue(strs[3]);
KAObject = KAScene.GetObject("name2");
KAObject.SetStyleColor(getColor(lbl_color_3));
KAObject.SetValue(strs[4]);
KAObject = KAScene.GetObject("txt2_1");
KAObject.SetStyleColor(getColor(lbl_color_4));
KAObject.SetValue(strs[5]);
KAObject = KAScene.GetObject("txt2_2");
KAObject.SetStyleColor(getColor(lbl_color_4));
KAObject.SetValue(strs[6]);
KAObject = KAScene.GetObject("txt2_3");
KAObject.SetStyleColor(getColor(lbl_color_4));
KAObject.SetValue(strs[7]);
}
else if (dispLines == 3)
{
int lineCountQuestion = 3;
int lineCountAnswer = 3;
//이전 텍스트 처리
int countOfNames = 0;
if (aliveLiveChatText[0] != "") countOfNames++;
if (aliveLiveChatText[2] != "") countOfNames++;
if (aliveLiveChatText[4] != "") countOfNames++;
for (int i = 1; i < 4; i++)
{
KAObject = KAScene.GetObject("txt0_" + i);
KAObject.SetValue("");
KAObject = KAScene.GetObject("name0_" + i);
KAObject.SetValue("");
}
if (countOfNames == 1)
{
KAObject = KAScene.GetObject("name0_1");
KAObject.SetValue(aliveLiveChatText[0]);
KAObject.SetStyleColor(getColor(lbl_color_3));
KAObject = KAScene.GetObject("txt0_1");
KAObject.SetValue(aliveLiveChatText[1]);
KAObject.SetStyleColor(getColor(lbl_color_4));
KAObject = KAScene.GetObject("txt0_2");
KAObject.SetValue(aliveLiveChatText[3]);
KAObject.SetStyleColor(getColor(lbl_color_4));
KAObject = KAScene.GetObject("txt0_3");
KAObject.SetValue(aliveLiveChatText[5]);
KAObject.SetStyleColor(getColor(lbl_color_4));
}
else if (countOfNames == 2)
{
KAObject = KAScene.GetObject("name0_1");
KAObject.SetValue(aliveLiveChatText[0]);
KAObject.SetStyleColor(getColor(lbl_color_1));
KAObject = KAScene.GetObject("txt0_1");
KAObject.SetValue(aliveLiveChatText[1]);
KAObject.SetStyleColor(getColor(lbl_color_2));
KAObject = KAScene.GetObject("name0_2");
KAObject.SetValue(aliveLiveChatText[2]);
KAObject.SetStyleColor(getColor(lbl_color_3));
KAObject = KAScene.GetObject("txt0_2");
KAObject.SetValue(aliveLiveChatText[3]);
KAObject.SetStyleColor(getColor(aliveLiveChatText[2] == "" ? lbl_color_2 : lbl_color_4));
KAObject = KAScene.GetObject("name0_3");
KAObject.SetValue(aliveLiveChatText[4]);
KAObject.SetStyleColor(getColor(lbl_color_3));
KAObject = KAScene.GetObject("txt0_3");
KAObject.SetValue(aliveLiveChatText[5]);
KAObject.SetStyleColor(getColor(lbl_color_4));
}
if (strs[2].Trim() == "") lineCountQuestion = 1;
else if (strs[3].Trim() == "") lineCountQuestion = 2;
if (strs[6].Trim() == "") lineCountAnswer = 1;
else if (strs[7].Trim() == "") lineCountAnswer = 2;
KAObject = KAScene.GetObject("txt0");
KAObject.SetPosition(0, 35f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject = KAScene.GetObject("group0");
for (int i = 0; i < 6; i++)
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, i, i, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetPositionKey(0, 0, 0f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(1, 0, 35f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(2, 0, 35f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(3, 0, 70f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(4, 0, 70f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(5, 0, 105f, 0, eKVectorType.VECTOR_TYPE_Y);
//이전에 상위 2줄을 쓰는 경우
bool isBeforeLine2 = true;
int timeOfAdded = 0;
for (int i = 0; i < 6; i++)
{
if (i < 4)
{
if (aliveLiveChatText[i].Trim() == "") isBeforeLine2 = false;
}
else
{
if (aliveLiveChatText[i].Trim() != "") isBeforeLine2 = false;
}
}
if (isBeforeLine2) timeOfAdded = timeOfChange + timeOfWait;
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 5, timeOfAdded + timeOfChange + timeOfWait + timeOfChange + timeOfWait + timeOfChange, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 4, timeOfAdded + timeOfChange + timeOfWait + timeOfChange + timeOfWait, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 3, timeOfAdded + timeOfChange + timeOfWait + timeOfChange, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 2, timeOfAdded + timeOfChange + timeOfWait, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 1, timeOfAdded + timeOfChange, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 0, timeOfAdded, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
for (int j = 0; j < 2; j++)
{
KAObject = KAScene.GetObject(j == 0 ? "name1" : "txt1");
for (int i = 0; i < 12; i++)
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, i, i, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 11, timeOfChange + timeOfWait + timeOfChange + timeOfWait + timeOfChange + timeOfWait + timeOfChange + timeOfWait + timeOfChange + timeOfWait + timeOfChange, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 10, timeOfChange + timeOfWait + timeOfChange + timeOfWait + timeOfChange + timeOfWait + timeOfChange + timeOfWait + timeOfChange + timeOfWait, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 9, timeOfChange + timeOfWait + timeOfChange + timeOfWait + timeOfChange + timeOfWait + timeOfChange + timeOfWait + timeOfChange, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 8, timeOfChange + timeOfWait + timeOfChange + timeOfWait + timeOfChange + timeOfWait + timeOfChange + timeOfWait, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 7, timeOfChange + timeOfWait + timeOfChange + timeOfWait + timeOfChange + timeOfWait + timeOfChange, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 6, timeOfChange + timeOfWait + timeOfChange + timeOfWait + timeOfChange + timeOfWait, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 5, timeOfChange + timeOfWait + timeOfChange + timeOfWait + timeOfChange, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 4, timeOfChange + timeOfWait + timeOfChange + timeOfWait, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 3, timeOfChange + timeOfWait + timeOfChange, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 2, timeOfChange + timeOfWait, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 1, timeOfChange, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetPositionKey(0, 0, -70f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(1, 0, -35f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(2, 0, -35f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(3, 0, 0f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(4, 0, 0f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(5, 0, 35f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(6, 0, 35f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(7, 0, 70f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(8, 0, 70f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(9, 0, 105f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(10, 0, 105f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(11, 0, 140f, 0, eKVectorType.VECTOR_TYPE_Y);
}
if (lineCountQuestion == 1)
{
timeOfBefore = timeOfChange + timeOfWait;
}
else if (lineCountQuestion == 2)
{
timeOfBefore = timeOfChange + timeOfWait + timeOfChange + timeOfWait;
}
else if (lineCountQuestion == 3)
{
timeOfBefore = timeOfChange + timeOfWait + timeOfChange + timeOfWait + timeOfChange + timeOfWait;
}
//기준이 되는 수치를 집어넣고 변경되는 경우마다 처리한다
for (int j = 0; j < 2; j++)
{
KAObject = KAScene.GetObject(j == 0 ? "name2" : "txt2");
for (int i = 0; i < 7; i++)
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, i, i, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 6, timeOfBefore + timeOfChange + timeOfWait + timeOfChange + timeOfWait + timeOfChange, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 5, timeOfBefore + timeOfChange + timeOfWait + timeOfChange + timeOfWait, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 4, timeOfBefore + timeOfChange + timeOfWait + timeOfChange, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 3, timeOfBefore + timeOfChange + timeOfWait, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 2, timeOfBefore + timeOfChange, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 1, timeOfBefore, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetPositionKey(0, 0, -70f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(1, 0, -70f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(2, 0, -35f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(3, 0, -35f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(4, 0, 0f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(5, 0, 0f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(6, 0, 35f, 0, eKVectorType.VECTOR_TYPE_Y);
}
if (lineCountAnswer == 1)
{
KAObject = KAScene.GetObject("name1");
KAObject.SetPositionKey(7, 0, 35f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject = KAScene.GetObject("txt1");
if (lineCountQuestion == 1)
{
for (int i = 7; i < 12; i++)
KAObject.SetPositionKey(i, 0, 35f, 0, eKVectorType.VECTOR_TYPE_Y);
for (int j = 0; j < 2; j++)
{
KAObject = KAScene.GetObject(j == 0 ? "name2" : "txt2");
KAObject.SetPositionKey(6, 0, 0f, 0, eKVectorType.VECTOR_TYPE_Y);
}
}
else
{
if (lineCountQuestion == 2)
{
for (int i = 7; i < 12; i++)
KAObject.SetPositionKey(i, 0, 35f, 0, eKVectorType.VECTOR_TYPE_Y);
}
else if (lineCountQuestion == 3)
{
for (int i = 9; i < 12; i++)
KAObject.SetPositionKey(i, 0, 70f, 0, eKVectorType.VECTOR_TYPE_Y);
}
for (int j = 0; j < 2; j++)
{
KAObject = KAScene.GetObject(j == 0 ? "name2" : "txt2");
KAObject.SetPositionKey(4, 0, -35f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(5, 0, -35f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetPositionKey(6, 0, -35f, 0, eKVectorType.VECTOR_TYPE_Y);
}
}
timeOfBefore += lineCountQuestion == 1 ? 2 * (timeOfChange + timeOfWait) : timeOfChange + timeOfWait;
}
else if (lineCountAnswer == 2)
{
for (int j = 0; j < 2; j++)
{
KAObject = KAScene.GetObject(j == 0 ? "name2" : "txt2");
KAObject.SetPositionKey(6, 0, 0f, 0, eKVectorType.VECTOR_TYPE_Y);
}
//name1과 txt1의 위치를 조절해야 한다.
KAObject = KAScene.GetObject("name1");
KAObject.SetPositionKey(7, 0, 35f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject = KAScene.GetObject("txt1");
if (lineCountQuestion == 1)
{
for (int i = 7; i < 12; i++)
KAObject.SetPositionKey(i, 0, 35f, 0, eKVectorType.VECTOR_TYPE_Y);
}
else if (lineCountQuestion == 2)
{
for (int i = 9; i < 12; i++)
KAObject.SetPositionKey(i, 0, 70f, 0, eKVectorType.VECTOR_TYPE_Y);
}
else if (lineCountQuestion == 3)
{
KAObject.SetPositionKey(11, 0, 105f, 0, eKVectorType.VECTOR_TYPE_Y);
}
timeOfBefore += timeOfChange + timeOfWait + timeOfChange + timeOfWait;
}
else if (lineCountAnswer == 3)
{
//3줄다 기록된 경우
timeOfBefore += timeOfChange + timeOfWait + timeOfChange + timeOfWait + timeOfChange + timeOfWait;
KAObject = KAScene.GetObject("name1");
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 7, timeOfBefore - timeOfWait, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 6, timeOfBefore - timeOfWait - timeOfChange, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
}
KAObject = KAScene.GetObject("name1");
KAObject.SetStyleColor(getColor(lbl_color_1));
KAObject.SetValue(strs[0]);
KAObject = KAScene.GetObject("txt1_1");
KAObject.SetStyleColor(getColor(lbl_color_2));
KAObject.SetValue(strs[1]);
KAObject = KAScene.GetObject("txt1_2");
KAObject.SetStyleColor(getColor(lbl_color_2));
KAObject.SetValue(strs[2]);
KAObject = KAScene.GetObject("txt1_3");
KAObject.SetStyleColor(getColor(lbl_color_2));
KAObject.SetValue(strs[3]);
KAObject = KAScene.GetObject("name2");
KAObject.SetStyleColor(getColor(lbl_color_3));
KAObject.SetValue(strs[4]);
KAObject = KAScene.GetObject("txt2_1");
KAObject.SetStyleColor(getColor(lbl_color_4));
KAObject.SetValue(strs[5]);
KAObject = KAScene.GetObject("txt2_2");
KAObject.SetStyleColor(getColor(lbl_color_4));
KAObject.SetValue(strs[6]);
KAObject = KAScene.GetObject("txt2_3");
KAObject.SetStyleColor(getColor(lbl_color_4));
KAObject.SetValue(strs[7]);
//경우의 수를 통한 표출 텍스트 정보를 저장
for (int i = 0; i < aliveLiveChatText.Length; i++)
{
aliveLiveChatText[i] = "";
aliveLiveChatText2[i] = "";
}
if (lineCountAnswer == 3)
{
aliveLiveChatText[0] = strs[4];
aliveLiveChatText[1] = strs[5];
aliveLiveChatText[3] = strs[6];
aliveLiveChatText[5] = strs[7];
}
else if (lineCountAnswer == 2)
{
aliveLiveChatText[0] = strs[0];
aliveLiveChatText[1] = strs[lineCountQuestion];
aliveLiveChatText[2] = strs[4];
aliveLiveChatText[3] = strs[5];
aliveLiveChatText[5] = strs[6];
}
else if (lineCountAnswer == 1)
{
aliveLiveChatText[0] = strs[0];
if (lineCountQuestion == 1)
{
aliveLiveChatText[1] = strs[1];
aliveLiveChatText[2] = strs[4];
aliveLiveChatText[3] = strs[5];
}
else if (lineCountQuestion == 2)
{
aliveLiveChatText[1] = strs[1];
aliveLiveChatText[3] = strs[2];
aliveLiveChatText[4] = strs[4];
aliveLiveChatText[5] = strs[5];
}
else if (lineCountQuestion == 3)
{
aliveLiveChatText[1] = strs[2];
aliveLiveChatText[3] = strs[3];
aliveLiveChatText[4] = strs[4];
aliveLiveChatText[5] = strs[5];
}
}
}
else if (dispLines == 4)
{
int lineCountQuestion = 3;
int lineCountAnswer = 3;
//텍스트 값 변경
KAObject = KAScene.GetObject("name1");
KAObject.SetStyleColor(getColor(lbl_color_1));
KAObject.SetValue(strs[0]);
KAObject = KAScene.GetObject("name2");
KAObject.SetStyleColor(getColor(lbl_color_3));
KAObject.SetValue(strs[4]);
List<string> txts = new List<string>();
lineCountQuestion = 0;
lineCountAnswer = 0;
for (int i = 1; i < 8; i++)
{
if (i != 4 && strs[i].Trim() != "")
{
if (i < 4)
{
lineCountQuestion++;
}
else
{
lineCountAnswer++;
}
txts.Add(strs[i]);
}
}
for (int i = 0; i < 6; i++)
{
if (i < txts.Count)
{
KAObject = KAScene.GetObject("txt1_" + (i + 1));
KAObject.SetStyleColor(getColor(i < lineCountQuestion ? lbl_color_2 : lbl_color_4));
KAObject.SetValue(txts[i]);
}
else
{
KAObject = KAScene.GetObject("txt1_" + (i + 1));
KAObject.SetValue("");
}
}
//기본 시간 계산
int timeOfWaitFirst = 1;
bool FirstChecker = true;
for (int i = 0; i < 8; i++)
{
if (aliveLiveChatText[i].Trim() != "") FirstChecker = false;
}
if (!FirstChecker) timeOfWaitFirst = timeOfWait;
//Name,Text 위치 및 시간계산
for (int j = 0; j < 3; j++)
{
KAObject = KAScene.GetObject(j == 0 ? "name1" : j == 1 ? "txts" : "name2");
for (int i = 0; i < 12; i++)
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, i, i, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 11, timeOfChange + timeOfWaitFirst + timeOfChange + timeOfWaitFirst + timeOfChange + timeOfWaitFirst + timeOfChange + timeOfWait + timeOfChange + timeOfWait + timeOfChange, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 10, timeOfChange + timeOfWaitFirst + timeOfChange + timeOfWaitFirst + timeOfChange + timeOfWaitFirst + timeOfChange + timeOfWait + timeOfChange + timeOfWait, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 9, timeOfChange + timeOfWaitFirst + timeOfChange + timeOfWaitFirst + timeOfChange + timeOfWaitFirst + timeOfChange + timeOfWait + timeOfChange, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 8, timeOfChange + timeOfWaitFirst + timeOfChange + timeOfWaitFirst + timeOfChange + timeOfWaitFirst + timeOfChange + timeOfWait, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 7, timeOfChange + timeOfWaitFirst + timeOfChange + timeOfWaitFirst + timeOfChange + timeOfWaitFirst + timeOfChange, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 6, timeOfChange + timeOfWaitFirst + timeOfChange + timeOfWaitFirst + timeOfChange + timeOfWaitFirst, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 5, timeOfChange + timeOfWaitFirst + timeOfChange + timeOfWaitFirst + timeOfChange, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 4, timeOfChange + timeOfWaitFirst + timeOfChange + timeOfWaitFirst, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 3, timeOfChange + timeOfWaitFirst + timeOfChange, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 2, timeOfChange + timeOfWaitFirst, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 1, timeOfChange, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
if (j != 2)
{
for (int i = 0; i < 12; i++)
{
float yPos = (30 * ((i + 1) / 2)) - 85;
if (j == 0) yPos += 15; //name
else
{
if (lineCountAnswer + lineCountQuestion < 5 && i > 8)
{
yPos = 30 * 4 - 85;
}
else if (lineCountAnswer + lineCountQuestion == 5 && i > 9)
{
yPos = 30 * 5 - 85;
}
}
KAObject.SetPositionKey(i, 0, yPos, 0, eKVectorType.VECTOR_TYPE_Y);
}
}
else //name2
{
for (int i = 0; i < 12; i++)
{
float yPos = (30 * ((i + 1) / 2)) - 70;
yPos += lineCountQuestion * -30;
//가장아래에 있는 경우
if (lineCountQuestion == 3 && lineCountAnswer == 1)
{
if (yPos > -40) yPos = -40;
}
else if ((lineCountQuestion == 2 && lineCountAnswer == 1) ||
(lineCountQuestion == 2 && lineCountAnswer == 2) ||
(lineCountQuestion == 3 && lineCountAnswer == 2))
{
if (yPos > -10) yPos = -10;
}
else
{
if (yPos > 20) yPos = 20;
}
KAObject.SetPositionKey(i, 0, yPos, 0, eKVectorType.VECTOR_TYPE_Y);
}
}
}
//이전 텍스트 처리
bool isReply = false;
for (int i = 0; i < 8; i++)
{
if (i == 0)
{
KAObject = KAScene.GetObject("name0_1");
KAObject.SetValue(aliveLiveChatText[0]);
KAObject.SetStyleColor(getColor(lbl_color_1));
KAObject = KAScene.GetObject("name0_2");
KAObject.SetValue("");
}
else if (i % 2 == 0)
{
if (aliveLiveChatText[i].Trim() != "")
{
isReply = true;
KAObject = KAScene.GetObject("name0_2");
KAObject.SetValue(aliveLiveChatText[i]);
KAObject.SetStyleColor(getColor(lbl_color_3));
}
}
else
{
KAObject = KAScene.GetObject("txt0_" + (i / 2 + 1));
KAObject.SetValue(aliveLiveChatText[i]);
KAObject.SetStyleColor(getColor(isReply ? lbl_color_4 : lbl_color_2));
}
}
int beforeTextReplayPos()
{
if (aliveLiveChatText[6].Trim() != "") return 4;
else if (aliveLiveChatText[4].Trim() != "") return 3;
else if (aliveLiveChatText[2].Trim() != "") return 2;
else return 0;
}
int beforeTextReplayCount()
{
if (aliveLiveChatText[6].Trim() != "") return 1;
else if (aliveLiveChatText[4].Trim() != "")
{
return aliveLiveChatText[7].Trim() == "" ? 1 : 2;
}
else if (aliveLiveChatText[2].Trim() != "")
{
if (aliveLiveChatText[7].Trim() != "") return 3;
else if (aliveLiveChatText[5].Trim() != "") return 2;
else return 1;
}
else return 0;
}
string[] keyNames = { "group0", "", "name0_1t", "name0_2t" };
foreach (var k in keyNames)
{
KAObject = KAScene.GetObject(k);
for (int i = 0; i < 8; i++)
{
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, i, i, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
}
}
int blankCount = 0;
if (aliveLiveChatText[7] == "")
{
blankCount++;
if (aliveLiveChatText[5] == "") blankCount++;
}
int blankWait = 0;
for (int i = 0; i < blankCount; i++) blankWait += timeOfChange + timeOfWaitFirst;
foreach (var k in keyNames)
{
KAObject = KAScene.GetObject(k);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 7, blankWait + timeOfChange + timeOfWaitFirst + timeOfChange + timeOfWaitFirst + timeOfChange + timeOfWaitFirst + timeOfChange, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 6, blankWait + timeOfChange + timeOfWaitFirst + timeOfChange + timeOfWaitFirst + timeOfChange + timeOfWaitFirst, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 5, blankWait + timeOfChange + timeOfWaitFirst + timeOfChange + timeOfWaitFirst + timeOfChange, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 4, blankWait + timeOfChange + timeOfWaitFirst + timeOfChange + timeOfWaitFirst, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 3, blankWait + timeOfChange + timeOfWaitFirst + timeOfChange, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 2, blankWait + timeOfChange + timeOfWaitFirst, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 1, blankWait + timeOfChange, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, 0, blankWait, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
}
KAObject = KAScene.GetObject("group0");
for (int i = 0; i < 8; i++)
{
float yPos = (30 * ((i + 1) / 2));
KAObject.SetPositionKey(i, 0, yPos, 0, eKVectorType.VECTOR_TYPE_Y);
}
KAObject = KAScene.GetObject("name0_1t");
for (int i = 0; i < 8; i++)
{
float yPos = (30 * ((i + 1) / 2));
if (beforeTextReplayPos() == 2)
{ }
else if (beforeTextReplayPos() == 3)
{
yPos -= 30;
}
else if (beforeTextReplayPos() == 4)
{
yPos -= 60;
}
if (yPos < 0) yPos = 0;
KAObject.SetPositionKey(i, 0, yPos, 0, eKVectorType.VECTOR_TYPE_Y);
}
KAObject = KAScene.GetObject("name0_2t");
int countOfZero = 0;
for (int i = 0; i < 8; i++)
{
float yPos = (30 * ((i + 1) / 2));
yPos -= (beforeTextReplayPos() - 1) * 30;
if (yPos > 0)
{
countOfZero++;
if (countOfZero <= (beforeTextReplayCount() - 1) * 2) yPos = 0;
if (yPos > 0) yPos = 30;
}
KAObject.SetPositionKey(i, 0, yPos, 0, eKVectorType.VECTOR_TYPE_Y);
}
//보이는 값 저장하기
for (int i = 0; i < aliveLiveChatText.Length; i++)
{
aliveLiveChatText[i] = "";
}
txts.Reverse();
for (int i = 0; i < 4; i++)
{
if (txts.Count > i) aliveLiveChatText[7 - (i * 2)] = txts[i];
}
for (int i = 0; i < 2; i++)
{
if (aliveLiveChatText[1].Trim() == "")
{
aliveLiveChatText[1] = aliveLiveChatText[3];
aliveLiveChatText[3] = aliveLiveChatText[5];
aliveLiveChatText[5] = aliveLiveChatText[7];
aliveLiveChatText[7] = "";
}
}
aliveLiveChatText[0] = strs[0];
if (lineCountQuestion == 3 && lineCountAnswer == 1)
{
aliveLiveChatText[6] = strs[4];
}
else if ((lineCountQuestion == 2 && lineCountAnswer == 1) ||
(lineCountQuestion == 2 && lineCountAnswer == 2) ||
(lineCountQuestion == 3 && lineCountAnswer == 2))
{
aliveLiveChatText[4] = strs[4];
}
else
{
aliveLiveChatText[2] = strs[4];
}
// 기본적으로 위로 올라가는 시간
for (int i = 0; i < 4; i++)
{
timeOfBefore += timeOfWaitFirst + timeOfChange;
}
for (int i = 0; i < lineCountQuestion + lineCountAnswer - 4; i++)
{
timeOfBefore += timeOfWait + timeOfChange;
}
}
else if (dispLines == 0 || dispLines == 1)
{
string = strs[13];
bool hasBeforeScene = false;
bool hasBeforeScene2 = false;
bool hasBeforeScene3 = false;
bool hasBeforeScene4 = false;
//기존 텍스트 존재 검사
if (!isNullArray(aliveLiveChatText4))
{
hasBeforeScene = true;
hasBeforeScene2 = true;
hasBeforeScene3 = true;
hasBeforeScene4 = true;
}
else if (!isNullArray(aliveLiveChatText3))
{
hasBeforeScene = true;
hasBeforeScene2 = true;
hasBeforeScene3 = true;
}
else if (!isNullArray(aliveLiveChatText2))
{
//존재한다 좆됐다!
hasBeforeScene = true;
hasBeforeScene2 = true;
}
else if (!isNullArray(aliveLiveChatText))
{
//존재한다 좆됐다!
hasBeforeScene = true;
}
//말풍선 색상 변경
KAScene.GetObject("txtbox1").SetStyleColor(getColor(lbl_color_5));
KAScene.GetObject("txtbox2").SetStyleColor(getColor(lbl_color_6));
if (hasBeforeScene)
{
KAScene.GetObject("txtbox3").SetStyleColor(getColor(lbl_color_5));
KAScene.GetObject("txtbox4").SetStyleColor(getColor(lbl_color_6));
}
if (hasBeforeScene2)
{
KAScene.GetObject("txtbox5").SetStyleColor(getColor(lbl_color_5));
KAScene.GetObject("txtbox6").SetStyleColor(getColor(lbl_color_6));
}
if (hasBeforeScene3)
{
KAScene.GetObject("txtbox7").SetStyleColor(getColor(lbl_color_5));
KAScene.GetObject("txtbox8").SetStyleColor(getColor(lbl_color_6));
}
if (hasBeforeScene4)
{
KAScene.GetObject("txtbox9").SetStyleColor(getColor(lbl_color_5));
KAScene.GetObject("txtbox10").SetStyleColor(getColor(lbl_color_6));
}
//텍스트 값 변경 - 작성자
KAObject = KAScene.GetObject("name1");
KAObject.SetStyleColor(getColor(lbl_color_1));
KAObject.SetValue(strs[0]);
KAObject = KAScene.GetObject("name2");
KAObject.SetStyleColor(getColor(lbl_color_3));
KAObject.SetValue(strs[4]);
bool[] = { false, false, false, false, false, false, false, false, false, false, false };
void (string , string )
{
int index = Convert.ToInt32(.Replace("name", ""));
if (.Contains("undefined") || .Substring(.Length - 2).Equals("_"))
{
KAObject = KAScene.GetObject();
KAObject.SetPosition(-100, 0, 0, eKVectorType.VECTOR_TYPE_X);
KAObject = KAScene.GetObject( + "Icon");
KAObject.SetVisible(0);
}
else
{
KAObject = KAScene.GetObject();
KAObject.SetPosition(-40, 0, 0, eKVectorType.VECTOR_TYPE_X);
KAObject = KAScene.GetObject( + "Icon");
KAObject.SetValue(getIconPath(, true, true));
KAObject.SetImageOriginalSize();
KAObject.SetVisible(1);
[index] = true;
}
}
("name2", );
if (hasBeforeScene)
{
KAObject = KAScene.GetObject("name3");
KAObject.SetStyleColor(getColor(lbl_color_1));
KAObject.SetValue(aliveLiveChatText[0]);
KAObject = KAScene.GetObject("name4");
KAObject.SetStyleColor(getColor(lbl_color_3));
KAObject.SetValue(aliveLiveChatText[4]);
("name4", aliveLiveChatText[8]);
}
if (hasBeforeScene2)
{
KAObject = KAScene.GetObject("name5");
KAObject.SetStyleColor(getColor(lbl_color_1));
KAObject.SetValue(aliveLiveChatText2[0]);
KAObject = KAScene.GetObject("name6");
KAObject.SetStyleColor(getColor(lbl_color_3));
KAObject.SetValue(aliveLiveChatText2[4]);
("name6", aliveLiveChatText2[8]);
}
if (hasBeforeScene3)
{
KAObject = KAScene.GetObject("name7");
KAObject.SetStyleColor(getColor(lbl_color_1));
KAObject.SetValue(aliveLiveChatText3[0]);
KAObject = KAScene.GetObject("name8");
KAObject.SetStyleColor(getColor(lbl_color_3));
KAObject.SetValue(aliveLiveChatText3[4]);
("name8", aliveLiveChatText3[8]);
}
if (hasBeforeScene4)
{
KAObject = KAScene.GetObject("name9");
KAObject.SetStyleColor(getColor(lbl_color_1));
KAObject.SetValue(aliveLiveChatText4[0]);
KAObject = KAScene.GetObject("name10");
KAObject.SetStyleColor(getColor(lbl_color_3));
KAObject.SetValue(aliveLiveChatText4[4]);
("name10", aliveLiveChatText4[8]);
}
//기본 시간 계산
int timeOfWaitFirst = 1;
bool FirstChecker = true;
for (int i = 0; i < 8; i++)
{
if (aliveLiveChatText[i].Trim() != "") FirstChecker = false;
}
if (!FirstChecker) timeOfWaitFirst = timeOfWait;
int[] = new int[11];
int = 0;
[0] = 0;
for (int i = 1; i < 11; i++)
{
int = i % 2 == 1 ? timeOfChange : timeOfWait;
[i] = [i - 1] + ;
}
//Animation 정렬 초기화
for (int j = 0; j < 2; j++)
{
KAObject = j == 0 ? KAScene.GetObject("boxs") : KAScene.GetObject("boxs2");
for (int i = 0; i < 11; i++) KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, i, i, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
//설정된 프레임 시간 맞추기
for (int i = 10; i > -1; i--)
{
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, i, [i], eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
}
}
//이모지 정보 저장용
List<Emoji> emojis = new List<Emoji>();
//큰아이콘 정보 저장용
List<LargeIcon> largeIcons = new List<LargeIcon>();
//사진아이콘 정보 저장용
List<PhotoIcon> photoIcons = new List<PhotoIcon>();
List<Emoji> beforeEmojis = new List<Emoji>();
List<LargeIcon> beforeLargeIcons = new List<LargeIcon>();
List<PhotoIcon> beforePhotoIcons = new List<PhotoIcon>();
List<Emoji> beforeEmojis2 = new List<Emoji>();
List<LargeIcon> beforeLargeIcons2 = new List<LargeIcon>();
List<PhotoIcon> beforePhotoIcons2 = new List<PhotoIcon>();
List<Emoji> beforeEmojis3 = new List<Emoji>();
List<LargeIcon> beforeLargeIcons3 = new List<LargeIcon>();
List<PhotoIcon> beforePhotoIcons3 = new List<PhotoIcon>();
List<Emoji> beforeEmojis4 = new List<Emoji>();
List<LargeIcon> beforeLargeIcons4 = new List<LargeIcon>();
List<PhotoIcon> beforePhotoIcons4 = new List<PhotoIcon>();
//표출 말풍선 정보
int QLines = strs[3].Trim() != "" ? 3 : strs[2].Trim() != "" ? 2 : 1;
int ALines = strs[7].Trim() != "" ? 3 : strs[6].Trim() != "" ? 2 : 1;
string txtQ = setTxt(new string[] { strs[1], strs[2], strs[3] }, true, 0);
string txtA = setTxt(new string[] { strs[5], strs[6], strs[7] }, false, 0);
if (txtQ.Replace(Environment.NewLine, "").Trim().Equals("")) QLines = 0;
if (txtA.Replace(Environment.NewLine, "").Trim().Equals("")) ALines = 0;
int beforeQLines = aliveLiveChatText[3].Trim() != "" ? 3 : aliveLiveChatText[2].Trim() != "" ? 2 : 1;
int beforeALines = aliveLiveChatText[7].Trim() != "" ? 3 : aliveLiveChatText[6].Trim() != "" ? 2 : 1;
string beforetxtQ = setTxt(new string[] { aliveLiveChatText[1], aliveLiveChatText[2], aliveLiveChatText[3] }, true, 1);
string beforetxtA = setTxt(new string[] { aliveLiveChatText[5], aliveLiveChatText[6], aliveLiveChatText[7] }, false, 1);
if (beforetxtQ.Replace(Environment.NewLine, "").Trim().Equals("")) beforeQLines = 0;
if (beforetxtA.Replace(Environment.NewLine, "").Trim().Equals("")) beforeALines = 0;
int beforeQLines2 = aliveLiveChatText2[3].Trim() != "" ? 3 : aliveLiveChatText2[2].Trim() != "" ? 2 : 1;
int beforeALines2 = aliveLiveChatText2[7].Trim() != "" ? 3 : aliveLiveChatText2[6].Trim() != "" ? 2 : 1;
string beforetxtQ2 = setTxt(new string[] { aliveLiveChatText2[1], aliveLiveChatText2[2], aliveLiveChatText2[3] }, true, 2);
string beforetxtA2 = setTxt(new string[] { aliveLiveChatText2[5], aliveLiveChatText2[6], aliveLiveChatText2[7] }, false, 2);
if (beforetxtQ2.Replace(Environment.NewLine, "").Trim().Equals("")) beforeQLines2 = 0;
if (beforetxtA2.Replace(Environment.NewLine, "").Trim().Equals("")) beforeALines2 = 0;
int beforeQLines3 = aliveLiveChatText3[3].Trim() != "" ? 3 : aliveLiveChatText3[2].Trim() != "" ? 2 : 1;
int beforeALines3 = aliveLiveChatText3[7].Trim() != "" ? 3 : aliveLiveChatText3[6].Trim() != "" ? 2 : 1;
string beforetxtQ3 = setTxt(new string[] { aliveLiveChatText3[1], aliveLiveChatText3[2], aliveLiveChatText3[3] }, true, 3);
string beforetxtA3 = setTxt(new string[] { aliveLiveChatText3[5], aliveLiveChatText3[6], aliveLiveChatText3[7] }, false, 3);
if (beforetxtQ3.Replace(Environment.NewLine, "").Trim().Equals("")) beforeQLines3 = 0;
if (beforetxtA3.Replace(Environment.NewLine, "").Trim().Equals("")) beforeALines3 = 0;
int beforeQLines4 = aliveLiveChatText4[3].Trim() != "" ? 3 : aliveLiveChatText4[2].Trim() != "" ? 2 : 1;
int beforeALines4 = aliveLiveChatText4[7].Trim() != "" ? 3 : aliveLiveChatText4[6].Trim() != "" ? 2 : 1;
string beforetxtQ4 = setTxt(new string[] { aliveLiveChatText4[1], aliveLiveChatText4[2], aliveLiveChatText4[3] }, true, 4);
string beforetxtA4 = setTxt(new string[] { aliveLiveChatText4[5], aliveLiveChatText4[6], aliveLiveChatText4[7] }, false, 4);
if (beforetxtQ4.Replace(Environment.NewLine, "").Trim().Equals("")) beforeQLines4 = 0;
if (beforetxtA4.Replace(Environment.NewLine, "").Trim().Equals("")) beforeALines4 = 0;
string setTxt(string[] inputs, bool isQuestion, int isBeFore)
{
//이모지존재 체크
for (int i = 0; i < 3; i++) inputs[i] = CheckEmoji(inputs[i], isQuestion, i + 1, isBeFore);
string txt = inputs[0];
if (inputs[1].Trim() != "") txt += Environment.NewLine + inputs[1];
if (inputs[2].Trim() != "") txt += Environment.NewLine + inputs[2];
return txt;
}
int calculGapOfX(string txt)
{
int posX = 0;
//영문 또는 숫자인 경우 절반만 적용하는 방식을 적용해 본다
foreach (char v in txt)
{
//length * 25
if ((0xAC00 <= v && v <= 0xD7A3) || (0x3131 <= v && v <= 0x318E)) posX += 25;
else if (Char.IsWhiteSpace(v)) posX += 5;
else posX += 15;
}
return posX;
}
string CheckEmoji(string str, bool isQuestion, int line, int isBefore)
{
while (str.Contains("[PH:"))
{
int indexOfSI = str.IndexOf("[PH:");
int indexOfEOF = str.Substring(indexOfSI).IndexOf("]") + indexOfSI;
int gapOfX = 0;
string ImgName = str.Substring(indexOfSI + 4, indexOfEOF - indexOfSI - 4);
str = str.Remove(indexOfSI, indexOfEOF - indexOfSI + 1);
bool hasContents = true;
if (line == 1) if (str.Trim().Equals("")) hasContents = false;
PhotoIcon photoIcon = new PhotoIcon(isQuestion, hasContents, false, ImgName);
if (isBefore == 4) beforePhotoIcons4.Add(photoIcon);
else if (isBefore == 3) beforePhotoIcons3.Add(photoIcon);
else if (isBefore == 2) beforePhotoIcons2.Add(photoIcon);
else if (isBefore == 1) beforePhotoIcons.Add(photoIcon);
else photoIcons.Add(photoIcon);
}
while (str.Contains("[LI:"))
{
int indexOfSI = str.IndexOf("[LI:");
int indexOfEOF = str.Substring(indexOfSI).IndexOf("]") + indexOfSI;
int gapOfX = 0;
string ImgName = str.Substring(indexOfSI + 4, indexOfEOF - indexOfSI - 4);
str = str.Remove(indexOfSI, indexOfEOF - indexOfSI + 1);
bool hasContents = true;
if (line == 1) if (str.Trim().Equals("")) hasContents = false;
LargeIcon largeIcon = new LargeIcon(isQuestion, hasContents, false, ImgName);
if (isBefore == 4) beforeLargeIcons4.Add(largeIcon);
else if (isBefore == 3) beforeLargeIcons3.Add(largeIcon);
else if (isBefore == 2) beforeLargeIcons2.Add(largeIcon);
else if (isBefore == 1) beforeLargeIcons.Add(largeIcon);
else largeIcons.Add(largeIcon);
}
while (str.Contains("[CI:"))
{
int indexOfSI = str.IndexOf("[CI:");
int indexOfEOF = str.Substring(indexOfSI).IndexOf("]") + indexOfSI;
int gapOfX = 0;
string ImgName = str.Substring(indexOfSI + 4, indexOfEOF - indexOfSI - 4);
str = str.Remove(indexOfSI, indexOfEOF - indexOfSI + 1);
bool hasContents = true;
if (line == 1) if (str.Trim().Equals("")) hasContents = false;
LargeIcon largeIcon = new LargeIcon(isQuestion, hasContents, true, ImgName);
if (isBefore == 4) beforeLargeIcons4.Add(largeIcon);
else if (isBefore == 3) beforeLargeIcons3.Add(largeIcon);
else if (isBefore == 2) beforeLargeIcons2.Add(largeIcon);
else if (isBefore == 1) beforeLargeIcons.Add(largeIcon);
else largeIcons.Add(largeIcon);
}
while (str.Contains("[SI:"))
{
int indexOfSI = str.IndexOf("[SI:");
int indexOfEOF = str.Substring(indexOfSI).IndexOf("]") + indexOfSI;
int gapOfX = 0;
if (isQuestion)
{
gapOfX = 155; //오른쪽
//gapOfX += -calculGapOfX(str.Substring(0, indexOfSI));
}
else
{
gapOfX = -125; //왼쪽
gapOfX += calculGapOfX(str.Substring(0, indexOfSI));
//최대값 넣어야함
if (gapOfX > 125) gapOfX = 125;
}
string ImgName = str.Substring(indexOfSI + 4, indexOfEOF - indexOfSI - 4);
str = str.Remove(indexOfSI, indexOfEOF - indexOfSI + 1);
str = str.Insert(indexOfSI, " ");
Emoji emoji = new Emoji(isQuestion, line, gapOfX, ImgName);
if (isBefore == 4) beforeEmojis4.Add(emoji);
else if (isBefore == 3) beforeEmojis3.Add(emoji);
else if (isBefore == 2) beforeEmojis2.Add(emoji);
else if (isBefore == 1) beforeEmojis.Add(emoji);
else emojis.Add(emoji);
}
return str;
}
KAScene.GetObject("txt1").SetValue(txtQ);
KAScene.GetObject("txt2").SetValue(txtA);
if (hasBeforeScene)
{
KAScene.GetObject("txt3").SetValue(beforetxtQ);
KAScene.GetObject("txt4").SetValue(beforetxtA);
}
if (hasBeforeScene2)
{
KAScene.GetObject("txt5").SetValue(beforetxtQ2);
KAScene.GetObject("txt6").SetValue(beforetxtA2);
}
if (hasBeforeScene3)
{
KAScene.GetObject("txt7").SetValue(beforetxtQ3);
KAScene.GetObject("txt8").SetValue(beforetxtA3);
}
if (hasBeforeScene4)
{
KAScene.GetObject("txt9").SetValue(beforetxtQ4);
KAScene.GetObject("txt10").SetValue(beforetxtA4);
}
//아이콘 Visible Setting
for (int i = 1; i < 11; i++)
{
KAScene.GetObject("img" + i).SetVisible(0);
KAScene.GetObject("img" + i + "_가로형").SetVisible(0);
KAScene.GetObject("img" + i + "_정사각").SetVisible(0);
KAScene.GetObject("img" + i + "_세로형").SetVisible(0);
for (int j = 1; j < 6; j++) KAScene.GetObject("emoji" + i + "_" + j).SetVisible(0);
}
//이모지 표출을 위치 계산
//path4_0 의 경로 내부의 icon값을 토대로 정의한다
string getIconPath(string fileName, bool isEmoji, bool isCharecter)
{
var directory = Path.GetDirectoryName(path4_0);
var path = "";
if (isCharecter)
{
if (isEmoji) path = directory + @"\character\" + fileName + "_60.png";
else path = directory + @"\character\" + fileName + "_120.png";
}
else
{
if (isEmoji) path = directory + @"\icons_small\" + fileName + "_s.png";
else path = directory + @"\icons\" + fileName + ".png";
}
return path;
}
//임시 - X값 계산 수식을 다시 정해야함..
int emojiQ = 0;
int emojiA = 0;
foreach (var emoji in emojis)
{
string tag = "";
if (emoji.isQuestion)
{
emojiQ++;
tag = "emoji1_" + emojiQ;
}
else
{
emojiA++;
tag = "emoji2_" + emojiA;
}
int[] Ypos = new int[] { 0, -10, -40, -70 };
KAObject = KAScene.GetObject(tag);
KAObject.SetPosition(emoji.gapOfX, Ypos[emoji.line], 0, eKVectorType.VECTOR_TYPE_XY);
//path4_0 의 경로 내부의 icon값을 토대로 정의한다
KAObject.SetValue(getIconPath(emoji.value, true, false));
KAObject.SetVisible(1);
}
if (hasBeforeScene)
{
emojiQ = 0;
emojiA = 0;
foreach (var emoji in beforeEmojis)
{
string tag = "";
if (emoji.isQuestion)
{
emojiQ++;
tag = "emoji3_" + emojiQ;
}
else
{
emojiA++;
tag = "emoji4_" + emojiA;
}
int[] Ypos = new int[] { 0, -12, -42, -72 };
KAObject = KAScene.GetObject(tag);
KAObject.SetPosition(emoji.gapOfX, Ypos[emoji.line], 0, eKVectorType.VECTOR_TYPE_XY);
//path4_0 의 경로 내부의 icon값을 토대로 정의한다
KAObject.SetValue(getIconPath(emoji.value, true, false));
KAObject.SetVisible(1);
}
}
if (hasBeforeScene2)
{
emojiQ = 0;
emojiA = 0;
foreach (var emoji in beforeEmojis2)
{
string tag = "";
if (emoji.isQuestion)
{
emojiQ++;
tag = "emoji5_" + emojiQ;
}
else
{
emojiA++;
tag = "emoji6_" + emojiA;
}
int[] Ypos = new int[] { 0, -12, -42, -72 };
KAObject = KAScene.GetObject(tag);
KAObject.SetPosition(emoji.gapOfX, Ypos[emoji.line], 0, eKVectorType.VECTOR_TYPE_XY);
//path4_0 의 경로 내부의 icon값을 토대로 정의한다
KAObject.SetValue(getIconPath(emoji.value, true, false));
KAObject.SetVisible(1);
}
}
if (hasBeforeScene3)
{
emojiQ = 0;
emojiA = 0;
foreach (var emoji in beforeEmojis3)
{
string tag = "";
if (emoji.isQuestion)
{
emojiQ++;
tag = "emoji7_" + emojiQ;
}
else
{
emojiA++;
tag = "emoji8_" + emojiA;
}
int[] Ypos = new int[] { 0, -12, -42, -72 };
KAObject = KAScene.GetObject(tag);
KAObject.SetPosition(emoji.gapOfX, Ypos[emoji.line], 0, eKVectorType.VECTOR_TYPE_XY);
//path4_0 의 경로 내부의 icon값을 토대로 정의한다
KAObject.SetValue(getIconPath(emoji.value, true, false));
KAObject.SetVisible(1);
}
}
if (hasBeforeScene4)
{
emojiQ = 0;
emojiA = 0;
foreach (var emoji in beforeEmojis3)
{
string tag = "";
if (emoji.isQuestion)
{
emojiQ++;
tag = "emoji9_" + emojiQ;
}
else
{
emojiA++;
tag = "emoji10_" + emojiA;
}
int[] Ypos = new int[] { 0, -12, -42, -72 };
KAObject = KAScene.GetObject(tag);
KAObject.SetPosition(emoji.gapOfX, Ypos[emoji.line], 0, eKVectorType.VECTOR_TYPE_XY);
//path4_0 의 경로 내부의 icon값을 토대로 정의한다
KAObject.SetValue(getIconPath(emoji.value, true, false));
KAObject.SetVisible(1);
}
}
//텍스트 라인 수에 따른 위치 조절
KAObject = KAScene.GetObject("boxs");
//시작값 -400
int keyIndex = 0;
int Y값 = -400;
int Y값위치기본 = 620;
int Y값위치 = 620;
int Y값 = Convert.ToInt32(textBox10.Text); //80;//75;
int = Convert.ToInt32(txt답변값.Text);
int = Convert.ToInt32(textBox11.Text); // 35;
int 1 = Convert.ToInt32(textBox12.Text); // 30;
int Y값 = Convert.ToInt32(textBox13.Text); //130;
int Y값 = 330;
int = 500;
int Y값 = 0;
bool = false;
List<int> 500 = new List<int>();
for (int i = 1; i < 11; i++)
{
KAScene.GetObject("box" + i).SetVisible(0);
KAScene.GetObject("txtbox" + i).SetVisible(0);
}
void SetBox(string boxName, int Lines, bool areadyShown)
{
KAScene.GetObject("txt" + boxName).SetVisible(1);
KAObject = KAScene.GetObject(boxName);
KAObject.SetVisible(1);
KAObject.SetPosition(0, Y값위치, 0, eKVectorType.VECTOR_TYPE_Y);
int = Convert.ToInt32(boxName.Replace("box", ""));
int = Y값 + (1 * Lines); ;
//답변자아이콘 추가에 따른 값
if ( % 2 == 0)
{
if ([])
{
//답변이 있는 경우
+= ;
float Y컨텐츠 = (float)-10.5 - ;
KAScene.GetObject("boxContents" + ).SetPosition(0, Y컨텐츠, 0, eKVectorType.VECTOR_TYPE_Y);
}
else
{
//답변이 없는 경우
float Y컨텐츠 = (float)-10.5;
KAScene.GetObject("boxContents" + ).SetPosition(0, Y컨텐츠, 0, eKVectorType.VECTOR_TYPE_Y);
}
}
//box 측면에서 보이게 하는 값 설정 - 임시 이미 보이는 상태라면 바로 보이도록 변경해야함
if (areadyShown || Y값 > )
{
KAObject.SetPositionKey(0, (float)-16.5, 0, 0, eKVectorType.VECTOR_TYPE_X);
KAObject.SetPositionKey(1, (float)-16.5, 0, 0, eKVectorType.VECTOR_TYPE_X);
}
else
{
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_X, 1, [] + 1, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_X, 0, [], eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
if ( || (Y값 < && Y값 + < ))
{
++;
++;
}
}
Y값 += ;
if (Y값 > )
{
if (!areadyShown) 500.Add(Y값);
= true;
}
//Console.WriteLine(boxName + " 표출누적Y값 : " + 표출누적Y값);
}
void SetLargeIcon(string boxName, int Lines, List<LargeIcon> icons, bool isQuestion, string imgName, bool areadyShown)
{
//아이콘 값이 있는지 확인
foreach (var largeIcon in icons)
{
if (largeIcon.isQuestion == isQuestion)
{
KAObject = KAScene.GetObject(boxName);
KAObject.SetVisible(1);
KAObject.SetPosition(0, Y값위치, 0, eKVectorType.VECTOR_TYPE_Y);
int iconYPos = 0;
int = largeIcon.hasContents ? Y값 : Y값 + 55;
if (largeIcon.hasContents)
{
iconYPos += -(Lines * 1 + 100);
}
else
{
iconYPos += -55;
//컨텐츠가 없으므로, 박스가 나오는 시간을 정상화 시켜야 한다
if (areadyShown || Y값 > )
{
KAObject.SetPositionKey(0, (float)-16.5, 0, 0, eKVectorType.VECTOR_TYPE_X);
KAObject.SetPositionKey(1, (float)-16.5, 0, 0, eKVectorType.VECTOR_TYPE_X);
}
else
{
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_X, 1, [] + 1, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_X, 0, [], eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
if ( || (Y값 < && Y값 + < ))
{
++;
++;
}
}
}
string tag = imgName;
KAObject = KAScene.GetObject(tag);
//if (!isQuestion) iconYPos -= 답변자케릭터추가값;
iconYPos += ;
KAObject.SetPosition(0, iconYPos, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetValue(getIconPath(largeIcon.value, false, largeIcon.isCharecter));
KAObject.SetImageOriginalSize();
KAObject.SetVisible(1);
if (areadyShown || Y값 > )
{
if (isQuestion)
{
KAObject.SetPositionKey(0, (float)115, 0, 0, eKVectorType.VECTOR_TYPE_X);
KAObject.SetPositionKey(1, (float)115, 0, 0, eKVectorType.VECTOR_TYPE_X);
}
else
{
KAObject.SetPositionKey(0, (float)-38.15, 0, 0, eKVectorType.VECTOR_TYPE_X);
KAObject.SetPositionKey(1, (float)-38.15, 0, 0, eKVectorType.VECTOR_TYPE_X);
}
}
else
{
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_X, 1, [] + 1, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_X, 0, [], eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
if ( || (Y값 < && Y값 + < ))
{
++;
++;
}
}
Y값 += ;
if (Y값 > )
{
if (!areadyShown) 500.Add(Y값);
= true;
}
}
}
//Console.WriteLine(boxName + " icon 표출누적Y값 : " + 표출누적Y값);
}
void SetPhotoIcon(string boxName, int Lines, List<PhotoIcon> icons, bool isQuestion, string imgName, bool areadyShown)
{
//아이콘 값이 있는지 확인
foreach (var photoIcon in icons)
{
if (photoIcon.isQuestion == isQuestion)
{
KAObject = KAScene.GetObject(boxName);
KAObject.SetVisible(1);
KAObject.SetPosition(0, Y값위치, 0, eKVectorType.VECTOR_TYPE_Y);
int iconYPos = 0;
string photoSize = photoIcon.value.Split(':')[1];
int = photoIcon.hasContents ? Y값 : Y값 + 0;
if (photoIcon.hasContents)
{
iconYPos += -(Lines * 1 + 100);
if (photoSize.Equals("세로형"))
{
+= 55;
}
else if (photoSize.Equals("가로형"))
{
+= -95;
}
}
else
{
iconYPos += -55;
+= 80;
if (photoSize.Equals("세로형"))
{
+= 55;
}
else if (photoSize.Equals("가로형"))
{
+= -95;
}
//컨텐츠가 없으므로, 박스가 나오는 시간을 정상화 시켜야 한다
if (areadyShown || Y값 > )
{
KAObject.SetPositionKey(0, (float)-16.5, 0, 0, eKVectorType.VECTOR_TYPE_X);
KAObject.SetPositionKey(1, (float)-16.5, 0, 0, eKVectorType.VECTOR_TYPE_X);
}
else
{
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_X, 1, [] + 1, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_X, 0, [], eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
if ( || (Y값 < && Y값 + < ))
{
++;
++;
}
}
}
string tag = imgName;
KAObject = KAScene.GetObject(tag + "_" + photoSize);
//if (!isQuestion) iconYPos -= 답변자케릭터추가값;
iconYPos += ;
//이미지이기 떄문에 변경
iconYPos += 65;
KAObject.SetPosition(0, iconYPos, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetValue(getPhotoIconPath(photoIcon.value));
KAObject.SetVisible(1);
if (areadyShown || Y값 > )
{
if (isQuestion)
{
KAObject.SetPositionKey(0, (float)17.42, 0, 0, eKVectorType.VECTOR_TYPE_X);
KAObject.SetPositionKey(1, (float)17.42, 0, 0, eKVectorType.VECTOR_TYPE_X);
}
else
{
KAObject.SetPositionKey(0, (float)59.27, 0, 0, eKVectorType.VECTOR_TYPE_X);
KAObject.SetPositionKey(1, (float)59.27, 0, 0, eKVectorType.VECTOR_TYPE_X);
}
}
else
{
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_X, 1, [] + 1, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_X, 0, [], eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
if ( || (Y값 < && Y값 + < ))
{
++;
++;
}
}
Y값 += ;
if (Y값 > )
{
if (!areadyShown) 500.Add(Y값);
= true;
}
}
}
//Console.WriteLine(boxName + "Photo icon 표출누적Y값 : " + 표출누적Y값);
}
int = -400;
if (hasBeforeScene4)
{
Y값위치 = Y값위치기본 - Y값;
//Console.WriteLine("박스Y값위치9 : " + 박스Y값위치);
if (beforeQLines4 > 0) SetBox("box9", beforeQLines4, true);
SetLargeIcon("box9", beforeQLines4, beforeLargeIcons4, true, "img9", true);
SetPhotoIcon("box9", beforeQLines4, beforePhotoIcons4, true, "img9", true);
Y값위치 = Y값위치기본 - Y값;
//Console.WriteLine("박스Y값위치10 : " + 박스Y값위치);
if (beforeALines4 > 0) SetBox("box10", beforeALines4, true);
SetLargeIcon("box10", beforeALines4, beforeLargeIcons4, false, "img10", true);
SetPhotoIcon("box10", beforeALines4, beforePhotoIcons4, false, "img10", true);
}
if (hasBeforeScene3)
{
Y값위치 = Y값위치기본 - Y값;
//Console.WriteLine("박스Y값위치7 : " + 박스Y값위치);
if (beforeQLines3 > 0) SetBox("box7", beforeQLines3, true);
SetLargeIcon("box7", beforeQLines3, beforeLargeIcons3, true, "img7", true);
SetPhotoIcon("box7", beforeQLines3, beforePhotoIcons3, true, "img7", true);
Y값위치 = Y값위치기본 - Y값;
//Console.WriteLine("박스Y값위치8 : " + 박스Y값위치);
if (beforeALines3 > 0) SetBox("box8", beforeALines3, true);
SetLargeIcon("box8", beforeALines3, beforeLargeIcons3, false, "img8", true);
SetPhotoIcon("box8", beforeALines3, beforePhotoIcons3, false, "img8", true);
}
if (hasBeforeScene2)
{
Y값위치 = Y값위치기본 - Y값;
//Console.WriteLine("박스Y값위치5 : " + 박스Y값위치);
if (beforeQLines2 > 0) SetBox("box5", beforeQLines2, true);
SetLargeIcon("box5", beforeQLines2, beforeLargeIcons2, true, "img5", true);
SetPhotoIcon("box5", beforeQLines2, beforePhotoIcons2, true, "img5", true);
Y값위치 = Y값위치기본 - Y값;
//Console.WriteLine("박스Y값위치6 : " + 박스Y값위치);
if (beforeALines2 > 0) SetBox("box6", beforeALines2, true);
SetLargeIcon("box6", beforeALines2, beforeLargeIcons2, false, "img6", true);
SetPhotoIcon("box6", beforeALines2, beforePhotoIcons2, false, "img6", true);
}
if (hasBeforeScene)
{
Y값위치 = Y값위치기본 - Y값;
//Console.WriteLine("박스Y값위치3 : " + 박스Y값위치);
if (beforeQLines > 0) SetBox("box3", beforeQLines, true);
SetLargeIcon("box3", beforeQLines, beforeLargeIcons, true, "img3", true);
SetPhotoIcon("box3", beforeQLines, beforePhotoIcons, true, "img3", true);
Y값위치 = Y값위치기본 - Y값;
//Console.WriteLine("박스Y값위치4 : " + 박스Y값위치);
if (beforeALines > 0) SetBox("box4", beforeALines, true);
SetLargeIcon("box4", beforeALines, beforeLargeIcons, false, "img4", true);
SetPhotoIcon("box4", beforeALines, beforePhotoIcons, false, "img4", true);
}
if (Y값 > 500) = = -400 + Y값 - 500;
//Console.WriteLine("송출전마지막값1 : " + 마지막값);
Y값위치 = Y값위치기본 - Y값;
//Console.WriteLine("박스Y값위치1 : " + 박스Y값위치);
if (QLines > 0) SetBox("box1", QLines, false);
SetLargeIcon("box1", QLines, largeIcons, true, "img1", false);
SetPhotoIcon("box1", QLines, photoIcons, true, "img1", false);
Y값위치 = Y값위치기본 - Y값;
//Console.WriteLine("박스Y값위치2 : " + 박스Y값위치);
if (ALines > 0) SetBox("box2", ALines, false);
SetLargeIcon("box2", ALines, largeIcons, false, "img2", false);
SetPhotoIcon("box2", ALines, photoIcons, false, "img2", false);
//현재 값 계산 - 끝
//Y값 애니메이션 위치 조절
KAObject = KAScene.GetObject("boxs");
for (int i = 0; i <= ; i++)
{
KAObject.SetPositionKey(i, 0, , 0, eKVectorType.VECTOR_TYPE_Y);
}
++;
foreach (var v in 500)
{
= -400 + v - ;
KAObject.SetPositionKey(, 0, , 0, eKVectorType.VECTOR_TYPE_Y);
++;
KAObject.SetPositionKey(, 0, , 0, eKVectorType.VECTOR_TYPE_Y);
++;
//Console.WriteLine("송출전마지막값 누적표출초과 계산 후 : " + 마지막값);
}
timeOfBefore = [];
for (int i = ; i < 11; i++)
{
KAObject.SetPositionKey(i, 0, , 0, eKVectorType.VECTOR_TYPE_Y);
}
//Console.WriteLine("마지막값 : " + 마지막값);
//현재 텍스트 저장
for (int i = 0; i < 9; i++) aliveLiveChatText4[i] = aliveLiveChatText3[i];
for (int i = 0; i < 9; i++) aliveLiveChatText3[i] = aliveLiveChatText2[i];
for (int i = 0; i < 9; i++) aliveLiveChatText2[i] = aliveLiveChatText[i];
for (int i = 0; i < 8; i++) aliveLiveChatText[i] = strs[i];
aliveLiveChatText[8] = strs[13];
}
else if (dispLines == 5)
{
int = 6;
int = 0;
for (int i = 1; i < 4; i++) if (!strs[i].Equals("")) ++;
int = 6 + ;
int = 0;
for (int i = 5; i < 8; i++) if (!strs[i].Equals("")) ++;
int = + ;
if ( > 0) beforeNewGroups.Add(new NewGroup(true, strs[0], strs[1], strs[2], strs[3], "", ));
if ( > 0) beforeNewGroups.Add(new NewGroup(false, strs[4], strs[5], strs[6], strs[7], strs[13], ));
#region Tornado2
for (int i = 1; i < 7; i++)
{
KAScene.GetObject("gq" + i).SetVisible(0);
KAScene.GetObject("ga" + i).SetVisible(0);
KAScene.GetObject("gb" + i).SetVisible(0);
}
int = 1;
int = 1;
int = 1;
float = 370;
float = 374;
foreach (var b in beforeNewGroups)
{
string directory = Path.GetDirectoryName(path4_4);
string path = directory + @"\character\" + b.profilePath + "_50.png";
bool itHasImage = File.Exists(path);
int index = ;
if (!b.isQuestion) index = itHasImage ? : ;
string tag = "gq";
if (!b.isQuestion) tag = itHasImage ? "ga" : "gb";
tag = tag + index;
//Profile
if (!b.isQuestion && itHasImage) KAScene.GetObject(tag + "p").SetValue(path);
//Visible
KAScene.GetObject(tag).SetVisible(1);
KAScene.GetObject(tag + "l2").SetVisible(b.line2.Equals("") ? 0 : 1);
KAScene.GetObject(tag + "l3").SetVisible(b.line3.Equals("") ? 0 : 1);
//FrameSetting
for (int i = 0; i < 12; i++)
KAScene.GetObject(tag).SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, i, i, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
for (int i = 11; i > -1; i--)
{
int time = 0;
for (int j = 1; j <= i; j++) time += j % 2 == 0 ? timeOfWait : timeOfChange;
KAScene.GetObject(tag).SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, i, time, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
}
//Position
float posY = b.isQuestion ? : ;
posY -= (51 * b.yPos);
float lastPos = 0;
for (int i = 0; i < 12; i++)
{
if ((i + 1) / 2 <= ) lastPos = posY + (((i + 1) / 2) * 51);
KAScene.GetObject(tag).SetPositionKey(i, 0, lastPos, 0, eKVectorType.VECTOR_TYPE_Y);
}
//TextValue
KAScene.GetObject(tag + "w").SetValue(b.id);
KAScene.GetObject(tag + "l1t1").SetValue(b.line1);
KAScene.GetObject(tag + "l1t2").SetValue(b.line1);
KAScene.GetObject(tag + "l1t3").SetValue(b.line1);
KAScene.GetObject(tag + "l2t").SetValue(b.line2);
KAScene.GetObject(tag + "l3t").SetValue(b.line3);
KAScene.GetObject(tag + "l1t2").SetVisible(0);
KAScene.GetObject(tag + "l1t3").SetVisible(0);
//Color
KAScene.GetObject(tag + "w").SetStyleColor(getColor(b.isQuestion ? lbl_color_1 : lbl_color_3));
for (int i = 1; i < 4; i++)
{
if (i == 1)
KAScene.GetObject(tag + "l" + i + "t1").SetStyleColor(getColor(b.isQuestion ? lbl_color_2 : lbl_color_4));
else
KAScene.GetObject(tag + "l" + i + "t").SetStyleColor(getColor(b.isQuestion ? lbl_color_2 : lbl_color_4));
KAScene.GetObject(tag + "l" + i).SetStyleColor(getColor(b.isQuestion ? lbl_color_5 : lbl_color_6));
}
if (b.isQuestion) ++;
else
{
if (itHasImage) ++;
else ++;
}
}
#endregion
//송출라인만큼 올려서 화면에 표출할 필요가 없으면 제거한다
foreach (var v in beforeNewGroups) v.setYPos();
beforeNewGroups = beforeNewGroups.FindAll(x => x.yPos > -2);
timeOfBefore = * (timeOfWait + timeOfChange);
}
KAScene.SetChangeOut(eKChangeOutType.CHANGE_OUT_TYPE_CHANGE_OUT);
//Prepare
KAScenePlayer.Prepare(Layer4, KAScene);
//Play
KAScenePlayer.Play(Layer4);
//시간 재계산 버그 해결을 위한 추가
timer2.Stop();
timer2.Interval = (timeOfBefore + timeOfClear) * 34;
timer2.Start();
}
//자동 컷 아웃을 위한 타이머
private void timer3_Tick(object sender, EventArgs e)
{
if (!isDisplay4)
{
if (timer3.Enabled)
timer3.Stop();
return;
}
sendURL(getURL() + channel + "/자막상황/입력?채팅=N");
}
private void pic_logo_Click(object sender, EventArgs e)
{
return;
string path = @"E:\김의연\신세계TV쇼핑\디자인\라이브톡\하단톡.t2s";
KAScene = KAEngine.LoadScene(path, "채팅" + orderDisp4Index);
KAObject KAObject;
/*
KAObject = KAScene.GetObject("name1");
KAObject.SetKeyFrame(eKObjectAttribute.ATTR_POSITION_Y, i, i, eKKeyFrameType.KEY_FRAME_TYPE_ABSOLUTE);
KAObject.SetPositionKey(0, 0, -70f, 0, eKVectorType.VECTOR_TYPE_Y);
KAObject.SetStyleColor(getColor(lbl_color_1));
KAObject.SetValue(strs[0]);
*/
KAScene.SetChangeOut(eKChangeOutType.CHANGE_OUT_TYPE_CHANGE_OUT);
//Prepare
KAScenePlayer.Prepare(Layer4, KAScene);
KAScenePlayer.Play(Layer4);
}
public Bitmap cropAtRect(Bitmap orgImg, Rectangle sRect)
{
Rectangle destRect = new Rectangle(Point.Empty, sRect.Size);
var cropImage = new Bitmap(destRect.Width, destRect.Height);
using (var graphics = Graphics.FromImage(cropImage))
{
graphics.DrawImage(orgImg, destRect, sRect, GraphicsUnit.Pixel);
}
return cropImage;
}
//모든 배열을 검사해서 True, False 로 반환한다.
bool isNullArray(string[] bufArray)
{
bool returnValue = true;
foreach (var v in bufArray) if (!v.Equals("")) returnValue = false;
return returnValue;
}
private void lbl_color_Click(object sender, EventArgs e)
{
Label label = (Label)sender;
colorDialog1.Color = label.BackColor;
colorDialog1.FullOpen = true;
if (colorDialog1.ShowDialog() == DialogResult.OK)
{
Color color = colorDialog1.Color;
label.BackColor = color;
RegistryKey key = Registry.CurrentUser.CreateSubKey(subKey);
key.SetValue("Color" + label.Name.Last() + "R", color.R);
key.SetValue("Color" + label.Name.Last() + "G", color.G);
key.SetValue("Color" + label.Name.Last() + "B", color.B);
key.Close();
}
}
struct Emoji
{
public Emoji(bool _isQ, int _line, int _gapOfX, string _v)
{
isQuestion = _isQ;
line = _line;
gapOfX = _gapOfX;
value = _v;
}
public bool isQuestion;
public int line;
public int gapOfX;
public string value;
}
struct LargeIcon
{
public LargeIcon(bool _isQuestion, bool _hasContents, bool _isCharecter ,string _value)
{
isQuestion = _isQuestion;
hasContents = _hasContents;
isCharecter = _isCharecter;
value = _value;
}
public bool isQuestion;
public bool hasContents;
public bool isCharecter;
public string value;
}
struct PhotoIcon
{
public PhotoIcon(bool _isQuestion, bool _hasContents, bool _isCharecter, string _value)
{
isQuestion = _isQuestion;
hasContents = _hasContents;
isCharecter = _isCharecter;
value = _value;
}
public bool isQuestion;
public bool hasContents;
public bool isCharecter;
public string value;
}
private void txt답변값_TextChanged(object sender, EventArgs e)
{
RegistryKey key = Registry.CurrentUser.CreateSubKey(subKey);
key.SetValue("답변높이", txt답변값.Text);
}
int OldFileChecker = 0;
private string getPhotoIconPath(string value)
{
string[] strs = value.Split(':');
string pos = strs[0];
string size = strs[1];
string fileName = strs[2];
string savePath = Environment.CurrentDirectory + @"\image\";
if (!Directory.Exists(savePath)) Directory.CreateDirectory(savePath);
try
{
//이미지 다운로드
DownloadRemoteImageFile(getURL() + "파일다운로드/", savePath, fileName);
}
catch (Exception ex) { }
//이미지 크롭
ImageCrop(savePath, fileName, pos, size);
OldFileChecker++;
if (OldFileChecker > 100)
{
DirectoryInfo directory = new DirectoryInfo(savePath);
DateTime now = DateTime.Now;
foreach (FileInfo file in directory.GetFiles())
{
TimeSpan timeDiff = now - file.LastWriteTime;
if (timeDiff.TotalHours > 170) file.Delete();
}
OldFileChecker = 0;
}
return savePath + pos + size + fileName;
}
private void ImageCrop(string path, string fileName, string pos, string size)
{
if (fileName.ToUpper().Contains(".VRV"))
{
if (!File.Exists(path + pos + size + fileName)) File.Move(path + "원본" + fileName, path + pos + size + fileName);
return;
}
Bitmap sourceImage = new Bitmap(path + "원본" + fileName);
int x = sourceImage.Width;
int y = sourceImage.Height;
int width = 315;
int height = 0;
int type2 = 0;
//세로 정사각 가로 설정
if (size.Contains("세로")) height = 370;
else if (size.Contains("가로")) height = 220;
else height = 315;
//상중하 설정
if (pos.Contains("상")) type2 = 0;
else if (pos.Contains("중")) type2 = 1;
else type2 = 2;
int reWidth; int reHeight;
int startX = 0; int startY = 0;
if ((double)x / width > (double)y / height) //y축이 가득참
{
//세로를 315로 변경
reHeight = height;
reWidth = height * x / y;
if (type2 == 0) startX = 0;
else if (type2 == 1) startX = (reWidth - width) / 2;
else if (type2 == 2) startX = reWidth - width;
}
else //x축이 가득참
{
reWidth = width;
reHeight = width * y / x;
if (type2 == 0) startY = 0;
else if (type2 == 1) startY = (reHeight - height) / 2;
else if (type2 == 2) startY = reHeight - height;
}
Size resize = new Size(reWidth, reHeight);
Size saveSize = new Size(width, height);
Bitmap resizeImage = new Bitmap(sourceImage, resize);
Rectangle rect = new Rectangle(startX, startY, width, height);
Bitmap cropBitmap = cropAtRect(resizeImage, rect);
cropBitmap.Save(path + pos + size + fileName);
}
private void DownloadRemoteImageFile(string uri, string savePath, string fileName)
{
using (WebClient client = new WebClient())
{
client.DownloadFile(new Uri(uri + fileName), savePath + "원본" + fileName);
}
}
private void btnSaveOptions_Click(object sender, EventArgs e)
{
saveFileDialog1.Filter = "Json file (*.json) | *.json";
//saveFileDialog1.RestoreDirectory = true;
if (saveFileDialog1.ShowDialog() == DialogResult.OK)
{
JObject json = new JObject();
json.Add("path1", path1);
json.Add("path2", path2);
json.Add("path3_1", path3_1);
json.Add("path3_2", path3_2);
json.Add("path3_3", path3_3);
json.Add("path3_4", path3_4);
json.Add("path3_5", path3_5);
json.Add("path3_6", path3_6);
json.Add("path3_7", path3_7);
json.Add("path3_8", path3_8);
json.Add("path3_9", path3_9);
json.Add("path3_10", path3_10);
json.Add("path3_11", path3_11);
json.Add("path3_12", path3_12);
json.Add("path3_13", path3_13);
json.Add("path3_14", path3_14);
json.Add("path3_15", path3_15);
json.Add("path3_16", path3_16);
json.Add("path3_17", path3_17);
json.Add("path3_18", path3_18);
json.Add("path3_19", path3_19);
json.Add("path3_20", path3_20);
json.Add("path4", path4);
json.Add("path4_0", path4_0);
json.Add("path4_1", path4_1);
json.Add("path4_2", path4_2);
json.Add("path4_3", path4_3);
json.Add("path4_4", path4_4);
json.Add("path4_5", path4_5);
json.Add("path5", path5);
json.Add("path6", path6);
json.Add("path7", path7);
json.Add("path8", path8);
json.Add("path9", path9);
json.Add("layer1", Layer1);
json.Add("layer2", Layer2);
json.Add("layer3", Layer3);
json.Add("layer4", Layer4);
json.Add("layer5", Layer5);
json.Add("layer6", Layer6);
json.Add("layer7", Layer7);
json.Add("layer8", Layer8);
json.Add("layer9", Layer9);
json.Add("layer10", Layer10);
json.Add("layer11", Layer11);
json.Add("layer12", Layer12);
json.Add("layer13", Layer13);
json.Add("layer14", Layer14);
json.Add("layer15", Layer15);
json.Add("fadeOutTime", fadeOutTime);
json.Add("DisplayTerm", cmbDisplayTerm.SelectedIndex);
json.Add("channel", toggleChannel.IsOn);
json.Add("dbIP", dbIP);
json.Add("Color1", lbl_color_1.BackColor.ToArgb());
json.Add("Color2", lbl_color_2.BackColor.ToArgb());
json.Add("Color3", lbl_color_3.BackColor.ToArgb());
json.Add("Color4", lbl_color_4.BackColor.ToArgb());
json.Add("Color5", lbl_color_5.BackColor.ToArgb());
json.Add("Color6", lbl_color_6.BackColor.ToArgb());
File.WriteAllText(saveFileDialog1.FileName, json.ToString());
MessageBox.Show("저장완료");
}
}
private void btnLoadOptions_Click(object sender, EventArgs e)
{
openFileDialog1.Filter = "Json file (*.json) | *.json";
openFileDialog1.Multiselect = false;
//openFileDialog1.RestoreDirectory = true;
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
using (StreamReader file = new StreamReader(openFileDialog1.FileName))
{
using (JsonTextReader reader = new JsonTextReader(file))
{
JObject json = (JObject)JToken.ReadFrom(reader);
if (json["path1"] != null) path1 = json["path1"].ToString();
if (json["path2"] != null) path2 = json["path2"].ToString();
if (json["path3_1"] != null) path3_1 = json["path3_1"].ToString();
if (json["path3_2"] != null) path3_2 = json["path3_2"].ToString();
if (json["path3_3"] != null) path3_3 = json["path3_3"].ToString();
if (json["path3_4"] != null) path3_4 = json["path3_4"].ToString();
if (json["path3_5"] != null) path3_5 = json["path3_5"].ToString();
if (json["path3_6"] != null) path3_6 = json["path3_6"].ToString();
if (json["path3_7"] != null) path3_7 = json["path3_7"].ToString();
if (json["path3_8"] != null) path3_8 = json["path3_8"].ToString();
if (json["path3_9"] != null) path3_9 = json["path3_9"].ToString();
if (json["path3_10"] != null) path3_10 = json["path3_10"].ToString();
if (json["path3_11"] != null) path3_11 = json["path3_11"].ToString();
if (json["path3_12"] != null) path3_12 = json["path3_12"].ToString();
if (json["path3_13"] != null) path3_13 = json["path3_13"].ToString();
if (json["path3_14"] != null) path3_14 = json["path3_14"].ToString();
if (json["path3_15"] != null) path3_15 = json["path3_15"].ToString();
if (json["path3_16"] != null) path3_16 = json["path3_16"].ToString();
if (json["path3_17"] != null) path3_17 = json["path3_17"].ToString();
if (json["path3_18"] != null) path3_18 = json["path3_18"].ToString();
if (json["path3_19"] != null) path3_19 = json["path3_19"].ToString();
if (json["path3_20"] != null) path3_20 = json["path3_20"].ToString();
if (json["path4"] != null) path4 = json["path4"].ToString();
if (json["path4_0"] != null) path4_0 = json["path4_0"].ToString();
if (json["path4_1"] != null) path4_1 = json["path4_1"].ToString();
if (json["path4_2"] != null) path4_2 = json["path4_2"].ToString();
if (json["path4_3"] != null) path4_3 = json["path4_3"].ToString();
if (json["path4_4"] != null) path4_4 = json["path4_4"].ToString();
if (json["path4_5"] != null) path4_5 = json["path4_5"].ToString();
if (json["path5"] != null) path5 = json["path5"].ToString();
if (json["path6"] != null) path6 = json["path6"].ToString();
if (json["path7"] != null) path7 = json["path7"].ToString();
if (json["path8"] != null) path8 = json["path8"].ToString();
if (json["path9"] != null) path9 = json["path9"].ToString();
if (json["layer1"] != null) Layer1 = Convert.ToInt32(json["layer1"]);
if (json["layer2"] != null) Layer2 = Convert.ToInt32(json["layer2"]);
if (json["layer3"] != null) Layer3 = Convert.ToInt32(json["layer3"]);
if (json["layer4"] != null) Layer4 = Convert.ToInt32(json["layer4"]);
if (json["layer5"] != null) Layer5 = Convert.ToInt32(json["layer5"]);
if (json["layer6"] != null) Layer6 = Convert.ToInt32(json["layer6"]);
if (json["layer7"] != null) Layer7 = Convert.ToInt32(json["layer7"]);
if (json["layer8"] != null) Layer8 = Convert.ToInt32(json["layer8"]);
if (json["layer9"] != null) Layer9 = Convert.ToInt32(json["layer9"]);
if (json["layer10"] != null) Layer10 = Convert.ToInt32(json["layer10"]);
if (json["layer11"] != null) Layer11 = Convert.ToInt32(json["layer11"]);
if (json["layer12"] != null) Layer12 = Convert.ToInt32(json["layer12"]);
if (json["layer13"] != null) Layer13 = Convert.ToInt32(json["layer13"]);
if (json["layer14"] != null) Layer14 = Convert.ToInt32(json["layer14"]);
if (json["layer15"] != null) Layer15 = Convert.ToInt32(json["layer15"]);
if (json["fadeOutTime"] != null) fadeOutTime = Convert.ToInt32(json["fadeOutTime"]);
if (json["DisplayTerm"] != null) cmbDisplayTerm.SelectedIndex = Convert.ToInt32(json["DisplayTerm"]);
if (json["channel"] != null) toggleChannel.IsOn = Convert.ToBoolean(json["channel"]);
if (json["dbIP"] != null) dbIP = json["dbIP"].ToString();
if (json["Color1"] != null) lbl_color_1.BackColor = Color.FromArgb(Convert.ToInt32(json["Color1"]));
if (json["Color2"] != null) lbl_color_2.BackColor = Color.FromArgb(Convert.ToInt32(json["Color2"]));
if (json["Color3"] != null) lbl_color_3.BackColor = Color.FromArgb(Convert.ToInt32(json["Color3"]));
if (json["Color4"] != null) lbl_color_4.BackColor = Color.FromArgb(Convert.ToInt32(json["Color4"]));
if (json["Color5"] != null) lbl_color_5.BackColor = Color.FromArgb(Convert.ToInt32(json["Color5"]));
if (json["Color6"] != null) lbl_color_6.BackColor = Color.FromArgb(Convert.ToInt32(json["Color6"]));
/*
path1 = json["path1"].ToString();
path2 = json["path2"].ToString();
path3_1 = json["path3_1"].ToString();
path3_2 = json["path3_2"].ToString();
path3_3 = json["path3_3"].ToString();
path3_4 = json["path3_4"].ToString();
path3_5 = json["path3_5"].ToString();
path3_6 = json["path3_6"].ToString();
path3_7 = json["path3_7"].ToString();
path3_8 = json["path3_8"].ToString();
path3_9 = json["path3_9"].ToString();
path3_10 = json["path3_10"].ToString();
path3_11 = json["path3_11"].ToString();
path3_12 = json["path3_12"].ToString();
path3_13 = json["path3_13"].ToString();
path3_14 = json["path3_14"].ToString();
path3_15 = json["path3_15"].ToString();
path3_16 = json["path3_16"].ToString();
path3_17 = json["path3_17"].ToString();
path3_18 = json["path3_18"].ToString();
path3_19 = json["path3_19"].ToString();
if (json["path3_20"] != null) path3_20 = json["path3_20"].ToString();
path4 = json["path4"].ToString();
path4_0 = json["path4_0"].ToString();
path4_1 = json["path4_1"].ToString();
path4_2 = json["path4_2"].ToString();
path4_3 = json["path4_3"].ToString();
path4_4 = json["path4_4"].ToString();
path4_5 = json["path4_5"].ToString();
path5 = json["path5"].ToString();
path6 = json["path6"].ToString();
path7 = json["path7"].ToString();
path8 = json["path8"].ToString();
path9 = json["path9"].ToString();
Layer1 = Convert.ToInt32(json["layer1"]);
Layer2 = Convert.ToInt32(json["layer2"]);
Layer3 = Convert.ToInt32(json["layer3"]);
Layer4 = Convert.ToInt32(json["layer4"]);
Layer5 = Convert.ToInt32(json["layer5"]);
Layer6 = Convert.ToInt32(json["layer6"]);
Layer7 = Convert.ToInt32(json["layer7"]);
Layer8 = Convert.ToInt32(json["layer8"]);
Layer9 = Convert.ToInt32(json["layer9"]);
Layer10 = Convert.ToInt32(json["layer10"]);
Layer11 = Convert.ToInt32(json["layer11"]);
Layer12 = Convert.ToInt32(json["layer12"]);
Layer13 = Convert.ToInt32(json["layer13"]);
fadeOutTime = Convert.ToInt32(json["fadeOutTime"]);
cmbDisplayTerm.SelectedIndex = Convert.ToInt32(json["DisplayTerm"]);
toggleChannel.IsOn = Convert.ToBoolean(json["channel"]);
dbIP = json["dbIP"].ToString();
lbl_color_1.BackColor = Color.FromArgb( Convert.ToInt32(json["Color1"]));
lbl_color_2.BackColor = Color.FromArgb(Convert.ToInt32(json["Color2"]));
lbl_color_3.BackColor = Color.FromArgb(Convert.ToInt32(json["Color3"]));
lbl_color_4.BackColor = Color.FromArgb(Convert.ToInt32(json["Color4"]));
lbl_color_5.BackColor = Color.FromArgb(Convert.ToInt32(json["Color5"]));
lbl_color_6.BackColor = Color.FromArgb(Convert.ToInt32(json["Color6"]));
*/
//해당 Control 값들 변경
txtDisplay1Path.Text = path1;
txtDisplay2Path.Text = path2;
if (cmbPushType.SelectedIndex == 0)
txtDisplay3Path.Text = path3_1;
else if (cmbPushType.SelectedIndex == 1)
txtDisplay3Path.Text = path3_2;
else if (cmbPushType.SelectedIndex == 2)
txtDisplay3Path.Text = path3_3;
else if (cmbPushType.SelectedIndex == 3)
txtDisplay3Path.Text = path3_4;
else if (cmbPushType.SelectedIndex == 4)
txtDisplay3Path.Text = path3_5;
else if (cmbPushType.SelectedIndex == 5)
txtDisplay3Path.Text = path3_6;
else if (cmbPushType.SelectedIndex == 6)
txtDisplay3Path.Text = path3_7;
else if (cmbPushType.SelectedIndex == 7)
txtDisplay3Path.Text = path3_8;
else if (cmbPushType.SelectedIndex == 8)
txtDisplay3Path.Text = path3_9;
else if (cmbPushType.SelectedIndex == 9)
txtDisplay3Path.Text = path3_10;
else if (cmbPushType.SelectedIndex == 10)
txtDisplay3Path.Text = path3_11;
else if (cmbPushType.SelectedIndex == 11)
txtDisplay3Path.Text = path3_12;
else if (cmbPushType.SelectedIndex == 12)
txtDisplay3Path.Text = path3_13;
else if (cmbPushType.SelectedIndex == 13)
txtDisplay3Path.Text = path3_14;
else if (cmbPushType.SelectedIndex == 14)
txtDisplay3Path.Text = path3_15;
else if (cmbPushType.SelectedIndex == 15)
txtDisplay3Path.Text = path3_16;
else if (cmbPushType.SelectedIndex == 16)
txtDisplay3Path.Text = path3_17;
else if (cmbPushType.SelectedIndex == 17)
txtDisplay3Path.Text = path3_18;
else if (cmbPushType.SelectedIndex == 18)
txtDisplay3Path.Text = path3_19;
else if (cmbPushType.SelectedIndex == 19)
txtDisplay3Path.Text = path3_20;
txtDisplay4Path.Text = path4;
txtDisplay4_0Path.Text = path4_0;
txtDisplay4_1Path.Text = path4_1;
txtDisplay4_2Path.Text = path4_2;
txtDisplay4_3Path.Text = path4_3;
txtDisplay4_4Path.Text = path4_4;
txtDisplay4_5Path.Text = path4_5;
txtDisplay5Path.Text = path5;
txtDisplay6Path.Text = path6;
txtDisplay7Path.Text = path7;
txtDisplay8Path.Text = path8;
txtDisplay9Path.Text = path9;
txtDisplay1Layer.Text = Layer1.ToString();
txtDisplay2Layer.Text = Layer2.ToString();
txtDisplay3Layer.Text = Layer3.ToString();
txtDisplay4Layer.Text = Layer4.ToString();
txtDisplay5Layer.Text = Layer5.ToString();
txtDisplay6Layer.Text = Layer6.ToString();
txtDisplay7Layer.Text = Layer7.ToString();
txtDisplay8Layer.Text = Layer8.ToString();
txtDisplay9Layer.Text = Layer9.ToString();
txtDisplay10Layer.Text = Layer10.ToString();
txtDisplay11Layer.Text = Layer11.ToString();
txtDisplay12Layer.Text = Layer12.ToString();
txtDisplay13Layer.Text = Layer13.ToString();
txtDisplay14Layer.Text = Layer14.ToString();
txtDisplay15Layer.Text = Layer15.ToString();
txtIP.Text = dbIP;
}
}
}
}
private void button2_Click(object sender, EventArgs e)
{
try
{
frameVRV = Convert.ToInt32(txtFrameVRV.Text);
frameTAG = Convert.ToInt32(txtFrameTAG.Text);
RegistryKey key = Registry.CurrentUser.CreateSubKey(subKey);
key.SetValue("frameVRV", frameVRV);
key.SetValue("frameTAG", frameTAG);
}
catch(Exception ex)
{
MessageBox.Show("저장실패..");
}
}
int frameVRV = 52;
int frameTAG = 149;
private void simpleButton2_Click(object sender, EventArgs e)
{
if (label_connection.Text == "CONNECTED")
{
eKSceneEffectType etype = eKSceneEffectType.SCENE_CHANGE_EFFECT_FADE;
KAScene = KAEngine.LoadScene(CurrentDirectory + @"\Degisn\Clear.t2s", "Clear");
KAScene.SetSceneEffectType(1, etype, fadeOutTime);
KAScenePlayer.Prepare(Layer11, KAScene);
KAScenePlayer.Play(Layer11);
timer4.Stop();
}
}
private void simpleButton9_Click(object sender, EventArgs e)
{
if (label_connection.Text == "CONNECTED")
{
eKSceneEffectType etype = eKSceneEffectType.SCENE_CHANGE_EFFECT_FADE;
KAScene = KAEngine.LoadScene(CurrentDirectory + @"\Degisn\Clear.t2s", "Clear");
KAScene.SetSceneEffectType(1, etype, fadeOutTime);
KAScenePlayer.Prepare(Layer12, KAScene);
KAScenePlayer.Play(Layer12);
timer5.Stop();
}
}
private void simpleButton10_Click(object sender, EventArgs e)
{
if (label_connection.Text == "CONNECTED")
{
eKSceneEffectType etype = eKSceneEffectType.SCENE_CHANGE_EFFECT_FADE;
KAScene = KAEngine.LoadScene(CurrentDirectory + @"\Degisn\Clear.t2s", "Clear");
KAScene.SetSceneEffectType(1, etype, fadeOutTime);
KAScenePlayer.Prepare(Layer13, KAScene);
KAScenePlayer.Play(Layer13);
. = false;
}
}
private void simpleButton11_Click(object sender, EventArgs e)
{
if (label_connection.Text == "CONNECTED")
{
eKSceneEffectType etype = eKSceneEffectType.SCENE_CHANGE_EFFECT_FADE;
KAScene = KAEngine.LoadScene(CurrentDirectory + @"\Degisn\Clear.t2s", "Clear");
KAScene.SetSceneEffectType(1, etype, fadeOutTime);
KAScenePlayer.Prepare(Layer14, KAScene);
KAScenePlayer.Play(Layer14);
. = false;
timer6.Stop();
}
}
private void simpleButton12_Click(object sender, EventArgs e)
{
if (label_connection.Text == "CONNECTED")
{
eKSceneEffectType etype = eKSceneEffectType.SCENE_CHANGE_EFFECT_FADE;
KAScene = KAEngine.LoadScene(CurrentDirectory + @"\Degisn\Clear.t2s", "Clear");
KAScene.SetSceneEffectType(1, etype, fadeOutTime);
KAScenePlayer.Prepare(Layer15, KAScene);
KAScenePlayer.Play(Layer15);
.VVIP송출 = false;
.VVIP전면송출 = false;
timer7.Stop();
timer8.Stop();
}
}
private void MainForm_Shown(object sender, EventArgs e)
{
comboBox4.SelectedIndex = 0;
comboBox5.SelectedIndex = 0;
comboBox6.SelectedIndex = 0;
}
private void timer8_Tick(object sender, EventArgs e)
{
forVVIP전면아웃--;
if (forVVIP전면아웃 < 0)
{
eKSceneEffectType etype = eKSceneEffectType.SCENE_CHANGE_EFFECT_FADE;
KAScene = KAEngine.LoadScene(CurrentDirectory + @"\Degisn\Clear.t2s", "Clear");
KAScene.SetSceneEffectType(1, etype, fadeOutTime);
KAScenePlayer.Prepare(Layer15, KAScene);
KAScenePlayer.Play(Layer15);
.VVIP전면송출 = false;
timer8.Stop();
}
}
}
public class NewGroup
{
public NewGroup(bool _isQuestion, string _id, string _line1, string _line2, string _line3,string _profilePath, int _yPos)
{
isHaveImage = false;
isHaveIcon = false;
isHaveCIcon = false;
isHaveTag1 = false;
isHaveTag2 = false;
isHaveTag3 = false;
isHaveVrv = false;
imgName = "";
iconName = "";
vrvName = "";
tagName = "";
string checkImageIcon(string str, int lineIndex)
{
while (str.Contains("[LI:"))
{
int indexOfSI = str.IndexOf("[LI:");
int indexOfEOF = str.Substring(indexOfSI).IndexOf("]") + indexOfSI;
iconName = str.Substring(indexOfSI + 4, indexOfEOF - indexOfSI - 4);
isHaveIcon = true;
str = str.Remove(indexOfSI, indexOfEOF - indexOfSI + 1);
}
while (str.Contains("[CI:"))
{
int indexOfSI = str.IndexOf("[CI:");
int indexOfEOF = str.Substring(indexOfSI).IndexOf("]") + indexOfSI;
iconName = str.Substring(indexOfSI + 4, indexOfEOF - indexOfSI - 4);
isHaveIcon = true;
isHaveCIcon = true;
str = str.Remove(indexOfSI, indexOfEOF - indexOfSI + 1);
}
while (str.Contains("[PH:"))
{
int indexOfSI = str.IndexOf("[PH:");
int indexOfEOF = str.Substring(indexOfSI).IndexOf("]") + indexOfSI;
imgName = str.Substring(indexOfSI + 4, indexOfEOF - indexOfSI - 4);
isHaveImage = true;
str = str.Remove(indexOfSI, indexOfEOF - indexOfSI + 1);
}
while (str.Contains("[VR:"))
{
int indexOfSI = str.IndexOf("[VR:");
int indexOfEOF = str.Substring(indexOfSI).IndexOf("]") + indexOfSI;
vrvName = str.Substring(indexOfSI + 4, indexOfEOF - indexOfSI - 4);
isHaveVrv = true;
str = str.Remove(indexOfSI, indexOfEOF - indexOfSI + 1);
}
while (str.Contains("[TG:"))
{
int indexOfSI = str.IndexOf("[TG:");
int indexOfEOF = str.Substring(indexOfSI).IndexOf("]") + indexOfSI;
tagName = str.Substring(indexOfSI + 4, indexOfEOF - indexOfSI - 4);
if (lineIndex == 1) isHaveTag1 = true;
if (lineIndex == 2) isHaveTag2 = true;
if (lineIndex == 3) isHaveTag3 = true;
str = str.Remove(indexOfSI, indexOfEOF - indexOfSI + 1);
}
return str;
}
isQuestion = _isQuestion;
id = _id;
line1 = checkImageIcon(_line1, 1);
line2 = checkImageIcon(_line2, 2);
line3 = checkImageIcon(_line3, 3);
profilePath = _profilePath;
yPos = _yPos;
}
public bool isQuestion;
public int lines()
{
int returnValue = 0;
if (!line1.Equals("")) returnValue++;
if (!line2.Equals("")) returnValue++;
if (!line3.Equals("")) returnValue++;
return returnValue;
}
public void setYPos(int move) => yPos -= move;
public string profilePath;
public string id;
public string line1;
public string line2;
public string line3;
public int yPos;
public bool isHaveImage;
public bool isHaveIcon;
public bool isHaveCIcon;
public bool isHaveTag1;
public bool isHaveTag2;
public bool isHaveTag3;
public bool isHaveVrv;
public string imgName;
public string iconName;
public string tagName;
public string vrvName;
}
}