Пример #1
0
        protected virtual void InputReceived(System.Int16 address, byte[] payload)
        {
            if (this.address != address)
            {
                return;
            }

            weapon = (WeaponMode)payload[0];

            byte buttonFlags = payload[1];

            ButtonValues[0] = (buttonFlags & 0x01) > 0;
            ButtonValues[1] = (buttonFlags & 0x02) > 0;
            ButtonValues[2] = (buttonFlags & 0x04) > 0;
            ButtonValues[3] = (buttonFlags & 0x08) > 0;

            for (int i = 0; i < Buttons.Length; i++)
            {
                Buttons[i].GetComponent <MeshRenderer>().sharedMaterial = ButtonValues[i] ? pressedMaterial : normalMaterial;
            }

            action         = payload[2];
            mode           = payload[3];
            shotsRemaining = payload[4];

            switch (weapon)
            {
            case WeaponMode.RIFLE:
            {
                var rifleAction = (RifleAction)action;
                var rifleMode   = (RifleMode)mode;

                if (gun)
                {
                    if ((RifleAction)action == RifleAction.TRIGGER_UP)
                    {
                        gun.ToggleTrigger(false);
                    }
                    else if ((RifleAction)action == RifleAction.SINGLE)
                    {
                        if (rifleMode == RifleMode.SINGLE)
                        {
                            gun.Fire();
                        }
                        else
                        {
                            gun.ToggleTrigger(true);
                        }
                    }
                    else if ((RifleAction)action == RifleAction.RELOAD)
                    {
                        gun.Reload();
                        SetAmmo(gun.shotsRemaining);
                    }

                    // infinite ammo
                    if (gun.MagazineSize < 0 && shotsRemaining < 10)
                    {
                        SetAmmo(MAXAMMO);
                    }
                }
                break;
            }

            case WeaponMode.CHAINSAW:
            {
                Debug.Log("I'm A Chainsaw!!!");
                var chainsawAction = (ChainsawAction)action;
                var chainsawPower  = mode;
            }
            break;

            case WeaponMode.BLASTER:
            {
                Debug.Log("I'm A Blaster!");
                var blasterAction = (BlasterAction)action;
                var charge        = mode;
                break;
            }
            }
        }