You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

333 lines
8.6 KiB
C#

4 years ago
using System;
using System.Collections.Generic;
namespace Qoo.Ks
{
// Token: 0x02000045 RID: 69
public class KsPlayer
{
// Token: 0x1700007C RID: 124
// (get) Token: 0x06000263 RID: 611 RVA: 0x00008EC8 File Offset: 0x000070C8
// (set) Token: 0x06000264 RID: 612 RVA: 0x00008ED0 File Offset: 0x000070D0
public PLAYSTAT Status { get; private set; }
// Token: 0x1700007D RID: 125
// (get) Token: 0x06000265 RID: 613 RVA: 0x00008EDC File Offset: 0x000070DC
// (set) Token: 0x06000266 RID: 614 RVA: 0x00008EE4 File Offset: 0x000070E4
public TagData CurTag { get; private set; }
// Token: 0x1700007E RID: 126
// (get) Token: 0x06000267 RID: 615 RVA: 0x00008EF0 File Offset: 0x000070F0
// (set) Token: 0x06000268 RID: 616 RVA: 0x00008EF8 File Offset: 0x000070F8
public int CurTagNo { get; private set; }
// Token: 0x1700007F RID: 127
// (get) Token: 0x06000269 RID: 617 RVA: 0x00008F04 File Offset: 0x00007104
// (set) Token: 0x0600026A RID: 618 RVA: 0x00008F0C File Offset: 0x0000710C
public int NextTagNo { get; private set; }
// Token: 0x17000080 RID: 128
// (get) Token: 0x0600026B RID: 619 RVA: 0x00008F18 File Offset: 0x00007118
// (set) Token: 0x0600026C RID: 620 RVA: 0x00008F20 File Offset: 0x00007120
public int LastTagNo { get; private set; }
// Token: 0x17000081 RID: 129
// (get) Token: 0x0600026D RID: 621 RVA: 0x00008F2C File Offset: 0x0000712C
// (set) Token: 0x0600026E RID: 622 RVA: 0x00008F34 File Offset: 0x00007134
public int MaxTagNo { get; private set; }
// Token: 0x17000082 RID: 130
// (get) Token: 0x0600026F RID: 623 RVA: 0x00008F40 File Offset: 0x00007140
// (set) Token: 0x06000270 RID: 624 RVA: 0x00008F48 File Offset: 0x00007148
public int CurLabelNo { get; private set; }
// Token: 0x17000083 RID: 131
// (get) Token: 0x06000271 RID: 625 RVA: 0x00008F54 File Offset: 0x00007154
// (set) Token: 0x06000272 RID: 626 RVA: 0x00008F5C File Offset: 0x0000715C
public int NextLabelNo { get; private set; }
// Token: 0x17000084 RID: 132
// (get) Token: 0x06000273 RID: 627 RVA: 0x00008F68 File Offset: 0x00007168
// (set) Token: 0x06000274 RID: 628 RVA: 0x00008F70 File Offset: 0x00007170
public int TagCallCnt { get; private set; }
// Token: 0x06000275 RID: 629 RVA: 0x00008F7C File Offset: 0x0000717C
protected virtual TAG_RESULT ProcTag(TagData tag)
{
return TAG_RESULT.CONTINUE_EXIT;
}
// Token: 0x06000276 RID: 630 RVA: 0x00008F80 File Offset: 0x00007180
public bool Init()
{
this.m_Reader = null;
this.Status = PLAYSTAT.NULL;
this.CurTag = null;
this.CurTagNo = -1;
this.CurLabelNo = -1;
this.MaxTagNo = -1;
this.LastTagNo = -1;
this.NextTagNo = 0;
this.NextLabelNo = 0;
this.TagCallCnt = 0;
this.m_nExecWait = 0;
return true;
}
// Token: 0x06000277 RID: 631 RVA: 0x00008FDC File Offset: 0x000071DC
public virtual bool SetKsData(TagReader reader_)
{
this.m_Reader = reader_;
foreach (string item in this.m_Reader.NextKsList)
{
this.m_NextKsList.Add(item);
}
this.CurTag = null;
this.CurTagNo = -1;
this.CurLabelNo = -1;
this.MaxTagNo = -1;
this.LastTagNo = -1;
this.NextTagNo = 0;
this.NextLabelNo = 0;
return true;
}
// Token: 0x06000278 RID: 632 RVA: 0x00009088 File Offset: 0x00007288
public virtual bool Exec()
{
if (this.m_nExecWait > 0)
{
this.m_nExecWait--;
return true;
}
while (this.Status == PLAYSTAT.PLAY)
{
if (DispAssert.IsAssert())
{
this.PlayStop();
}
TAG_RESULT nResult = TAG_RESULT.CONTINUE_EXIT;
if (this.NextTagNo >= 0)
{
this.PeekTag();
}
if (this.CurTag != null)
{
nResult = this.ProcTag(this.CurTag);
this.TagCallCnt++;
}
if (this.RunResult(nResult))
{
break;
}
}
return true;
}
// Token: 0x06000279 RID: 633 RVA: 0x00009124 File Offset: 0x00007324
protected bool RunResult(TAG_RESULT nResult)
{
switch (nResult)
{
case TAG_RESULT.CONTINUE:
return false;
case TAG_RESULT.NEXT:
this.NextForward();
return false;
case TAG_RESULT.NEXT_EXIT:
this.NextForward();
break;
case TAG_RESULT.END:
this.Status = PLAYSTAT.END;
break;
}
return true;
}
// Token: 0x0600027A RID: 634 RVA: 0x0000917C File Offset: 0x0000737C
public virtual void PlayStart()
{
this.Status = PLAYSTAT.PLAY;
}
// Token: 0x0600027B RID: 635 RVA: 0x00009188 File Offset: 0x00007388
public virtual void PlayStop()
{
this.Status = PLAYSTAT.STOP;
}
// Token: 0x0600027C RID: 636 RVA: 0x00009194 File Offset: 0x00007394
public virtual bool IsPlayEnd()
{
return this.Status == PLAYSTAT.END;
}
// Token: 0x0600027D RID: 637 RVA: 0x000091A0 File Offset: 0x000073A0
public virtual void NextForward()
{
this.SetNext(this.CurLabelNo, this.CurTagNo + 1);
}
// Token: 0x0600027E RID: 638 RVA: 0x000091C4 File Offset: 0x000073C4
public virtual void NextBack()
{
this.SetNext(this.CurLabelNo, this.CurTagNo - 1);
}
// Token: 0x0600027F RID: 639 RVA: 0x000091E8 File Offset: 0x000073E8
public virtual void SetNext(int nLabel, int nNo)
{
if (this.m_Reader.Label.Count <= nLabel || nLabel < 0)
{
Debug.Assert(false, string.Format("ERROR:OVER LABELNO KS={0}, Label={1} LabelNum={2}", this.m_Reader.Name, nLabel, this.m_Reader.Label.Count));
}
if (nNo >= this.m_Reader.Label[nLabel].TagNum)
{
if (nLabel + 1 < this.m_Reader.Label.Count)
{
for (;;)
{
nLabel++;
if (this.m_Reader.Label[nLabel].TagNum > 0)
{
break;
}
if (nLabel + 1 >= this.m_Reader.Label.Count)
{
goto IL_C8;
}
}
nNo = 0;
IL_C8:;
}
else
{
nNo = this.m_Reader.Label[nLabel].TagNum - 1;
}
}
if (nNo < 0 && nLabel - 1 > 0)
{
do
{
nLabel--;
nNo = this.m_Reader.Label[nLabel].TagNum - 1;
}
while (nLabel - 1 >= 0 && nNo < 0);
if (nNo < 0)
{
nLabel = 0;
nNo = 0;
}
}
this.NextTagNo = nNo;
this.NextLabelNo = nLabel;
}
// Token: 0x06000280 RID: 640 RVA: 0x00009338 File Offset: 0x00007538
public void ResetCallCount(int nCnt = 0)
{
this.TagCallCnt = nCnt;
}
// Token: 0x06000281 RID: 641 RVA: 0x00009344 File Offset: 0x00007544
public int GetTagNum()
{
return this.m_Reader.Tag.Count;
}
// Token: 0x06000282 RID: 642 RVA: 0x00009358 File Offset: 0x00007558
public TagData GetTagData(int nIndex, int nLabelIndex)
{
return this.m_Reader.Tag[nIndex + this.m_Reader.Label[nLabelIndex].TagStart];
}
// Token: 0x06000283 RID: 643 RVA: 0x00009390 File Offset: 0x00007590
public string GetCurLabel()
{
return this.m_Reader.Label[this.CurLabelNo].Name;
}
// Token: 0x06000284 RID: 644 RVA: 0x000093B8 File Offset: 0x000075B8
public int GetLabelNo(string szLabel)
{
for (int i = 0; i < this.m_Reader.Label.Count; i++)
{
if (szLabel == this.m_Reader.Label[i].Name)
{
return i;
}
}
return 0;
}
// Token: 0x06000285 RID: 645 RVA: 0x0000940C File Offset: 0x0000760C
public string GetLabelName(int iLabelNo)
{
return this.m_Reader.Label[iLabelNo].Name;
}
// Token: 0x06000286 RID: 646 RVA: 0x00009424 File Offset: 0x00007624
public void SetExecWait(int nFrameTime)
{
this.m_nExecWait = nFrameTime;
}
// Token: 0x06000287 RID: 647 RVA: 0x00009430 File Offset: 0x00007630
public void PeekTag()
{
this.LastTagNo = this.CurTagNo;
this.CurTagNo = this.NextTagNo;
this.CurLabelNo = this.NextLabelNo;
this.NextTagNo = -1;
this.NextLabelNo = -1;
if (this.CurTagNo > this.MaxTagNo)
{
this.MaxTagNo = this.CurTagNo;
}
if (this.CurLabelNo < 0)
{
this.CurLabelNo = 0;
}
if (this.CurTagNo >= this.m_Reader.Label[this.CurLabelNo].TagNum)
{
this.Status = PLAYSTAT.END;
this.CurTag = null;
return;
}
if (this.CurTagNo < 0)
{
this.CurTagNo = 0;
}
this.CurTag = this.m_Reader.Tag[this.m_Reader.Label[this.CurLabelNo].TagStart + this.CurTagNo];
this.TagCallCnt = 0;
}
// Token: 0x06000288 RID: 648 RVA: 0x00009528 File Offset: 0x00007728
public List<string> GetNextKsArray()
{
return this.m_NextKsList;
}
// Token: 0x06000289 RID: 649 RVA: 0x00009530 File Offset: 0x00007730
internal void ResetNextKs()
{
this.m_NextKsList.Clear();
}
// Token: 0x0600028A RID: 650 RVA: 0x00009540 File Offset: 0x00007740
internal bool IsNextKs()
{
return this.m_NextKsList.Count > 0;
}
// Token: 0x040001E8 RID: 488
private TagReader m_Reader;
// Token: 0x040001E9 RID: 489
private List<string> m_NextKsList = new List<string>();
// Token: 0x040001EA RID: 490
private int m_nExecWait;
}
}