3주차에 이어서 게임 개발을 진행했습니다.

저는 주식 기능을 맡았습니다.

image.png

image.png

주식 하나하나의 목록을 위한 prefab을 디자인했고, 실제 적용하는 과정은 팀원의 도움을 받아 만들었습니다.

using Unity.Android.Gradle.Manifest;
using UnityEngine;
using TMPro;
using System;
using Unity.Mathematics;
using UnityEngine.UIElements;

[System.Serializable]
public class Stock
{
    // [SerializeField] [SerializeField] private GameManager gameManager;
    // [SerializeField] [SerializeField] private GameManager buttonManager;
    // [SerializeField] [SerializeField] private GameManager textManager;

    [SerializeField] private string stockName;
    [SerializeField] private int havingCount;
    [SerializeField] private long cost;
    [SerializeField] private double changeRate;
    [SerializeField] private double prevChangeRate;

    // public Stock(string name, int havingCount, long cost, double changeRate)
    // {
    //     this.stockName = name;
    //     this.havingCount = havingCount;
    //     this.cost = cost;
    //     this.changeRate = changeRate;
    // }
    public Stock(string name, long cost)
    {
        this.stockName = name;
        this.havingCount = 0;
        this.cost = cost;
        this.changeRate = 0;
        this.prevChangeRate = 0;
    }

    public void UpdateStock(GameManager gm, int i)
    {

        var stockInfo = DataBase.AllStocks[i];
        double[] stateRate = new double[] { stockInfo.Item3, stockInfo.Item5, stockInfo.Item7, stockInfo.Item9, stockInfo.Item11, stockInfo.Item13, stockInfo.Item15, stockInfo.Item17 };
        double stateSum = 0;
        stateSum += gm.GetStateValue("food") * stateRate[0];
        stateSum += gm.GetStateValue("construction") * stateRate[1];
        stateSum += gm.GetStateValue("medicine") * stateRate[2];
        stateSum += gm.GetStateValue("energy") * stateRate[3];
        stateSum += gm.GetStateValue("transit") * stateRate[4];
        stateSum += gm.GetStateValue("it_ai") * stateRate[5];
        stateSum += gm.GetStateValue("semiconductor") * stateRate[6];
        stateSum += gm.GetStateValue("education") * stateRate[7];
        
        changeRate = stateSum - 100;
        changeRate = Math.Round(changeRate, 1);
        //Debug.Log(changeRate);

        if (changeRate != prevChangeRate)
        {
            Debug.Log("change O");
            double realChangeRate = changeRate - prevChangeRate;
            cost += (long)(realChangeRate * cost / 100);

            prevChangeRate = changeRate;
            changeRate = realChangeRate;
        }
        else
        {
            Debug.Log("Change X");
            changeRate = 0.0;
        }

        
        
        //state가 이전과 달라졌을 때만 주식가격 변동되도록 수정하기..
    }

    public string GetStockName()
    {
        return stockName;
    }

    public long GetStockCost()
    {
        return cost;
    }

    public double GetStockChangeRate()
    {
        return changeRate;
    }

    public int GetStockHavingCount()
    {
        return havingCount;
    }

    public void Add()
    {
        havingCount++;
    }
    
    public bool Sub()
    {
        if (havingCount < 1) return false;
        havingCount--;
        return true;
        
    }

    

    
}

/*

*/

아직 주식 가격 변동 기능은 구현하지 않았습니다.

주식의 가격은 저번주에 만든 뉴스로 인해 변동되는 분야 점수들에 영향을 받도록 설계할 예정입니다.