Ejemplo n.º 1
0
    void Start()
    {
        dodgeController = GetComponent <DodgeController>();
        animator        = GetComponent <Animator>();

        timeUntilBall = ballDelay;
    }
Ejemplo n.º 2
0
    //Create an array of all the updated dodgeball values so they can be sent to the clients
    // This way there is less lag than with a networkIdentity
    public void CreateArray()
    {
        // Get the current number of dodgeballs
        _length = 0;
        for (int j = 0; j < _updatedBalls.Length; j++)
        {
            if (_updatedBalls[j] != null)
            {
                _length++;
            }
        }

        // Each dodgeball has 13 pieces of information it need to match with the dodgeball on the server
        _updates = new float[_length * 13];
        int q = 0;

        for (int i = 0; i < _length * 13; i = i + 13)
        {
            // The balls are not always stored in the order 1-7 but could be 1,5,7,9,10 so this skips the null values
            if (_updatedBalls[q] != null)
            {
                // For each ball we require
                // 0. Its ball number
                // 1, 2. Its colour and the colour of its arrow
                // 3, 4, 5, 6. Its rotation, Position and size
                // 7, 8. The furthest it can rotate
                // 9. Its current state (Waiting, Charging, Fired)
                // 10, 11. The balls rotation Speed and movement speed
                // 12. If it is a special ball and if so which kind
                DodgeController ball = _updatedBalls[q].GetComponentInChildren <DodgeController>();
                _updates[i + 0]  = (float)q;
                _updates[i + 1]  = ball.MaterialNum;
                _updates[i + 2]  = ball.ArrowNum;
                _updates[i + 3]  = ball.Parent.transform.localEulerAngles.z;
                _updates[i + 4]  = ball.Parent.transform.localPosition.x;
                _updates[i + 5]  = ball.Parent.transform.localPosition.y;
                _updates[i + 6]  = ball.transform.localScale.y;
                _updates[i + 7]  = ball.Min;
                _updates[i + 8]  = ball.Max;
                _updates[i + 9]  = ball.State;
                _updates[i + 10] = ball.RotationSpeed;
                _updates[i + 11] = ball.Speed;
                _updates[i + 12] = ball.Special;
                _updatedBalls[q] = null;
            }
            else
            {
                i--;
            }
            q++;
        }
    }
Ejemplo n.º 3
0
    // Start is called before the first frame update
    protected override void Start()
    {
        base.Start();
        if (cam == null)
        {
            cam = Camera.main;
        }

        playerDodge              = GetComponent <DodgeController>();
        playerTalentController   = GetComponent <PlayerTalentController>();
        playerMovementController = GetComponent <LandMovementController>();
        tonic = GetComponent <Tonic>();

        canCharacterAction = true;
    }
Ejemplo n.º 4
0
        public Player(int slot, int playerId, string imageName)
        {
            ControllerId = slot;
            PlayerId     = playerId;
            ImageName    = imageName;

            Layer            = ObjectLayers.Players;
            excludeCollision = new HashSet <Entity>();
            UpgradeQueue     = new Queue <Upgrade>();
            UpgradeCapacity  = 1;

            InitController();

            SetHitbox(30, 60, 15, 60);

            Type = Collision;

            IsAlive    = false;
            Invincible = false;
            Rebounding = false;

            Physics         = AddComponent(new PhysicsBody(Platform.Collision, Type));
            Movement        = AddComponent(new Movement(Physics, Direction));
            DodgeController = AddComponent(new DodgeController(Dodge, Direction));

            player = AddComponent(new Image(Library.GetTexture("players/" + imageName + ".png")));
            player.Source.Smooth = true;
            player.Scale         = 0.5f;
            player.OriginX       = player.Width / 2;
            player.OriginY       = player.Height;

            AddComponent(new OffscreenCursor(ImageName));
            Fists = AddComponent(new Fists());

            states   = AddComponent(new StateMachine());
            Standing = states.AddState(BeginStand, WhileStanding, null);
            Jumping  = states.AddState(BeginJump, WhileJumping, null);
            Falling  = states.AddState(BeginFalling, WhileFalling, null);
            Dodging  = states.AddState(WhileDodging);

            AddResponse(Message.Damage, OnDamage);
            AddResponse(Fist.Message.PunchConnected, OnPunchConnected);
            AddResponse(EffectMessage.Message.OnEffect, OnEffect);
            AddResponse(Shield.Message.Set, SetShield);
            AddResponse(Rebound.Message.Set, SetRebound);
        }
Ejemplo n.º 5
0
 void FixedUpdate()
 {
     // Cap of 25 Dodgeballs
     if (Counter < Dodgeballs.Length - 1)
     {
         //Create one dodgeball
         if (Pulse)
         {
             GameObject dodge = (GameObject)Instantiate(Dodgeball);
             dodge.GetComponentInChildren <DodgeController>().BallNumber = Counter;
             Dodgeballs[Counter] = dodge;
             Counter++;
             Pulse = false;
         }
         //Create five dodgeball
         if (PulseFive)
         {
             for (int i = 0; i < 5; i++)
             {
                 GameObject dodge = (GameObject)Instantiate(Dodgeball);
                 dodge.GetComponentInChildren <DodgeController>().BallNumber = Counter;
                 Dodgeballs[Counter] = dodge;
                 Counter++;
                 PulseFive = false;
             }
         }
     }
     //Update each dodgeball from the info sent by the server
     if (UpdateNumbers.Length > 0 && !Server && InGame)
     {
         for (int i = 0; i < UpdateNumbers.Length; i = i + 13)
         {
             // Check for each dodgeball if it requires updating
             if (Dodgeballs[(int)UpdateNumbers[i]] != null)
             {
                 // Dodgeball controller script
                 DodgeController controller = Dodgeballs[(int)UpdateNumbers[i]].GetComponentInChildren <DodgeController>();
                 // For each ball we require
                 // 1, 2. Its colour and the colour of its arrow
                 controller.transform.GetComponent <Renderer>().material = Materials[(int)UpdateNumbers[i + 1]];
                 Dodgeballs[(int)UpdateNumbers[i]].GetComponentInChildren <SpriteRenderer>().sprite = Sprites[(int)UpdateNumbers[i + 2]];
                 // 3, 4, 5. Its rotation, Position. These set the parent object which encapsulates the sphere object with is what you can see
                 Dodgeballs[(int)UpdateNumbers[i]].transform.localEulerAngles = new Vector3(0.0f, 0.0f, UpdateNumbers[i + 3]);
                 Dodgeballs[(int)UpdateNumbers[i]].transform.localPosition    = new Vector3(UpdateNumbers[i + 4], UpdateNumbers[i + 5], 0.0f);
                 // 6. Its size
                 controller.transform.localScale = new Vector3(UpdateNumbers[i + 6], UpdateNumbers[i + 6], 0.1f);
                 // 7, 8. The furthest it can rotate
                 controller.Min = UpdateNumbers[i + 7];
                 controller.Max = UpdateNumbers[i + 8];
                 // 9. Its current state (Waiting, Charging, Fired)
                 controller.State = (int)UpdateNumbers[i + 9];
                 // 10, 11. The balls rotation and regular speed
                 controller.RotationSpeed = UpdateNumbers[i + 10];
                 controller.Speed         = (int)UpdateNumbers[i + 11];
                 // 12. If it is a special ball and if so which kind
                 controller.Special = (int)UpdateNumbers[i + 12];
                 // If the ball has not been fired yet put it at zero. This talks to the sphere object within the Dodgeball object
                 if ((int)UpdateNumbers[i + 9] != 5)
                 {
                     controller.transform.localPosition = Vector3.zero;
                 }
             }
         }
     }
 }