//[ServerCallback] public void OnTriggerUsed(Character character, TriggerEventData eventData) { if (!PhotonNetwork.LocalPlayer.IsMasterClient) { return; } var bridge = character.GetComponent <PUN2ActionsBridge>(); if (character is Player && bridge != null) { var inst = ItemFactory.CreateInstance(itemDefinition, System.Guid.NewGuid()); var added = bridge.inventoryPlayer.itemCollectionGroup.Add(inst, amount); if (added.error != null) { // Something went wrong, remove item from registry to avoid cluttering it with un-used items. ServerItemRegistry.UnRegister(inst.ID); ItemRegistry.UnRegister(inst.ID); // TODO: Notify client why pickup failed DevdogLogger.LogError($"[PUN2][Interaction] PUN2ItemPickup.OnTriggerUsed: {added.error}", this); } else { // Action went succesful, destroy pickup source //NetworkServer.Destroy(gameObject); //PhotonNetwork.Destroy(gameObject); //GameObject.Destroy(gameObject); bridge.photonView.RPC(nameof(bridge.Cmd_RequestUnUseTrigger), PhotonNetwork.MasterClient, this.photonView.ViewID); PhotonNetwork.Destroy(gameObject); } } }
public void OnTriggerUsed(Character character, TriggerEventData data) { var vendor = VendorRegistry.itemVendors.Get(_vendorGuid.guid) as UnityVendor <IItemInstance>; if (vendor != null) { var vendors = FindObjectsOfType <ItemVendorUI>(); foreach (var vendorUI in vendors) { if (vendorUI.collectionName == vendor.vendorCollectionName) { vendorUI.vendor = vendor; vendorUI.collection = vendor.vendorCollection; vendorUI.window.Show(); _activeUI = vendorUI; return; } } new UnityLogger("[Vendor] ").Warning("Couldn't find VendorUI that repaints collection for vendor: " + vendor.vendorCollectionName); return; } new UnityLogger("[Vendor] ").Warning("Couldn't find VendorUI that repaints for vendor: " + _vendorGuid); }
// [ServerCallback] public void OnTriggerUsed(Character character, TriggerEventData data) { var bridge = character.GetComponent <PUN2ActionsBridge>(); if (PhotonNetwork.LocalPlayer.IsMasterClient /*isServer*/) { var vendor = ServerVendorRegistry.itemVendors.Get(vendorGuid) as PUN2Vendor <IItemInstance>; if (character is Player && bridge != null && vendor != null) { // Register collection on client bridge.Server_AddVendorItemCollectionToClient( /*vendorGuid: */ this.vendorGuid, /*collectionName: */ vendor.vendorCollectionName, /*collectionGuid: */ vendor.vendorCollectionGuid, /*slotCount*/ (ushort)vendor.vendorCollection.slotCount ); // Give the client read permission to the vendor's items. // TODO: Consider putting this in a single call with registration (add collection call) bridge.Server_SetCollectionPermissionOnServerAndClient( /*collectionGuid: */ vendor.vendorCollectionGuid, /*permission: */ ReadWritePermission.Read ); bridge.Server_SetItemVendorCollectionContentsOnClient(vendor.vendorCollectionGuid, vendor.vendorCollection); } // Send back an RPC to the client that it can show its UI bridge.photonView.RPC(nameof(bridge.TargetRPC_ShowItemVendorUI), bridge.photonView.Owner, this.vendorGuid.ToByteArray()); } }
private async Task HandleMessageAsync(string message) { this.m_logger.LogInformation("Trigger messages received."); var sw = Stopwatch.StartNew(); var messages = this.Decompress(message).ToList(); this.m_messageCounter.Inc(messages.Count); try { var results = await Task.WhenAll(messages.Select(this.HandleMeasurement)); var data = new TriggerEventData(); foreach (var triggerLists in results) { foreach (var triggerEvents in triggerLists) { data.Events.AddRange(triggerEvents); } } if (data.Events.Count > 0) { await this.PublishAsync(data).ConfigureAwait(false); } } catch (Exception ex) { this.m_logger.LogError(ex, "Unable to handle a trigger."); } sw.Stop(); this.m_logger.LogInformation("Messages handled. Processing took {duration:c}.", sw.Elapsed); }
//[ServerCallback] public void OnTriggerUsed(Character character, TriggerEventData eventData) { if (!PhotonNetwork.LocalPlayer.IsMasterClient) { return; } var bridge = character.GetComponent <PUN2ActionsBridge>(); if (character is Player && bridge != null) { var added = bridge.inventoryPlayer.itemCollectionGroup.Add(itemInstance, amount); if (added.error != null) { // TODO: Notify client why pickup failed DevdogLogger.LogError($"[PUN2][Interaction] PUN2ItemInstancePickup.OnTriggerUsed: {added.error}", this); } else { // Action went succesful, destroy pickup source //NetworkServer.Destroy(gameObject); //PhotonNetwork.Destroy(gameObject); //GameObject.Destroy(gameObject); bridge.photonView.RPC(nameof(bridge.Cmd_RequestUnUseTrigger), PhotonNetwork.MasterClient, this.photonView.ViewID); PhotonNetwork.Destroy(gameObject); } } }
public void OnTriggerUnUsed(Character character, TriggerEventData data) { if (_activeUI != null) { _activeUI.window.Hide(); } }
/// <summary> /// Only the first active and enabled component gets the callbacks. In order for the next component to receive the callbacks the first one has to be disabled or removed. /// </summary> public virtual void NotifyTriggerUnUsed(Character character) { var data = new TriggerEventData(); foreach (var callback in GetCallbacks()) { callback.OnTriggerUnUsed(character, data); if (data.used) { break; } } }
public void OnTriggerUsed(Character character, TriggerEventData data) { if (!PhotonNetwork.LocalPlayer.IsMasterClient) { return; } var bridge = character.GetComponent <PUN2ActionsBridge>(); if (character is Player && bridge != null) { var col = GetCollection(bridge); if (col != null) { // NOTE: If the player isn't the owner of the collection we need to make sure it gets registered on the client. // NOTE: If the player IS the owner of the collection it should always be managed by the player, and should be registered on the client at all times. if (bridge.photonView != col.owner) { // Make sure the collection exists both on the server and client. bridge.Server_AddCollectionToServerAndClient( collectionName: _collectionName, collectionGuid: col.ID, slotCount: col.slotCount ); } var itemsArray = new ItemAmountMessage[col.slotCount]; for (int i = 0; i < itemsArray.Length; i++) { itemsArray[i] = new ItemAmountMessage() { itemInstance = new RegisterItemInstanceMessage(col[i]), amount = (ushort)col.GetAmount(i) }; } bridge.Server_SetCollectionContentsOnClient( collectionName: _collectionName, collectionGuid: col.ID, items: itemsArray ); bridge.Server_SetCollectionPermissionOnServerAndClient( collectionGuid: col.ID, permission: _permissionOnUse ); bridge.photonView.RPC(nameof(bridge.TargetRPC_ShowItemCollectionUI), bridge.photonView.Owner, this._collectionName, col.ID.ToByteArray()); } } }
// [ServerCallback] public void OnTriggerUsed(Character character, TriggerEventData data) { if (isServer) { var vendor = ServerVendorRegistry.itemVendors.Get(vendorGuid) as UNetVendor <IItemInstance>; var bridge = character.GetComponent <UNetActionsBridge>(); if (character is Player && bridge != null && vendor != null) { // Register collection on client bridge.Server_AddVendorItemCollectionToClient(new AddCollectionMessage() { collectionGuid = vendor.vendorCollectionGuid, collectionName = vendor.vendorCollectionName, owner = _identity, slotCount = 10, }); // Give the client read permission to the vendor's items. // TODO: Consider putting this in a single call with registration (add collection call) bridge.Server_SetCollectionPermissionOnServerAndClient(new SetCollectionPermissionMessage() { collectionGuid = vendor.vendorCollectionGuid, permission = ReadWritePermission.Read }); bridge.Server_SetItemVendorCollectionContentsOnClient(vendor.vendorGuid, vendor.vendorCollectionGuid, vendor.vendorCollection); } } if (isClient && character == PlayerManager.currentPlayer) { var vendor = VendorRegistry.itemVendors.Get(vendorGuid) as UNetVendor <IItemInstance>; var vendors = FindObjectsOfType <ItemVendorUI>(); foreach (var vendorUI in vendors) { if (vendorUI.collectionName == _vendorCollectionName) { vendorUI.vendor = vendor; vendorUI.collection = vendor?.vendorCollection; vendorUI.window.Show(); _currentVendorUI = vendorUI; return; } } new UnityLogger("[Vendor] ").Warning("Couldn't find VendorUI that repaints collection " + vendor?.vendorCollectionName); } }
public void OnTriggerUnUsed(Character character, TriggerEventData data) { var bridge = character.GetComponent <UNetActionsBridge>(); if (character is Player && bridge != null) { var col = GetCollection(bridge); Assert.IsNotNull(col, "Collection not found on object or player!"); bridge.Server_SetCollectionPermissionOnServerAndClient(new SetCollectionPermissionMessage() { collectionGuid = col.ID, permission = _permissionOnUnUse }); } }
/// <summary> /// Only the first active and enabled component gets the callbacks. In order for the next component to receive the callbacks the first one has to be disabled or removed. /// </summary> public virtual void NotifyTriggerUnUsed(Character character) { _usingCharacters.Remove(character); character.currentTrigger = null; var data = new TriggerEventData(); foreach (var callback in GetCallbacks()) { callback.OnTriggerUnUsed(character, data); if (data.used) { break; } } }
public void OnTriggerUsed(Character character, TriggerEventData data) { var bridge = character.GetComponent <UNetActionsBridge>(); if (character is Player && bridge != null) { var col = GetCollection(bridge); if (col != null) { // NOTE: If the player isn't the owner of the collection we need to make sure it gets registered on the client. // NOTE: If the player IS the owner of the collection it should always be managed by the player, and should be registered on the client at all times. if (bridge.identity != col.owner) { // Make sure the collection exists both on the server and client. bridge.Server_AddCollectionToServerAndClient(new AddCollectionMessage() { collectionName = _collectionName, collectionGuid = col.ID, owner = col.owner, slotCount = (ushort)col.slotCount, }); } var itemsArray = new ItemAmountMessage[col.slotCount]; for (int i = 0; i < itemsArray.Length; i++) { itemsArray[i] = new ItemAmountMessage() { itemInstance = new RegisterItemInstanceMessage(col[i]), amount = (ushort)col.GetAmount(i) }; } bridge.Server_SetCollectionContentsOnClient(new SetCollectionContentsMessage() { collectionName = _collectionName, collectionGuid = col.ID, items = itemsArray, }); bridge.Server_SetCollectionPermissionOnServerAndClient(new SetCollectionPermissionMessage() { collectionGuid = col.ID, permission = _permissionOnUse }); } } }
public void Initialize(ScenarioController controller) { _sceneController = controller; _moving = false; var footData = new TriggerEventData { TriggerEnterAction = null, TriggerExitAction = null, }; _footColliderLogic.Initialize(footData); _rigidbody2D = GetComponent <Rigidbody2D>(); _rigidbody2D.simulated = false; _animator.SetBool(_deathAnimKey, false); }
public void OnTriggerUsed(Character character, TriggerEventData eventData) { var currencyOwner = character.GetComponent <ICurrencyCollectionOwner>(); if (character is Player && currencyOwner != null) { var added = currencyOwner.currencyCollectionGroup.Add(currency.currency, currency.amount); if (added.error != null) { } else { // Action went succesful, destroy pickup source Destroy(gameObject); } } }
public void OnTriggerUsed(Character character, TriggerEventData eventData) { var inventoryOwner = character.GetComponent <IInventoryCollectionOwner>(); if (character is Player && inventoryOwner != null) { var added = inventoryOwner.itemCollectionGroup.Add(itemInstance, amount); if (added.error != null) { // TODO: Notify why pickup failed } else { // Action went succesful, destroy pickup source Destroy(gameObject); } } }
public void OnTriggerUsed(Character character, TriggerEventData eventData) { var bridge = character.GetComponent <UNetActionsBridge>(); if (character is Player && bridge != null) { var added = bridge.inventoryPlayer.itemCollectionGroup.Add(itemInstance, amount); if (added.error != null) { // TODO: Notify client why pickup failed } else { // Action went succesful, destroy pickup source NetworkServer.Destroy(gameObject); } } }
public void OnTriggerUsed(Character character, TriggerEventData eventData) { var bridge = character.GetComponent <UNetActionsBridge>(); if (character is Player && bridge != null) { var added = bridge.inventoryPlayer.currencyCollectionGroup.Add(currency.currency, currency.amount); if (added.error == null) { // Action went succesful, destroy pickup source NetworkServer.Destroy(gameObject); } else { // Something went wrong, remove item from registry to avoid cluttering it with un-used items. // TODO: Notify client why pickup failed } } }
public void OnTriggerUsed(Character character, TriggerEventData eventData) { var inventoryOwner = character.GetComponent <IInventoryCollectionOwner>(); if (character is Player && inventoryOwner != null) { var inst = ItemFactory.CreateInstance(itemDefinition, System.Guid.NewGuid()); var added = inventoryOwner.itemCollectionGroup.Add(inst, amount); if (added.error != null) { // TODO: Notify why pickup failed ItemRegistry.UnRegister(inst.ID); } else { // Action went succesful, destroy pickup source Destroy(gameObject); } } }
// [ServerCallback] public void OnTriggerUnUsed(Character character, TriggerEventData data) { if (PhotonNetwork.LocalPlayer.IsMasterClient /*isServer*/) { var vendor = ServerVendorRegistry.itemVendors.Get(vendorGuid) as PUN2Vendor <IItemInstance>; var bridge = character.GetComponent <PUN2ActionsBridge>(); if (character is Player && bridge != null && vendor != null) { // Revoke the client's read access on the vendor's collection bridge.Server_SetCollectionPermissionOnServerAndClient( /*collectionGuid: */ vendor.vendorCollectionGuid, /*permission: */ ReadWritePermission.None ); } } if (/*!PhotonNetwork.LocalPlayer.IsMasterClient*/ /*isClient*/ character == PlayerManager.currentPlayer) { _currentVendorUI?.window.Hide(); } }
// [ServerCallback] public void OnTriggerUnUsed(Character character, TriggerEventData data) { if (isServer) { var vendor = ServerVendorRegistry.itemVendors.Get(vendorGuid) as UNetVendor <IItemInstance>; var bridge = character.GetComponent <UNetActionsBridge>(); if (character is Player && bridge != null && vendor != null) { // Revoke the client's read access on the vendor's collection bridge.Server_SetCollectionPermissionOnServerAndClient(new SetCollectionPermissionMessage() { collectionGuid = vendor.vendorCollectionGuid, permission = ReadWritePermission.None }); } } if (isClient && character == PlayerManager.currentPlayer) { _currentVendorUI?.window.Hide(); } }
public void OnTriggerUnUsed(Character character, TriggerEventData data) { if (PhotonNetwork.LocalPlayer.IsMasterClient) { var bridge = character.GetComponent <PUN2ActionsBridge>(); if (character is Player && bridge != null) { var col = GetCollection(bridge); Assert.IsNotNull(col, "Collection not found on object or player!"); bridge.Server_SetCollectionPermissionOnServerAndClient( collectionGuid: col.ID, permission: _permissionOnUnUse ); } } else if (character == PlayerManager.currentPlayer) { _currentItemCollectionUI?.window.Hide(); } }
public void OnTriggerUsed(Character character, TriggerEventData eventData) { var bridge = character.GetComponent <UNetActionsBridge>(); if (character is Player && bridge != null) { var inst = ItemFactory.CreateInstance(itemDefinition, System.Guid.NewGuid()); var added = bridge.inventoryPlayer.itemCollectionGroup.Add(inst, amount); if (added.error != null) { // Something went wrong, remove item from registry to avoid cluttering it with un-used items. ServerItemRegistry.UnRegister(inst.ID); ItemRegistry.UnRegister(inst.ID); // TODO: Notify client why pickup failed } else { // Action went succesful, destroy pickup source NetworkServer.Destroy(gameObject); } } }
private async Task HandleMessageAsync(string message) { this.logger.LogDebug("Measurement received."); var measurements = this.Decompress(message).ToList(); this.m_measurementCounter.Inc(measurements.Count); var tasks = measurements.Select(this.HandleMeasurement).ToList(); var results = await Task.WhenAll(tasks).ConfigureAwait(false); var data = new TriggerEventData(); foreach (var triggerLists in results) { foreach (var triggerEvents in triggerLists) { data.Events.AddRange(triggerEvents); } } await this.PublishAsync(data).ConfigureAwait(false); this.logger.LogDebug("Measurement handled."); }
public void OnTriggerUsed(Character character, TriggerEventData data) { var uis = FindObjectsOfType <ItemCollectionUI>(); var col = CollectionRegistry.byID.Get(_guid.guid) as ICollection <IItemInstance>; if (col != null) { foreach (var ui in uis) { if (ui.collectionName == col.ToString()) { _activeUI = ui; _activeUI.collection = col; _activeUI.window.Show(); return; } } new UnityLogger("[Collection] ").Warning("Couldn't find ItemCollectionUI that repaints collection for collection with name: " + col.ToString()); } new UnityLogger("[Collection] ").Warning("Couldn't find ItemCollectionUI that repaints collection for collection: " + _guid.guid); }
public void OnTriggerUnUsed(Character character, TriggerEventData eventData) { UndoVisuals(); }
public void OnTriggerUnUsed(Character character, TriggerEventData eventData) { // Item pickup can't be un-used. }
public void Initialize(TriggerEventData data) { _data = data; _collider = GetComponent <Collider2D>(); _initialized = true; }