Giter Club home page Giter Club logo

herald's People

Contributors

raugharr avatar

Stargazers

 avatar

Watchers

 avatar  avatar

herald's Issues

Lua Hashtables

Hash tables dependent on Lua tables should have their size allocated to the hash table after how many elements exist.

AI communication

AI cannot currently communicate to other AIs to achieve goals. While a lumberjack can cut down trees there is no way for him to know how much lumber other people need from him. The AI subsystem should be expanded out of the simple loop that is in the Tick() function in order to achieve this.

A broadcast system needs to be implemented to allow this. When an AI needs something it cannot achieve itself it should send a broadcast message that will return if someone nearby can help the person achieve their goal.

Improve family good generation.

Currently the type of goods given to a family is determined by a percentage. This should be improved upon by also allowing more complex things to determine what goods a family gets, such as a specific number of families, or only if the village being populated has a certain number of people in it.

Birth checking

To determine if a women should have a baby, a check is done in PersonUpdate. However, as women have a different AI then men this check should be moved to the women's AI.

Not all foods are edible by humans.

Foods that give nutrients, such as hay and straw are edible to certain animals, but not by humans. Currently there is no distinction and humans can eat anything that is declared a food.

Refactor event system

Right now we have an event system that is hand rolled. However SDL allows custom events to be created. Instead of having our own we will destroy the current hand rolled system and use the SDL system.

Animal maintenance

People should be able to perform functions upon animals either because of a condition or a certain time. These functions include slaughtering animals for food, shearing sheep, or milking them.

Allow Menu's to be reloaded during run time

Menu's need to be reloaded during run time to allow for fast iteration of menu's. The global that contains the menu should be simply set to null, then find the correct file and rerun the file.

FamilyAddGoods Load AIType

Instead of AI.SetAI determine what AI a person should use, it should be declared inside of a FamilyType.

Expressions for good inputs.

It is intended that in the future there will be items very similar in nature that take the same input and output but are named differently. An example of this would be different species of wheat. These different wheats would all want to have their own flour type, their own bread type, and their own mill to make the flour. As this would be tedious several functions should be created that are then exposed to goods.lua to help create groupings of objects and allow the automatic creation of goods that are similar in nature.

Multiple missions per file

To reduce the amount of files in the missions folder missions that are similar should be able to be put in the same file.

Marriage

Currently it is impossible for people to get married after the original families have been constructed. A basic check should be created to see if people should get married.

More control given to containers over which widget is focused.

Currently when a container is focused it cannot skip widgets that can be focused in order to make it easier to select a specific widget. To get to the middle of the Table widget you must press up or down equal to half of the widgets that the Table has. DebugMenu.lua has 72 children making this very tedious. To solve this a Table should be capable of only giving the first cell of each row focus, unless the user wants to select a cell that isn't in the first row.

Containers cannot have space between children.

When children are positioned by ContainerPosChild, the position of the next child is generated by the position of the previous children. This makes it impossible to put any space in between two children.

Missions not sorted.

Instead of having a linked list of all missions that share a particular type, a tree should be used. By using a tree we will be able to group all possible missions and separate them from currently invalid missions.

replace LUA_BADARG

LUA_BARDARG should instead be replaced with luaL_error. In order to do this a lua_panic function needs to be defined in sys/LuaHelper.c that will pass the error to sys/Log.h

Macronutrients

Currently crops have only two values that decide how good they are, how long the crop takes to grow, and how many nutrients per acre the crop grows. However, most crops take almost the same amount of time to grow, making the only real stat that differs crops is how much nutrients they give. In order to make crops more diverse and to more properly simulate beings the three macro-nutrients(carbs, protein, fat) should be added.

Building Materials

buildings.lua should contain definitions for goods that can be used to construct buildings. Each table should contain the name of a good, as well as a table containing if this good can be used on walls, floors, or a roof, how many goods it costs per foot, and how much time it takes for a foot.

Family Person Array resize.

Currently the array in struct Family that contains the people of that family is always set to an array that contains 10 spaces. However it is currently set as a dynamic array. It should be decided whether it should always have 10 spaces and then become a static array or become a true dynamic array and remove this constant limit.

Building AI

Now that buildings are dynamic an AI is needed to determine what kind of building a person could feasibly make as well as one that will suit their needs.

FamilyAddGoods incorect checks

FamilyAddGoods multiplies by 1000 when converting a double to an int when it should be 10000. Instead of checking if FamilyType[i]->Percent is less than it should be greater than.

Behavior Tree debugging.

It can be foreseen that as behavior trees are added and are made more complex it will become tedious and difficult to debug them. A way to see which composites and primitive behaviors are being executed as well as being able to see the blackboard would make debugging easier.

TextBox does not check its length.

Currently a TextBox does not check its length. This means instead of having word wrapping, the TextBox will just render all of the text as one line.

Time subsystem

Each person should have a certain amount of actions allowable per day. These actions should be used on things that take time, such as plowing fields, constructing buildings, etc.

Allow people's behavior trees to change.

The ability for people's behavior trees to change is needed to allow people to change their role when necessary. This system should also be exposed to Lua so it can be changed rapidly. It should be based on a function that takes the original tree, any trees that can replace the original, and a table of behavior nodes that will select a corresponding behavior tree based on if the node returns true.

Remove struct Manor*

Struct Manor is now a skeleton struct that has no real purpose and should be removed.

Resource collection

Some goods are natural such as trees, iron, ect. These should be able to be harvested by people using specific goods that are designated as tools.

ContextList

Create a TextBox widget that when clicked will spawn a list of new widgets next to it like a context menu.

PAIConstructBuild

PAIConstructBuild is necessary to allow people to construct buildings.

Menu is added to ScreenStack every time you select it.

If you open DebugMenu then escape and then keep selecting it multiple copies of it will be placed on the ScreenStack. To prevent this ScreenStack should contain the Lua table that contains the menu to determine if the menu is already on the stack or not.

Write PAIFeedAnimals

PAIFeedAnimals is needed for people to feed their animals as evenly as possible if they don't have enough food.

Add moveble parameter to menus.

In each menu's Lua file a new parameter, moveable should be able to be declared to decide if the menu is created as a popup the menu can be moved by the user.

Add positions to objects.

All objects, Goods Buildings, Persons, and Animals should have an x, and y to declare where they are on the global map. A global kdtree containing an Array struct should be created to store this data.

Categorize mission namespaces in a HashTable

Right now mission ids are generated by the mission's namespace and its id. This method allows us to only use caps and to have a maximum of 5 characters only. Instead we can use a hash table of all namespaces which would allow us to use both caps and lower cases as well as as many characters as we want.

ChangeFocus does not remember indexes.

When moving from one parent's child to another if the second child cannot be focused g_Focus will move back to the first child. However the index the first child was at is lost.

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.