private void Update() { if (gun) { if (controller) { gun.TriggerDown = controller.triggerPressed; if (controller.menuPressed) { //Debug.Log("MENU BUTTON PRESSED"); if (!menuAlreadyPressed) { gun.Reload(); menuAlreadyPressed = true; } } else { menuAlreadyPressed = false; } } else { gun.TriggerDown = Input.GetKey(KeyCode.Space); } if (Input.GetKeyDown(KeyCode.R)) { gun.Reload(); } } }
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; } } }