-
Notifications
You must be signed in to change notification settings - Fork 0
/
Table.cs
54 lines (45 loc) · 1.36 KB
/
Table.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
// <copyright file="Table.cs" company="Brian Rogers">
// Copyright (c) Brian Rogers. All rights reserved.
// </copyright>
namespace Adventure.Sample
{
internal sealed class Table : Item
{
private readonly Room parent;
private bool tableMoved;
public Table(MessageBus bus, Room parent)
: base(bus)
{
this.parent = parent;
}
public override string ShortDescription => "a table";
public override string LongDescription => "It is an ordinary wooden table.";
protected override bool TakeCore()
{
this.Output("It is too heavy.");
return false;
}
protected override bool DoCore(MessageBus bus, Word verb, Word noun)
{
if (verb.Primary == Verb.Move)
{
this.Move(bus);
return true;
}
return base.DoCore(bus, verb, noun);
}
private void Move(MessageBus bus)
{
if (!this.tableMoved)
{
this.tableMoved = true;
this.Output("You move the table slightly. Underneath you see a coin.");
this.parent.Add(Noun.Coin, new Coin(bus));
}
else
{
this.Output("Someone has already moved it.");
}
}
}
}