Ejemplo n.º 1
0
 public override void OnSyncedUpdate(Navi navi, ChipLogic c)
 {
     c.frametimer -= Time.deltaTime;
     if (c.frametimer <= 0)
     {
         c.frametimer = c.chipFR;
         if (c.chip_anim_frame < c.chip_sprite.Length - 1)               // advance to next frame if not at end
         {
             c.chip_anim_frame++;
             c.chip_renderObj.GetComponent <SpriteRenderer>().sprite = c.chip_sprite[c.chip_anim_frame];
             if (c.chip_anim_frame > 0)                    // cannon animation has 1 frame more than shoot at the front
             {
                 navi.controlledSpriteSet(c.chip_anim_frame - 1);
             }
             if (c.chip_anim_frame == 2)
             {
                 navi.shot_handler.check_bust(c.power, navi.playerNumber, c.stun, c.elem);                     // shot fired on 3rd frame
             }
         }
         else                // animation finished
         {
             c.deactivate(navi);
         }
     }
 }
Ejemplo n.º 2
0
    public override void initAnim(Navi navi, ChipLogic c)
    {
        List <Sprite> subarray = new List <Sprite>();
        int           start; // index of first frame in sheet

        switch (c.sword_size)
        {
        case 1:                 // sword (1x1)
            start = 4;
            break;

        case 2:                 // longsword (1x2)
            start = 0;
            break;

        case -1:                 // widesword (3x1)
            start = 8;
            break;

        default:                // unlisted sword size: NOT A SWORD
            start = 0;
            break;
        }
        int i = 0;

        while (i < 4)           // animation is 4 frames long
        {
            subarray.Add(effectAnim[start + i]);
            i++;
        }
        slash_eff = subarray.ToArray();         // load only corresponding cannon frames
        // prepare renderer for slash effect then deactivate until time to render
        slash_renderer = new GameObject();
        slash_renderer.AddComponent <SpriteRenderer>();
        slash_frame = 0;
        slash_renderer.GetComponent <SpriteRenderer>().sprite       = slash_eff[slash_frame];
        slash_renderer.GetComponent <SpriteRenderer>().sortingOrder = 6; //top layer, hit effect shows above auras
        if (!navi.myNavi())                                              // flip slash effect horizontally when created by opponent
        {
            slash_renderer.GetComponent <SpriteRenderer>().flipX = true;
        }
        slash_renderer.SetActive(false);

        hit = true;             // reset hit check boolean to true until active frame of attack

        // take control of navi sword animation to sync animations
        c.chip_anim_frame    = 0;
        c.frametimer         = 2 * c.chipFR;    // first frame is longer
        navi.rate_controlled = true;
        navi.swordAnim       = true;
        navi.controlledSpriteSet(0);

        //sound
        navi.GetComponent <AudioSource>().PlayOneShot(Resources.Load <AudioClip>("Audio/s_sword"));

        c.interrupt = true;             //sword attacks can be interrupted at any time
    }
Ejemplo n.º 3
0
    public override void initAnim(Navi navi, ChipLogic c)
    {
        c.chip_sprite        = new Sprite[] { effectAnim[effectAnim.Length - 1] };      //Wrecker is currently only throw object being used and is last index
        c.chip_anim_frame    = 0;
        c.frametimer         = c.chipFR;
        navi.throwAnim       = true;
        navi.rate_controlled = true;
        navi.controlledSpriteSet(c.chip_anim_frame);
        c.chip_renderObj.transform.position = navi.transform.position + (navi.throw_offset[c.chip_anim_frame] * navi.transform.localScale.x);

        this.row = navi.row;
        this.col = navi.column;

        c.interrupt = true;             // thrown attacks can be interrupted up until the point when the object is actually thrown
    }
Ejemplo n.º 4
0
 public override void OnSyncedUpdate(Navi navi, ChipLogic c)
 {
     c.frametimer -= Time.deltaTime;
     if (!hit)               // try hit
     {
         hit = navi.shot_handler.check_sword(c.power, navi.playerNumber, c.stun
                                             , System.Math.Abs(c.sword_size), (c.sword_size < 0), c.elem);
     }
     if (c.frametimer <= 0)
     {
         c.frametimer = c.chipFR;
         if (c.chip_anim_frame < navi.swordSprite.Length - 1)               // advance to next frame if not at end
         {
             c.chip_anim_frame++;
             if (c.chip_renderObj != null)                  // chip has a sword overlay to display
             {
                 c.chip_renderObj.GetComponent <SpriteRenderer>().sprite = c.chip_sprite[c.chip_anim_frame];
             }
             navi.controlledSpriteSet(c.chip_anim_frame);            // sword effects and sword anim have same number of frames
             if (slash_renderer.activeInHierarchy)                   // animate slash effect when active
             {
                 if (slash_frame < slash_eff.Length - 1)
                 {
                     slash_frame++;
                     slash_renderer.GetComponent <SpriteRenderer>().sprite = slash_eff[slash_frame];
                 }
                 else
                 {
                     slash_renderer.SetActive(false);                                // deactivate when animation finishes
                 }
             }
             if (c.chip_anim_frame == 2)             // attack takes place on 3rd frame
             {
                 hit = false;                        // flag hit as false to start checking for hits
                 // place slash effect 1 space in front of navi
                 int target_space = (navi.myNavi()) ? navi.field_space + 1 : navi.field_space - 1;
                 slash_renderer.transform.position = navi.field.spaces[target_space].transform.position;
                 slash_renderer.SetActive(true);
             }
         }
         else                // animation finished
         {
             c.deactivate(navi);
         }
     }
 }
Ejemplo n.º 5
0
    public override void initAnim(Navi navi, ChipLogic c)
    {
        List <Sprite> subarray = new List <Sprite>();
        int           start; // index of first frame in sheet

        switch (c.ID)
        {
        case 2:                 // HiCannon
            start = 6;
            break;

        case 3:                 // MCannon
            start = 12;
            break;

        default:                // Cannon or ID not listed, so default to Cannon
            start = 0;
            break;
        }
        int i = 0;

        while (i < 6)           // animation is 6 frames long
        {
            subarray.Add(effectAnim[start + i]);
            i++;
        }
        c.chip_sprite = subarray.ToArray();                        // load only corresponding cannon frames
        c.chip_renderObj.transform.position += navi.buster_offset; // offset sprite to match navi
        c.chip_anim_frame = 0;
        c.chip_renderObj.GetComponent <SpriteRenderer>().sprite       = c.chip_sprite[c.chip_anim_frame];
        c.chip_renderObj.GetComponent <SpriteRenderer>().sortingOrder = 2;        //sorted just above navi
        c.frametimer = c.chipFR;

        // take control of navi shoot animation to sync animations
        navi.rate_controlled = true;
        navi.shootAnim       = true;
        navi.controlledSpriteSet(0);

        //audio
        navi.GetComponent <AudioSource>().PlayOneShot(Resources.Load <AudioClip>("Audio/Cannon HQ"));
        // audio clip needs silenced trimmed from start

        c.interrupt = true;             // cannons can be interrupted at any time
    }
Ejemplo n.º 6
0
    public override void OnSyncedUpdate(Navi navi, ChipLogic c)
    {
        c.frametimer -= TrueSyncManager.DeltaTime.AsFloat();
        if (c.frametimer <= 0)          // advance frame		//TODO: may need 2 frame variables for animated throw objs
        {
            c.chip_anim_frame++;
            c.frametimer = c.chipFR;
            if (c.chip_anim_frame < navi.throw_offset.Length)               // throw obj still following throw anim
            {
                c.chip_renderObj.transform.position = navi.transform.position + (navi.throw_offset[c.chip_anim_frame] * navi.transform.localScale.x);
            }
            if (c.chip_anim_frame < navi.throwSprite.Length)
            {
                navi.controlledSpriteSet(c.chip_anim_frame);
            }
            else                // throw animation finished
            {
                navi.throwAnim       = false;
                navi.rate_controlled = false;
            }
        }
        if (c.chip_anim_frame >= navi.throw_offset.Length) // trajectory calculation
        {
            c.interrupt = false;                           // object has left the hand, can no longer be interrupted
            c.chip_renderObj.transform.SetParent(navi.field.grid[row][col].transform);

            //!!! WARNING BAD MATH AHEAD !!!
            float x = c.chip_renderObj.transform.position.x;
            x += (5.7f * TrueSyncManager.DeltaTime.AsFloat()) * ((navi.myNavi())?2:-2);
            //float x = (-0.18f + (5.5f * TrueSyncManager.DeltaTime.AsFloat()));
            float y = c.chip_renderObj.transform.position.y;
            y += (4.6f * TrueSyncManager.DeltaTime.AsFloat()) - 0.027f * Math.Abs(navi.field.grid[0][col].transform.position.x - c.chip_renderObj.transform.position.x);
            //c.chip_renderObj.transform.position = new Vector3(x, ((-0.112f * (x * x)) + (0.399f * x) + (navi.field.grid[navi.row][0].transform.position.y)));

            c.chip_renderObj.transform.position = new Vector3(x, y);

            if ((Math.Abs(c.chip_renderObj.transform.position.x - c.chip_renderObj.transform.parent.position.x)) >= 12)
            {
                c.deactivate(navi);
            }
        }
    }