Code Monkey home page Code Monkey logo

wowbagsimulator's People

Contributors

pawciut avatar

Watchers

 avatar

wowbagsimulator's Issues

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

okno

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>

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 photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.