EconomyConfig: таблица баланса экономики
This commit is contained in:
@@ -0,0 +1,48 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!114 &11400000
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 4ddb59400c6d4b08b3afaaadc461ec1e, type: 3}
|
||||
m_Name: EconomyConfig
|
||||
m_EditorClassIdentifier:
|
||||
population:
|
||||
startTotal: 300
|
||||
startWorkers: 120
|
||||
startSoldiers: 30
|
||||
foodPerCivilianPerHour: 0.1
|
||||
foodPerSoldierPerHour: 0.2
|
||||
growthPerHour: 2.5
|
||||
housingBase: 400
|
||||
housingPerTownHallLevel: 100
|
||||
maxOfflineHours: 48
|
||||
startResources:
|
||||
wood: 500
|
||||
food: 500
|
||||
stone: 200
|
||||
iron: 100
|
||||
gold: 100
|
||||
gems: 0
|
||||
production:
|
||||
woodcutterPerHour: 2
|
||||
farmerPerHour: 2
|
||||
stonecutterPerHour: 1.5
|
||||
minerIronPerHour: 1
|
||||
minerGoldPerHour: 0.4
|
||||
workerSlotsT1: 30
|
||||
deposits:
|
||||
poor: 0.6
|
||||
normal: 1
|
||||
rich: 1.5
|
||||
soldier:
|
||||
people: 1
|
||||
food: 15
|
||||
iron: 5
|
||||
gold: 5
|
||||
trainSeconds: 60
|
||||
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: db192d63d5ff4504a4624613292cf3ab
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,136 @@
|
||||
using System;
|
||||
using UnityEngine;
|
||||
|
||||
// ТАБЛИЦА БАЛАНСА ЭКОНОМИКИ. Все числа экономики -- здесь, а не в коде модулей.
|
||||
//
|
||||
// Ассет: Assets/Resources/EconomyConfig.asset (выдели его в окне Project и меняй числа в Inspector,
|
||||
// перекомпиляция не нужна). Создать заново: правый клик в Project -> Create -> Bogatyri -> Economy Config,
|
||||
// имя файла -- EconomyConfig, папка -- Resources.
|
||||
//
|
||||
// Модули конфиг не видят: App/GameModules переводит его в правила модулей (например, правила Населения).
|
||||
// Числа -- из дизайн-документа. Помеченные "не утверждено" -- временные, их решает команда.
|
||||
[CreateAssetMenu(fileName = "EconomyConfig", menuName = "Bogatyri/Economy Config")]
|
||||
public class EconomyConfig : ScriptableObject
|
||||
{
|
||||
[Serializable]
|
||||
public class PopulationSettings
|
||||
{
|
||||
[Tooltip("Стартовый город T1: всего людей")]
|
||||
public int startTotal = 300;
|
||||
[Tooltip("Из них рабочих")]
|
||||
public int startWorkers = 120;
|
||||
[Tooltip("Из них воинов (выдаются в Армию пехотой при новой игре)")]
|
||||
public int startSoldiers = 30;
|
||||
|
||||
[Tooltip("Еды в час на одного жителя")]
|
||||
public float foodPerCivilianPerHour = 0.1f;
|
||||
[Tooltip("Еды в час на одного воина")]
|
||||
public float foodPerSoldierPerHour = 0.2f;
|
||||
|
||||
[Tooltip("Прирост людей в час, если есть еда (документ: 2–3)")]
|
||||
public float growthPerHour = 2.5f;
|
||||
|
||||
[Tooltip("Предел населения на 1 уровне Ратуши. Не утверждено")]
|
||||
public int housingBase = 400;
|
||||
[Tooltip("Прибавка к пределу за каждый следующий уровень Ратуши. Не утверждено")]
|
||||
public int housingPerTownHallLevel = 100;
|
||||
|
||||
[Tooltip("Офлайн-прогресс считается не больше чем за столько часов. Не утверждено")]
|
||||
public int maxOfflineHours = 48;
|
||||
}
|
||||
|
||||
[Serializable]
|
||||
public class ProductionSettings // этап 3: производство через рабочих (пока не используется)
|
||||
{
|
||||
[Tooltip("Лесоруб T1: дерева в час")]
|
||||
public float woodcutterPerHour = 2f;
|
||||
[Tooltip("Фермер T1: еды в час")]
|
||||
public float farmerPerHour = 2f;
|
||||
[Tooltip("Каменотёс T1: камня в час")]
|
||||
public float stonecutterPerHour = 1.5f;
|
||||
[Tooltip("Шахтёр T1: металла в час")]
|
||||
public float minerIronPerHour = 1f;
|
||||
[Tooltip("Шахтёр T1: золота в час")]
|
||||
public float minerGoldPerHour = 0.4f;
|
||||
[Tooltip("Мест для рабочих в здании T1 (Лесопилка и т.п.)")]
|
||||
public int workerSlotsT1 = 30;
|
||||
}
|
||||
|
||||
[Serializable]
|
||||
public class DepositSettings // этап 4: качество месторождения (пока не используется)
|
||||
{
|
||||
public float poor = 0.6f;
|
||||
public float normal = 1f;
|
||||
public float rich = 1.5f;
|
||||
}
|
||||
|
||||
[Serializable]
|
||||
public class SoldierSettings // этап 5: цена солдата (пока не используется)
|
||||
{
|
||||
public int people = 1;
|
||||
public float food = 15f;
|
||||
public float iron = 5f;
|
||||
public float gold = 5f;
|
||||
[Tooltip("Время подготовки, секунд. Не утверждено")]
|
||||
public int trainSeconds = 60;
|
||||
}
|
||||
|
||||
[Serializable]
|
||||
public class StartResources
|
||||
{
|
||||
[Tooltip("Ресурсы новой игры. Не утверждено")]
|
||||
public float wood = 500f;
|
||||
public float food = 500f;
|
||||
public float stone = 200f;
|
||||
public float iron = 100f;
|
||||
public float gold = 100f;
|
||||
public float gems = 0f;
|
||||
}
|
||||
|
||||
[Header("Население (этап 2)")]
|
||||
public PopulationSettings population = new PopulationSettings();
|
||||
|
||||
[Header("Стартовые ресурсы новой игры")]
|
||||
public StartResources startResources = new StartResources();
|
||||
|
||||
[Header("Производство T1 (этап 3)")]
|
||||
public ProductionSettings production = new ProductionSettings();
|
||||
|
||||
[Header("Месторождения (этап 4)")]
|
||||
public DepositSettings deposits = new DepositSettings();
|
||||
|
||||
[Header("Солдат T1 (этап 5)")]
|
||||
public SoldierSettings soldier = new SoldierSettings();
|
||||
|
||||
// ---------------- Загрузка ----------------
|
||||
|
||||
static EconomyConfig cached;
|
||||
|
||||
// Конфиг из Assets/Resources/EconomyConfig.asset. Нет ассета -- числа по умолчанию (из этого файла) и предупреждение.
|
||||
public static EconomyConfig Load()
|
||||
{
|
||||
if (cached != null) return cached;
|
||||
cached = Resources.Load<EconomyConfig>("EconomyConfig");
|
||||
if (cached == null)
|
||||
{
|
||||
Debug.LogWarning("[ЭКОНОМИКА] Нет Assets/Resources/EconomyConfig.asset -- берутся числа по умолчанию из EconomyConfig.cs.");
|
||||
cached = CreateInstance<EconomyConfig>();
|
||||
}
|
||||
return cached;
|
||||
}
|
||||
|
||||
public float GetStartResource(ResourceType type)
|
||||
{
|
||||
var s = startResources;
|
||||
switch (type)
|
||||
{
|
||||
case ResourceType.Wood: return s.wood;
|
||||
case ResourceType.Food: return s.food;
|
||||
case ResourceType.Stone: return s.stone;
|
||||
case ResourceType.Iron: return s.iron;
|
||||
case ResourceType.Gold: return s.gold;
|
||||
case ResourceType.Gems: return s.gems;
|
||||
default: return 0f;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 4ddb59400c6d4b08b3afaaadc461ec1e
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
Reference in New Issue
Block a user