예제 #1
0
 public void LoadData()
 {
     if (File.Exists(Application.persistentDataPath + "/HamsterData.dat"))
     {
         BinaryFormatter binaryformatter = new BinaryFormatter();
         FileStream      file            = File.Open(Application.persistentDataPath + "/HamsterData.dat", FileMode.Open);
         m_hamsterdata = (HamsterData)binaryformatter.Deserialize(file);
         file.Close();
     }
     else
     {
         m_hamsterdata.Pleasure     = 0.0f;
         m_hamsterdata.Arousal      = 0.0f;
         m_hamsterdata.Dominance    = 0.0f;
         m_hamsterdata.FoodHealth   = 100.0f;
         m_hamsterdata.WaterHealth  = 100.0f;
         m_hamsterdata.CleanHealth  = 100.0f;
         m_hamsterdata.FoodTimer    = 0.0f;
         m_hamsterdata.CleanTimer   = 0.0f;
         m_hamsterdata.WaterTimer   = 0.0f;
         m_hamsterdata.InterTimer   = 0.0f;
         m_hamsterdata.UIFoodTimer  = 0.0f;
         m_hamsterdata.UIWaterTimer = 0.0f;
         m_hamsterdata.UICleanTimer = 0.0f;
         m_hamsterdata.Hours        = System.DateTime.Now.Hour;
         m_hamsterdata.Minutes      = System.DateTime.Now.Minute;
         m_hamsterdata.Seconds      = System.DateTime.Now.Second;
         m_hamsterdata.Emotion      = CURRENT_EMOTION.Neutral;
         SavedData();
     }
 }
예제 #2
0
    private HamsterData GenerateRandomHamster()
    {
        Color       bellyColor = hamsterDefaultValues.bellyColors[Random.Range(0, hamsterDefaultValues.bellyColors.Count)];
        Color       bodyColor  = hamsterDefaultValues.bodyColors[Random.Range(0, hamsterDefaultValues.bodyColors.Count)];
        String      firstName  = hamsterDefaultValues.firstNames[Random.Range(0, hamsterDefaultValues.firstNames.Count)];
        String      lastName   = hamsterDefaultValues.lastNames[Random.Range(0, hamsterDefaultValues.lastNames.Count)];
        HamsterData hamster    = new HamsterData(bodyColor, bellyColor, firstName, lastName, HamsterStatus.Adult);

        return(hamster);
    }
예제 #3
0
    public static HamsterData Breed(HamsterData a, HamsterData b, string childFirstName)
    {
        System.Random    rnd       = new System.Random();
        Stats.StatType[] statTypes = Stats.AllStatTypes.OrderBy(x => rnd.Next()).ToArray();
        Dictionary <Stats.StatType, int> childStats = new Dictionary <Stats.StatType, int>();
        int split = statTypes.Length / 2;

        for (int i = 0; i < statTypes.Length; ++i)
        {
            Stats.StatType statType = statTypes[i];
            if (i < split)
            {
                childStats.Add(statType, a.statValues[statType] + RandomSignedStatModifier());
            }
            else
            {
                childStats.Add(statType, b.statValues[statType] + RandomSignedStatModifier());
            }
        }

        Color childBellyColor;
        Color childBodyColor;
        float colorSelector = Random.value;

        if (colorSelector < 0.5f)
        {
            childBellyColor = a.bellyColor + b.bellyColor;
            childBodyColor  = a.bodyColor + b.bodyColor;
        }
        else if (colorSelector < 0.75f)
        {
            childBellyColor = a.bellyColor;
            childBodyColor  = a.bodyColor;
        }
        else
        {
            childBellyColor = b.bellyColor;
            childBodyColor  = b.bodyColor;
        }

        string lastName;
        float  nameSelector = Random.value;

        if (nameSelector < 0.5f)
        {
            lastName = a.lastName;
        }
        else
        {
            lastName = a.firstName;
        }

        return(new HamsterData(childBodyColor, childBellyColor, childFirstName, lastName, HamsterStatus.Unborn, childStats));
    }
예제 #4
0
    void Awake()
    {
        m_hamsterdata = new HamsterData();

        LoadData(); //Get past data

        //Calculate the time it took from
        //when the game last ended to when it began
        //and see how many seconds have passed since then
        float OldHours   = m_hamsterdata.Hours;
        float OldMinutes = m_hamsterdata.Minutes;
        float OldSeconds = m_hamsterdata.Seconds;

        float SystemHour   = System.DateTime.Now.Hour;
        float SystemMinute = System.DateTime.Now.Minute;
        float SystemSecond = System.DateTime.Now.Second;

        //If the time passes midnight, the hour turns to 0.
        //This means that we have to make sure that the total
        //is more than OldHours.
        if (SystemHour < OldHours)
        {
            SystemHour += 24.0f;
        }

        float difhour = SystemHour - OldHours;
        float difmin  = SystemMinute - OldMinutes;
        float difsec  = SystemSecond - OldSeconds;

        //Make sure the time is positive
        if (difhour < 0.0f)
        {
            difhour = -difhour;
        }
        if (difmin < 0.0f)
        {
            difmin = -difmin;
        }
        if (difsec < 0.0f)
        {
            difsec = -difsec;
        }

        float hourinsecs   = ((difhour * 60) * 60);
        float minuteinsecs = (difmin * 60);

        totalTimeMissedInSecs = hourinsecs + minuteinsecs + difsec;

        //Set up Starting Emotions
        m_pleasure  = m_hamsterdata.Pleasure;
        m_dominance = m_hamsterdata.Dominance;
        m_arousal   = m_hamsterdata.Arousal;
        m_emotion   = m_hamsterdata.Emotion;
    }
예제 #5
0
    public void Initialize(HamsterData hamsterData)
    {
        _hamsterData = hamsterData;
        body.color   = _hamsterData.bodyColor;
        foreach (SpriteRenderer sprite in belly)
        {
            sprite.color = _hamsterData.bellyColor;
        }

        if (_hamsterData.status == HamsterStatus.Unborn)
        {
            Debug.Log("still unborn");
            InitializeBaby();
        }
    }
예제 #6
0
 public void LoadSystemData()
 {
     //If the file exists
     if (File.Exists(Application.persistentDataPath + "/HamsterData.dat"))
     {
         BinaryFormatter binaryFormatter = new BinaryFormatter();
         FileStream      file            = File.Open(Application.persistentDataPath + "/HamsterData.dat", FileMode.Open);
         m_hamsterData = (HamsterData)binaryFormatter.Deserialize(file);
         file.Close();
     }
     else
     {
         Debug.LogError("Save file does not exist");
     }
 }
예제 #7
0
    public void Breed(Hamster hamster, Hamster hamster1)
    {
        HamsterData child = hamster.Breed(hamster1);

        chosenHamsters.Add(child);
        Debug.Log("Child bred. Status is:  " + child.status);
        Hamster childObj = Instantiate(hamsterPrefab, null, false).GetComponent <Hamster>();

        childObj.Initialize(child);
        currentHamsters.Add(childObj);
        foreach (HamsterLocation location in RunManager.Instance.BabyLocations)
        {
            if (location.Hamster == null)
            {
                location.Hamster = childObj;
                break;
            }
        }
        //todo make these permanent/between runs
    }
예제 #8
0
 public void SaveHamsterData(HamsterData _hamster)
 {
     m_hamsterData = _hamster;
 }