private RustItem CreateItem(string itemId, IItemState state) { if (!int.TryParse(itemId, out int parsedItemId)) { throw new ArgumentException($"Invalid Item ID: {itemId}", nameof(itemId)); } Item item = ItemManager.CreateByItemID(parsedItemId); if (item == null) { return(null); } var rustItem = new RustItem(item); if (state != null && !(state is NullItemState)) { rustItem.SetItemAmountAsync(state.ItemAmount); rustItem.SetItemQualityAsync(state.ItemQuality); rustItem.Item.maxCondition = (float)state.ItemDurability; } return(rustItem); }
public Task <IItemDrop> SpawnItemAsync(Vector3 position, string itemId, IItemState state = null) { async UniTask <IItemDrop> SpawnItemTask() { ValidateState(state); await UniTask.SwitchToMainThread(); if (!ushort.TryParse(itemId, out var parsedItemId)) { throw new ArgumentException($"Invalid Item ID: {itemId}", nameof(itemId)); } var item = CreateItem(parsedItemId, state); if (item == null) { return(null); } var droppedItem = DropItem(item, position); if (droppedItem.drop == null) { return(null); } return(new UnturnedItemDrop(droppedItem.region, droppedItem.drop)); } return(SpawnItemTask().AsTask()); }
public static Task <IItemDrop> SpawnItemAsync(this IItemSpawner spawner, Vector3 position, IItemAsset asset, [CanBeNull] IItemState state = null) { return(spawner.SpawnItemAsync(position, asset.ItemAssetId, state)); }
public static Task <IInventoryItem> GiveItemAsync(this IItemSpawner spawner, IInventory inventory, IItemAsset asset, [CanBeNull] IItemState state = null) { return(spawner.GiveItemAsync(inventory, asset.ItemAssetId, state)); }
public FireFlower( IWorld world, Point location, IListener <IGameObject> listener, IListener <ISoundable> soundListener, bool isUnveil = false) : base( world, location, listener, new Point(32, 32)) { soundListener.Subscribe(this); SoundEventArgs = new SoundArgs(); SoundEventArgs.SetMethodCalled(); collected = false; if (isUnveil) { state = new Unveil(this); UpdateSprite(); } else { state = new Normal(this); UpdateSprite(); } }
public override void Enter(IItemState state) { NextState = state; if (NextState is RevealItemState && Item is CoinEntity) { Item.Dead = true; } }
public override void Enter(IItemState state) { if (Item.Mario.SpritePosition.X > Item.SpritePosition.X) { Item.SpriteVelocity = new Vector2(-1, 1); } else { Item.SpriteVelocity = new Vector2(1, 1); } }
public DKPlayerBarrel() { state = new DKPlayerBarrelIdleState(this); BodyDefinition bodyDef = new BodyDefinition() { BottomCenter = new Vector2(725, 150), Dimensions = sprite.Dimensions, Type = BodyType.Kinematic }; Filter filter = new Filter(); filter.Category = (byte)Filter.Categories.Collectible; filter.Mask = (byte)Filter.Categories.Player; bodyDef.Filter = filter; body = PhysicsWorld.Instance.CreateBody(bodyDef); body.UserData = this; }
public DKThrownBarrel() { state = new DKThrownBarrelRollState(this); BodyDefinition bodyDef = new BodyDefinition() { BottomCenter = new Vector2(575, 150), Type = BodyType.Dynamic, Dimensions = sprite.Dimensions }; Filter filter = new Filter(); filter.Category = (byte)Filter.Categories.Throwable; filter.Mask = (byte)Filter.Categories.Enemy + (byte)Filter.Categories.Projectile + (byte)Filter.Categories.LevelBlock; bodyDef.Filter = filter; bodyDef.Mass = 1; body = PhysicsWorld.Instance.CreateBody(bodyDef); body.UserData = this; }
public DKExitSign() { sprite = ItemSpriteFactory.Instance.CreateDKBalloonSprite(); state = new DKExitSignIdleState(this); BodyDefinition bodyDef = new BodyDefinition() { BottomCenter = new Vector2(150, 150), Dimensions = sprite.Dimensions }; Filter filter = new Filter(); filter.Category = (byte)Filter.Categories.Collectible; filter.Mask = (byte)Filter.Categories.Player; bodyDef.Filter = filter; body = PhysicsWorld.Instance.CreateBody(bodyDef); body.UserData = this; }
public DKRambiCrate() { state = new DKRambiCrateIdleState(this); Vector2 rambiBB = new Vector2(41, 40); //For sprint 3 Rambi crate bounding box is based on open crate, causes collisions outside its sprite. BodyDefinition bodyDef = new BodyDefinition() { BottomCenter = new Vector2(650, 150), Dimensions = rambiBB }; Filter filter = new Filter(); filter.Category = (byte)Filter.Categories.Interactive; filter.Mask = (byte)Filter.Categories.Player; bodyDef.Filter = filter; body = PhysicsWorld.Instance.CreateBody(bodyDef); body.UserData = this; }
public Rambi() { sprite = ItemSpriteFactory.Instance.CreateDKRambiIdleSprite(); state = new RambiIdleState(this); BodyDefinition bodyDef = new BodyDefinition() { BottomCenter = new Vector2(150, 150), Dimensions = sprite.Dimensions }; Filter filter = new Filter(); filter.Category = (byte)Filter.Categories.Interactive; filter.Mask = (byte)Filter.Categories.Player; bodyDef.Filter = filter; body = PhysicsWorld.Instance.CreateBody(bodyDef); //body.Dimensions = sprite.Dimensions; body.UserData = this; }
// ReSharper disable once ParameterOnlyUsedForPreconditionCheck.Local private void ValidateState(IItemState state) { if (state is NullItemState) { return; } if (state != null && state.ItemAmount < 1) { throw new ArgumentException($"Item amount can not be less than 1", nameof(state)); } if (state != null && state.ItemAmount > byte.MaxValue) { throw new ArgumentException($"Item amount can not be more than {byte.MaxValue}", nameof(state)); } }
public Task <IItemDrop> SpawnItemAsync(Vector3 position, string itemId, IItemState state = null) { ValidateState(state); async UniTask <IItemDrop> SpawnItemTask() { await UniTask.SwitchToMainThread(); RustItem item = CreateItem(itemId, state); var droppedItem = item.Item .Drop(position.ToUnityVector(), UnityVector3.zero, UnityQuaternion.identity) as DroppedItem; return(droppedItem == null ? null : new RustItemDrop(droppedItem)); } return(SpawnItemTask().AsTask()); }
private Item CreateItem(ushort id, IItemState state) { var itemAsset = (ItemAsset)Assets.find(EAssetType.ITEM, id); if (itemAsset == null || itemAsset.isPro) { return(null); } Item item = new Item(itemAsset.id, EItemOrigin.WORLD); if (state != null && !(state is NullItemState)) { item.state = state.StateData ?? itemAsset.getState(EItemOrigin.WORLD); /* item.state must not be null */ item.amount = (byte)state.ItemAmount; item.quality = (byte)state.ItemQuality; item.durability = (byte)state.ItemDurability; } return(item); }
public override void Enter(IItemState state) { Vector2 RightVelocity = new Vector2(1, 1); Vector2 LeftVelocity = new Vector2(-1, 1); if (Item is RedMushroomEntity) { if (Item.Mario.SpritePosition.X > Item.SpritePosition.X) { Item.SpriteVelocity = RightVelocity; } else { Item.SpriteVelocity = LeftVelocity; } } else { if (Item.Mario.SpritePosition.X > Item.SpritePosition.X) { Item.SpriteVelocity = LeftVelocity; } else { Item.SpriteVelocity = RightVelocity; } } //if (Item is RedMushroomEntity) //{ //} //else if (Item is GreenMushroomEntity) //{ //} }
public SuperMushroom( IWorld world, Point location, IListener <IGameObject> listener, IListener <ISoundable> soundListener, bool isUnveil = false) : base(world, location, listener, new Point(32, 32), 32) { collected = false; this.listener = listener; this.soundListener = soundListener; soundListener.Subscribe(this); SoundEventArgs = new SoundArgs(); SoundEventArgs.SetMethodCalled(); if (isUnveil) { state = new Unveil(this); UpdateSprite(); } else { state = new SuperMushroomStates.Normal(this); UpdateSprite(); } }
public Coin( IWorld world, Point location, IListener <IGameObject> listener, IListener <ISoundable> soundListener, bool isUnveil = false) : base(world, location, null, new Point(32, 32)) { listener.Subscribe(this); soundListener.Subscribe(this); collected = false; //eventually if coin needs to pass info put it in eventinfo coinEventInfo = EventArgs.Empty; SoundEventArgs = new SoundArgs(); if (isUnveil) { state = new Unveil(this); UpdateSprite(); } else { state = new Normal(this); UpdateSprite(); } }
public void ChangeItemState(IItemState newState) { CurrentItemState = newState; }
public override void Enter(IItemState state) { Item.SpriteVelocity = new Vector2(0, -1); NextState = state.NextState; }
public Task <IInventoryItem> GiveItemAsync(IInventory inventory, string itemId, IItemState state = null) { ValidateState(state); async UniTask <IInventoryItem> GiveItemTask() { await UniTask.SwitchToMainThread(); if (inventory is RustPlayerInventory playerInventory) { RustItem item = CreateItem(itemId, state); playerInventory.GiveItem(item.Item); return(new RustInventoryItem(item)); } throw new NotSupportedException($"Inventory type not supported: {inventory.GetType().FullName}"); } return(GiveItemTask().AsTask()); }
public Task <IInventoryItem> GiveItemAsync(IInventory inventory, string itemId, IItemState state = null) { async UniTask <IInventoryItem> GiveItemTask() { ValidateState(state); await UniTask.SwitchToMainThread(); if (!ushort.TryParse(itemId, out var parsedItemId)) { throw new ArgumentException($"Invalid Item ID: {itemId}", nameof(itemId)); } if (inventory is UnturnedPlayerInventory playerInventory) { var item = CreateItem(parsedItemId, state); if (item == null) { return(null); } if (!TryAddItem(item, playerInventory, out var itemJar)) { var(drop, _) = DropItem(item, playerInventory.Player.transform.position.ToSystemVector()); itemJar = drop.interactableItem.jar; } playerInventory.Inventory.forceAddItem(item, auto: true, playEffect: true); return(new UnturnedInventoryItem(itemJar, new UnturnedItem(item))); } throw new NotSupportedException($"Inventory type not supported: {inventory.GetType().FullName}"); } return(GiveItemTask().AsTask()); }
public FlagPole(Vector2 pos) { position = pos; state = new StandingFlagPoleState(this); flagFallTime = ConstantNumber.FLAG_FALLING_TIME; }
public virtual void Enter(IItemState state) { }