рд╣рдо рдХреБрдЫ рдирд┐рдпрдореЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдорд╛рдиреНрдпрддрд╛ рдкреНрд░рд╛рдкреНрдд рдЫрд╡рд┐ рдкрд░ рд╕рд╛рдордЧреНрд░реА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВ

рдХрднреА-рдХрднреА, рдЬрдм рдЖрдк рдХрд┐рд╕реА рддрдХрдиреАрдХреА рдХрд╛рд░реНрдп рдХреЛ рдкрдврд╝рддреЗ рд╣реИрдВ рдФрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП рд╕рдордп рд╕реАрдорд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдореЗрдВ рдЦрд░реНрдЪ рдХрд┐рдП рдЧрдП рд╕рдордп рдФрд░ рдкреНрд░рдпрд╛рд╕ рдХреА рдорд╛рддреНрд░рд╛ рдХреЛ рдХрдо рдЖрдВрдХреЗрдВред рдРрд╕рд╛ рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдПрдХ рдмрд┐рдВрджреБ, рдЬреЛ рдкреНрд░рддрд┐ рд╕рдкреНрддрд╛рд╣ рдХреЗ рд╕рдордп рдХрд╛ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдПрдХ рдШрдВрдЯреЗ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдХрднреА-рдХрднреА рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрддред рд▓реЗрдХрд┐рди рдпрд╣ рд▓реЗрдЦ рдЙрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд╣реИред рдпрд╣ рдПрдХ рд╕рдорд╕реНрдпрд╛ рдХреЗ рд╕рдорд╛рдзрд╛рди рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХрд╛ рдПрдХ рдкреНрд░рджрд░реНрд╢рди рд╣реИред рдЗрд╕рдХреЗ рдЖрд░рдВрдн рд╕реЗ рд▓реЗрдХрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рддрдХред



рдкреНрд░рдпреБрдХреНрдд рд╢рдмреНрдж


  • рдорд╛рд░реНрдХ рдпрд╛ рдорд╛рд░реНрдХрд░ - рдПрдЖрд░-рдЗрдВрдЬрди рдореЗрдВ рд▓реЛрдб рдХреА рдЧрдИ рдПрдХ рдЫрд╡рд┐, рдЬрд┐рд╕реЗ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рдХреИрдорд░реЗ (рдЯреИрдмрд▓реЗрдЯ рдпрд╛ рд╕реНрдорд╛рд░реНрдЯрдлреЛрди) рд╕реЗ рдкрд╣рдЪрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкрд╣рдЪрд╛рди рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ


  • рдорд┐рд▓рд╛ - рдорд╛рд░реНрдХрд░ рд╕реНрдерд┐рддрд┐ рдЬрдм рдЗрд╕реЗ рдХреИрдорд░реЗ рдХреЗ рджреЗрдЦрдиреЗ рдХреЗ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдкрддрд╛ рдЪрд▓рд╛ рдерд╛


  • рдЦреЛрдпрд╛ - рдорд╛рд░реНрдХрд░ рд░рд╛рдЬреНрдп рдЬрдм рдпрд╣ рдХреИрдорд░реЗ рдХреЗ рджреГрд╢реНрдп рд╕реЗ рдЦреЛ рдЧрдпрд╛ рдерд╛


  • рдЗрд╕реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ - рдЬрдм рдорд╛рд░реНрдХрд░ рдкрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╣рдо рдорд╛рд░реНрдХрд░ рд╕реЗ рдЬреБрдбрд╝реА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВ


  • рдкреНрд░рджрд░реНрд╢рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ - рдЬрдм рд╣рдо рдорд╛рд░реНрдХрд░ рдкрд╛рддреЗ рд╣реИрдВ, рддреЛ рд╕рд╛рдордЧреНрд░реА рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ - рдорд╛рд░реНрдХрд░ рд╕реЗ рдЬреБрдбрд╝реА рд╕рд╛рдордЧреНрд░реА - рдХрд┐рд╕реА рднреА рд╡рд╕реНрддреБ (3 рдбреА рдореЙрдбрд▓, рд╕реНрдкреНрд░рд╛рдЗрдЯ, рдХрдг рдкреНрд░рдгрд╛рд▓реА, рдЖрджрд┐) рдЬреЛ рдорд╛рд░реНрдХрд░ рд╕реЗ рдЬреБрдбрд╝реА рд╣реЛ рд╕рдХрддреА рд╣реИ рдФрд░, рдЬреЛ, рддрджрдиреБрд╕рд╛рд░, рдкреНрд░рджрд░реНрд╢рд┐рдд рдХреА рдЬрд╛рдПрдЧреАред рдпрджрд┐ рд╕реНрдХреНрд░реАрди рдкрд░ рдорд╛рд░реНрдХрд░ рдкрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ


  • рдорд╛рд░реНрдХ, рдорд╛рд░реНрдХрд░, рдкрд╛рдпрд╛, рдЦреЛ рдЧрдпрд╛ - рд╕рднреА рд░рд╛рдЬреНрдпреЛрдВ рдореЗрдВ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд░рд╛рдЬреНрдп рдЬреЛ рдорд╛рдиреНрдпрддрд╛ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВ


  • рдпрд╣ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ - рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдиреЗ рд╡рд╛рд▓рд╛ рд░рд╛рдЬреНрдп


    рдПрдХ рдЙрджрд╛рд╣рд░рдг:


    • рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдВ => рд╕рднреА рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдП рдЧрдП рдмреНрд░рд╛рдВрдб рдкрд╣рдЪрд╛рдирдиреЗ рдпреЛрдЧреНрдп рд╣реИрдВ
    • рд╣рдо рдкрд╣рдЪрд╛рдирдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВ => рдорд╛рд░реНрдХрд░ рдХреА рд╕реНрдерд┐рддрд┐ "рдкрд╛рдпрд╛" рдореЗрдВ рдмрджрд▓ рдЬрд╛рддреА рд╣реИ
    • рдпрджрд┐ рдорд╛рд░реНрдХрд░ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ => рд░рд╛рдЬреНрдп рдХреЛ "рдкрд╛рдпрд╛" рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рд╣рдо рдорд╛рд░реНрдХрд░ рд╕реЗ рдЬреБрдбрд╝реЗ рдореЙрдбрд▓ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВ
    • рдпрджрд┐ рдорд╛рд░реНрдХрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ => рдорд╛рд░реНрдХрд░ рдХреА рд╕реНрдерд┐рддрд┐ "рдорд┐рд▓реА" рд╣реИ, рд▓реЗрдХрд┐рди рд╕рдВрд▓рдЧреНрди рдореЙрдбрд▓ рдкреНрд░рджрд░реНрд╢рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ
    • рдХреИрдорд░реЗ рдХреЗ рджреЗрдЦрдиреЗ рдХреЗ рдХреНрд╖реЗрддреНрд░ рд╕реЗ рдмреНрд░рд╛рдВрдб рдЧрд╛рдпрдм рд╣реЛ рдЧрдпрд╛ = рд╣рдо рд░рд╛рдЬреНрдп рдХреЛ "рдЦреЛ" рдореЗрдВ рдмрджрд▓ рджреЗрддреЗ рд╣реИрдВ


рдкрд░рд┐рдЪрдп


рдП 4 рд╢реАрдЯ рдХреЗ рдЖрдХрд╛рд░ рдХрд╛ рдПрдХ рдмрдбрд╝рд╛ рдкреЛрд╕реНрдЯрдХрд╛рд░реНрдб рд╣реИред рдЗрд╕реЗ 4 рдмрд░рд╛рдмрд░ рднрд╛рдЧреЛрдВ (рдПрдХ рднрд╛рдЧ A5 рдХрд╛ рдкреНрд░рд╛рд░реВрдк) рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрди рднрд╛рдЧреЛрдВ рдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдкрд░ рд╣реИ:


  • рдПрдХ рдкреВрд░реНрдг рдХреЛрдиреЗ рдХрд╛ рдирд┐рд╢рд╛рди (1)
  • рдиреАрдЪреЗ рдХреА рдУрд░ рдХреЗ рдирд┐рд╢рд╛рди рдХрд╛ рдПрдХ рдЖрдзрд╛ (5)
  • рд╢реАрд░реНрд╖ рдкрдХреНрд╖ рдХреЗ рдирд┐рд╢рд╛рди рдХрд╛ рдПрдХ рдЖрдзрд╛ (8)
  • рдХреНрд╡рд╛рд░реНрдЯрд░ рд╕реЗрдВрдЯрд░ рдорд╛рд░реНрдХ (9)

рдЫрд╡рд┐


рдпрджрд┐ рдЖрдкрдиреЗ рдХрд┐рд╕реА рдорд╛рдиреНрдпрддрд╛ рдЗрдВрдЬрди рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд┐рдпрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╡реБрдлреЛрд░рд┐рдпрд╛, рддреЛ рдЖрдк рд╢рд╛рдпрдж рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ "рдорд╛рдиреНрдпрддрд╛ рдЧреБрдгрд╡рддреНрддрд╛" рдЬреИрд╕реА рдХреЛрдИ рдЪреАрдЬ рдирд╣реАрдВ рд╣реИред рдирд┐рд╢рд╛рди рдпрд╛ рддреЛ рдкрд╣рдЪрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВ рдкрд╣рдЪрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИред рддрджрдиреБрд╕рд╛рд░, рдпрджрд┐ рдЗрдВрдЬрди "рдмреНрд░рд╛рдВрдб" рджреЗрдЦрддрд╛ рд╣реИ, рддреЛ рд╡рд╣ рд╕реНрдерд┐рддрд┐ рдХреЛ Find рд▓рд┐рдП рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ OnSuccess() рд╡рд┐рдзрд┐ OnSuccess() , рдЕрдЧрд░ рдпрд╣ "рдЦреЛ" рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд░рд╛рдЬреНрдп Lost рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ OnLost() рд╡рд┐рдзрд┐ OnLost() ред рддрджрдиреБрд╕рд╛рд░, рдореМрдЬреВрджрд╛ рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдФрд░ рдЗрдирдкреБрдЯ рдбреЗрдЯрд╛ рд╕реЗ, рдХрд╛рд░реНрдб рдХреЗ рдПрдХ рд╣рд┐рд╕реНрд╕реЗ (рдЖрдзрд╛ рдпрд╛ рдПрдХ рдЪреМрдерд╛рдИ) рд╣реЛрдиреЗ рдкрд░ рдПрдХ рд╕реНрдерд┐рддрд┐ рдЙрддреНрдкрдиреНрди рд╣реБрдИ, рдЬрд┐рд╕рд╕реЗ рдмреНрд░рд╛рдВрдб рдХреЛ рдкрд╣рдЪрд╛рдирдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЧрдпрд╛ред


рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рддрдХрдиреАрдХреА рдХрд╛рд░реНрдп рдХреЗ рдЕрдиреБрд╕рд╛рд░, рд╡рд░реНрдгреЛрдВ рдХреЗ рдХреНрд░рдорд┐рдХ рдЕрдирд▓реЙрдХрд┐рдВрдЧ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛рдИ рдЧрдИ рдереАред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдПрдХ рдХреНрд░рдорд┐рдХ рдЕрдирд▓реЙрдХрд┐рдВрдЧ рд╕рдВрднрд╡ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рдРрд╕реЗ рд▓реЛрдЧ рдирд╣реАрдВ рд╣реИрдВ рдЬреЛ рдмреНрд░рд╛рдВрдб рдХреЗ рдПрдХ рдЪреМрдерд╛рдИ рдпрд╛ рдЖрдзреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЛ рдкрд╣рдЪрд╛рдирдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВред


рдХрд╛рд░реНрдп рд╡рд┐рд╡рд░рдг


рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛрдб рдХреЗ рд░реВрдк рдореЗрдВ рддрд░реНрдХ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдЬреЛ рдорд╛рд░реНрдХрд░реЛрдВ рд╕реЗ рдЬреБрдбрд╝реА рд╕рд╛рдордЧреНрд░реА рдХреЗ рдХреНрд░рдорд┐рдХ рдЕрдирд▓реЙрдХрд┐рдВрдЧ рдХреЛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИред рдХрд╛рд░реНрдб рдкрд░ рддрддреНрд╡реЛрдВ рдХреЗ рд╕реНрдерд╛рди рд╕реЗ рдпрд╣ рдЬреНрдЮрд╛рдд рд╣реИ рдХрд┐ рдорд╛рд░реНрдХрд░ 1, 2, 3, 4 рд╢реБрд░реВ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реИрдВред


рдЫрд╡рд┐


рдпрджрд┐ рд╕рд╛рдордЧреНрд░реА рдХреЛ 2 рдорд╛рд░реНрдХрд░реЛрдВ рдкрд░ рдкрдврд╝рд╛ рдФрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, 2 рдФрд░ 3, рддреЛ рд╣рдо рдорд╛рд░реНрдХрд░ 6 рдкрд░ рд╕рд╛рдордЧреНрд░реА рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВред рдпрджрд┐ рдорд╛рд░реНрдХрд░ 1 рдЕрднреА рддрдХ рдкрдврд╝рд╛ рдирд╣реАрдВ рдЧрдпрд╛ рд╣реИ, рддреЛ рдорд╛рд░реНрдХрд░ 5 рддрдХ рдкрд╣реБрдВрдЪ рдмрдВрдж рд╣реИред рд╕рд╛рджреГрд╢реНрдп рджреНрд╡рд╛рд░рд╛ рдЖрдЧреЗред рд╣рдо рд╕рд╛рдЗрдб рдорд╛рд░реНрдХрд░реЛрдВ рдкрд░ рд╕рд╛рдордЧреНрд░реА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рддрднреА рджреЗрддреЗ рд╣реИрдВ рдЬрдм рд╣рдордиреЗ рдЖрд╕рдиреНрди рдХреЛрдиреЗ рдорд╛рд░реНрдХрд░реЛрдВ рдХреЛ рдкрдврд╝рд╛ рд╣реЛред


рдЫрд╡рд┐


рдпрджрд┐ 1 рд╕реЗ 8 рддрдХ рдХреЗ рдорд╛рд░реНрдХрд░ рдЙрдкрд▓рдмреНрдз рд╣реИрдВ рдФрд░ рдкрд╛рдП рдЬрд╛рддреЗ рд╣реИрдВ, рддреЛ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд▓рд┐рдП рдорд╛рд░реНрдХрд░ 9 рдкрд░ рд╕рд╛рдордЧреНрд░реА рдЦреЛрд▓реЗрдВред рдкреНрд░рддреНрдпреЗрдХ рдорд╛рд░реНрдХрд░ рдореЗрдВ 2 рд░рд╛рдЬреНрдп рд╣реИрдВ - рд╕рд╛рдордЧреНрд░реА рдЙрдкрд▓рдмреНрдз рд╣реИ рдФрд░ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИ, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП public bool IsActive; рдлрд╝реАрд▓реНрдб рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИ public bool IsActive;


рдпрд╣ рддреБрд░рдВрдд рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдпрд╣ рдпрд╛ рддреЛ рд░рд╛рдЬреНрдпреЛрдВ рдХреЗ рдмреАрдЪ рдПрдХ рд╕рдВрдХреНрд░рдордг рдХреЗ рд╕рд╛рде рдПрдХ рд░рд╛рдЬреНрдп рдорд╢реАрди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдпрд╛ "рд░рд╛рдЬреНрдп" рдкреИрдЯрд░реНрди рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред


рд╕реНрдкреЙрдЗрд▓рд░

рдирддреАрдЬрд╛ рдПрдХ рдирд╣реАрдВ, рджреВрд╕рд░рд╛ рдирд╣реАрдВ рдерд╛ред рдореИрдВ рдпрд╣ рдирд╣реАрдВ рдХрд╣ рд╕рдХрддрд╛ рдХрд┐ рдпрд╣ рдПрдХ рдмреИрд╕рд╛рдЦреА рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд▓реЗрдЦ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рд╕рдорд╛рдзрд╛рди рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЖрдк рдореБрдЭрд╕реЗ рдмрд╣рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред


рдЗрд╕ рдкрд░, рдореИрдВ рдЖрдкрдХреЛ рдЗрд╕ рдХрд╛рд░реНрдп рдХреЗ рд╕рдВрднрд╛рд╡рд┐рдд рд╕рдорд╛рдзрд╛рдиреЛрдВ рдФрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝рд╛ рд╕реЛрдЪрдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рджреЗрддрд╛ рд╣реВрдВред рдирд┐рд░реНрдгрдп рдХреА рддрд╕реНрд╡реАрд░ рдХреЛ рдорд╣рд╕реВрд╕ рдХрд░рдиреЗ рдФрд░ рдЙрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдореЗрдВ рдореБрдЭреЗ рд▓рдЧрднрдЧ 5 рдШрдВрдЯреЗ рд▓рдЧреЗред


рд╕реНрдкрд╖реНрдЯрддрд╛ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдПрдХ рд╡реАрдбрд┐рдпреЛ рд░рд┐рдХреЙрд░реНрдб рдХрд┐рдпрд╛ рдЬрд┐рд╕ рдкрд░ рдПрд▓реНрдЧреЛрд░рд┐рдердо рдХрд╛ рдЕрдВрддрд┐рдо рдкрд░рд┐рдгрд╛рдо (рдпрджрд┐ рдЖрдк рдЗрд╕реЗ рдХреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ) рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХрдмреНрдЬрд╛ рдХрд░ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред



рд╕рдорд╛рдзрд╛рди рджреГрд╖реНрдЯрд┐рдХреЛрдг


1. рдХреЛрдиреЗ рдорд╛рд░реНрдХрд░реЛрдВ рд╕реЗ рдХреЗрдВрджреНрд░ рддрдХ


рдкрд╣рд▓реА рдмрд╛рдд рдЬреЛ рджрд┐рдорд╛рдЧ рдореЗрдВ рдЖрдИ рд╡рд╣ рдереА рдХреЛрдиреЗ рд╕реЗ рдХреЗрдВрджреНрд░ рддрдХ рдорд╛рд░реНрдХрд░реЛрдВ рдХреЗ рдмреАрдЪ рдХреА рдмрд╛рддрдЪреАрдд рдХреЛ рдкреЗрд╢ рдХрд░рдирд╛ред рдЪрд┐рддреНрд░рдордп рд░реВрдк рдореЗрдВ, рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:


рдЫрд╡рд┐


рд╕рдорд╕реНрдпрд╛рдПрдВ:


  1. рд░рд╛рдЬреНрдп рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕ рдкрдХреНрд╖ рдХреЗ рд▓реЗрдмрд▓ рдХрд╛ рдирд┐рд░реНрдзрд╛рд░рдг рдХреИрд╕реЗ рдХрд░реЗрдВ? рдмрд╛рдИрдВ рддрд░рдл рдпрд╛ рджрд╛рдИрдВ рдУрд░ рдПрдХ? рд╣рдо рдкреНрд░рддреНрдпреЗрдХ рдорд╛рд░реНрдХрд░ рдХреЛ рдПрдХ рдХреЗрдВрджреНрд░реАрдп рдЕрд╕реНрддрд┐рддреНрд╡ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ "рдкрддрд╛" рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░рддреЗ рд╣реИрдВред
  2. рд╢реНрд░реЗрдгреА рд╕реЗ рдЧреИрд░-рд╕реНрдкрд╖реНрдЯ рдирд┐рд░реНрднрд░рддрд╛ рдЬреЛрдбрд╝рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ: рд╕рд╛рдЗрдб рдорд╛рд░реНрдХрд░ IsChangedEventCallback () рдХреЛрдиреЗ рдорд╛рд░реНрдХрд░ рдЗрд╡реЗрдВрдЯ рдХреА рд╕рджрд╕реНрдпрддрд╛ рд▓реЗрддрд╛ рд╣реИ, рдХреЗрдВрджреНрд░реАрдп рдорд╛рд░реНрдХрд░ рдХреЗ рд▓рд┐рдП рднреА рдЗрд╕реА рддрд░рд╣ рдХреА рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдПред
  3. рдпрджрд┐ рд╣рдо рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рдХрд╛рд░ рдХреЗ рдорд╛рд░реНрдХрд░ рдХреЛ рдПрдХ рдЗрдХрд╛рдИ рдорд╛рдирддреЗ рд╣реИрдВ, рддреЛ рдЗрди рд╕рдВрд╕реНрдерд╛рдУрдВ рдХреЗ рдкрджрд╛рдиреБрдХреНрд░рдо рдореЗрдВ рд╣рдо рдиреАрдЪреЗ рд╕реЗ рдКрдкрд░ рддрдХ рд░рд╛рдЬреНрдп-рдкрд░рд┐рд╡рд░реНрддрди рдХрдорд╛рдВрдб рдХреЛ рдЕрдЧреНрд░реЗрд╖рд┐рдд рдХрд░реЗрдВрдЧреЗред рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╣рдо рдХрд╕рдХрд░ рдЦреБрдж рдХреЛ рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд╕рд╛рде рдмрд╛рдВрдзрддреЗ рд╣реИрдВ, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдХреЛрдгреАрдп рдорд╛рд░реНрдХрд░, рд╕реНрдХреЗрд▓ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдЦреЛ рджреЗрддреЗ рд╣реИрдВред

рдХрдИ рдХрд┐рдирд╛рд░реЗ рдХреЗ рдорд╛рдорд▓реЛрдВ рдФрд░ рдзрд╛рд░рдгрд╛ рдХреА рдЬрдЯрд┐рд▓рддрд╛ рдХреЗ рдХрд╛рд░рдг рдЙрдкрд░реЛрдХреНрдд рд╕рдорд╛рдзрд╛рди рдХреЛ рдореЗрд░реЗ рд╕рд┐рд░ рдореЗрдВ рд░рдЦрдиреЗ рдореЗрдВ рдЕрд╕рдорд░реНрде, рдореИрдВрдиреЗ рдЙрд╕ рдорд╛рд░реНрдХрд░ рдХреЛ рдЪреБрдирдиреЗ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЛ рдмрджрд▓ рджрд┐рдпрд╛, рдЬрд┐рд╕ рдкрд░ рдирд┐рд░реНрднрд░рддрд╛ рдлреИрд▓рдиреЗ рд▓рдЧрддреА рд╣реИред


2. рдкрд╛рд░реНрд╢реНрд╡ рдХреЛ рдордзреНрдп рдФрд░ рдХреЛрдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрддрд╛ рд╣реИ


рдкрд┐рдЫрд▓реЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рдкреИрд░рд╛рдЧреНрд░рд╛рдл 3 рдХреЗ рд╕рдорд╛рдзрд╛рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрдХрд░, рдорд╛рд░реНрдХрд░ рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рдЪрд╛рд░ рдЖрдпрд╛, рдЬрд┐рд╕рд╕реЗ рдЕрдиреНрдп рдорд╛рд░реНрдХрд░реЛрдВ рдХреА рд╕реНрдерд┐рддрд┐ рдмрджрд▓рдиреЗ рд▓рдЧрддреА рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рдореБрдЦреНрдп рд╕рд╛рдЗрдб рдорд╛рд░реНрдХрд░реЛрдВ рдХреЛ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред рдЗрд╕ рдкрд░рд┐рджреГрд╢реНрдп рдореЗрдВ, рд╕рдВрдЪрд╛рд░ (рдирд┐рд░реНрднрд░рддрд╛рдПрдБ) рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддреА рд╣реИрдВ:


рдЫрд╡рд┐


рдпрд╣рд╛рдБ рд╕реЗ рдпрд╣ рддреБрд░рдВрдд рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рд▓реЗрдЯрд░рд▓ рд╕реЗ рд╕реЗрдВрдЯреНрд░рд▓ рддрдХ рдХреЗ рдХрдиреЗрдХреНрд╢рди рдмрд╣реБрдд рдХрдо рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рд▓реЗрдЯрд░рд▓ рдорд╛рд░реНрдХрд░ рдХреЛ рд╕реЗрдВрдЯреНрд░рд▓ рдорд╛рд░реНрдХрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рднреА рдЬрд╛рдирдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рддреБрд░рдВрдд рдЕрдВрддрд┐рдо рдореЗрдВ рдмрджрд▓ рдЧрдпрд╛ рдерд╛ред


3. рдХреЗрдВрджреНрд░реАрдп рд╡реНрдпрдХреНрддрд┐ рд╕рднреА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирддрд╛ рд╣реИ, рдкрдХреНрд╖ рд╡рд╛рд▓реЗ рдХреЛрдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирддреЗ рд╣реИрдВ


рдЫрд╡рд┐


рдЕрдВрддрд┐рдо рд╕рдорд╛рдзрд╛рди рддрдм рд╣реЛрддрд╛ рд╣реИ рдЬрдм рд╕рд╛рдЗрдб рдорд╛рд░реНрдХрд░ рдХреЛрдиреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирддрд╛ рд╣реИ, рдХреЛрдиреЗ "рдЕрдкрдирд╛ рдЬреАрд╡рди рдЬреАрддреЗ рд╣реИрдВ", рдФрд░ рдХреЗрдВрджреНрд░реАрдп рдПрдХ рд╕рднреА рдорд╛рд░реНрдХрд░реЛрдВ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирддрд╛ рд╣реИред


рдЫрд╡рд┐


рдкреЛрд╕реНрдЯрдХрд╛рд░реНрдб рджреГрд╢реНрдп рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдирд╣реАрдВ рд╣реИред рд╕рдВрд╕реНрдерд╛рдУрдВ рдХреЗ рдмреАрдЪ рдХреЗ рд░рд┐рд╢реНрддреЗ рдЗрддрдиреЗ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рджрд┐рдЦрддреЗ рд╣реИрдВ рдХрд┐ рдЖрд╕рд╛рдиреА рд╕реЗ рдЗрд╕реЗ рдХреЛрдб рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░ рд╕рдХреЗрдВред рдПрдХ рджреНрд╡рд┐рдЖрдзрд╛рд░реА рд╡реГрдХреНрд╖ рдХреЗ рд░реВрдк рдореЗрдВ рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХреБрдЫ рдЕрд╕реНрдкрд╖реНрдЯрддрд╛ рдХрд╛ рдкрд░рд┐рдЪрдп рджреЗ рд╕рдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ рдмрд╛рдЗрдирд░реА рдЯреНрд░реА рдХреЗ рдЧреБрдгреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХрд╛ рдЙрд▓реНрд▓рдВрдШрди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЕрд╕реНрдкрд╖реНрдЯрддрд╛ рддреБрд░рдВрдд рдЧрд╛рдпрдм рд╣реЛ рдЬрд╛рддреА рд╣реИред рдЬрд┐рд╕рд╕реЗ рд╣рдо рдпрд╣ рдирд┐рд╖реНрдХрд░реНрд╖ рдирд┐рдХрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЗрд╕ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХреА рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ рдФрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕рдорд╕реНрдпрд╛ рдХреЗ рд╕рдорд╛рдзрд╛рди рдХрд╛ рд░реЗрдЦрд╛рдВрдХрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрди рдирд┐рд╖реНрдХрд░реНрд╖реЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рд╣рдо рдЧреНрд░рд╛рдл рдЕрдВрдХрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ, рдЕрд░реНрдерд╛рддреН:


  • рдХреЛрдг рдорд╛рд░реНрдХрд░ - рдХреЛрдг рдиреЛрдб (рд╕реНрддрд░ 3)
  • рд╕рд╛рдЗрдб рдорд╛рд░реНрдХрд░ - рд╕рд╛рдЗрдб рдиреЛрдб (рд╕реНрддрд░ 2)
  • рдХреЗрдВрджреНрд░ рдорд╛рд░реНрдХрд░ - рдХреЗрдВрджреНрд░ рдиреЛрдб (рд╕реНрддрд░ 1)

рдлрд╛рдпрджреЗ:


  1. рдорд╛рд░реНрдХрд░реЛрдВ рдХреЗ рдмреАрдЪ рдирд┐рд░реНрднрд░рддрд╛ рд╕реНрдкрд╖реНрдЯ рдФрд░ рд╕реНрдкрд╖реНрдЯ рд╣реИред
  2. рдкреНрд░рддреНрдпреЗрдХ рд╕реНрддрд░ рдХреЛ 3 рд╕рдВрд╕реНрдерд╛рдУрдВ рдХреЗ рд░реВрдк рдореЗрдВ рджрд░реНрд╢рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдореЗрдВ рдореВрд▓ рднрд╛рдЧ рд╣реЛрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЙрдирдХреЗ рдЬреЛрдбрд╝ рдкреНрд░рддреНрдпреЗрдХ рд╕реНрддрд░ рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реЛрддреЗ рд╣реИрдВ
  3. рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдХреЗрд╡рд▓ рдЕрдкрдиреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдирдП рдкреНрд░рдХрд╛рд░ рдХреЗ рдиреЛрдб рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА
  4. рдпрд╣ рд╕рдорд╛рдзрд╛рди рдПрдХ OO (рдСрдмреНрдЬреЗрдХреНрдЯ-рдУрд░рд┐рдПрдВрдЯреЗрдб) рд╢реИрд▓реА рдореЗрдВ рдХрд▓реНрдкрдирд╛ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИ

рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди


рдЖрдзрд╛рд░ рд╕рдВрд╕реНрдерд╛рдПрдБ


рдЖрдЗрдП рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдмрдирд╛рдПрдВ рдЬрд┐рд╕рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдЗрдХрд╛рдИ (рдирд╛рдо, рд╕реНрдерд┐рддрд┐) рдореЗрдВ рдирд┐рд╣рд┐рдд рддрддреНрд╡ рд╢рд╛рдорд┐рд▓ рд╣реЛрдВ:


 public interface INode { string Name { get; set; } bool IsActive { get; set; } } 

рдЕрдЧрд▓рд╛, рд╣рдо рдкреНрд░рддреНрдпреЗрдХ рдиреЛрдб рдХреЗ рд╕рд╛рд░ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реИрдВ:


  • рдХреЙрд░реНрдирд░рдиреЛрдб - рдПрдХ рдХреЛрдгреАрдп рдиреЛрдбред рдмрд╕ INode рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд▓рд╛рдЧреВ рдХрд░реЗрдВ:

 public class CornerNode : INode { public string Name { get; set; } public bool IsActive { get; set; } public Node(string name) { Name = name; IsActive = true; } } 

рдХреНрдпреЛрдВ IsActive = true ?


рдЬрд╡рд╛рдм рд╣реИ

рд╕рдорд╕реНрдпрд╛ рдХреА рд╕реНрдерд┐рддрд┐рдпреЛрдВ рд╕реЗ, рдХреЛрдиреЗ рдорд╛рд░реНрдХрд░реЛрдВ рдХреА рд╕рд╛рдордЧреНрд░реА рд╢реБрд░реВ рдореЗрдВ рдорд╛рдиреНрдпрддрд╛ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реИред


  • рд╕рд╛рдЗрдбрдиреЛрдб - рдПрдХ рд╕рд╛рдЗрдб рдиреЛрдбред рд╣рдо INode рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди LeftCornerNode рдФрд░ RightCornerNode ред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╕рд╛рдЗрдб рдиреЛрдб рдЕрдкрдиреЗ рд░рд╛рдЬреНрдп рдХреЛ рдЕрдкрдиреЗ рдЖрдк рдореЗрдВ рд░рдЦрддрд╛ рд╣реИ рдФрд░ рдХреЗрд╡рд▓ рд╕рд╛рдЗрдб рдиреЛрдбреНрд╕ рдХреЗ рдЕрд╕реНрддрд┐рддреНрд╡ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирддрд╛ рд╣реИред

 public class SideNode : INode { public string Name { get; set; } public bool IsActive { get; set; } public CornerNode LeftCornerNode { get; } public CornerNode RightCornerNode { get; } public SideNode(string name, CornerNode leftNode, CornerNode rightNode) { Name = name; IsActive = false; LeftCornerNode = leftNode; RightCornerNode = rightNode; } } 

  • CenterNode рдХреЗрдВрджреНрд░реАрдп рдиреЛрдб рд╣реИред рдкрд┐рдЫрд▓реЗ рд╡рд╛рд▓реЗ рдХреА рддрд░рд╣, рд╣рдо INode рд▓рд╛рдЧреВ INode ред List<INode> рдХрд╛ рдПрдХ рдХреНрд╖реЗрддреНрд░ рдЬреЛрдбрд╝реЗрдВ List<INode> ред

 public class CentralNode : INode { public List<INode> NodesOnCard; public string Name { get; set; } public bool IsActive { get; set; } public CentralNode(string name) { Name = name; IsActive = false; } } 

рдУрдкрди рдХреНрд▓рд╛рд╕


рдирд┐рдЬреА рддрд░реАрдХреЗ рдФрд░ рдХреНрд╖реЗрддреНрд░


рдЕрдм рдЬрдм рд╣рдордиреЗ рдХрд╛рд░реНрдб рдХреЗ рд╕рднреА рддрддреНрд╡реЛрдВ рдХреЛ рдмрдирд╛рдпрд╛ рд╣реИ (рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рдорд╛рд░реНрдХрд░), рд╣рдо рдХрд╛рд░реНрдб рдХреЗ рд╕рд╛рд░ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдореБрдЭреЗ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЗ рд╕рд╛рде рдХреНрд▓рд╛рд╕ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреА рдЖрджрдд рдирд╣реАрдВ рд╣реИред рдореИрдВ рд╣рдореЗрд╢рд╛ рдЙрди рдореВрд▓ рддрд░реАрдХреЛрдВ рд╕реЗ рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реВрдВ рдЬреЛ рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рдЗрдХрд╛рдИ рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реИрдВред рдирд┐рдЬреА рдХреНрд╖реЗрддреНрд░реЛрдВ рдФрд░ рдирд┐рдЬреА рддрд░реАрдХреЛрдВ рд╕реЗ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред


 private List<CornerNode> cornerNodes; private List<SideNode> sideNodes; private CentralNode centralNode; 

рдЦреЗрддреЛрдВ рдХреЗ рд╕рд╛рде, рд╕рдм рдХреБрдЫ рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИред рдХреЛрдгреАрдп, рд╕рд╛рдЗрдб рдиреЛрдбреНрд╕ рдФрд░ рдХреЗрдВрджреНрд░реАрдп рдиреЛрдб рдХреЗ рдПрдХ рдХреНрд╖реЗрддреНрд░ рдХреЗ рд╕рд╛рде 2 рд╕реВрдЪрд┐рдпрд╛рдВред


рдЖрдЧреЗ рдЖрдкрдХреЛ рдереЛрдбрд╝рд╛ рд╕реНрдкрд╖реНрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдорд╛рд░реНрдХрд░ рд╕реНрд╡рдпрдВ Trackable рдФрд░ рдЗрд╕рдХрд╛ рдХреЛрдИ рдкрддрд╛ рдирд╣реАрдВ рд╣реИ (рдФрд░ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП) рдХрд┐ рдпрд╣ рд╡рд╣рд╛рдВ рдХрд┐рд╕реА рдЕрдиреНрдп рддрд░реНрдХ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рд╣рдо рдЬреЛ рднреА рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рд╡рд╣ рдЙрд╕рдХрд╛ рдирд╛рдо рд╣реИред рддрджрдиреБрд╕рд╛рд░, рдпрджрд┐ рдорд╛рд░реНрдХрд░ рд╕реНрд╡рдпрдВ рдЙрд╕ рдиреЛрдб рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдХреЗ рдЕрдВрддрд░реНрдЧрдд рд╡рд╣ рдЖрддрд╛ рд╣реИ, рддреЛ рд╣рдореЗрдВ рдЗрд╕ рдЬрд┐рдореНрдореЗрджрд╛рд░реА рдХреЛ рдЕрдкрдиреЗ OpenCard рд╡рд░реНрдЧ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдЗрд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рд╣рдо рдкрд╣рд▓реЗ 3 рдирд┐рдЬреА рддрд░реАрдХреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдиреЛрдб рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИрдВред


 private bool IsCentralNode(string name) { return name == centralNode.Name; } private bool IsSideNode(string name) { foreach (var sideNode in sideNodes) if (sideNode.Name == name) return true; return false; } private bool IsCornerNode(string name) { foreach (var sideNode in cornerNodes) if (sideNode.Name == name) return true; return false; } 

рд▓реЗрдХрд┐рди рдЗрди рддрд░реАрдХреЛрдВ рдХрд╛ рд╕реАрдзрд╛ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИред рдЬрдм рдЖрдк рдЕрдореВрд░реНрдд рдХреЗ рджреВрд╕рд░реЗ рд╕реНрддрд░ рдХреА рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ рддреЛ рдмреБрд▓рд┐рдпрди рдореВрд▓реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рд╣рдо рдПрдХ рд╕рд░рд▓ enum NodeType рдФрд░ рдПрдХ рдирд┐рдЬреА рд╡рд┐рдзрд┐ GetNodeType() , рдЬреЛ рдиреЛрдб рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рд╕реЗ рдЬреБрдбрд╝реЗ рд╕рднреА рддрд░реНрдХ рдХреЛ рдЕрдкрдиреЗ рдЖрдк рдореЗрдВ GetNodeType() рджреЗрддрд╛ рд╣реИред


 public enum NodeType { CornerNode, SideNode, CentralNode } private NodeType? GetNodeType(string name) { if (IsCentralNode(name)) return NodeType.CentralNode; if (IsSideNode(name)) return NodeType.SideNode; if (IsCornerNode(name)) return NodeType.CornerNode; return null; } 

рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рддрд░реАрдХреЗ


  • IsExist рдПрдХ рдРрд╕реА рд╡рд┐рдзрд┐ рд╣реИ рдЬреЛ рдПрдХ рдмреВрд▓рд┐рдпрди рдорд╛рди рд▓реМрдЯрд╛рддреА рд╣реИ рдЬреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ рдХрд┐ рд╣рдорд╛рд░рд╛ рдмреНрд░рд╛рдВрдб рдкреЛрд╕реНрдЯрдХрд╛рд░реНрдб рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ рдпрд╛ рдирд╣реАрдВред рдпрд╣ рдПрдХ рд╕рд╣рд╛рдпрдХ рд╡рд┐рдзрд┐ рд╣реИ, рдЬреЛ рдЗрд╕рд▓рд┐рдП рдХреА рдЬрд╛рддреА рд╣реИ рдХрд┐ рдпрджрд┐ рдорд╛рд░реНрдХрд░ рдХрд┐рд╕реА рдХрд╛рд░реНрдб рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдирд╣реАрдВ рд╣реИ, рддреЛ рд╣рдо рдЙрд╕ рдкрд░ рд╕рд╛рдордЧреНрд░реА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

 public bool IsExist(string name) { foreach (var node in centralNode.NodesOnCard) if (node.Name == name) return true; if (centralNode.Name == name) return true; return false; } 

  • CheckOnActiveAndChangeStatus - рдПрдХ рд╡рд┐рдзрд┐ (рдЬреИрд╕рд╛ рдХрд┐ рдирд╛рдо рдХрд╛ рдЕрд░реНрде рд╣реИ) рдЬрд┐рд╕рдореЗрдВ рд╣рдо рдиреЛрдб рдХреА рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рдХреА рдЬрд╛рдВрдЪ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕рдХреА рд╕реНрдерд┐рддрд┐ рдмрджрд▓рддреЗ рд╣реИрдВред

 public bool CheckOnActiveAndChangeStatus(string name) { switch (GetNodeType(name)) { case NodeType.CornerNode: foreach (var node in cornerNodes) if (node.Name == name) return node.IsActive = true; return false; case NodeType.SideNode: foreach (var node in sideNodes) if (node.LeftCornerNode.IsActive && node.RightCornerNode.IsActive) return true; return false; case NodeType.CentralNode: foreach (var node in centralNode.NodesOnCard) if (!node.IsActive) return false; return centralNode.IsActive = true; default: return false; } } 

рдбрд┐рдЬрд╛рдЗрдирд░


рдЬрдм рд╕рднреА рдХрд╛рд░реНрдб рдЯреЗрдмрд▓ рдкрд░ рд╣реЛрддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдЕрдВрдд рдореЗрдВ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЗ рдкрд╛рд╕ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдЖрд░рдВрднреАрдХрд░рдг рдХреЗ рдХрдИ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ OpenCard рдХреЛ рдЕрдирд╛рд╡рд╢реНрдпрдХ рдЗрд╢рд╛рд░реЛрдВ рд╕реЗ рдЬрд┐рддрдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЙрддрдирд╛ рдореБрдХреНрдд рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ред рдпрд╣ рд╣рдорд╛рд░реЗ рд╕рд╛рде рдЬрд╡рд╛рдм рджреЗрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рд╕рд╛рдордЧреНрд░реА рдкреНрд░рджрд░реНрд╢рди рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реИ рдпрд╛ рдирд╣реАрдВред рдЗрд╕рд▓рд┐рдП, рд╣рдо рдХреЗрд╡рд▓ 2 рдкреНрд░рдХрд╛рд░ рдФрд░ рдПрдХ рдХреЗрдВрджреНрд░реАрдп рдиреЛрдб рдХреЗ рдиреЛрдбреНрд╕ рдХреА рдЗрдирдкреБрдЯ рд╕реВрдЪреА рдХреЗ рд▓рд┐рдП рдкреВрдЫрддреЗ рд╣реИрдВред


 public OpenCard(List<CornerNode> listCornerNode, List<SideNode> listSideNode, CentralNode centralNode) { CornerNodes = listCornerNode; SideNodes = listSideNode; CentralNodes = centralNode; CentralNodes.NodesOnCard = new List<INode>(); foreach (var node in CornerNodes) CentralNodes.NodesOnCard.Add(node); foreach (var node in SideNodes) CentralNodes.NodesOnCard.Add(node); } 

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЪреВрдВрдХрд┐ рдХреЗрдВрджреНрд░реАрдп рдиреЛрдб рдХреЛ рдХреЗрд╡рд▓ рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдХрд┐ рдЕрдиреНрдп рд╕рднреА true рдиреЛрдбреНрд╕, рдпрд╣ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд░реВрдк INode рдХреЛрдг рдФрд░ рдХреЗрдВрджреНрд░реАрдп рдиреЛрдбреНрд╕ рдореЗрдВ INode рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ рдЬреЛ INode рдореЗрдВ INode рдкреНрд░рдХрд╛рд░ рдореЗрдВ рдЖрдпрд╛ рд╣реИред


рдкреНрд░рд╛рд░рдВрдн


рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рддрд░реАрдХрд╛ рдХреНрдпрд╛ рд╣реИ рдЬреЛ MonoBehaviour рд▓рд┐рдП рд╕рдВрд▓рдЧреНрди рд╣реЛрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ (рдЬреИрд╕реЗ MonoBehaviour рдШрдЯрдХреЛрдВ)? - рд╕рд╣реА, ScriptableObject ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП, MenuItem рд╡рд┐рд╢реЗрд╖рддрд╛ рдЬреЛрдбрд╝реЗрдВ, рдЬреЛ рдирдП рдХрд╛рд░реНрдб рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЛ рд╕рд░рд▓ рдХрд░реЗрдЧрд╛ред


 [CreateAssetMenu(fileName = "Open Card", menuName = "New Open Card", order = 51)] public class OpenCardScriptableObject : ScriptableObject { public string leftDownName; public string rightDownName; public string rightUpName; public string leftUpName; public string leftSideName; public string rightSideName; public string downSideName; public string upSideName; public string centralName; } 

рд╣рдорд╛рд░реА рд░рдЪрдирд╛ рдореЗрдВ рдЕрдВрддрд┐рдо рдХреЙрд░реНрдб рдЬреЛрдбрд╝рд╛ (рдпрджрд┐ рдХреЛрдИ рд╣реИ) ScriptableObject рдФрд░ рдЙрдирд╕реЗ рдкреЛрд╕реНрдЯрдХрд╛рд░реНрдб рдХреЗ рдирд┐рд░реНрдорд╛рдг рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХ рдорд╛рд░реНрдЧ рд╣реЛрдЧрд╛ред рдЙрд╕рдХреЗ рдмрд╛рдж, рдпрд╣ рд╣рдорд╛рд░реЗ рд▓рд┐рдП Update рдкрджреНрдзрддрд┐ рдореЗрдВ рдпрд╣ рдЬрд╛рдВрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рд░рд╣рддрд╛ рд╣реИ рдХрд┐ рд╣рдо рд╕рд╛рдордЧреНрд░реА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрд╛ рдирд╣реАрдВред


 public OpenCardScriptableObject[] openCards; private List<OpenCard> _cardList; void Awake() { if (openCards.Length != 0) { _cardList = new List<OpenCard>(); foreach (var card in openCards) { var leftDown = new CornerNode(card.leftDownName); var rightDown = new CornerNode(card.rightDownName); var rightUp = new CornerNode(card.rightUpName); var leftUp = new CornerNode(card.leftUpName); var leftSide = new SideNode(card.leftSideName, leftUp, leftDown); var downSide = new SideNode(card.downSideName, leftDown, rightDown); var rightSide = new SideNode(card.rightSideName, rightDown, rightUp); var upSide = new SideNode(card.upSideName, rightUp, leftUp); var central = new CentralNode(card.centralName); var nodes = new List<CornerNode>() {leftDown, rightDown, rightUp, leftUp}; var sideNodes = new List<SideNode>() {leftSide, downSide, rightSide, upSide}; _cardList.Add(new OpenCard(nodes, sideNodes, central)); } } } void Update() { var isNotPartCard = false; foreach (var card in _cardList) { if (card.IsExist(trackableName)) isNotPartCard = true; if (card.CheckOnActiveAndChangeStatus(trackableName)) imageTrackablesMap[trackableName].OnTrackSuccess(trackable); if (!isNotPartCard) imageTrackablesMap[trackableName].OnTrackSuccess(trackable); } } 

рдирд┐рд╖реНрдХрд░реНрд╖


рдореЗрд░реЗ рд▓рд┐рдП рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ, рдирд┐рд╖реНрдХрд░реНрд╖ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдереЗ:


  1. рдХрд┐рд╕реА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╕рдордп, рдЖрдкрдХреЛ рдЗрд╕рдХреЗ рддрддреНрд╡реЛрдВ рдХреЛ рдкрд░рдорд╛рдгреБ рднрд╛рдЧреЛрдВ рдореЗрдВ рддреЛрдбрд╝рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреА рд╣реЛрдЧреАред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЗрди рдкрд░рдорд╛рдгреБ рднрд╛рдЧреЛрдВ рдХреЗ рдмреАрдЪ рдмрд╛рддрдЪреАрдд рдХреЗ рд╕рднреА рд╕рдВрднрд╛рд╡рд┐рдд рд╡рд┐рдХрд▓реНрдкреЛрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рддреЗ рд╣реБрдП, рдЖрдкрдХреЛ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╕реЗ рдЕрдзрд┐рдХ рдХрдиреЗрдХреНрд╢рди рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рдЖрдПрдВрдЧреЗред рдПрдХ рдЕрдиреНрдп рддрд░реАрдХреЗ рд╕реЗ, рдЗрд╕реЗ рдирд┐рдореНрди рд░реВрдк рдореЗрдВ рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: рдРрд╕реЗ рддрддреНрд╡реЛрдВ рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдирд╛ рдЬреЛ рд╕рдВрднрд╡рддрдГ, рдХрдо рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд╣реЛрдВрдЧреЗ
  2. рдпрджрд┐ рд╕рдВрднрд╡ рд╣реЛ, рддреЛ рдЖрдкрдХреЛ рд╕реНрд░реЛрдд рдбреЗрдЯрд╛ рдХреЛ рдПрдХ рдЕрд▓рдЧ рд░реВрдк рдореЗрдВ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЧреНрд░рд╛рдл рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдиреЗ рдореБрдЭреЗ рдмрд╣реБрдд рдорджрдж рдХреАред
  3. рдкреНрд░рддреНрдпреЗрдХ рдЗрдХрд╛рдИ рдХреЛ рдЙрди рдХрдиреЗрдХреНрд╢рдиреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╕реЗ рдЕрд▓рдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рдЗрд╕рд╕реЗ рдЖ рд╕рдХрддреЗ рд╣реИрдВред
  4. рдХрдИ рд▓рд╛рдЧреВ рдХрд┐рдП рдЧрдП рдХрд╛рд░реНрдп рдЬреЛ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рд▓рд┐рдЦрдХрд░ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рдкреНрд░рдерд╛рдЧрдд рд╣реИрдВ, рдЙрдиреНрд╣реЗрдВ рдУрдУ рд╢реИрд▓реА рдореЗрдВ рджрд░реНрд╢рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
  5. рдПрдХ рд╕рдорд╛рдзрд╛рди рдЬрд┐рд╕рдореЗрдВ рд░рд┐рдВрдЧ рдирд┐рд░реНрднрд░рддрд╛ рд╣реИ, рдПрдХ рдмреБрд░рд╛ рд╕рдорд╛рдзрд╛рди рд╣реИ
  6. рдпрджрд┐ рдЖрдкрдХреЗ рд╕рд┐рд░ рдореЗрдВ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдмреАрдЪ рд╕рднреА рдХрдиреЗрдХреНрд╢рди рд░рдЦрдирд╛ рдХрдард┐рди рд╣реИ, рддреЛ рдпрд╣ рдПрдХ рдмреБрд░рд╛ рдирд┐рд░реНрдгрдп рд╣реИ
  7. рдпрджрд┐ рдЖрдк рд╡рд╕реНрддреБрдУрдВ рдХреА рдкрд░рд╕реНрдкрд░ рдХреНрд░рд┐рдпрд╛ рдХреЗ рддрд░реНрдХ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рдирд╣реАрдВ рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВ - рдпрд╣ рдПрдХ рдмреБрд░рд╛ рдирд┐рд░реНрдгрдп рд╣реИ
  8. рдЖрдкрдХреА рдмреИрд╕рд╛рдЦреА рд╣рдореЗрд╢рд╛ рдПрдХ рдмреБрд░рд╛ рдирд┐рд░реНрдгрдп рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ

рдХреНрдпрд╛ рдЖрдк рдПрдХ рдФрд░ рдЙрдкрд╛рдп рдЬрд╛рдирддреЗ рд╣реИрдВ? - рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рд▓рд┐рдЦреЗрдВред

Source: https://habr.com/ru/post/hi454452/


All Articles