Code Monkey home page Code Monkey logo

idle-developer's Introduction

Idle Developer

Setting

You are a developer starting out on your IT journey, you will be learning frameworks, languages and tools that will allow you to earn money in order to obtain the tools you need to get more money and StackOverflow fame.

Developer Levels

A developer level refers to your calibre as a developer, every time you complete a session (different sessions give different XP), XP is added to your player which contributes to his developer level. This is different to XP and Levels in languages/frameworks/tools as this refers to the developers skill as a whole.

Languages

Starting off you will select a language to begin with, once a learning session for a language completes you earn XP for said language which contributes to your level in said language. XP for a language will allow you to "buy" other frameworks and languages to learn. Upon reaching a certain level in a language, you may fulfill requirements for a job, which will allow you to earn in game currency. The higher your level in a language, the faster learning sessions are for that language and related languages/frameworks/tools. Languages alone will not provide many job oppurtunites, but will get you started off.

Frameworks

Frameworks are similar to languages, however these provide many more job oppurtunites, and also allow you to build your own projects, which may be another source of income. Learning related frameworks and tools for a language will also increase the speed of XP, and increase your calibre as a developer.

Tools

Tools are developer tools that aid in development and also provide XP towards your overall calibre as a developer, tools to learn can also be purchased from the shop (eg: IntelliJ Ultimate, Adobe Products)

Skill Level

The levels you can be at in a certain framework/language/tool are divided into sections, reflecting your skill in said framework/language/tool. These sections are letter based, ranging as F - E - D - C - B - A - S - S+ - S++ - Z Your skill level will also translate into the job oppurtunites you have, junior dev, senior dev, etc.

Jobs

Jobs are unlocked when you have reached a certain level in what you are learning, allowing you to gain in game currency through a job session, which is similar to a learning session, except that it gets you money but less XP than a learning session. Jobs can be working at a company, Freelancing, Youtubing, Blogging, etc.

Projects

Projects are coding projects that you create on ypour own based on your skill set, you can make money off of these and use them as a secondary income source. Projects are also a way of creating your own items, similar to crafting, you could build a robot and code it through an arduino/components bought in the shop, a discord bot, build and code a keyboard, etc. Projects are a central aspect of the game, equivalent to crafting.

Items

Items are things you can buy from the shop using in game currency, these can be hardware components (Computer Components, Peripherals, Chipsets, etc.), proprietary software tools (IDEs, Subscriptions, etc), Computing Books (Increase Level), Furniture, etc. Tools that you buy will be treated as software tools, and as such will also have learning sessions for them. Items are divided into rarities, namely: Common, Uncommon, Rare, Epic, Legendary, Mythical, Ancient, Forbidden, and they also may have modifiers on them.

Session

A session is a core component of this game, it can be a learning session that results in XP for a language/framework/tool or a job session that results in money being earned. Multiple sessions can be held at once, tapping on the session buttons will speed up their progress, all sessions automatically restart once finish.

idle-developer's People

Contributors

brayankhosravian avatar rorylinnane avatar tatapuchi avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

idle-developer's Issues

Implement Base Shop Page

Describe the solution you'd like
Create a basic prototype implementation of the shop page such that the play can buy and obtain in game items

German Localisation

Describe the solution you'd like
Convert hard coding strings to use localized strings from Resx files for German

FileSystem

Implement a FileSystem

Currently we are loading images by using the method ImageSource.FromResource() and by saving images as embedded files.
This has a drawback, that the images defined in Idle.Resources are coupled to its assembly, which is not good.
Therefore we will define a custom FileSystem where we save all the files in a directory and load the images by usng ImageSource.FromFile()

.. in concsturction

Languages - Add images

This feature is about adding images for languages. Each language should display an image in the application.
Reference: https://docs.microsoft.com/en-us/xamarin/xamarin-forms/user-interface/images?tabs=windows

Subtasks which have to be completed: (grouped by assembly)

Idle.Framework/Idle.Common

  • Choose and save some images as embedded resources
  • make sure the images are not 4k or UH as this will decrease performance when loading the cells or when scrolling xD

Idle.DataAccess

  • extend the class Language with a virtual string property named ImagePath
  • for each concretion of Language override the ImagePath property and set the correct path of the image

Idle.DataAccess.Tests

  • extend the LanguageRegressionTests for the ImagePath property

Idle.Logic

  • forward the ImagePath property in the LanguageViewModel to the Model

Idle.Views

  • place an Image element inside the LanguageCell
  • set the binding to the ImagePath
  • make sure the images are loading

Spanish Localisation

Describe the solution you'd like
Convert hard coding strings to use localized strings from Resx files for spanish

Add Enum Properties to Field and Item Subclasses

What to refactor
Add Enum properties to field and item subclasses, instead of relying on nameof(ClassName) to determine what class it is

How to refactor
Add an enum property that is the enum that corresponds to the class

Why to refactor
NameOf() breaks easily, especially when changing names and such

English Localisation

Describe the solution you'd like
Convert hard coding strings to use localized strings from Resx files for english

Rename assembly - Idle.Framework to Idle.Resources

What to refactor
Rename the assembly Idle.Framework to Idle.Resources

How to refactor
1.) in the file explorer rename the folders and the csproj file
2.) in the sln file rename the strings
3.) rebuild and execute tests

Why to refactor
Common seems to be a better name

Player Model

Create the player model so that we can setup key features such as the upgrade system that costs Player XP.
This should happen once the language feature is implemented, or after all features are ready to go.

Basic members for the model would include:

public int XP {get; set;}
public int Level {get; set;}
public int Grade {get; set;}

//Fields the player is proficient in
//Loaded in when instance of player class is created
public HashSet<Language> KnownLanguages;
public HashSet<Framework> KnownFrameworks;
public HashSet<Tool> KnownTools;

UML Diagram

Describe the solution you'd like
Complete a UML diagram for Models

Turkish Localisation

Describe the solution you'd like
Convert hard coding strings to use localized strings from Resx files for Turkish

Indonesian Localisation

Describe the solution you'd like
Convert hard coding strings to use localized strings from Resx files for Idonesian

SessionHelper

What to refactor
Refactor SessionHelper's ObservableCollection to SortedList<string, FieldDTO> conversion method

Portuguese Localisation

Describe the solution you'd like
Convert hard coding strings to use localized strings from Resx files for Portuguese

Implement Upgrade System

Describe the solution you'd like
Implement an upgrade system to upgrade level in languages, frameworks, tools which leads to higher speed of earning XP from that field

GetKnown() method for repositories

The repositories should have functionality regarding what languages, frameworks and tools the player is proficient in.
Repositories would return a IEnumerable of languages/frameworks/tools above a certain level, this way we don't keep that information in language or player models.

SessionCell

What to refactor
SessionCell needs to be changed to interact with the itemsource properly

BindingContext updates not working

Describe the bug
We update BindingContext values for SessionCell, however the values are not reflected in the UI nor saved when we press save.

To Reproduce
Steps to reproduce the behavior:

  1. Go to SessionCell.xaml.cs in /Views/Cells
  2. Debug and see that the value of BindingContext is in fact updating properly
  3. See that the UI is not changing, try saving and open again
  4. BindingContext value was not saved

Expected behavior
The values in the view cells should be updating to the new values of the level and xp properties in the BindingContext, and should also save on command.

Setup Popup Plugin

Describe the solution you'd like
Setup popup plugin for the creation of popups

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.