public IPickableGameActor RemoveFromInventory() { IPickableGameActor tool = Tool; Tool = null; return(tool); }
private bool PerformPickup(IAtlas atlas, ITilesetTable tilesetTable) { // check tile in front of List <GameActorPosition> targets = GetInteractableTilesInFrontOf(atlas); // if no tile, check objects if (targets.Count == 0) { targets = GetInteractableObjectsInFrontOf(atlas); } if (targets.Count == 0) { return(false); } foreach (GameActorPosition target in targets) { IPickableGameActor interactableTarget = target.Actor as IPickableGameActor; if (interactableTarget == null) { continue; } GameAction pickUpAction = new PickUp(this); interactableTarget.PickUp(atlas, pickUpAction, target.Position, tilesetTable); RemoveSpeed(target); return(true); } return(false); }
public bool AddToInventory(IPickableGameActor item) { if (Tool != null) { return(false); } Tool = item; return(true); }
public override void Resolve(GameActorPosition target, IAtlas atlas) { ICanPickGameObject picker = Sender as ICanPickGameObject; IPickableGameActor pickItem = target.Actor as IPickableGameActor; if (picker == null || pickItem == null) { return; } if (picker.AddToInventory(pickItem)) { atlas.Remove(target); } }
private void RegisterSignals() { Func <IAtlas, float> inventoryItem = x => { IPickableGameActor tool = x.GetAvatars().First().Tool; return(tool != null ? tool.TilesetId : 0); }; Func <IAtlas, float> avatarEnergy = x => { IAvatar avatar = x.GetAvatars().FirstOrDefault(); return(avatar != null ? avatar.Energy : -1); }; Func <IAtlas, float> avatarRested = x => { IAvatar avatar = x.GetAvatars().FirstOrDefault(); return(avatar != null ? avatar.Rested : -1); }; Func <IAtlas, float> puppetControl = x => { IAvatar avatar = x.GetAvatars().FirstOrDefault(); return(avatar != null ? avatar.PuppetControlled ? 1 : 0 : -1); }; SignalDispatchers = new Dictionary <string, Func <IAtlas, float> >(); SignalDispatchers.Add("Item", inventoryItem); SignalDispatchers.Add("Energy", avatarEnergy); SignalDispatchers.Add("Rested", avatarRested); SignalDispatchers.Add("Puppet", puppetControl); // if you add a new signal, change the SignalCount variable accordingly Debug.Assert(TWConfig.Instance.SignalCount == SignalDispatchers.Count, "Number of signals has to be defined in SignalCount!"); }
private void RegisterSignals() { Func <IAtlas, float> inventoryItem = x => { IPickableGameActor tool = x.GetAvatars().First().Tool; return(tool != null ? tool.TilesetId : 0); }; Func <IAtlas, float> avatarEnergy = x => { IAvatar avatar = x.GetAvatars().FirstOrDefault(); return(avatar != null ? avatar.Energy : -1); }; Func <IAtlas, float> avatarRested = x => { IAvatar avatar = x.GetAvatars().FirstOrDefault(); return(avatar != null ? avatar.Rested : -1); }; Func <IAtlas, float> puppetControl = x => { IAvatar avatar = x.GetAvatars().FirstOrDefault(); return(avatar != null ? avatar.PuppetControlled ? 1 : 0 : -1); }; Func <IAtlas, float> avatarPositionX = x => { IAvatar avatar = x.GetAvatars().FirstOrDefault(); return(avatar != null ? avatar.Position.X : 0f); }; Func <IAtlas, float> avatarPositionY = x => { IAvatar avatar = x.GetAvatars().FirstOrDefault(); return(avatar != null ? avatar.Position.Y : 0f); }; Func <IAtlas, float> avatarRotation = x => { IAvatar avatar = x.GetAvatars().FirstOrDefault(); // in radians, zero = avatar is lookning on the top return(avatar != null ? avatar.Rotation % (2 * (float)Math.PI) : 0f); }; Func <IAtlas, float> avatarReward = x => { IAvatar avatar = x.GetAvatars().FirstOrDefault(); return(avatar != null ? avatar.Reward : 0); }; SignalDispatchers = new Dictionary <string, Func <IAtlas, float> >(); SignalDispatchers.Add("Item", inventoryItem); SignalDispatchers.Add("Energy", avatarEnergy); SignalDispatchers.Add("Rested", avatarRested); SignalDispatchers.Add("Puppet", puppetControl); SignalDispatchers.Add("AbsPosX", avatarPositionX); SignalDispatchers.Add("AbsPosY", avatarPositionY); SignalDispatchers.Add("Rotation", avatarRotation); SignalDispatchers.Add("Reward", avatarReward); // if you add a new signal, change the SignalCount variable accordingly Debug.Assert(TWConfig.Instance.SignalCount == SignalDispatchers.Count, "Number of signals has to be defined in SignalCount!"); }
public bool AddToInventory(IPickableGameActor item) { if (Tool != null) return false; Tool = item; return true; }