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
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
|
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Timers;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using ShiftOS.Engine;
namespace ShiftOS.Wpf.Applications
{
/// <summary>
/// Interaction logic for ShiftoriumFrontend.xaml
/// </summary>
[Launcher("Shiftorium", true, "al_shiftorium")]
[RequiresUpgrade("shiftorium_gui")]
public partial class ShiftoriumFrontend : UserControl, IShiftOSWindow
{
public ShiftoriumFrontend()
{
InitializeComponent();
this.DataContextChanged += (o, a) =>
{
if (this.DataContext is ShiftoriumUpgrade)
{
var upg = this.DataContext as ShiftoriumUpgrade;
title.Text = upg.Name;
this.SetTitle("Shiftorium - " + upg.Name);
description.Text = upg.Description;
cost.Text = upg.Cost.ToString();
}
};
this.DataContext = new ShiftoriumUpgrade
{
Name = "Welcome to the Shiftorium",
Description = @"The Shiftorium is an application that lets you buy upgrades for ShiftOS using Codepoints.
Upgrades can be anything from new apps, to games, to system enhancements, to eyecandy, to anything else. Just be careful! The best thing to do is to buy new ways of earning Codepoints otherwise you'll find yourself unable to earn Codepoints later on.",
Cost = 0,
Dependencies = null
};
}
public void Setup()
{
lbupgrades.Items.Clear();
foreach(var itm in Shiftorium.GetAvailable())
{
lbupgrades.Items.Add(itm.Name);
}
}
public void OnLoad()
{
this.SetTitle("Shiftorium");
var t = new Timer();
t.Interval = 500;
t.Elapsed += (o,a) =>
{
try
{
currentcodepoints.Text = SaveSystem.CurrentSave.Codepoints.ToString();
}
catch { t.Stop(); }
};
t.Start();
lbupgrades.SelectionChanged += (o, a) =>
{
try
{
btnbuy.Visibility = Visibility.Visible;
this.DataContext = GetUpgradeFromName(lbupgrades.SelectedItem.ToString());
}
catch
{
}
};
btnbuy.Visibility = Visibility.Collapsed;
Setup();
}
public ShiftoriumUpgrade GetUpgradeFromName(string upg)
{
foreach(var upgrade in Shiftorium.GetDefaults())
{
if (upgrade.Name == upg)
return upgrade;
}
return null;
}
public void OnSkinLoad()
{
}
public bool OnUnload()
{
return true;
}
public void OnUpgrade()
{
codepointDisplay.Upgrade("shiftorium_gui_cp_display");
}
private void lbupgrades_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
}
private void btnbuy_Click_1(object sender, RoutedEventArgs e)
{
var upg = this.DataContext as ShiftoriumUpgrade;
Shiftorium.Silent = true;
if(Shiftorium.Buy(upg.ID, upg.Cost) == true)
{
btnbuy.Visibility = Visibility.Collapsed;
Setup();
}
else
{
Infobox.Show("Shiftorium", $"You do not have enough Codepoints to buy this upgrade. You need {upg.Cost - SaveSystem.CurrentSave.Codepoints} more.");
}
}
}
}
|