Cem Ugur Karacam рджреНрд╡рд╛рд░рд╛ MVC рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд░ рд▓реЗрдЦреЛрдВ рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХреЛ рдкреВрд░рд╛ рдХрд░рдирд╛, рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдпреЛрдЧреНрдп рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХрддрд╛ рдореЗрдВред рдЖрдк рдкрд┐рдЫрд▓реЗ рднрд╛рдЧреЛрдВ рдХреЛ
рдпрд╣рд╛рдБ рдФрд░
рдпрд╣рд╛рдБ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВред

рдпрд╣ рд╣рдорд╛рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХрд╛ рдЕрдВрддрд┐рдо рдЪрд░рдг рд╣реИред
рдореИрдВрдиреЗ рдПрдХрддрд╛ рдореЗрдВ рдПрдорд╡реАрд╕реА рд╡рд░реНрдХрдлрд╝реНрд▓реЛ рдХреЛ рдЪрд┐рддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрд░реЗрдЦ рдмрдирд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреАред

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

рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдкреИрдирд▓ рд╣реИ, рдЖрдЗрдЯрдо рдХреЗ рдЖрдЗрдХрди рдХреЗ рд▓рд┐рдП рдПрдХ рдЫрд╡рд┐ рд╡рд╕реНрддреБ рдФрд░ рд╣рдорд▓реЗ рдХрд╛ рдирд╛рдо, рдкреНрд░рдХрд╛рд░ рдФрд░ рддрд╛рдХрдд рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреАрди рдкрд╛рда рдСрдмреНрдЬреЗрдХреНрдЯред рдЗрди рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП,
InfoView
рдирд╛рдордХ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдПрдХ рд╡рд░реНрдЧ
InfoView
рдФрд░ рдЗрд╕реЗ рджреГрд╢реНрдп рдореЗрдВ рдЬреЛрдбрд╝реЗрдВред

рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рддрддреНрд╡реЛрдВ рдХреЗ рд▓рд┐рдВрдХ рдЬреЛрдбрд╝реЗрдВред
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class InfoView : MonoBehaviour { public Image icon; public Text nameText; public Text typeText; public Text attackText; }
рдлрд┐рд░ рдЗрдирдкреБрдЯ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЗрди рддрддреНрд╡реЛрдВ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрдирд┐рдЯ рд╡рд┐рдзрд┐ рдмрдирд╛рдПрдВред
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class InfoView : MonoBehaviour { public Image icon; public Text nameText; public Text typeText; public Text attackText; public void Init(ItemData data) { icon.sprite = data.icon; nameText.text = data.name; attackText.text = "Attack Power: " + data.attack; switch (data.type) { case ItemType.Axe: typeText.text = "Type: Axe"; break; case ItemType.Dagger: typeText.text = "Type: Dagger"; break; case ItemType.Hammer: typeText.text = "Type: Hammer"; break; case ItemType.Potion: typeText.text = "Type: Potion"; break; } } }
рдЕрдм рд╕рдВрдкрд╛рджрдХ рдореЗрдВ рдлрд╝реАрд▓реНрдб рдЕрд╕рд╛рдЗрди рдХрд░реЗрдВред

рд╣рдо рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рдкреНрд░реАрдлрд╝реИрдм рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реИрдВред рдореИрдВрдиреЗ
Resources
рдирд╛рдордХ рдПрдХ рдлреЛрд▓реНрдбрд░ рдмрдирд╛рдпрд╛ред рдпрд╣ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдлрд╝реЛрд▓реНрдбрд░ рд╣реИ рдЬреЛ рдПрдХрддрд╛ рдХреЛ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдПрдкреАрдЖрдИ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЗрд╕рд╕реЗ рдлрд╛рдЗрд▓реЗрдВ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
Resources
рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рд╣рдорд╛рд░реЗ рдкреНрд░реАрдлрд╝реИрдм рд░рдЦреЗрдВред

рдЪреВрдВрдХрд┐ рдореИрдВ
InfoView
рдЙрдкрдпреЛрдЧ рдХрд░реВрдВрдЧрд╛, рдЗрд╕рд▓рд┐рдП рдореИрдВ рджреГрд╢реНрдп рд╕реЗ
InfoView
рд╣рдЯрд╛
InfoView
ред

рдирд┐рдпрдВрддреНрд░рдХ рдЦреЛрд▓рдиреЗ рдХрд╛ рд╕рдордпред
рдореИрдВ рдПрдХ рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдЪрд░
InfoView
, рдпрд╣
InfoView
рд▓рд┐рдП рдХрд┐ рдЗрд╕ рджреГрд╢реНрдп рдХреЗ рд▓рд┐рдП рдХреМрди рд╕реА рд╡рд╕реНрддреБ рдорд╛рддрд╛-рдкрд┐рддрд╛ рд╣реЛрдЧреА, рдФрд░ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдХреЗ рд▓рд┐рдП рдЬрд╛рдирдХрд╛рд░реА
InfoView
рд▓рд┐рдП рд▓рд┐рдВрдХ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдирд┐рдЬреА рдЪрд░ред
using System.Collections; using System.Collections.Generic; using UnityEngine; public class ItemViewController : MonoBehaviour { public Inventory inventoryHolder; public Transform inventoryViewParent; public Transform infoViewParent; private GameObject infoViewPrefab; private GameObject itemViewPrefab; private void Start() { itemViewPrefab = (GameObject)Resources.Load("Item"); infoViewPrefab = (GameObject)Resources.Load("InfoView"); } }
рдЖрдЗрдП рдПрдХ рджреГрд╢реНрдп рдореЗрдВ рджреГрд╢реНрдп рдХреЗ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рдзрд┐ рд▓рд┐рдЦреЗрдВред
private void CreateInfoView(ItemData data) { var infoGO = GameObject.Instantiate(infoViewPrefab, infoViewParent); infoGO.GetComponent<InfoView>().Init(data); }
рдореИрдВ C # рдореЗрдВ рдШрдЯрдирд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдпрд╣
ItemView
рдХреЛ рдкрд╛рд╕ рдХрд░
ItemView
ред рдЗрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдереЛрдбрд╝рд╛
ItemView
ред
using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class ItemView : MonoBehaviour { public Button button; public Image itemIcon; private ItemData itemData; public void InitItem(ItemData item, Action<ItemData> callback) { this.itemData = item; itemIcon.sprite = itemData.icon; button.onClick.AddListener(() => callback(itemData) ); } }
рдореИрдВрдиреЗ рд╡рд┐рдзрд┐ рдкрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ рдЬреЛрдбрд╝рд╛ред рдФрд░ рдЕрдм рдЖрдк рдирд┐рдпрдВрддреНрд░рдХ рдХреЛ рдХрдиреЗрдХреНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
using System.Collections; using System.Collections.Generic; using UnityEngine; public class ItemViewController : MonoBehaviour { public Inventory inventoryHolder; public Transform inventoryViewParent; public Transform infoViewParent; private GameObject infoViewPrefab; private GameObject itemViewPrefab; private void Start() { itemViewPrefab = (GameObject)Resources.Load("Item"); infoViewPrefab = (GameObject)Resources.Load("InfoView"); foreach (var item in inventoryHolder.inventory) { var itemGO = GameObject.Instantiate(itemViewPrefab, inventoryViewParent); itemGO.GetComponent<ItemView>().InitItem(item, CreateInfoView); } } private void CreateInfoView(ItemData data) { var infoGO = GameObject.Instantiate(infoViewPrefab, infoViewParent); infoGO.GetComponent<InfoView>().Init(data); } }
рдкреНрд░рд╛рд░рдВрдн рд╡рд┐рдзрд┐ рдореЗрдВ, рдореИрдВ рдЖрдЗрдЯрдо рдХреЗ рд╕рд╛рде рдЗрдиреНрд╡реЗрдВрдЯреНрд░реА рдХреЛ рднрд░рддрд╛ рд╣реВрдВ, рдФрд░ рдЬрдм рдЖрдк рдЙрдирдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдПрдХ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ
CreateInfoView
рд╡рд┐рдзрд┐ рдХреЛ
CreateInfoView
рдЬрд╛рдПрдЧрд╛ред рд▓реЗрдХрд┐рди рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рд╣рдо рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рд╢реБрд░реВ рдХрд░реЗрдВ, рдореИрдВ рдЖрдкрдХреЛ рдПрдХ рд╕рдорд╕реНрдпрд╛ рдХреА рдУрд░ рдЗрд╢рд╛рд░рд╛ рдХрд░рддрд╛ рд╣реВрдВред рдирд┐рдпрдВрддреНрд░рдХ рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рдХрд┐ рдХреНрдпрд╛ рд╣рдордиреЗ рдкрд╣рд▓реЗ
InfoView
рдмрдирд╛рдпрд╛ рд╣реИред рдЪрд▓реЛ рдЗрд╕реЗ рдареАрдХ рдХрд░рддреЗ рд╣реИрдВред
using System.Collections; using System.Collections.Generic; using UnityEngine; public class ItemViewController : MonoBehaviour { public Inventory inventoryHolder; public Transform inventoryViewParent; public Transform infoViewParent; private GameObject infoViewPrefab; private GameObject itemViewPrefab; private GameObject infoView; private void Start() { itemViewPrefab = (GameObject)Resources.Load("Item"); infoViewPrefab = (GameObject)Resources.Load("InfoView"); foreach (var item in inventoryHolder.inventory) { var itemGO = GameObject.Instantiate(itemViewPrefab, inventoryViewParent); itemGO.GetComponent<ItemView>().InitItem(item, CreateInfoView); } } private void CreateInfoView(ItemData data) { if (infoView != null) { Destroy(infoView); } infoView = GameObject.Instantiate(infoViewPrefab, infoViewParent); infoView.GetComponent<InfoView>().Init(data); } }
рд╣рдордиреЗ рдЬрд╛рдирдХрд╛рд░реА
infoView
рдЪрд░ рдмрдирд╛рдпрд╛ рдФрд░ рджреГрд╢реНрдп рдореЗрдВ
InfoView
рдХрд╛ рдПрдХ рдирдпрд╛ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ред
рдЗрд╕рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рддреЗ рд╣реИрдВред

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдордиреЗ рдпрд╣ рдХрд┐рдпрд╛!
GitHub рдкрд░ рдкрд░рд┐рдпреЛрдЬрдирд╛ред
рдпреЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдпреЛрдЧреНрдп рд╡рд╕реНрддреБрдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХрддрд╛ рдореЗрдВ MVC рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреА рдореВрд▓ рдмрд╛рддреЗрдВ рд╣реИрдВред рд▓реЗрдХрд┐рди рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдХрд┐рд╕реА рднреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдПрдХ рд╕рдорд╛рди рджреГрд╖реНрдЯрд┐рдХреЛрдг рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, REST рдХреЙрд▓ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп, рдпрд╣ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдЖрдкрдХреЛ рдмрд╣реБрдд рд╕рдордп рдмрдЪрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдХреЛрдб рдХреЛ рдПрдХреНрд╕реНрдЯреЗрдВрд╕рд┐рдмрд▓ рд░рдЦ рд╕рдХрддрд╛ рд╣реИред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдПрдХрддрд╛ рдореЗрдВ рдХреЛрдб рдХреЗ рд╕рд╛рде рджреГрд╢реНрдп рд╡рд╕реНрддреБрдУрдВ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдирд╛ рдФрд░ рдЙрдирдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдХрд╛рдлреА рдореБрд╢реНрдХрд┐рд▓ рд╣реЛрддрд╛ рд╣реИред рдХреЛрдИ рд╡реНрдпрдХреНрддрд┐ рдЖрдкрддреНрддрд┐ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдХрд╣ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЗрди рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЖрдк рд╕рд┐рдВрдЧрд▓рдЯрди рдЯреЗрдореНрдкрд▓реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╣рд╛рдВ, рдЬрд┐рд╕ рд╡рд┐рдзрд┐ рдХрд╛ рдореИрдВрдиреЗ рд╡рд░реНрдгрди рдХрд┐рдпрд╛ рд╣реИ рд╡рд╣ рдХреЗрд╡рд▓ рдПрдХ рд╣реА рдирд╣реАрдВ рд╣реИ, рдмрд▓реНрдХрд┐ рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫреА рд╣реИред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдмрд┐рд▓реНрдХреБрд▓ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рддрдм рд╣рдо рдордзреНрдп рдпреБрдЧ рд╕реЗ рдЕрд▓рдЧ рдирд╣реАрдВ рд╣реЛрдВрдЧреЗред :)
рдХрд┐рд╕реА рднреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдЪреВрдВрдХрд┐ рд▓реЗрдЦреЛрдВ рдХреА рдпрд╣ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдкреВрд░реА рд╣реЛ рдЧрдИ рд╣реИ, рдореЗрд░рд╛ рд╕реБрдЭрд╛рд╡ рд╣реИ рдХрд┐ рдЖрдк рдореЗрд░реЗ рдЕрдиреНрдп рдЧреНрд░рдВрдереЛрдВ рдХреЛ рдкрдврд╝реЗрдВ, рдЬреЛ рдПрдорд╡реАрд╕реА рдкреИрдЯрд░реНрди рдФрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдпреЛрдЧреНрдп рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреА рдмрд╛рдд рдХрд░рддреЗ рд╣реИрдВ:
рдПрдХрддрд╛ рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдиреЛрдб рдФрд░ рдПрдХреНрд╕рдкреНрд░реЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рдЕрдиреНрдп рд╕реЗрд╡рд╛ рдмрдирд╛рдирд╛ ред
рд╡рд╣ рд╕рдм рд╣реИред рдЕрдЪреНрдЫрд╛ рдХреЛрдбрд┐рдВрдЧ!