Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file added .vs/CSharpMainProjectMyFork/v18/.suo
Binary file not shown.
12 changes: 12 additions & 0 deletions .vs/CSharpMainProjectMyFork/v18/DocumentLayout.backup.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
{
"Version": 1,
"WorkspaceRootPath": "D:\\Soft\\GitHub\\CSharpMainProjectMyFork\\",
"Documents": [],
"DocumentGroupContainers": [
{
"Orientation": 0,
"VerticalTabListWidth": 256,
"DocumentGroups": []
}
]
}
37 changes: 37 additions & 0 deletions .vs/CSharpMainProjectMyFork/v18/DocumentLayout.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
{
"Version": 1,
"WorkspaceRootPath": "D:\\Soft\\GitHub\\CSharpMainProjectMyFork\\",
"Documents": [
{
"AbsoluteMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|D:\\Soft\\GitHub\\CSharpMainProjectMyFork\\Assets\\Scripts\\UnitBrains\\Player\\ThirdUnitBrain.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}",
"RelativeMoniker": "D:0:0:{A2FE74E1-B743-11D0-AE1A-00A0C90FFFC3}|\u003CMiscFiles\u003E|solutionrelative:Assets\\Scripts\\UnitBrains\\Player\\ThirdUnitBrain.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}"
}
],
"DocumentGroupContainers": [
{
"Orientation": 0,
"VerticalTabListWidth": 256,
"DocumentGroups": [
{
"DockedWidth": 200,
"SelectedChildIndex": 0,
"Children": [
{
"$type": "Document",
"DocumentIndex": 0,
"Title": "ThirdUnitBrain.cs",
"DocumentMoniker": "D:\\Soft\\GitHub\\CSharpMainProjectMyFork\\Assets\\Scripts\\UnitBrains\\Player\\ThirdUnitBrain.cs",
"RelativeDocumentMoniker": "Assets\\Scripts\\UnitBrains\\Player\\ThirdUnitBrain.cs",
"ToolTip": "D:\\Soft\\GitHub\\CSharpMainProjectMyFork\\Assets\\Scripts\\UnitBrains\\Player\\ThirdUnitBrain.cs",
"RelativeToolTip": "Assets\\Scripts\\UnitBrains\\Player\\ThirdUnitBrain.cs",
"ViewState": "AgIAAAAAAAAAAAAAAAAAABQAAAAgAAAAAAAAAA==",
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|",
"WhenOpened": "2026-08-31T08:52:22.937Z",
"EditorCaption": ""
}
]
}
]
}
]
}
5 changes: 2 additions & 3 deletions Assets/Resources/PlayerUnits/PlayerUnit3.prefab
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,7 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier:
_healthBar: {fileID: 178258570018206233}
_debugPathOutput: {fileID: 0}
--- !u!114 &3664015912038799981
MonoBehaviour:
m_ObjectHideFlags: 0
Expand All @@ -67,10 +68,8 @@ MonoBehaviour:
_maxHealth: 400
_brainUpdateDelay: 0.25
_moveDelay: 0.25
_attackDelay: 0.75
_attackDelay: 0.15
_attackRange: 3.5
_shotsPerTarget: 1
_targetsInVolley: 1
_projectileType: 0
_damage: 15
--- !u!1 &526913648782850647
Expand Down
4 changes: 2 additions & 2 deletions Assets/Scripts/Controller/BotController.cs
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,9 @@
using Model.Config;
using UnityEngine;
using Utilities;
//hello
//Hello
//How are you?
//i'm fine
//I'm fine
namespace Controller
{
public class BotController
Expand Down
4 changes: 3 additions & 1 deletion Assets/Scripts/EnterPoint.cs
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,9 @@ public class EnterPoint : MonoBehaviour
[SerializeField] private Settings _settings;
[SerializeField] private Canvas _targetCanvas;
private float _timeScale = 1;



//Проверочный коммит
void Start()
{
Time.timeScale = _timeScale;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,11 +30,13 @@ protected override void UpdateImpl(float deltaTime, float time)
// Insert you code here
///////////////////////////////////////

float maxHeight = totalDistance * 0.6f;
localHeight = maxHeight * (-(t * 2 - 1) * (t * 2 - 1) + 1) + localHeight;

///////////////////////////////////////
// End of the code to insert
///////////////////////////////////////

Height = localHeight;
if (time > StartTime + _timeToTarget)
Hit(_target);
Expand Down
78 changes: 71 additions & 7 deletions Assets/Scripts/UnitBrains/Player/SecondUnitBrain.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
using System.Collections.Generic;
using System.Linq;
using Model;
using Model.Runtime.Projectiles;
using UnityEngine;
using Utilities;

namespace UnitBrains.Player
{
Expand All @@ -12,33 +15,94 @@ public class SecondUnitBrain : DefaultPlayerUnitBrain
private float _temperature = 0f;
private float _cooldownTime = 0f;
private bool _overheated;


private Vector2Int _targetToChase = new Vector2Int(-1, -1);

private static int _unitCounter = 0; // Счётчик для нумерации юнитов
private int _unitNumber; // Номер текущего юнита
private const int MaxTargets = 3; // Максимум целей для умного выбора

// При инициализации присваеваем номер и увеличиваем счётчик
private void Awake()
{
_unitNumber = _unitCounter++;
}

protected override void GenerateProjectiles(Vector2Int forTarget, List<BaseProjectile> intoList)
{
float overheatTemperature = OverheatTemperature;
///////////////////////////////////////
// Homework 1.3 (1st block, 3rd module)
///////////////////////////////////////
var projectile = CreateProjectile(forTarget);
AddProjectileToList(projectile, intoList);
if (GetTemperature() >= overheatTemperature)
{
return;
}
for (int i = 0; i < _temperature+1; i++)
{
var projectile = CreateProjectile(forTarget);
AddProjectileToList(projectile, intoList);
}
//Debug.Log(intoList.Count);
IncreaseTemperature();
///////////////////////////////////////
}

public override Vector2Int GetNextStep()
{
return base.GetNextStep();
Vector2Int currentPos = unit.Pos;

if (_targetToChase.x == -1 && _targetToChase.y == -1)
{
return currentPos;
}

if (IsTargetInRange(_targetToChase))
{
_targetToChase = new Vector2Int(-1, -1);
return currentPos;
}

return currentPos.CalcNextStepTowards(_targetToChase);
}

protected override List<Vector2Int> SelectTargets()
{
///////////////////////////////////////
// Homework 1.4 (1st block, 4rd module)
///////////////////////////////////////
List<Vector2Int> result = GetReachableTargets();
while (result.Count > 1)
List<Vector2Int> allTargets = GetAllTargets().ToList();

if (allTargets.Count == 0)
{
int enemyBaseId = IsPlayerUnitBrain ? RuntimeModel.BotPlayerId : RuntimeModel.PlayerId;
Vector2Int enemyBasePos = runtimeModel.RoMap.Bases[enemyBaseId];
allTargets.Add(enemyBasePos);
}

SortByDistanceToOwnBase(allTargets);

int targetCount = allTargets.Count;
int targetIndex = _unitNumber % MaxTargets;
if (targetIndex >= targetCount)
targetIndex = targetIndex % targetCount;

Vector2Int choseTarget = allTargets[targetIndex];

bool inAttackRange = IsTargetInRange(choseTarget);

List<Vector2Int> result = new List<Vector2Int>();

if (inAttackRange)
{
result.RemoveAt(result.Count - 1);
result.Add(choseTarget);
_targetToChase = new Vector2Int(-1, -1);
}
else
{
_targetToChase = choseTarget;
}

return result;
///////////////////////////////////////
}
Expand Down
110 changes: 110 additions & 0 deletions Assets/Scripts/UnitBrains/Player/ThirdUnitBrain.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,110 @@
using Model.Runtime.Projectiles;
using System.Collections;
using System.Collections.Generic;
using UnitBrains.Player;
using UnityEngine;

public class ThirdUnitBrain : DefaultPlayerUnitBrain
{
public override string TargetUnitName => "Ironclad Behemoth";

// Режимы работы юнита
private enum Mode
{
Moving, // Движение
Attacking, // Атака
Switching // Переключение (ничего не делает)
}

private Mode _currentMode = Mode.Moving; // Текущий режим
private float _switchTimer = 0f; // Таймер переключения
private const float SwitchDuration = 1f; // Длительность переключения (1 секунда)

// Вызывается каждый кадр для обновления состояния
public override void Update(float deltaTime, float time)
{
// Вызов базового обновления (если нужно)
base.Update(deltaTime, time);

// Проверяем, есть ли цель в радиусе атаки
bool hasTargetInRange = CheckTargetInAttackRange();

// Определяем желаемый режим
Mode desiredMode = hasTargetInRange ? Mode.Attacking : Mode.Moving;

// Если желаемый режим отличается от текущего и мы не в процессе переключения
if (desiredMode != _currentMode && _currentMode != Mode.Switching)
{
// Начинаем переключение
_currentMode = Mode.Switching;
_switchTimer = 0f;
}

// Если мы в процессе переключения
if (_currentMode == Mode.Switching)
{
_switchTimer += deltaTime;
if (_switchTimer >= SwitchDuration)
{
// Завершаем переключение на желаемый режим
_currentMode = desiredMode;
_switchTimer = 0f;
}
}
}

// Проверяет наличие цели в радиусе атаки
private bool CheckTargetInAttackRange()
{
var allTargets = GetAllTargets();
foreach (var target in allTargets)
{
if (IsTargetInRange(target))
return true;
}
return false;
}

// Определяет следующий шаг движения
public override Vector2Int GetNextStep()
{
// Если режим движения — двигаемся (используем базовую логику)
// Если режим атаки или переключения — стоим на месте
if (_currentMode == Mode.Moving)
{
return base.GetNextStep();
}
else
{
// Стоим на месте
return unit.Pos;
}
}

// Генерирует снаряды для атаки
protected override void GenerateProjectiles(Vector2Int forTarget, List<BaseProjectile> intoList)
{
// Стреляем только в режиме атаки
if (_currentMode == Mode.Attacking)
{
// Используем базовую генерацию снарядов
base.GenerateProjectiles(forTarget, intoList);
}
// В остальных режимах ничего не делаем
}

// Возвращает список целей для атаки
protected override List<Vector2Int> SelectTargets()
{
// Возвращаем цели только если мы в режиме атаки,
// иначе возвращаем пустой список (чтобы не тратить ресурсы)
if (_currentMode == Mode.Attacking)
{
return base.SelectTargets();
}
else
{
return new List<Vector2Int>();
}
}
}
11 changes: 11 additions & 0 deletions Assets/Scripts/UnitBrains/Player/ThirdUnitBrain.cs.meta

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

12 changes: 12 additions & 0 deletions CSharpMainProjectMyFork.sln
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,10 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Assembly-CSharp", "Assembly
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Assembly-CSharp-Editor", "Assembly-CSharp-Editor.csproj", "{F7B17844-74ED-8CA8-ACA8-8F693CF5DE56}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Root", "Root.csproj", "{C12C09C7-888C-7364-148B-3BC33A05AB3F}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Tests", "Tests.csproj", "{A49BA194-5C47-A0B3-F237-E5A208BF7BB2}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Expand All @@ -19,6 +23,14 @@ Global
{F7B17844-74ED-8CA8-ACA8-8F693CF5DE56}.Debug|Any CPU.Build.0 = Debug|Any CPU
{F7B17844-74ED-8CA8-ACA8-8F693CF5DE56}.Release|Any CPU.ActiveCfg = Release|Any CPU
{F7B17844-74ED-8CA8-ACA8-8F693CF5DE56}.Release|Any CPU.Build.0 = Release|Any CPU
{C12C09C7-888C-7364-148B-3BC33A05AB3F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{C12C09C7-888C-7364-148B-3BC33A05AB3F}.Debug|Any CPU.Build.0 = Debug|Any CPU
{C12C09C7-888C-7364-148B-3BC33A05AB3F}.Release|Any CPU.ActiveCfg = Release|Any CPU
{C12C09C7-888C-7364-148B-3BC33A05AB3F}.Release|Any CPU.Build.0 = Release|Any CPU
{A49BA194-5C47-A0B3-F237-E5A208BF7BB2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{A49BA194-5C47-A0B3-F237-E5A208BF7BB2}.Debug|Any CPU.Build.0 = Debug|Any CPU
{A49BA194-5C47-A0B3-F237-E5A208BF7BB2}.Release|Any CPU.ActiveCfg = Release|Any CPU
{A49BA194-5C47-A0B3-F237-E5A208BF7BB2}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
Expand Down
Loading