using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class screensize
{
 [RuntimeInitializeOnLoadMethod]
 static void OnRuntimeMethodLoad()
 {
  Screen.SetResolution(1280,720,false);
 }
}
public class b_moon : MonoBehaviour
{
 int flg=-1;int count=0;int wait=0;int spacewait=0;int level=7;int starcount=25;int score=0;int outflg=0;
 int ally;int backy;int pxh;int laststar=-1;int chabans;
 int px;int py;int pxx;int pyy;
 int[] snum=new int[1000];int[] slv=new int[1000];int[] st=new int[1000];
 int[] sx=new int[1000];int[] sy=new int[1000];int[] sxx=new int[1000];int[] syy=new int[1000];int[] sct=new int[7];
 int[] hitx=new int[4];int[] hity=new int[4];
 string[] datas=new string[700];
 int i;int j;int k;int z;int zx;int zy;int r;int ee;int a;int aa;int aaa;int x;int y;int r1;int r2;int ax;int ay;
 int xx;int yy;int ii;int jj;int kk;int a1;int a2;int a3;int a4;
 int e;int e1;int moves;int mousex;int mousey;
 float pxf;float pxxf;float pyf;float pyyf;
 float stimef;float ntimef;float stime2f;float ntime2f;float stime3f;float ntime3f;float stime4f;float ntime4f;
 float xf;float yf;float af;float kakuf;float axf;float ayf;
 string cbdt="022021212221122212end2121121221120end";
 string c1;string c2;string c3;string c4;
 string d;string dd;string d1;string d2;string d3;string d4;
 GUIStyle style1;GUIStyle style2;GUIStyle style3;
 GameObject[] obj=new GameObject[2000];
 AudioSource bgm1;AudioSource bgm2;AudioSource bgm3;AudioSource bgm4;

 void Start()
 {
  style1=new GUIStyle();style1.fontSize=40;style1.normal.textColor=Color.red;
  style2=new GUIStyle();style2.fontSize=16;
  style3=new GUIStyle();style3.fontSize=24;style3.normal.textColor=Color.red;
  obj[0]=GameObject.Find("ng-mes"); // 0  ng-mes
  obj[1]=GameObject.Find("b-moon-back"); // 1  moving-back
  obj[2]=GameObject.Find("halfmoon"); // 2  halfmoon
  obj[3]=GameObject.Find("b-moon-outline"); // 3  outline
  for (i=1;i<=2;i++) {obj[i+3]=GameObject.Find("ufo-"+i);} // 4-5  ufo
  for (i=1;i<=2;i++) {obj[i+5]=GameObject.Find("fuki-"+i);} // 6-7  fuki
  for (i=1;i<=6;i++) {obj[i+7]=GameObject.Find("rabbit-"+i);} // 8-13  rabbit
  for (i=1;i<=2;i++) {obj[i+13]=GameObject.Find("b-moon-name-"+i);} // 14-15  name
  for (i=1;i<=7;i++) {obj[i+15]=GameObject.Find("star-"+i);} // 16-22  star-moto
  obj[23]=GameObject.Find("gameover-mes-1"); // 23  gameover-mes-blue
  obj[24]=GameObject.Find("gameover-mes-2"); // 24  gameover-mes-green
  obj[25]=GameObject.Find("gameclear-mes-1"); // 25  gameclear-mes-blue
  obj[26]=GameObject.Find("gameclear-mes-2"); // 26  gameclear-mes-green
  obj[27]=GameObject.Find("b-moon-title"); // 27  title
  obj[28]=GameObject.Find("ya-r-32x32"); // 28  ya
  for (i=1;i<=3;i++) {obj[i+28]=GameObject.Find("b-moon-sele-"+i);} // 29-31  select-mess
  obj[32]=GameObject.Find("moji-m"); // 32  moji-m
  obj[100]=GameObject.Find("b-moon-chaban-back"); // 100  chaban-back
  for (i=1;i<=34;i++) {obj[i+100]=GameObject.Find("b-moon-chaban-"+i);} // 101-134  chaban-geki
  for (i=0;i<=9;i++)
  {
   obj[i+200]=GameObject.Find("num-16a-"+i); // 200-209  nums-moto
   for (j=1;j<=4;j++) {obj[j*10+i+200]=Object.Instantiate(obj[i+200]) as GameObject;} // 210-249  nums-copy
  }
  for (i=0;i<=6;i++)
  {
   for (j=0;j<=99;j++) {obj[i*100+j+300]=Object.Instantiate(obj[i+16]) as GameObject;} // 300-999  stars-copy
  }
  for (i=0;i<=199;i++) {obj[i+1000]=Object.Instantiate(obj[16]) as GameObject;} // 1000-1199  stars-copy-plus
  alldel();
  z=100;zx=305;zy=-218;objput();z=0;zx=0;zy=0;objput();

  dd="00-375+9750+0+0=/00-325+9250+0+0=/00-375+8750+0+0=/00-325+8250+0+0=/00-375+7750+0+0=/00-325+7250+0+0=/";
  dd=dd+"00-375+6750+0+0=/00-325+6250+0+0=/00-375+5750+0+0=/00-325+5250+0+0=/00-375+4750+0+0=/00-325+4250+0+0=/";
  dd=dd+"00-375+3750+0+0=/00-325+3250+0+0=/00-375+2750+0+0=/00-325+2250+0+0=/00-375+1750+0+0=/00-325+1250+0+0=/";
  dd=dd+"00-375+0750+0+0=/00-175+0500+0+0=/00+000+7250+0+0 /00+000+2750+0+0 /";
  dd=dd+"10-150+7750+0+0=/10-150+5750+0+0=/10-150+3750+0+0=/11-150+8750+1+0=/11-150+6750+1+0=/11-150+4750+1+0=/";
  dd=dd+"20-225+8250+0+0=/20-225+4250+0+0=/20-175+2250+0+0=/21-225+5250-1+0=/21-225+3250+1+0=/22-075+6250-2+0=/";
  dd=dd+"21-225+9500+1+0=/22-075+4250-2+0=/21-225+1750-1+0=/21-225+1000-1+0=/21-075+2750+1+0=/22-075+1250-2+0=/";
  dd=dd+"20-250+9000+0+0=/20-275+8000+0+0=/20-275+7000+0+0=/20-275+6000+0+0=/20-275+5000+0+0=/20-275+4000+0+0=/";
  dd=dd+"20-275+3000+0+0=/20-275+2000+0+0=/20-275+0500+0+0=/20-025+5750+0+0=/20-025+3750+0+0=/20-025+1750+0+0=/";
  dd=dd+"30-100+9750+0+0=/30-075+9000+0+0=/30-025+8500+0+0=/30-075+7500+0+0=/30-225+6500+0+0=/30-250+5500+0+0=/";
  dd=dd+"30-025+4750+0+0=/30-275+4500+0+0=/30-100+3500+0+0=/30-125+2500+0+0=/30-125+1500+0+0=/30-100+0750+0+0=/";
  dd=dd+"32-250+7750+2+1=/32-250+3750+2+1=/33-100+8000+3+0=/33-100+2000+3+0=/";
  dd=dd+"40-150+9500+0+0=/40-175+7500+0+0=/41-125+7000+1+0=/40-100+6500+0+0=/40-125+6000+0+0=/41-100+5500+1+1=/";
  dd=dd+"40-125+5250+0+0=/40-125+4500+0+0=/41-150+4000+1+0=/40-125+3250+0+0=/40-050+2250+0+0=/40-250+1250+0+0=/";
  dd=dd+"40-125+1000+0+0=/40-075+0500+0+0=/44-150+9250+4+0=/44-150+5000+4+0=/";
  dd=dd+"50-150+9000+0+0=/50-075+8750+0+0=/50-225+8000+0+0=/50-275+6750+0+0=/51-075+6750+1+0=/50-075+4750+0+0=/";
  dd=dd+"50-100+3750+0+0=/50-025+3000+0+0=/53-275+1500+3+0=/51-300+0750+1+0=/55-200+8500+5+1=/55-225+2250+5-1=/";
  dd=dd+"62-250+9750+2+0=/60-050+9500+0+0=/60-350+9000+0+0=/60-350+8000+0+0=/60-025+7750+0+0=/61-275+7500-1+0=/";
  dd=dd+"60-350+7000+0+0=/60+025+7000+0+0=/60-275+6500+0+0=/60-350+6000+0+0=/60+000+6000+0+0 /60-025+5250+0+0=/";
  dd=dd+"60-350+5000+0+0=/60-350+4000+0+0=/60-025+4000+0+0=/60-350+3000+0+0=/61-150+3000+1+0=/60-350+2000+0+0=/";
  dd=dd+"60-200+1250+0+0=/60-350+1000+0+0=/61-175+0750+1+0=/";
  dd=dd+"56-300+6000+0+5 /56-100+6000+0+5 /56+100+6000+0+5 /56+300+6000+0+5 /";
  dd=dd+"56-300+2000+0+5 /56-100+2000+0+5 /56+100+2000+0+5 /56+300+2000+0+5 /";
  dd=dd+"66-350+5900+0+5 /66-250+5900+0+5 /66-150+5900+0+5 /66-050+5900+0+5 /";
  dd=dd+"66+050+5900+0+5 /66+150+5900+0+5 /66+250+5900+0+5 /66+350+5900+0+5 /";
  dd=dd+"66-350+1900+0+5 /66-250+1900+0+5 /66-150+1900+0+5 /66-050+1900+0+5 /";
  dd=dd+"66+050+1900+0+5 /66+150+1900+0+5 /66+250+1900+0+5 /66+350+1900+0+5 /66-050+0300+0+5=/66-050+0250+0+5=/";
  dd=dd+"end";
  datas=dd.Split('/');
  laststar=-1;
  for (i=0;i<=6;i++) {sct[i]=0;}
  for (i=0;i<700;i++)
  {
   if (datas[i]=="end") {break;}
   else
   {
    laststar=laststar+1;
    d=datas[i];
    d1=d.Substring(0,1);slv[laststar]=int.Parse(d1);
    d1=d.Substring(1,1);st[laststar]=int.Parse(d1);
    d1=d.Substring(2,1);if (d1=="-") {a=-1;} else {a=1;}
    d1=d.Substring(3,1);a1=int.Parse(d1);
    d2=d.Substring(4,1);a2=int.Parse(d2);
    d3=d.Substring(5,1);a3=int.Parse(d3);
    sx[laststar]=(a1*100+a2*10+a3)*a;
    d1=d.Substring(6,1);if (d1=="-") {a=-1;} else {a=1;}
    d1=d.Substring(7,1);a1=int.Parse(d1);
    d2=d.Substring(8,1);a2=int.Parse(d2);
    d3=d.Substring(9,1);a3=int.Parse(d3);
    d4=d.Substring(10,1);a3=int.Parse(d4);
    sy[laststar]=(a1*1000+a2*100+a3*10+a4)*a;
    d1=d.Substring(11,1);if (d1=="-") {a=-1;} else {a=1;}
    d1=d.Substring(12,1);a1=int.Parse(d1);
    sxx[laststar]=a1*a;
    d1=d.Substring(13,1);if (d1=="-") {a=-1;} else {a=1;}
    d1=d.Substring(14,1);a1=int.Parse(d1);
    syy[laststar]=a1*a;
    aa=300;if (st[laststar]==0 && sct[0]>99) {aa=1000;}
    snum[laststar]=st[laststar]*100+sct[st[laststar]]+aa;
    sct[st[laststar]]=sct[st[laststar]]+1;if (st[laststar]>0 && sct[st[laststar]]>99) {sct[st[laststar]]=99;}
    d1=d.Substring(15,1);
    if (d1=="=")
    {
     sx[laststar+1]=sx[laststar]*-1;sxx[laststar+1]=sxx[laststar]*-1;
     sy[laststar+1]=sy[laststar];syy[laststar+1]=syy[laststar];
     slv[laststar+1]=slv[laststar];st[laststar+1]=st[laststar];
     aa=300;if (st[laststar]==0 && sct[0]>99) {aa=1000;}
     snum[laststar+1]=st[laststar+1]*100+sct[st[laststar+1]]+aa;
     sct[st[laststar+1]]=sct[st[laststar+1]]+1;if (st[laststar+1]>0 && sct[st[laststar+1]]>99) {sct[st[laststar+1]]=99;}
     laststar=laststar+1;
    }
   }
  }
  hitx[0]=0;hity[0]=1;hitx[1]=-13;hity[1]=-8;hitx[2]=0;hity[2]=-8;hitx[3]=13;hity[3]=-8;
  alldel();z=0;zx=-1000;zy=0;objput();
  bgm1=obj[1].GetComponent();bgm2=obj[2].GetComponent();
  bgm3=obj[3].GetComponent();bgm4=obj[4].GetComponent();
  count=500;flg=-1;
 }

 void Update()
 {
  Vector3 mpos=Input.mousePosition;
//  xf=mpos.x;yf=mpos.y;
//  if (flg>-9) {xf=xf*640/mfx;yf=yf*360/mfy;}
// mousex=(int)xf;mousey=(int)yf;
//  c1="X="+mousex.ToString()+" Y="+mousey.ToString();
  if (flg==-1)
  {
   count=count-1;
//   if (Input.GetMouseButtonDown(0)) {count=0;}
//   if (Input.GetMouseButtonDown(1)) {count=0;}
   if (Input.GetKeyDown(KeyCode.Space)) {count=0;spacewait=2;}
//   if (Input.GetKeyDown(KeyCode.Return)) {count=0;}
   if (count<=0)
   {
    titleput();flg=0;
   }
  }
  if (flg==0)
  {
   ntime2f=Time.time;
   if (ntime2f-stime2f>=1f)
   {
    level=level+1;if (level>7) {level=0;}
    z=28;zx=-114;zy=128-level*36;objput();
    stime2f=Time.time;
   }
   if (spacewait>0) {spacewait=spacewait-1;}
   if (spacewait<=0)
   {
    if (Input.GetKeyDown(KeyCode.Space))
    {
     if (level<=6) {gamestart();}
     else
     {
      alldel();
      z=1;zx=0;zy=0;objput();z=100;zx=0;zy=40;objput();z=101;objput();
      z=10;zx=-365;zy=48;objput();z=15;zx=-365;zy=0;objput();
      z=30;zx=0;zy=-40;objput();z=28;zx=-252;zy=-42;objput();
      stime2f=Time.time;flg=10;count=0;spacewait=2;chabans=1;
      bgmstop();bgm2.Play();stimef=Time.time;
     }
    }
   }
  }
  if (flg==1 || flg==2)
  {
// ufo-turn
   if (spacewait>0) {spacewait=spacewait-1;}
   if (spacewait<=0)
   {
    if (Input.GetKeyDown(KeyCode.Space))
    {
     obj[12].transform.rotation=Quaternion.identity;
     if (pxx>0) {pxx=-2;obj[12].transform.Rotate(0,0,30);}
     else {pxx=2;obj[12].transform.Rotate(0,0,330);}
    }
   }
   if (wait>0) {wait=wait-1;}
   else
   {
    wait=0;
    ally=ally-1;scoreput();
    if (flg==1)
    {
// back-move
     backy=backy+1;if (backy>=40) {backy=0;}
     z=1;zx=0;zy=backy;objput();
// moon-outline-move
     if (ally<=262)
     {
      z=2;zx=0;zy=-10-ally;objput();
      z=3;zx=0;zy=-33-ally;objput();
     }
     if (ally<=212) {ally=212;py=py+2;pyy=-2;flg=2;}
    }
// ufo-move
//  pxx=0;
    px=px+pxx;py=py+pyy;
    z=4;zx=px;zy=py;objput();z=6;zy=py+60;objput();z=12;zy=py+55;objput();
    outflg=0;
    if (px<-378 || px>378 || py<=-224) {outflg=1;}
// stars-move
    aa=0;
    if (starcount<=49) {aa=1;} 
    if (starcount>=100 && starcount<=149) {aa=-1;}
    for (i=0;i<=laststar;i++)
    {
     if (slv[i]<=level)
     {
      sx[i]=sx[i]+sxx[i]*aa;
      if (sx[i]>-415 && sx[i]<415 && sy[i]-ally>=-255 && sy[i]-ally<=315)
      {
       if (st[i]<6) {sy[i]=sy[i]+syy[i]*aa;} else {sy[i]=sy[i]+10;}
       z=snum[i];zx=sx[i];zy=sy[i]-ally;objput();
       for (j=0;j<=3;j++)
       {
        ax=px-sx[i]+hitx[j];ay=py-(sy[i]-ally)+hity[j];
        af=Mathf.Sqrt(ax*ax+ay*ay);
        if (af<=20f) {outflg=1;}
       }
      }
      else {z=snum[i];zx=-1000;zy=0;objput();}
     }
    }
    starcount=starcount+1;if (starcount>199) {starcount=0;}
// outflg=0;
   }
   if (outflg==0 && py>-222 && py<=-186 && px>=-60 && px<=60) {gameclear();}
   if (outflg>0) {gameover();}
  }
  if (flg==1 || flg==2 || flg==10)
  {
// bgm-replay
   ntimef=Time.time;
   if (flg==10)
   {
    if (ntimef-stimef>=16f) {bgm2.Play();stimef=Time.time;}
   }
   else
   {
    if (ntimef-stimef>=22f) {bgm1.Play();stimef=Time.time;}
   }
  }
  if (flg==8)
  {
   ntime2f=Time.time;
   if (ntime2f-stime2f>=0.5f)
   {
    stime2f=stime2f+0.5f;count=count+1;
    z=23;zx=-2000;zy=0;objput();z=24;objput();
    z=count%2+23;zx=0;zy=40;objput();
    if (count>=12) {titleput();}
   }
  }
  if (flg==9)
  {
   ntime2f=Time.time;
   if (ntime2f-stime2f>=0.5f)
   {
    stime2f=stime2f+0.5f;count=count+1;
    z=25;zx=-2000;zy=0;objput();z=26;objput();z=10;objput();z=11;objput();
    z=count%2+25;zx=0;zy=40;objput();z=count%2+10;zx=0;zy=-167;objput();
    if (count>=12)
    {
     z=29;zx=0;zy=-80;objput();
     a1=0;if (count%4>=2) {a1=1;}
     z=28;zx=a1*310-282;zy=-82;objput();
    }
   }
   if (count>=12)
   {
    if (spacewait>0) {spacewait=spacewait-1;}
    if (spacewait<=0)
    {
     if (Input.GetKeyDown(KeyCode.Space))
     {
      if (count%4>=2) {titleput();}
      else
      {
       alldel();
       z=1;zx=0;zy=0;objput();z=100;zx=0;zy=40;objput();z=121;objput();
       z=2;zx=0;zy=-222;objput();z=3;zx=0;zy=-245;objput();
       z=10;zx=-365;zy=48;objput();z=15;zx=-365;zy=0;objput();
       z=30;zx=0;zy=-40;objput();z=28;zx=-252;zy=-42;objput();
       stime2f=Time.time;flg=10;count=0;spacewait=2;chabans=21;
       bgmstop();bgm2.Play();stimef=Time.time;
      }
     }
    }
   }
  }
  if (flg==10)
  {
   ntime2f=Time.time;
   if (ntime2f-stime2f>=0.5f)
   {
    stime2f=stime2f+0.5f;count=count+1;a1=0;a2=0;a3=0;
    d1=cbdt.Substring(chabans,1);
    if (d1=="1" || d1=="2") {a1=int.Parse(d1);}
    a2=count%2;
    if (count%4>=2|| d1=="e") {a3=1;}
    for (i=8;i<=11;i++) {z=i;zx=-1000;zy=0;objput();}
    if (a1>0) {z=a1*2+a2+6;zx=-365;zy=48;objput();}
    z=28;zx=a3*280-252;zy=-42;objput();
   }
   if (spacewait>0) {spacewait=spacewait-1;}
   if (spacewait<=0)
   {
    if (Input.GetKeyDown(KeyCode.Space))
    {
     if (a3==1) {titleput();}
     else
     {
      z=chabans+100;zx=-2000;zy=0;objput();
      chabans=chabans+1;a1=0;
      d1=cbdt.Substring(chabans,1);
      if (d1=="1" || d1=="2") {a1=int.Parse(d1);}
      for (i=8;i<=15;i++) {z=i;zx=-1000;zy=0;objput();}
      if (a1>0) {z=a1*2+6;zx=-365;zy=48;objput();z=a1+13;zx=-365;zy=0;objput();}
      z=chabans+100;zx=0;zy=40;objput();z=28;zx=-252;zy=-42;objput();
      count=0;
      if (d1=="e")
      {
       z=30;zx=-2000;zy=0;objput();z=31;zx=0;zy=-40;objput();
       z=28;zx=28;zy=-42;objput();count=2;
      }
      stime2f=Time.time;spacewait=2;
     }
    }
   }
  }
  if (flg>0)
  {
//   if (Input.GetKeyDown(KeyCode.Escape)) {titleput();}
  }
 }

 void gamestart()
 {
  alldel();
  z=1;zx=0;zy=0;objput();z=4;zx=0;zy=200;objput();z=6;zx=0;zy=260;objput();
  z=32;zx=390;zy=320;objput();
  z=12;zx=0;zy=255;objput();obj[12].transform.rotation=Quaternion.identity;
  pxx=2;obj[12].transform.Rotate(0,0,330);
  ally=9999;scoreput();
  backy=0;px=0;py=200;pyy=0;starcount=25;
  flg=1;spacewait=2;
  bgmstop();bgm1.Play();stimef=Time.time;
 }

 void gameover()
 {
  z=4;zx=-1000;zy=0;objput();z=12;objput();
  z=5;zx=px;zy=py;objput();objput();z=13;zx=px-8;zy=py+62;objput();
  z=23;zx=0;zy=40;objput();
  stime2f=Time.time;count=0;flg=8;
  bgmstop();bgm3.Play();
 }

 void gameclear()
 {
  ally=0;scoreput();
  z=4;zx=-1000;zy=0;objput();z=6;objput();z=12;objput();
  z=25;zx=0;zy=40;objput();z=10;zx=0;zy=-167;objput();
  stime2f=Time.time;count=0;flg=9;spacewait=2;
  bgmstop();bgm4.Play();
 }

 void scoreput()
 {
  score=ally;
  if (score<0) {score=0;}
  if (score>9999) {score=9999;}
  for (i=200;i<=249;i++) {z=i;zx=-2000;zy=0;objput();}
  zy=320;aa=0;
  a=score/1000;if (a>0) {aa=1;z=a+200;zx=326;objput();}
  a=(score%1000)/100;if (a>0 || aa>0) {aa=1;z=a+210;zx=342;objput();}
  a=(score%100)/10;if (a>0 || aa>0) {aa=1;z=a+220;zx=358;objput();}
  a=score%10;z=a+230;zx=374;objput();
 }

 void titleput()
 {
  alldel();bgmstop();flg=0;spacewait=2;z=1;zx=0;zy=0;objput();
  z=27;zx=0;zy=0;objput();z=28;zx=-114;zy=128-level*36;objput();
  stime2f=Time.time;
  bgmstop();flg=0;spacewait=2;
 }

 void OnGUI()
 {
  GUI.Label (new Rect (300,80,100,30),c1,style1);
  GUI.Label (new Rect (300,160,100,30),c2,style2);
  GUI.Label (new Rect (300,240,100,30),c3,style1);
  GUI.Label (new Rect (300,320,100,30),c4,style3);
 }

 void objput()
 {
  Vector3 pos=obj[z].transform.position;
  pos.x=zx*0.01f;pos.y=zy*0.01f;
  obj[z].transform.position=pos;
 }

 void objput2()
 {
  Vector3 pos=obj[z].transform.position;
  pos.x=xf*0.01f;pos.y=yf*0.01f;
  obj[z].transform.position=pos;
 }

 void bgmstop()
 {
  bgm1.Stop();bgm2.Stop();bgm3.Stop();bgm4.Stop();
 }

 void alldel()
 {
  zx=-2000;zy=0;
  for (i=0;i<=32;i++) {z=i;objput();}
  for (i=100;i<=134;i++) {z=i;objput();}
  for (i=200;i<=249;i++) {z=i;objput();}
  for (i=300;i<=1199;i++) {z=i;objput();}
  z=1;zx=0;zy=0;objput();
  obj[12].transform.rotation=Quaternion.identity;
 }
}