-
Notifications
You must be signed in to change notification settings - Fork 0
/
ItemPricingService.as
102 lines (73 loc) · 2.04 KB
/
ItemPricingService.as
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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
package
{
//-----------------------
//Purpose: Service logic for dealing with Item object prices
//
//Public Properties:
//
//Public Methods:
//
//-----------------------
public class ItemPricingService
{
// Constants //
public static const PRICE_MOD_PERCENT:Array = [ -100, -15, -10, -5, 0, 5, 10, 15 ];
public static const PRICE_MOD_TRASH:int = 0;
public static const PRICE_MOD_LOWEST:int = 1;
public static const PRICE_MOD_LOWER:int = 2;
public static const PRICE_MOD_LOW:int = 3;
public static const PRICE_MOD_STANDARD:int = 4;
public static const PRICE_MOD_HIGH:int = 5;
public static const PRICE_MOD_HIGHER:int = 6;
public static const PRICE_MOD_HIGHEST:int = 7;
//- Constants -//
// Public Properties //
public function get time():Time
{
return _time;
}
public function set time(value:Time):void
{
_time = value;
}
//- Public Properties -//
// Private Properties //
private var _time:Time;
//- Private Properties -//
// Initialization //
public function ItemPricingService(time:Time = null)
{
_time = time;
}
//- Initialization -//
// Public Methods //
// returns the item's price, or -1 if the item cannot be bought or sold
public function GetItemPrice(item:IItem):int
{
if (item == null)
{
return -1;
}
var iPrice:int = -1;
var iPriceModPercent:int = ItemPricingService.PRICE_MOD_PERCENT[item.priceModifier];
if (item is IConstantPrice)
{
var oConstantPriceItem:IConstantPrice = IConstantPrice(item);
iPrice = oConstantPriceItem.GetPrice();
iPrice += (iPrice * (iPriceModPercent / 100));
}
else if (item is ISeasonalPrice)
{
var oSeasonalPriceItem:ISeasonalPrice = ISeasonalPrice(item);
iPrice = oSeasonalPriceItem.GetPrice(_time.season);
iPrice += (iPrice * (iPriceModPercent / 100));
}
return iPrice;
}
//- Public Methods -//
// Private Methods //
//- Private Methods -//
// Testing Methods //
//- Testing Methods -//
}
}