Exemplo n.º 1
0
        public void SetInfo_ArcFall(Vector2 p_v2StartPos, Vector2 p_v2EndPos, float p_fMaxHeight, int p_iTravelTime, int iExplodeAt)
        {
            bNetworkSynchEnabled = false;
            this.iExplodeAt      = iExplodeAt;
            bArcFall             = true;
            v2ArcFall_StartPos   = p_v2StartPos;
            v2ArcFall_EndPos     = p_v2EndPos;
            fArcFall_MaxHeight   = p_fMaxHeight;
            iArcFall_TravelTime  = p_iTravelTime;
            xShadowRC            = new StaticRenderComponent(CAS.RegionContent.Load <Texture2D>("Sprites/Monster/Temple/Marauder/Jump/Shadow"), xTransform);
            xShadowRC.fAlpha     = 0f;
            xShadowRC.fScale     = 0f;
            Utils.GetTheGame().xRenderMaster.RegisterBelowSorted(xShadowRC);
            xCollisionComponent.SetPropertyInGroup(CollisionComponent.ColliderGroup.All, CollisionComponent.ColliderProperty.Ghost);
            xCollisionComponent.DeactivateGroup(CollisionComponent.ColliderGroup.Combat);
            float fTotalTailMovement = 29.2f;
            float fSpeed             = Vector2.Distance(v2ArcFall_StartPos, v2ArcFall_EndPos) / (float)iArcFall_TravelTime;

            v2StartMoveDir = Utility.Normalize(v2ArcFall_EndPos - v2ArcFall_StartPos) * fSpeed;
            if (Utility.ConvertV2DirectionToClosestAnimationDirection(v2StartMoveDir) < 2)
            {
                xRenderComponent.SwitchAnimation(6);
            }
            else
            {
                xRenderComponent.SwitchAnimation(7);
            }
            v2ArcFall_EndPos    += Utility.Normalize(v2ArcFall_StartPos - v2ArcFall_EndPos) * fSpeed * fTotalTailMovement;
            iArcFall_TravelTime -= (int)fTotalTailMovement;
        }
Exemplo n.º 2
0
 public void SetInfo_Fall(int iExplodeAt, int iStartFall = 100)
 {
     bFall            = true;
     xShadowRC        = new StaticRenderComponent(CAS.RegionContent.Load <Texture2D>("Sprites/Monster/Temple/Marauder/Jump/Shadow"), xTransform);
     xShadowRC.fAlpha = 0f;
     xShadowRC.fScale = 0f;
     Utils.GetTheGame().xRenderMaster.RegisterBelowSorted(xShadowRC);
     xCollisionComponent.SetPropertyInGroup(CollisionComponent.ColliderGroup.All, CollisionComponent.ColliderProperty.Ghost);
     xCollisionComponent.DeactivateGroup(CollisionComponent.ColliderGroup.Combat);
     xRenderComponent.v2OffsetRenderPos.Y -= 100f;
     xRenderComponent.fAlpha = 0f;
     iFallAppearDelay        = iStartFall;
     this.iExplodeAt         = iExplodeAt;
     if (CAS.RandomInVisual.Next(2) == 0)
     {
         xRenderComponent.SwitchAnimation(2);
     }
     else
     {
         xRenderComponent.SwitchAnimation(3);
     }
     if (CAS.NetworkRole == NetworkHelperInterface.NetworkRole.Server)
     {
         OutMessage om = Utils.GetTheGame()._Network_CreateMessage();
         om.Write(byte.MaxValue);
         om.Write((byte)14);
         om.Write((byte)1);
         om.Write(iID);
         om.Write(xTransform.v2Pos.X);
         om.Write(xTransform.v2Pos.Y);
         om.Write(xRenderComponent.fVirtualHeight);
         om.Write(xCollisionComponent.ibitCurrentColliderLayer);
         om.Write(iExplodeAt);
         Utils.GetTheGame()._Network_SendMessage(om, 13);
     }
 }
Exemplo n.º 3
0
 public override void Update()
 {
     base.Update();
     if (bArcFall)
     {
         iArcFall_Counter++;
         if (CAS.NetworkRole == NetworkHelperInterface.NetworkRole.Server && iArcFall_Counter == iArcFall_TravelTime / 2 && bShareArcFallPos)
         {
             SendNetworkInstruction(2f, v2ArcFall_EndPos.X, v2ArcFall_EndPos.Y);
         }
         float fGrade  = (float)iArcFall_Counter / (float)iArcFall_TravelTime;
         float fHeight = Utility.Percent_RealAndragrad(fGrade) * fArcFall_MaxHeight;
         xTransform.v2Pos = Vector2.Lerp(v2ArcFall_StartPos, v2ArcFall_EndPos, fGrade);
         xRenderComponent.v2OffsetRenderPos.Y = 0f - fHeight;
         if (xRenderComponent.fVirtualHeight > 0f)
         {
             xRenderComponent.fVirtualHeight -= 1f;
         }
         xShadowRC.fAlpha = 0.4f;
         xShadowRC.fScale = 1f - (0f - xRenderComponent.v2OffsetRenderPos.Y) / 130f;
         if (xShadowRC.fScale < 0.4f)
         {
             xShadowRC.fScale = 0.4f;
         }
         if (iArcFall_Counter == iArcFall_TravelTime)
         {
             bArcFall = false;
             xRenderComponent.fVirtualHeight = 0f;
             Utils.GetTheGame().xSoundSystem.PlayCue("MimicMedium_BombLand", xTransform);
             if (Utility.ConvertV2DirectionToClosestAnimationDirection(v2StartMoveDir) < 2)
             {
                 xRenderComponent.SwitchAnimation(0);
             }
             else
             {
                 xRenderComponent.SwitchAnimation(1);
             }
             xRenderComponent.v2OffsetRenderPos.Y = 0f;
             xCollisionComponent.SetPropertyInGroup(CollisionComponent.ColliderGroup.All, CollisionComponent.ColliderProperty.NonGhost);
             xCollisionComponent.ActivateGroup(CollisionComponent.ColliderGroup.Combat);
             xShadowRC.Unregister();
             xShadowRC = null;
             v2MoveDir = v2StartMoveDir;
         }
         return;
     }
     if (bFall)
     {
         if (xShadowRC == null || xShadowRC.fAlpha > 0.6f)
         {
             if (xRenderComponent.v2OffsetRenderPos.Y < 0f)
             {
                 xRenderComponent.v2OffsetRenderPos.Y += 4f;
                 if (xRenderComponent.v2OffsetRenderPos.Y >= 0f)
                 {
                     xRenderComponent.v2OffsetRenderPos.Y = 0f;
                     xCollisionComponent.SetPropertyInGroup(CollisionComponent.ColliderGroup.All, CollisionComponent.ColliderProperty.NonGhost);
                     xCollisionComponent.ActivateGroup(CollisionComponent.ColliderGroup.Movement);
                     xCollisionComponent.ActivateGroup(CollisionComponent.ColliderGroup.Combat);
                     xShadowRC.Unregister();
                     xShadowRC = null;
                     bFall     = false;
                 }
             }
             if (xRenderComponent.fAlpha < 1f)
             {
                 xRenderComponent.fAlpha += 0.04f;
                 if (xRenderComponent.fAlpha > 1f)
                 {
                     xRenderComponent.fAlpha = 1f;
                 }
             }
         }
         if (xShadowRC != null)
         {
             float fMos = (float)iCounter / (float)iFallAppearDelay;
             if (fMos > 1f)
             {
                 fMos = 1f;
             }
             if (fMos < 0f)
             {
                 fMos = 0f;
             }
             xShadowRC.fAlpha = fMos * 0.7f;
             xShadowRC.fScale = fMos;
         }
     }
     if (xRenderComponent.iActiveAnimation > 1)
     {
         iCounter++;
     }
     else
     {
         iPreCounter++;
         if (iPreCounter == 20)
         {
             v2MoveDir = v2StartMoveDir * 0.6f;
             xCollisionComponent.SetPropertyInGroup(CollisionComponent.ColliderGroup.Movement, CollisionComponent.ColliderProperty.NonGhost);
             xCollisionComponent.ActivateGroup(CollisionComponent.ColliderGroup.Combat);
         }
         else if (iPreCounter == 28)
         {
             v2MoveDir = v2StartMoveDir * 0.3f;
         }
         else if (iPreCounter == 36)
         {
             v2MoveDir = v2StartMoveDir * 0.15f;
         }
         else if (iPreCounter == 44)
         {
             v2MoveDir = v2StartMoveDir * 0.1f;
         }
         else if (iPreCounter == 52)
         {
             v2MoveDir = v2StartMoveDir * 0f;
         }
     }
     xTransform.v2Pos += v2MoveDir;
     if (iCounter >= iExplodeAt - 90 && iCounter >= 52)
     {
         xRenderComponent.SwitchAnimation((ushort)(xRenderComponent.GetCurrentAnimation().byAnimationDirection + 4), Animation.CancelOptions.IgnoreIfPlaying);
         if (iCounter <= 52)
         {
             int iTotalTicks = 93;
             xRenderComponent.fAnimationTimeWarp = 1f + (float)iCounter / (float)iTotalTicks;
         }
     }
     if (iCounter == iExplodeAt)
     {
         Destroy();
     }
 }