1- //! # Simulation Module
2- //! Dron simulasyon nesnelerini oluşturan, yöneten modül enstrümanlarını içerir
3- //!
4- //! ## Structs
5- //! * `SimulationController`
6-
71use crate :: data:: * ;
82use crate :: model:: * ;
93use rand:: Rng ;
104use std:: fs:: File ;
115use std:: io:: Write ;
126
7+ /// # SimulationController Yapısı
8+ ///
9+ /// SimulationController, drone'ları yöneten ve simülasyon işlemlerini gerçekleştiren bir yapıdır.
10+ ///
11+ /// ## Fields
12+ ///
13+ /// * `drones: Vec<Drone>` - Simülasyonda bulunan drone'ların listesini tutar.
14+ ///
15+ /// ## Methods
16+ ///
17+ /// * `new()` - Yeni bir SimulationController nesnesi oluşturur.
18+ /// * `load(drone_count: i32)` - Sahaya belirtilen sayıda drone yükler.
19+ /// * `get_count()` - Sahada bulunan drone sayısını döndürür.
20+ /// * `get_random()` - Sahada bulunan drone'lar arasından rastgele bir drone döndürür.
21+ /// * `save(path: &str)` - Sahadaki drone'ları belirtilen dosyaya kaydeder.
22+ /// * `load_from(path: &str)` - Belirtilen dosyadan sahaya drone'lar yükler.
23+ ///
24+ /// ## Examples
25+ /// ```rust
26+ /// use crate::controller::SimulationController;
27+ /// let mut simulator = SimulationController::new();
28+ /// let load_result = simulator.load(10);
29+ /// let drone_count = simulator.get_count();
30+ /// assert_eq!(drone_count, 10);
31+ /// let random_drone = simulator.get_random();
32+ /// assert!(random_drone.id < 10);
33+ /// let save_result = simulator.save("drones.txt");
34+ /// assert!(save_result.is_ok());
35+ /// let load_result = simulator.load_from("drones.txt");
36+ /// assert!(load_result.is_ok());
37+ /// ```
1338#[ allow( dead_code) ]
1439pub struct SimulationController < ' a > {
1540 drones : Vec < Drone < ' a > > ,
1641}
1742
1843#[ allow( dead_code) ]
1944impl SimulationController < ' _ > {
45+ /// # Constructor Metot
46+ ///
47+ /// Yeni bir SimulationController nesnesi oluşturur.
48+ ///
49+ /// ## Returns
50+ /// * `SimulationController:` Yeni oluşturulan SimulationController nesnesini döndürür.
51+ ///
52+ /// ## Examples
53+ /// ```rust
54+ /// use crate::controller::SimulationController;
55+ ///
56+ /// let simulator = SimulationController::new();
57+ /// ```
2058 pub fn new ( ) -> Self {
2159 SimulationController { drones : Vec :: new ( ) }
2260 }
@@ -58,14 +96,72 @@ impl SimulationController<'_> {
5896 }
5997 true
6098 }
99+
100+ /// # Drone Sayısını Alma Fonksiyonu
101+ ///
102+ /// Sahada bulunan drone sayısını döndürür.
103+ ///
104+ /// ## Returns
105+ /// * `usize:` Sahada bulunan drone sayısını döndürür.
106+ ///
107+ /// ## Examples
108+ /// ```rust
109+ /// use crate::controller::SimulationController;
110+ ///
111+ /// let mut simulator = SimulationController::new();
112+ /// let load_result = simulator.load(10);
113+ /// let drone_count = simulator.get_count();
114+ /// assert_eq!(drone_count, 10);
115+ /// ```
61116 pub fn get_count ( & self ) -> usize {
62117 self . drones . len ( )
63118 }
119+
120+ /// # Rastgele Drone Alma Fonksiyonu
121+ ///
122+ /// Sahada bulunan drone'lar arasından rastgele bir drone döndürür.
123+ ///
124+ /// ## Returns
125+ /// * `Drone:` Rastgele seçilen drone nesnesini döndürür.
126+ ///
127+ /// ## Examples
128+ /// ```rust
129+ /// use crate::controller::SimulationController;
130+ ///
131+ /// let mut simulator = SimulationController::new();
132+ /// let load_result = simulator.load(10);
133+ /// let random_drone = simulator.get_random();
134+ /// assert!(random_drone.id < 10);
135+ /// ```
64136 pub fn get_random ( & self ) -> Drone {
65137 let mut rng = rand:: rng ( ) ;
66138 self . drones [ rng. random_range ( 0 ..self . drones . len ( ) ) ]
67139 }
68140
141+ /// # Kaydetme Fonksiyonu
142+ ///
143+ /// Sahadaki drone'ları belirtilen dosyaya kaydeder.
144+ ///
145+ /// ## Arguments
146+ /// * `path: &str` türünden dosya yolunu ifade eder.
147+ ///
148+ /// ## Returns
149+ /// * `std::io::Result<u32>` İşlemin başarılı olup olmadığı bilgisidir.
150+ ///
151+ /// ## Examples
152+ /// ```rust
153+ /// use crate::controller::SimulationController;
154+ /// use std::fs::File;
155+ ///
156+ /// let mut simulator = SimulationController::new();
157+ /// let load_result = simulator.load(10);
158+ /// let save_result = simulator.save("drones.txt");
159+ /// assert!(save_result.is_ok());
160+ /// ```
161+ /// ## Panics
162+ ///
163+ /// * Dosya oluşturulamadığında panik yapar.
164+ /// * Dosya yazma işlemi başarısız olduğunda panik yapar.
69165 pub fn save ( & self , path : & str ) -> std:: io:: Result < u32 > {
70166 let mut content = String :: new ( ) ;
71167 for drone in & self . drones {
@@ -78,7 +174,32 @@ impl SimulationController<'_> {
78174 Ok ( content. len ( ) as u32 )
79175 }
80176
81- pub fn load_from ( path : & str ) -> std:: io:: Result < ( ) > {
177+ /// # Yükleme Fonksiyonu
178+ ///
179+ /// Sahadaki drone'ları belirtilen dosyadan yükler.
180+ ///
181+ /// ## Arguments
182+ /// * `path: &str` türünden dosya yolunu ifade eder.
183+ ///
184+ /// ## Returns
185+ /// * `std::io::Result<()>` İşlemin başarılı olup olmadığı bilgisidir.
186+ ///
187+ /// ## Examples
188+ /// ```rust
189+ /// use crate::controller::SimulationController;
190+ /// use std::fs::File;
191+ ///
192+ /// let mut simulator = SimulationController::new();
193+ /// let load_result = simulator.load(10);
194+ /// let save_result = simulator.save("drones.txt");
195+ /// let load_result = simulator.load_from("drones.txt");
196+ /// assert!(load_result.is_ok());
197+ /// ```
198+ ///
199+ /// ## Panics
200+ /// * Dosya bulunamadığında panik yapar.
201+ /// * Dosya okuma işlemi başarısız olduğunda panik yapar.
202+ pub fn load_from ( _path : & str ) -> std:: io:: Result < ( ) > {
82203 //todo@buraksenyurt Aşağıdaki maddeler tamamlanmalı
83204
84205 // Dosya gerçekten var mı kontrolü?
@@ -88,3 +209,9 @@ impl SimulationController<'_> {
88209 Ok ( ( ) )
89210 }
90211}
212+
213+ impl Default for SimulationController < ' _ > {
214+ fn default ( ) -> Self {
215+ Self :: new ( )
216+ }
217+ }
0 commit comments