ActionState ProcessAction(HaulAction action) { var dir = action.Direction; if (this.ActionTicksUsed == 1) { var obs = this.Environment.GetContents(this.Location + dir); this.ActionTotalTicks = obs.OfType <LivingObject>().Count() + 2; } if (this.ActionTicksUsed < this.ActionTotalTicks) { return(ActionState.Ok); } var itemID = action.ItemID; var item = this.World.FindObject <ItemObject>(itemID); var report = new HaulActionReport(this, dir, item); if (item == null) { SendFailReport(report, "object doesn't exist"); return(ActionState.Fail); } if (this.CarriedItem == null) { SendFailReport(report, "not carrying anything"); return(ActionState.Fail); } Debug.Assert(this.CarriedItem.Container == this); if (this.CarriedItem != item) { SendFailReport(report, "already carrying another item"); return(ActionState.Fail); } var ok = MoveDir(dir); if (!ok) { SendFailReport(new HaulActionReport(this, action.Direction, item), "could not move (blocked?)"); return(ActionState.Fail); } SendReport(report); return(ActionState.Done); }
void HandleReport(HaulActionReport report) { var living = m_world.FindObject <LivingObject>(report.LivingObjectID); var itemName = GetPrintableItemName(report.ItemObjectID); if (report.Success == false) { Events.AddGameEvent(living, "{0} failed to haul {1} to {2}: {3}", living, itemName, report.Direction, report.FailReason); } //else // Events.AddGameEvent(living, "{0} hauled {1} to {2}", living, itemName, report.Direction); }
ActionState ProcessAction(HaulAction action) { var dir = action.Direction; if (this.ActionTicksUsed == 1) { var obs = this.Environment.GetContents(this.Location + dir); this.ActionTotalTicks = obs.OfType<LivingObject>().Count() + 2; } if (this.ActionTicksUsed < this.ActionTotalTicks) return ActionState.Ok; var itemID = action.ItemID; var item = this.World.FindObject<ItemObject>(itemID); var report = new HaulActionReport(this, dir, item); if (item == null) { SendFailReport(report, "object doesn't exist"); return ActionState.Fail; } if (this.CarriedItem == null) { SendFailReport(report, "not carrying anything"); return ActionState.Fail; } Debug.Assert(this.CarriedItem.Parent == this); if (this.CarriedItem != item) { SendFailReport(report, "already carrying another item"); return ActionState.Fail; } var ok = MoveDir(dir); if (!ok) { SendFailReport(new HaulActionReport(this, action.Direction, item), "could not move (blocked?)"); return ActionState.Fail; } SendReport(report); return ActionState.Done; }
void HandleReport(HaulActionReport report) { var living = m_world.FindObject<LivingObject>(report.LivingObjectID); var itemName = GetPrintableItemName(report.ItemObjectID); if (report.Success == false) Events.AddGameEvent(living, "{0} failed to haul {1} to {2}: {3}", living, itemName, report.Direction, report.FailReason); //else // Events.AddGameEvent(living, "{0} hauled {1} to {2}", living, itemName, report.Direction); }