private void Start() { PUN2Vendor <IItemInstance> _vendor = null; if (PhotonNetwork.LocalPlayer.IsMasterClient) { collection = PUN2CollectionUtility.CreateServerVendorItemCollection(Math.Max(this._itemDefs.Length, this._slotCount), _vendorCollectionName, _vendorCollectionGuid.guid, this.photonView); foreach (var itemDef in _itemDefs) { if (itemDef == null) { continue; } var inst = ItemFactory.CreateInstance(itemDef, Guid.NewGuid()); var prod = new VendorProduct <IItemInstance>(inst, itemDef.buyPrice, itemDef.sellPrice); collection.Add(prod); } _vendor = new PUN2Vendor <IItemInstance>(_vendorGuid.guid, _vendorCollectionName, _vendorCollectionGuid.guid, _config, this.photonView, collection, new InfiniteCurrencyCollection()); // TODO: Make currency customizable //if (PhotonNetwork.LocalPlayer.IsMasterClient) ServerVendorRegistry.itemVendors.Register(_vendorGuid.guid, _vendor); } // Create on new vendor here for "client" purposes. This way, changing one vendor ('client' or 'server') doesn't affect the other. _vendor = new PUN2Vendor <IItemInstance>(_vendorGuid.guid, _vendorCollectionName, _vendorCollectionGuid.guid, _config, this.photonView, collection, new InfiniteCurrencyCollection()); // TODO: Make currency customizable VendorRegistry.itemVendors.Register(_vendorGuid.guid, _vendor); }
public PUN2ServerEquipmentCollection <IEquippableItemInstance> Server_AddEquipmentCollectionToServer(string collectionName, Guid collectionGuid, UnitySerializedEquipmentCollectionSlot[] slots) { if (!PhotonNetwork.LocalPlayer.IsMasterClient) { return(null); } logger.Log($"[Server][ViewId: {this.photonView.ViewID}] {nameof(Server_AddEquipmentCollectionToServer)}(collectionName: {collectionName}, collectionGuid: {collectionGuid}, slots: {slots.Length}, owner: {this.photonView.ViewID})", this); var col = collectionFinder.GetServerCollection(collectionGuid) as PUN2ServerEquipmentCollection <IEquippableItemInstance>; if (col == null) { var equippableCharacter = GetComponent <IEquippableCharacter <IEquippableItemInstance> >(); EquipmentCollectionSlot <IEquippableItemInstance>[] parsedSlots = new EquipmentCollectionSlot <IEquippableItemInstance> [slots.Length]; for (int i = 0; i < slots.Length; ++i) { parsedSlots[i] = new EquipmentCollectionSlot <IEquippableItemInstance>(); parsedSlots[i].equipmentTypes = slots[i].equipmentTypes.Select(g => g.ID).Select(g => _equipmentTypeDatabase.Get(new Identifier(g)).result).Cast <UnityEquipmentType>().ToArray(); } col = PUN2CollectionUtility.CreateServerEquipmentCollection(collectionName, collectionGuid, this.photonView, parsedSlots, equippableCharacter); } return(col); }
public void TargetRpc_AddEquipmentCollection(PhotonView owner, string collectionName, Guid collectionGuid, EquipmentCollectionSlot <IEquippableItemInstance>[] slots) { var collection = PUN2ActionsBridge.collectionFinder.GetClientCollection(collectionGuid); if (collection == null) { var equippableCharacter = bridge.GetComponent <IEquippableCharacter <IEquippableItemInstance> >(); var restoreItemsToGroup = bridge.GetComponent <IInventoryCollectionOwner>().itemCollectionGroup; /*collection = */ PUN2CollectionUtility.CreateClientEquipmentCollection(collectionName, collectionGuid, owner, bridge, slots, equippableCharacter); } }
public PUN2ClientCollection <IVendorProduct <IItemInstance> > TargetRpc_AddVendorItemCollection(PhotonView owner, string collectionName, Guid collectionGuid, ushort slotCount) { logger.LogVerbose($"[Client] Server requested to add vendor item collection '{collectionName}' with Guid '{collectionGuid}' and slot count {slotCount}. ViewID: {bridge.photonView.ViewID}", bridge); var collection = PUN2ActionsBridge.collectionFinder.GetClientCollection(collectionGuid) as PUN2ClientCollection <IVendorProduct <IItemInstance> >; if (collection == null) { collection = PUN2CollectionUtility.CreateClientVendorItemCollection(slotCount, collectionName, collectionGuid, owner, bridge); } return(collection); }
public PUN2ServerCollection <IItemInstance> Server_AddCollectionToServer(string collectionName, Guid collectionGuid, int slotCount) { if (!PhotonNetwork.LocalPlayer.IsMasterClient) { return(null); } logger.Log($"[Server][ViewId: {this.photonView.ViewID}] {nameof(Server_AddCollectionToServer)}(collectionGuid: {collectionName}, collectionGuid: {collectionGuid}, slotCount: {slotCount})", this); // NOTE: The collection might already exist server side on the target objects (for example, a trigger) var col = collectionFinder.GetServerCollection(collectionGuid) as PUN2ServerCollection <IItemInstance>; if (col == null) { col = PUN2CollectionUtility.CreateServerItemCollection(slotCount, collectionName, collectionGuid, this.photonView /*data.owner*/); } return(col); }