Skip to content

Instantly share code, notes, and snippets.

public interface IPlayerResources
{
void SetResource(string type, int amount);
int GetResource(string type);
(string, int)[] GetAllResources();
}
//Необходимо реализовать интерфейс для инвентаря с
//оружиями с помощью паттерна Presentation Model
//То есть интерфефс должен поддерживать возможность:
//1. Добавлять и удалять N оружий
//2. Хранить актуальное кол-во патронов для каждого оружия
//3. При нажатии на оружие, будет выбираться текущее оружиеё
public interface IWeapon
{
event Action<string> OnAmmoChanged;
@StarKRE
StarKRE / MVO.cs
Last active December 1, 2023 19:44
//TODO: доработать
public sealed class Effect
{
public event Action<float> OnValueChanged;
public float Value { get; private set; }
public Sprite Icon { get; }
public Color Color { get; }
public void SetValue(float value)
@StarKRE
StarKRE / GameListeners.cs
Last active November 17, 2023 18:47
Необходимо разработать универсальную систему загрузки игры в Unity, которая выполняет инициализацию поэтапно (порядок имеет значение)
public interface IGameListener
{
}
public interface IGameStartListener : IGameListener
{
void OnStartGame();
}
public interface IGameFinishListener : IGameListener
@StarKRE
StarKRE / SOLID.cs
Last active November 10, 2023 17:38
Отрефакторить классы по принципам SOLID. Решения прикрепляем в комментариях
/// Упражнение №1
public class ClickAndSpawnEnemy : MonoBehaviour
{
[SerializeField] private GameObject _enemyPrefab;
[SerializeField] private EnemyManager _enemyManager;
private void Update() {
if (!Input.GetMouseButtonDown(0)) {
return;
}
@StarKRE
StarKRE / Analytics.cs
Last active September 19, 2023 17:12
Практика по аналитике
//Analytics system:
public interface IAnalyicsManager
{
void LogEvent(string key, params AnalyticsParam[] parameters);
}
public struct AnalyticsParam
{
public string name;
public string value;
@StarKRE
StarKRE / IMoneyStorage.cs
Last active January 29, 2024 19:18
Реализовать систему для хранения и прокачки апгрейдов
public interface IMoneyStorage
{
event Action<int> OnMoneyChanged;
event Action<int> OnMoneyEarned;
event Action<int> OnMoneySpent;
int Money { get; }
void EarnMoney(int amount);
void SpendMoney(int amount);
@StarKRE
StarKRE / Enemy.cs
Created May 25, 2023 19:25
Реализация противника атомарным подходом на Unity
using System;
using System.Collections.Generic;
using System.Linq;
using Elementary;
using Entities;
using Game.GameEngine;
using Game.GameEngine.Animation;
using Game.GameEngine.Mechanics;
using JetBrains.Annotations;
using Declarative;
using System.Collections.Generic;
using Elementary;
using UnityEngine;
[Using]
public sealed class MyApplication : Element, IRootElement
{
public IClient Client { get; private set; }
public RepositoryLayer RepositoryLayer { get; private set; }
using Elementary;
using UnityEngine;
[Using]
public sealed class UserInteractor : Interactor
{
protected override void OnPrepare(Element _)
{
var userRepository = this.GetRepository<UserRepository>();
Debug.Log($"User interactor -> {userRepository.GetType().Name}");