wowbagsimulator's People
wowbagsimulator's Issues
Sprawdzanie czy można dodać (plecaki nie są zapełnione)
sprawdzanie czy plecaki nie sa zapelnione przy dodawaniu (uwzgledniajac stacki)
oraz aktualizacja informacji w plecakach
Wyświetlanie przedmiotów ktore mozna wsadzic do plecakow
Ikonki dostepne w WIKI
Dodawanie przedmiotu do plecaków (przycisk add)
Podpiąć Command do przycisku Add, obsłużyć zdarzenie dodawania i dodać do BagItems.
Poprawne przeliczanie czy powinien zostać utworzony nowy stack, czy jest wystarczająco miejsca w plecaku i aktualizacja zajętości będzie w kolejnym zadaniu
Identyfikacja podstawowych struktur
Przeanalizować jeszcze nie implementować
Na pewno bedzie potrzebna informacja o:
- Dostępnych przedmiotach do włożenia do plecka (AvailableItems)
- Przedmiotach w plecakach (BagItems)
- Rodzajach toreb żeby je wyświetlić na pasku statusu w wyborze dla slotu (BagTypes)
- Informacja o wybranych elemencie do wsadzenia do torby
- Rodzaj torby w bag slot 1
- Rodzaj torby w bag slot 2
- Sumaryczna ilość wolnego miejsca
- Sumaryczna ilość zajętego miejsca
Co za tym idzie:
- Struktura ItemSlot, która będzie miałą informację co tutaj siedzi, CurrentStacks, Item (Nie mylic z bag slot, tutaj chodzi już konkretne zajęte miejsce w torbach a nie rodzaj wybranej rotby 1 lub 2)
- Item bedzie potrzebowac informacji o ikonie, nazwie, liczbie Maksymalnych stackow przedmiotu (MaxStacks)
- Typ torby, który będzie miał informacje Nazwa torby, ilość miejsca jaka zapewnia torba
Do zastanowienia co jeszcze bedze potrzebne
Wygląd okna (layout)
Wstępny wygląd okna
Struktura w projekcie w oparciu o MVVM (katalog Views z MainWindow i katalog ViewModels)
Proponowany układ okna (do uzupełnienia)
`
<Grid DockPanel.Dock="Top">
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<ListView Grid.RowSpan="2">
<ListView.ItemTemplate>
<DataTemplate>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Image Width="32" />
<TextBlock Grid.Column="1" />
</Grid>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
<Grid Grid.Column="2">
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
</Grid>
<ItemsControl Grid.Column="2"
Grid.Row="1">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Button>
<Grid>
<Image Width="32" />
<TextBlock />
</Grid>
</Button>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</Grid>
</DockPanel>`
Zwrócić uwagę, że w kontrolce z elementami w plecaku jest zaproponowany przycisk, jest to po to zrobione, żeby można było utworzyć w przyszlosci Command i usuwać przyciski z plecaka poprzez klikanie na nie.
Uwaga używając kontrolki DockPanel, jeżeli chcemy żeby StatusBar był na dole,mały a reszta nad nim to StatusBar musi być jako pierwszy element pod elementem XAML
w ten sposób:
<DockPanel> <StatusBar DockPanel.Dock="Bottom"> </StatusBar> ... </DockPanel>
Po zmianie wyboru toreb na pasku statusu powinna się aktualizować informacja o dostępnych miejscach na itemy
Prawdopodobnie bedzie potrzeba użyć tutaj BindableBase żeby powiadamiać, że wybór się zmienił
Znane typy toreb i ich wybór w pasku statusu (wraz z ikonkami)
Ikonki dostepne w WIKI
Sprawdzanie stackow przy dodawaniu
Przy dodawaniu trzeba sprawdzic czy taki element juz istnieje w plecaku czy jest jakis item slot dla ktorego currentAmount jest rożne od MaxStack tego przedmiotu, jesli tak to mozna zwiekszyc currentAmount, jesli nie to dodajemy nowy obiekt w kolnym item slocie
Usuwanie z plecaka *
Jako, że obiekty w plecaku mogą być wyświetlone jako przycisk z szablonem kontrolki, to możemy się podpiać do komendy tego przycisku i usunąć wybrany obiekt z plecaka, żeby to zrobić trzeba będzie przekazać do komendy parametr.
Żeby to zrobić trzeba będzie zrozumieć i wykorzystać:
DelegateCommand
https://msdn.microsoft.com/en-us/library/gg431410(v=pandp.50).aspx
MVVMCommand
https://msdn.microsoft.com/en-us/library/gg405484(v=pandp.40).aspx
CommandParameter
https://stackoverflow.com/questions/8154202/pass-command-parameter-from-the-xaml
(prawdopodobnie wysarczy zbindować do datacontextu czyli CommandParameter={Binding} i wtedy przekaże DataContext dla przycisku
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.